valtech-components 4.0.988 → 4.0.990

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 (29) hide show
  1. package/esm2022/lib/components/organisms/attachment-uploader/attachment-uploader.component.mjs +41 -2
  2. package/esm2022/lib/components/organisms/attachment-uploader/types.mjs +1 -1
  3. package/esm2022/lib/components/organisms/request-review-panel/request-review-panel.component.mjs +316 -481
  4. package/esm2022/lib/components/organisms/request-review-panel/request-review-panel.i18n.mjs +21 -0
  5. package/esm2022/lib/components/organisms/request-review-panel/types.mjs +2 -0
  6. package/esm2022/lib/components/organisms/survey-builder/survey-builder.component.mjs +24 -5
  7. package/esm2022/lib/components/organisms/survey-builder/types.mjs +1 -1
  8. package/esm2022/lib/services/payments/config.mjs +23 -0
  9. package/esm2022/lib/services/payments/index.mjs +4 -0
  10. package/esm2022/lib/services/payments/payments-gateway.service.mjs +69 -0
  11. package/esm2022/lib/services/payments/types.mjs +8 -0
  12. package/esm2022/lib/version.mjs +2 -2
  13. package/esm2022/public-api.mjs +4 -2
  14. package/fesm2022/valtech-components.mjs +793 -784
  15. package/fesm2022/valtech-components.mjs.map +1 -1
  16. package/lib/components/organisms/attachment-uploader/attachment-uploader.component.d.ts +14 -0
  17. package/lib/components/organisms/attachment-uploader/types.d.ts +30 -0
  18. package/lib/components/organisms/request-review-panel/request-review-panel.component.d.ts +72 -76
  19. package/lib/components/organisms/request-review-panel/request-review-panel.i18n.d.ts +2 -0
  20. package/lib/components/organisms/request-review-panel/types.d.ts +73 -0
  21. package/lib/components/organisms/survey-builder/survey-builder.component.d.ts +9 -2
  22. package/lib/components/organisms/survey-builder/types.d.ts +28 -1
  23. package/lib/services/payments/config.d.ts +14 -0
  24. package/lib/services/payments/index.d.ts +3 -0
  25. package/lib/services/payments/payments-gateway.service.d.ts +53 -0
  26. package/lib/services/payments/types.d.ts +33 -0
  27. package/lib/version.d.ts +1 -1
  28. package/package.json +1 -1
  29. package/public-api.d.ts +3 -1
@@ -0,0 +1,21 @@
1
+ export const REQUEST_REVIEW_PANEL_I18N = {
2
+ es: {
3
+ approve: 'Aprobar',
4
+ reject: 'Rechazar',
5
+ cancel: 'Cancelar',
6
+ confirmReject: 'Confirmar rechazo',
7
+ rejectReason: 'Motivo del rechazo',
8
+ rejectReasonPlaceholder: 'Cuéntale qué le faltó o qué debe corregir',
9
+ rejectReasonHint: 'Esto le llega a quien envió la solicitud.',
10
+ },
11
+ en: {
12
+ approve: 'Approve',
13
+ reject: 'Reject',
14
+ cancel: 'Cancel',
15
+ confirmReject: 'Confirm rejection',
16
+ rejectReason: 'Reason for rejection',
17
+ rejectReasonPlaceholder: 'Tell them what was missing or needs fixing',
18
+ rejectReasonHint: 'This is sent to whoever submitted the request.',
19
+ },
20
+ };
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1yZXZpZXctcGFuZWwuaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvcmVxdWVzdC1yZXZpZXctcGFuZWwvcmVxdWVzdC1yZXZpZXctcGFuZWwuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBcUI7SUFDekQsRUFBRSxFQUFFO1FBQ0YsT0FBTyxFQUFFLFNBQVM7UUFDbEIsTUFBTSxFQUFFLFVBQVU7UUFDbEIsTUFBTSxFQUFFLFVBQVU7UUFDbEIsYUFBYSxFQUFFLG1CQUFtQjtRQUNsQyxZQUFZLEVBQUUsb0JBQW9CO1FBQ2xDLHVCQUF1QixFQUFFLDJDQUEyQztRQUNwRSxnQkFBZ0IsRUFBRSwyQ0FBMkM7S0FDOUQ7SUFDRCxFQUFFLEVBQUU7UUFDRixPQUFPLEVBQUUsU0FBUztRQUNsQixNQUFNLEVBQUUsUUFBUTtRQUNoQixNQUFNLEVBQUUsUUFBUTtRQUNoQixhQUFhLEVBQUUsbUJBQW1CO1FBQ2xDLFlBQVksRUFBRSxzQkFBc0I7UUFDcEMsdUJBQXVCLEVBQUUsNENBQTRDO1FBQ3JFLGdCQUFnQixFQUFFLGdEQUFnRDtLQUNuRTtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYW5ndWFnZXNDb250ZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5cbmV4cG9ydCBjb25zdCBSRVFVRVNUX1JFVklFV19QQU5FTF9JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIGFwcHJvdmU6ICdBcHJvYmFyJyxcbiAgICByZWplY3Q6ICdSZWNoYXphcicsXG4gICAgY2FuY2VsOiAnQ2FuY2VsYXInLFxuICAgIGNvbmZpcm1SZWplY3Q6ICdDb25maXJtYXIgcmVjaGF6bycsXG4gICAgcmVqZWN0UmVhc29uOiAnTW90aXZvIGRlbCByZWNoYXpvJyxcbiAgICByZWplY3RSZWFzb25QbGFjZWhvbGRlcjogJ0N1w6ludGFsZSBxdcOpIGxlIGZhbHTDsyBvIHF1w6kgZGViZSBjb3JyZWdpcicsXG4gICAgcmVqZWN0UmVhc29uSGludDogJ0VzdG8gbGUgbGxlZ2EgYSBxdWllbiBlbnZpw7MgbGEgc29saWNpdHVkLicsXG4gIH0sXG4gIGVuOiB7XG4gICAgYXBwcm92ZTogJ0FwcHJvdmUnLFxuICAgIHJlamVjdDogJ1JlamVjdCcsXG4gICAgY2FuY2VsOiAnQ2FuY2VsJyxcbiAgICBjb25maXJtUmVqZWN0OiAnQ29uZmlybSByZWplY3Rpb24nLFxuICAgIHJlamVjdFJlYXNvbjogJ1JlYXNvbiBmb3IgcmVqZWN0aW9uJyxcbiAgICByZWplY3RSZWFzb25QbGFjZWhvbGRlcjogJ1RlbGwgdGhlbSB3aGF0IHdhcyBtaXNzaW5nIG9yIG5lZWRzIGZpeGluZycsXG4gICAgcmVqZWN0UmVhc29uSGludDogJ1RoaXMgaXMgc2VudCB0byB3aG9ldmVyIHN1Ym1pdHRlZCB0aGUgcmVxdWVzdC4nLFxuICB9LFxufTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3JlcXVlc3QtcmV2aWV3LXBhbmVsL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbXB0eVN0YXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvdHlwZXMnO1xuXG4vKipcbiAqIFVuIMOtdGVtIGRlIGxhIGNvbGEgZGUgcmV2aXNpw7NuLCB5YSBub3JtYWxpemFkbyBwb3IgZWwgY29uc3VtZXIuXG4gKlxuICogRGVsaWJlcmFkYW1lbnRlIHBvYnJlOiBpZCwgdMOtdHVsbyB5IHVuYXMgbMOtbmVhcyBkZSBtZXRhZGF0YS4gVG9kbyBsbyBxdWUgc2VhXG4gKiBkZWwgZG9taW5pbyAoZWwgUlVUIGRlbCBjcmlhZGVybywgbG9zIHRhZ3MgZGUgbGEgcmVjZXRhLCBsb3MgZG9jdW1lbnRvc1xuICogYWRqdW50b3MpIHZhIGVuIGVsIGN1ZXJwbyBwcm95ZWN0YWRvLCBubyBhY8OhIOKAlCBsYSBsaWIgbm8gYXByZW5kZSBxdcOpIGVzIHVuYVxuICogcmVjZXRhIG5pIHVuIGNyaWFkZXJvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RSZXZpZXdJdGVtIHtcbiAgLyoqIElkZW50aWRhZCBkZWwgw610ZW0uIEVzIGxvIHF1ZSB2aWFqYSBlbiBsYSBkZWNpc2nDs24uICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBFbmNhYmV6YWRvIGRlIGxhIGNhcmQuICovXG4gIHRpdGxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMw61uZWFzIGJham8gZWwgdMOtdHVsbyAoZmVjaGEgZGUgZW52w61vLCBpZGVudGlmaWNhZG9yLCBlc3RhZG8pLiBUZXh0byB5YVxuICAgKiByZXN1ZWx0byB5IGZvcm1hdGVhZG8gcG9yIGVsIGNvbnN1bWVyOiBsYSBsaWIgbm8gdHJhZHVjZSBuaSBmb3JtYXRlYSBmZWNoYXMuXG4gICAqL1xuICBtZXRhPzogc3RyaW5nW107XG59XG5cbi8qKiBMbyBxdWUgZW1pdGUgZWwgcGFuZWwgY3VhbmRvIGVsIHJldmlzb3IgZGVjaWRlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0UmV2aWV3RGVjaXNpb24ge1xuICBpdGVtSWQ6IHN0cmluZztcbiAgYXBwcm92ZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBNb3Rpdm8gZGVsIHJlY2hhem8uIFByZXNlbnRlIHNvbG8gYWwgcmVjaGF6YXIgY29uIGByZXF1aXJlUmVqZWN0UmVhc29uYFxuICAgKiBhY3Rpdm8gKGVsIGRlZmF1bHQpLCBkb25kZSBlbCBwYW5lbCBnYXJhbnRpemEgcXVlIG5vIHZpZW5lIHZhY8Otby5cbiAgICovXG4gIHJlYXNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0UmV2aWV3UGFuZWxNZXRhZGF0YSB7XG4gIC8qKiBMYSBjb2xhLiBWYWPDrWEgKyBgbG9hZGluZzogZmFsc2VgIG11ZXN0cmEgZWwgZXN0YWRvIHZhY8Otby4gKi9cbiAgaXRlbXM6IFJlcXVlc3RSZXZpZXdJdGVtW107XG5cbiAgLyoqIE11ZXN0cmEgZWwgc2tlbGV0b24gZW4gdmV6IGRlIGxhIGxpc3RhLiAqL1xuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgLyoqIEZpbGFzIGRlbCBza2VsZXRvbiAoZGVmYXVsdDogMykuICovXG4gIHNrZWxldG9uUm93cz86IG51bWJlcjtcblxuICAvKipcbiAgICogRXN0YWRvIGRlIGVycm9yIGRlIGxhIGNhcmdhLiBUaWVuZSBwcmlvcmlkYWQgc29icmUgdG9kbyBsbyBkZW3DoXMg4oCUIHVuIHBhbmVsXG4gICAqIHF1ZSBubyBwdWRvIGNhcmdhciBubyBkZWJlIG1vc3RyYXIgXCJubyBoYXkgbmFkYSBwZW5kaWVudGVcIiwgcXVlIGVzIHVuYVxuICAgKiBhZmlybWFjacOzbiBkaXN0aW50YSB5IGZhbHNhLlxuICAgKi9cbiAgZXJyb3JTdGF0ZT86IEVtcHR5U3RhdGVNZXRhZGF0YSB8IG51bGw7XG4gIC8qKiBFc3RhZG8gY3VhbmRvIGxhIGNvbGEgZXN0w6EgdmFjw61hIGRlIHZlcmRhZC4gKi9cbiAgZW1wdHlTdGF0ZT86IEVtcHR5U3RhdGVNZXRhZGF0YTtcblxuICAvKipcbiAgICogTMOtbmVhIGRlIGNvbnRlbyBzb2JyZSBsYSBsaXN0YSwgeWEgY29tcHVlc3RhIHBvciBlbCBjb25zdW1lclxuICAgKiAoXCIzIHBlbmRpZW50ZXNcIikuIFNpbiBlbGxhIG5vIHNlIG11ZXN0cmEgbmFkYS5cbiAgICovXG4gIGNvdW50TGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElEIGRlbCDDrXRlbSBjb24gdW5hIGRlY2lzacOzbiBlbiB2dWVsby4gRXNlIMOtdGVtIG11ZXN0cmEgc3UgYWNjacOzbiBlblxuICAgKiBgV09SS0lOR2AgeSBlbCByZXN0byBxdWVkYSBkZXNoYWJpbGl0YWRvOiBkb3MgZGVjaXNpb25lcyBzaW11bHTDoW5lYXMgc29icmVcbiAgICogbGEgbWlzbWEgY29sYSBlcyBqdXN0byBsbyBxdWUgbm8gc2UgcXVpZXJlLlxuICAgKi9cbiAgYnVzeUl0ZW1JZD86IHN0cmluZztcblxuICAvKipcbiAgICogRXhpZ2lyIHVuIG1vdGl2byBlc2NyaXRvIHBhcmEgcmVjaGF6YXIgKGRlZmF1bHQ6ICoqdHJ1ZSoqKS5cbiAgICpcbiAgICogRXMgZWwgZGVmYXVsdCBhIHByb3DDs3NpdG8uIFJlY2hhemFyIHNpbiBleHBsaWNhY2nDs24gZGVqYSBhbCBzb2xpY2l0YW50ZSBzaW5cbiAgICogc2FiZXIgcXXDqSBjb3JyZWdpciwgeSBsYSBub3RpZmljYWNpw7NuIGRlIGRlY2lzacOzbiBzYWxlIHZhY8OtYS4gUG9uZXJsbyBlblxuICAgKiBgZmFsc2VgIGVzIHVuYSBkZWNpc2nDs24gZXhwbMOtY2l0YSBkZWwgY29uc3VtZXIsIG5vIHVuIG9sdmlkby5cbiAgICovXG4gIHJlcXVpcmVSZWplY3RSZWFzb24/OiBib29sZWFuO1xuXG4gIC8qKiBFdGlxdWV0YXMuIFRvZGFzIG9wY2lvbmFsZXMg4oCUIGxhIGxpYiB0cmFlIGRlZmF1bHRzIGVzL2VuLiAqL1xuICBhcHByb3ZlTGFiZWw/OiBzdHJpbmc7XG4gIHJlamVjdExhYmVsPzogc3RyaW5nO1xuICBjYW5jZWxMYWJlbD86IHN0cmluZztcbiAgY29uZmlybVJlamVjdExhYmVsPzogc3RyaW5nO1xuICByZWplY3RSZWFzb25MYWJlbD86IHN0cmluZztcbiAgcmVqZWN0UmVhc29uUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIHJlamVjdFJlYXNvbkhpbnQ/OiBzdHJpbmc7XG59XG4iXX0=
@@ -12,7 +12,7 @@ import { ButtonComponent } from '../../atoms/button/button.component';
12
12
  import { FormFieldComponent } from '../../molecules/form-field/form-field.component';
13
13
  import { FIELD_TYPES_WITH_OPTIONS, FieldSchemaEditorComponent, } from '../field-schema-editor/field-schema-editor.component';
14
14
  import { FIELD_SCHEMA_EDITOR_I18N } from '../field-schema-editor/field-schema-editor.i18n';
15
- import { SURVEY_QUESTION_TYPES } from './types';
15
+ import { SURVEY_QUESTION_TYPES, } from './types';
16
16
  import { SURVEY_BUILDER_I18N } from './survey-builder.i18n';
17
17
  import * as i0 from "@angular/core";
18
18
  const NAMESPACE = 'SurveyBuilder';
@@ -40,6 +40,13 @@ export class SurveyBuilderComponent {
40
40
  constructor() {
41
41
  this.props = {};
42
42
  this.saved = new EventEmitter();
43
+ /**
44
+ * Emite lo escrito, ya validado, SIN guardarlo. Solo con `props.persist:
45
+ * false` — ver el comentario de ese campo: cuando la app tiene endpoint
46
+ * propio, guardar desde acá se salta la validación de la entidad dueña y el
47
+ * permiso de la vertical.
48
+ */
49
+ this.draft = new EventEmitter();
43
50
  this.i18n = inject(I18nService);
44
51
  this.requests = inject(RequestService);
45
52
  this.formBuilder = inject(RequestFormBuilderService);
@@ -201,7 +208,6 @@ export class SurveyBuilderComponent {
201
208
  this.validationError.set(this.t('missingOptions'));
202
209
  return;
203
210
  }
204
- this.saving.set(true);
205
211
  const fieldSchema = [];
206
212
  rows.forEach((row, index) => {
207
213
  const name = this.formBuilder.uniqueFieldName(row.name || row.label, fieldSchema);
@@ -215,8 +221,19 @@ export class SurveyBuilderComponent {
215
221
  options: row.options,
216
222
  }, index));
217
223
  });
218
- const typeId = this.props.typeId ?? `${this.props.typePrefix ?? DEFAULT_TYPE_PREFIX}:${this.formBuilder.toToken(title)}`;
219
224
  const subtitle = this.subtitleControl.value.trim();
225
+ // La app guarda: acá solo se valida y se entrega lo escrito.
226
+ if (this.props.persist === false) {
227
+ this.draft.emit({ label: title, subtitle, questions: fieldSchema });
228
+ return;
229
+ }
230
+ this.saving.set(true);
231
+ // `typeId` derivado del título: sirve para un tipo de solicitud de
232
+ // plataforma, donde el título ES la identidad. Para una encuesta atada a
233
+ // una entidad NO alcanza — dos eventos con el mismo título colisionarían en
234
+ // el mismo tipo y compartirían respuestas. Por eso una vertical usa su
235
+ // endpoint (`persist: false`) y arma el id con la entidad adentro.
236
+ const typeId = this.props.typeId ?? `${this.props.typePrefix ?? DEFAULT_TYPE_PREFIX}:${this.formBuilder.toToken(title)}`;
220
237
  const payload = {
221
238
  label: title,
222
239
  subtitle,
@@ -257,7 +274,7 @@ export class SurveyBuilderComponent {
257
274
  };
258
275
  }
259
276
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SurveyBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
260
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SurveyBuilderComponent, isStandalone: true, selector: "val-survey-builder", inputs: { props: "props" }, outputs: { saved: "saved" }, ngImport: i0, template: `
277
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SurveyBuilderComponent, isStandalone: true, selector: "val-survey-builder", inputs: { props: "props" }, outputs: { saved: "saved", draft: "draft" }, ngImport: i0, template: `
261
278
  <div class="survey-builder">
262
279
  <val-form-field [label]="t('titleLabel')">
263
280
  <val-text-input [props]="{ control: titleControl, placeholder: t('titlePlaceholder') }" />
@@ -489,5 +506,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
489
506
  type: Input
490
507
  }], saved: [{
491
508
  type: Output
509
+ }], draft: [{
510
+ type: Output
492
511
  }] } });
493
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9zdXJ2ZXktYnVpbGRlci9zdXJ2ZXktYnVpbGRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRXBHLE9BQU8sRUFBa0IsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLDBCQUEwQixHQUMzQixNQUFNLHNEQUFzRCxDQUFDO0FBQzlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRTNGLE9BQU8sRUFBaUQscUJBQXFCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRTVELE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQztBQUNsQyxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDO0FBQzdDLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDO0FBRXJDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBa05ILE1BQU0sT0FBTyxzQkFBc0I7SUFnQmpDO1FBZlMsVUFBSyxHQUEwQixFQUFFLENBQUM7UUFDeEIsVUFBSyxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBRXJELFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsYUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsQyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2hELFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUU3QyxpQkFBWSxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFELG9CQUFlLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0QsY0FBUyxHQUFHLE1BQU0sQ0FBcUIsRUFBRSxDQUFDLENBQUM7UUFDM0MsY0FBUyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixvQkFBZSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixXQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRzlCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELDJFQUEyRTtRQUMzRSw0RUFBNEU7UUFDNUUsZ0VBQWdFO1FBQ2hFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUMvQixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDbEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RyxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDdEIsT0FBTyxFQUFFLG9CQUFvQjtnQkFDN0IsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLGFBQWEsRUFBRSxTQUFTO2FBQ3pCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsQ0FBQyxDQUFDLEdBQVc7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBWTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQztJQUM3RixDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQXFCO1FBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO0lBQzFFLENBQUM7SUFFRCxVQUFVLENBQ1IsS0FBYSxFQUNiLElBQVksRUFDWixLQUFhLEVBQ2IsUUFBUSxHQUFHLEtBQUssRUFDaEIsUUFBZSxNQUFNO1FBRXJCLE9BQU87WUFDTCxLQUFLO1lBQ0wsSUFBSSxFQUFFLEVBQUU7WUFDUixTQUFTLEVBQUUsS0FBSztZQUNoQixLQUFLO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRSxPQUFPO1lBQ2IsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTztZQUNwRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7U0FDeEMsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxHQUFHLEdBQXFCO1lBQzVCLEVBQUUsRUFBRSxPQUFPLE1BQU0sRUFBRSxFQUFFO1lBQ3JCLElBQUksRUFBRSxFQUFFO1lBQ1IsS0FBSyxFQUFFLEVBQUU7WUFDVCxlQUFlLEVBQUUsRUFBRTtZQUNuQixRQUFRLEVBQUUsRUFBRTtZQUNaLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdCLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlDLG9FQUFvRTtRQUNwRSx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBcUI7UUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBcUI7UUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxTQUFTLENBQUMsR0FBcUI7UUFDN0IsTUFBTSxJQUFJLEdBQXFCO1lBQzdCLEdBQUcsR0FBRztZQUNOLEVBQUUsRUFBRSxPQUFPLE1BQU0sRUFBRSxFQUFFO1lBQ3JCLHFFQUFxRTtZQUNyRSxpRUFBaUU7WUFDakUsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDL0UsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ3BFLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkQsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQy9CLE1BQU0sTUFBTSxHQUFHLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0IsSUFBSSxNQUFNLEdBQUcsQ0FBQyxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNyRCxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDdkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDMUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILGFBQWEsQ0FBQyxLQUF1QjtRQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0YsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUF1QjtRQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ1gsQ0FBQyxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNmLENBQUMsQ0FBQztnQkFDRSxHQUFHLEtBQUs7Z0JBQ1IsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUNwQyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDaEM7YUFDRjtZQUNILENBQUMsQ0FBQyxDQUFDLENBQ04sQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ1IsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQUUsT0FBTztRQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUM1QyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNoRCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7WUFDdkQsT0FBTztRQUNULENBQUM7UUFDRCw0RUFBNEU7UUFDNUUsbUVBQW1FO1FBQ25FLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDcEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDbkQsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QixNQUFNLFdBQVcsR0FBcUIsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ2xGLFdBQVcsQ0FBQyxJQUFJLENBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FDaEM7Z0JBQ0UsSUFBSTtnQkFDSixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ3ZCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtnQkFDZCxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7Z0JBQ3RCLGVBQWUsRUFBRSxHQUFHLENBQUMsZUFBZTtnQkFDcEMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO2dCQUN0QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87YUFDckIsRUFDRCxLQUFLLENBQ04sQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FDVixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLG1CQUFtQixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDNUcsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFbkQsTUFBTSxPQUFPLEdBQUc7WUFDZCxLQUFLLEVBQUUsS0FBSztZQUNaLFFBQVE7WUFDUixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO1lBQy9CLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLHFCQUFxQixFQUFFLElBQUk7WUFDM0IsV0FBVztZQUNYLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxJQUFJO1lBQ2pELFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSyxRQUFrQjtTQUN6RCxDQUFDO1FBRUYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztZQUM3RCxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxVQUFVLEdBQUcsTUFBTSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUN0QixPQUFPLEVBQUUsb0JBQW9CO2dCQUM3QixXQUFXLEVBQUUsV0FBVztnQkFDeEIsYUFBYSxFQUFFLFNBQVM7YUFDekIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsQ0FBaUI7UUFDcEMsT0FBTztZQUNMLEVBQUUsRUFBRSxPQUFPLE1BQU0sRUFBRSxFQUFFO1lBQ3JCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNaLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDcEIsZUFBZSxFQUFFLENBQUMsQ0FBQyxlQUFlLElBQUksRUFBRTtZQUN4QyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFO1lBQzFCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNaLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7WUFDdEIsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO1NBQ25CLENBQUM7SUFDSixDQUFDOytHQWpRVSxzQkFBc0I7bUdBQXRCLHNCQUFzQix1SUF0TXZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0R1QsNitDQW5IQyxZQUFZLDhCQUNaLG1CQUFtQiwrQkFDbkIsa0JBQWtCLHdGQUNsQixlQUFlLDBHQUNmLGtCQUFrQiw4RUFDbEIsMEJBQTBCOzs0RkF3TWpCLHNCQUFzQjtrQkFqTmxDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsMEJBQTBCO3FCQUMzQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0R1Q7d0RBMkZRLEtBQUs7c0JBQWIsS0FBSztnQkFDYSxLQUFLO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBSZXF1ZXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JlcXVlc3RzL3JlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBSZXF1ZXN0Rm9ybUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcmVxdWVzdHMvcmVxdWVzdC1mb3JtLWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGaWVsZFNjaGVtYURlZiB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JlcXVlc3RzL3R5cGVzJztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhLCBDb21wb25lbnRTdGF0ZXMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuaW1wb3J0IHsgVmFsdGVjaEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy92YWx0ZWNoLWVycm9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGV4dElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgRklFTERfVFlQRVNfV0lUSF9PUFRJT05TLFxuICBGaWVsZFNjaGVtYUVkaXRvckNvbXBvbmVudCxcbn0gZnJvbSAnLi4vZmllbGQtc2NoZW1hLWVkaXRvci9maWVsZC1zY2hlbWEtZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGSUVMRF9TQ0hFTUFfRURJVE9SX0kxOE4gfSBmcm9tICcuLi9maWVsZC1zY2hlbWEtZWRpdG9yL2ZpZWxkLXNjaGVtYS1lZGl0b3IuaTE4bic7XG5pbXBvcnQgeyBFZGl0YWJsZUZpZWxkRGVmLCBGaWVsZFNjaGVtYUVkaXRvck1ldGFkYXRhIH0gZnJvbSAnLi4vZmllbGQtc2NoZW1hLWVkaXRvci90eXBlcyc7XG5pbXBvcnQgeyBTdXJ2ZXlCdWlsZGVyTWV0YWRhdGEsIFN1cnZleUJ1aWxkZXJTYXZlRXZlbnQsIFNVUlZFWV9RVUVTVElPTl9UWVBFUyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgU1VSVkVZX0JVSUxERVJfSTE4TiB9IGZyb20gJy4vc3VydmV5LWJ1aWxkZXIuaTE4bic7XG5cbmNvbnN0IE5BTUVTUEFDRSA9ICdTdXJ2ZXlCdWlsZGVyJztcbmNvbnN0IEVESVRPUl9OQU1FU1BBQ0UgPSAnRmllbGRTY2hlbWFFZGl0b3InO1xuY29uc3QgREVGQVVMVF9UWVBFX1BSRUZJWCA9ICdzdXJ2ZXknO1xuXG5sZXQgcm93VWlkID0gMDtcblxuLyoqXG4gKiB2YWwtc3VydmV5LWJ1aWxkZXJcbiAqXG4gKiBBdXRvcsOtYSBkZSB1bmEgZW5jdWVzdGE6IHTDrXR1bG8sIHN1YnTDrXR1bG8sIHByZWd1bnRhcyDigJQgYXJtYSBvIGFjdHVhbGl6YSB1blxuICogYFJlcXVlc3RUeXBlQ29uZmlnYCBjb24gYFR5cGU6IFwiPHByZWZpeD46PHNsdWc+XCJgIChBRFItMDkyKSwgYHNraXBSZXZpZXc6XG4gKiB0cnVlYCAoY2FkYSByZXNwdWVzdGEgc2UgYWdyZWdhLCBubyBzZSByZXZpc2EgdW5hIHBvciB1bmEpIHkgZWwgYEVudGl0eVJlZmBcbiAqIHF1ZSBsZSBwYXNhIGVsIGNvbnN1bWVyIChlai4gZWwgZXZlbnRvIGRlIGJpbmdvIGR1ZcOxbyBkZSBsYSBlbmN1ZXN0YSkuXG4gKlxuICogQ2FkYSBwcmVndW50YSBzZSBlZGl0YSBjb24gYHZhbC1maWVsZC1zY2hlbWEtZWRpdG9yYCwgZWwgbWlzbW8gZWRpdG9yIHF1ZSB1c2FcbiAqIGVsIGNoZWNrb3V0IGRlIGJpbmdvIOKAlCBkZSBhaMOtIHF1ZSB1bmEgcHJlZ3VudGEgdGVuZ2EgdGlwbywgcGxhY2Vob2xkZXIsIG5vdGFcbiAqIHkgb3BjaW9uZXMsIG5vIHNvbG8gdGV4dG8uIExhIHYxIGRlIGVzdGUgY29tcG9uZW50ZSB0ZW7DrWEgc3UgcHJvcGlvIGVkaXRvclxuICogcG9icmUgKGRvcyB0aXBvcywgc2luIG9wY2lvbmVzKTsgbGEgRmFzZSA1IGRlbCBBRFItMDkyIGxvIHJlZW1wbGF6w7MgcG9yIGVsXG4gKiBvcmdhbmlzbSBjb21wYXJ0aWRvIGVuIHZleiBkZSBtZWpvcmFybG8gcG9yIGR1cGxpY2Fkby5cbiAqXG4gKiBFbCBjYXTDoWxvZ28gcXVlIG9mcmVjZSBzYWxlIGRlIGBTVVJWRVlfUVVFU1RJT05fVFlQRVNgIOKAlCBhY290YWRvIGEgbG8gcXVlXG4gKiBgdmFsLXN1cnZleS1yZXNwb25zZWAgc2FiZSByZW5kZXJpemFyLCBubyBhIGxvIHF1ZSBlbCBlZGl0b3Igc2FiZSBlZGl0YXIuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1zdXJ2ZXktYnVpbGRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBUZXh0SW5wdXRDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZENvbXBvbmVudCxcbiAgICBGaWVsZFNjaGVtYUVkaXRvckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwic3VydmV5LWJ1aWxkZXJcIj5cbiAgICAgIDx2YWwtZm9ybS1maWVsZCBbbGFiZWxdPVwidCgndGl0bGVMYWJlbCcpXCI+XG4gICAgICAgIDx2YWwtdGV4dC1pbnB1dCBbcHJvcHNdPVwieyBjb250cm9sOiB0aXRsZUNvbnRyb2wsIHBsYWNlaG9sZGVyOiB0KCd0aXRsZVBsYWNlaG9sZGVyJykgfVwiIC8+XG4gICAgICA8L3ZhbC1mb3JtLWZpZWxkPlxuICAgICAgPHZhbC1mb3JtLWZpZWxkIFtsYWJlbF09XCJ0KCdzdWJ0aXRsZUxhYmVsJylcIj5cbiAgICAgICAgPHZhbC10ZXh0LWlucHV0IFtwcm9wc109XCJ7IGNvbnRyb2w6IHN1YnRpdGxlQ29udHJvbCwgcGxhY2Vob2xkZXI6IHQoJ3N1YnRpdGxlUGxhY2Vob2xkZXInKSB9XCIgLz5cbiAgICAgIDwvdmFsLWZvcm0tZmllbGQ+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2ZXktYnVpbGRlcl9fcXVlc3Rpb25zXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3VydmV5LWJ1aWxkZXJfX3F1ZXN0aW9ucy1sYWJlbFwiPnt7IHQoJ3F1ZXN0aW9uc0xhYmVsJykgfX08L3NwYW4+XG5cbiAgICAgICAgQGlmICghcXVlc3Rpb25zKCkubGVuZ3RoKSB7XG4gICAgICAgICAgPHAgY2xhc3M9XCJzdXJ2ZXktYnVpbGRlcl9fZW1wdHlcIj57eyB0KCdub1F1ZXN0aW9ucycpIH19PC9wPlxuICAgICAgICB9XG5cbiAgICAgICAgQGZvciAocm93IG9mIHF1ZXN0aW9ucygpOyB0cmFjayByb3cuaWQ7IGxldCBpID0gJGluZGV4OyBsZXQgZmlyc3QgPSAkZmlyc3Q7IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmV5LWJ1aWxkZXJfX3Jvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1cnZleS1idWlsZGVyX19yb3ctaGVhZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmV5LWJ1aWxkZXJfX3Jvdy10ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyByb3cubGFiZWwgfHwgdCgndW50aXRsZWRRdWVzdGlvbicpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdHlwZUxhYmVsKHJvdy50eXBlKSB9fXt7IHJvdy5yZXF1aXJlZCA/ICcgwrcgJyArIHQoJ3JlcXVpcmVkVGFnJykgOiAnJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2ZXktYnVpbGRlcl9fcm93LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cImljb25BY3Rpb24oJ3EtdXAtJyArIHJvdy5pZCwgJ2Fycm93LXVwLW91dGxpbmUnLCB0KCdtb3ZlVXAnKSwgZmlyc3QpXCJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm1vdmUoaSwgLTEpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwiaWNvbkFjdGlvbigncS1kb3duLScgKyByb3cuaWQsICdhcnJvdy1kb3duLW91dGxpbmUnLCB0KCdtb3ZlRG93bicpLCBsYXN0KVwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJtb3ZlKGksIDEpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwiaWNvbkFjdGlvbigncS1jb3B5LScgKyByb3cuaWQsICdjb3B5LW91dGxpbmUnLCB0KCdkdXBsaWNhdGVRdWVzdGlvbicpKVwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJkdXBsaWNhdGUocm93KVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cImljb25BY3Rpb24oJ3EtZWRpdC0nICsgcm93LmlkLCAnY3JlYXRlLW91dGxpbmUnLCB0KCdlZGl0UXVlc3Rpb24nKSlcIlxuICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwidG9nZ2xlRWRpdChyb3cpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwiaWNvbkFjdGlvbigncS1yZW1vdmUtJyArIHJvdy5pZCwgJ3RyYXNoLW91dGxpbmUnLCB0KCdyZW1vdmVRdWVzdGlvbicpLCBmYWxzZSwgJ2RhbmdlcicpXCJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInJlbW92ZVF1ZXN0aW9uKHJvdylcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIEBpZiAoZWRpdGluZ0lkKCkgPT09IHJvdy5pZCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmV5LWJ1aWxkZXJfX3Jvdy1lZGl0b3JcIj5cbiAgICAgICAgICAgICAgICA8dmFsLWZpZWxkLXNjaGVtYS1lZGl0b3JcbiAgICAgICAgICAgICAgICAgICNlZGl0b3JcbiAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJlZGl0b3JQcm9wcyhyb3cpXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2VkKT1cImRyYWZ0UXVlc3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAoc2F2ZSk9XCJhcHBseVF1ZXN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuOiAncS1kb25lLScgKyByb3cuaWQsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHQoJ2RvbmVFZGl0aW5nJyksXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICAgICAgICAgICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICAgICAgICAgICAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJlZGl0b3Iuc3VibWl0KClcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgdG9rZW46ICdzdXJ2ZXktYnVpbGRlci1hZGQtcXVlc3Rpb24nLFxuICAgICAgICAgICAgdGV4dDogdCgnYWRkUXVlc3Rpb24nKSxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgICAgIGljb246IHsgbmFtZTogJ2FkZC1vdXRsaW5lJywgc2xvdDogJ3N0YXJ0JyB9LFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChvbkNsaWNrKT1cImFkZFF1ZXN0aW9uKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAodmFsaWRhdGlvbkVycm9yKCkpIHtcbiAgICAgICAgPHAgY2xhc3M9XCJzdXJ2ZXktYnVpbGRlcl9fZXJyb3JcIj57eyB2YWxpZGF0aW9uRXJyb3IoKSB9fTwvcD5cbiAgICAgIH1cblxuICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICB0b2tlbjogJ3N1cnZleS1idWlsZGVyLXNhdmUnLFxuICAgICAgICAgIHRleHQ6IHQoJ3NhdmUnKSxcbiAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgICAgICBleHBhbmQ6ICdibG9jaycsXG4gICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgc3RhdGU6IHNhdmluZygpID8gJ1dPUktJTkcnIDogJ0VOQUJMRUQnLFxuICAgICAgICB9XCJcbiAgICAgICAgKG9uQ2xpY2spPVwic2F2ZSgpXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICAuc3VydmV5LWJ1aWxkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDE2cHg7XG4gICAgICB9XG4gICAgICAuc3VydmV5LWJ1aWxkZXJfX3F1ZXN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgIH1cbiAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcXVlc3Rpb25zLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgIH1cbiAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fZW1wdHkge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgIH1cbiAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS12YWwtcmFkaXVzLW1kLCAxMnB4KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbiAgICAgIH1cbiAgICAgIC8qIE1vYmlsZS1maXJzdDogZWwgdGV4dG8gZGUgbGEgcHJlZ3VudGEgeSBzdXMgYWNjaW9uZXMgYXBpbGFkb3MuIEVuIGZpbGFcbiAgICAgICAgIGZpamEsIGNpbmNvIGJvdG9uZXMgbGUgY29tZW4gZWwgYW5jaG8gYWwgdGV4dG8geSBsbyBwYXJ0ZW4gZW4gbXVjaGFzXG4gICAgICAgICBsw61uZWFzIGFuZ29zdGFzIOKAlCBqdXN0byBlbiBlbCB2aWV3cG9ydCBkb25kZSBtw6FzIHNlIHVzYS4gKi9cbiAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcm93LWhlYWQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cbiAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcm93LXRleHQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuICAgICAgLnN1cnZleS1idWlsZGVyX19yb3ctdGV4dCBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgIH1cbiAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcm93LXRleHQgc3BhbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICB9XG4gICAgICAuc3VydmV5LWJ1aWxkZXJfX3Jvdy1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIH1cbiAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcm93LWVkaXRvciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDEycHg7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgfVxuICAgICAgLnN1cnZleS1idWlsZGVyX19lcnJvciB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIpO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gICAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcm93LWhlYWQge1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICB9XG4gICAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcm93LXRleHQge1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTdXJ2ZXlCdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcHJvcHM6IFN1cnZleUJ1aWxkZXJNZXRhZGF0YSA9IHt9O1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFN1cnZleUJ1aWxkZXJTYXZlRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZXF1ZXN0cyA9IGluamVjdChSZXF1ZXN0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZm9ybUJ1aWxkZXIgPSBpbmplY3QoUmVxdWVzdEZvcm1CdWlsZGVyU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JzID0gaW5qZWN0KFZhbHRlY2hFcnJvclNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IHRpdGxlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcbiAgcmVhZG9ubHkgc3VidGl0bGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBxdWVzdGlvbnMgPSBzaWduYWw8RWRpdGFibGVGaWVsZERlZltdPihbXSk7XG4gIHJlYWRvbmx5IGVkaXRpbmdJZCA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IHZhbGlkYXRpb25FcnJvciA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IHNhdmluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKE5BTUVTUEFDRSkpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKE5BTUVTUEFDRSwgU1VSVkVZX0JVSUxERVJfSTE4Tik7XG4gICAgfVxuICAgIC8vIEVsIG5vbWJyZSBkZWwgdGlwbyBkZSBjYWRhIHByZWd1bnRhIHNlIG11ZXN0cmEgZW4gbGEgZmlsYSBjb2xhcHNhZGEsIHF1ZVxuICAgIC8vIGRpYnVqYSBlc3RlIGNvbXBvbmVudGUgeSBubyBlbCBlZGl0b3Ig4oCUIHNpIG5hZGllIG1vbnTDsyB1biBlZGl0b3IgdG9kYXbDrWEsXG4gICAgLy8gZWwgbmFtZXNwYWNlIG5vIGV4aXN0aXLDrWEgeSBsYSBmaWxhIG1vc3RyYXLDrWEgbGEgY2xhdmUgY3J1ZGEuXG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKEVESVRPUl9OQU1FU1BBQ0UpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cyhFRElUT1JfTkFNRVNQQUNFLCBGSUVMRF9TQ0hFTUFfRURJVE9SX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5wcm9wcy50eXBlSWQpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2ZnID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5yZXF1ZXN0cy5nZXRSZXF1ZXN0VHlwZSh0aGlzLnByb3BzLnR5cGVJZCkpO1xuICAgICAgdGhpcy50aXRsZUNvbnRyb2wuc2V0VmFsdWUoY2ZnLmxhYmVsKTtcbiAgICAgIHRoaXMuc3VidGl0bGVDb250cm9sLnNldFZhbHVlKGNmZy5zdWJ0aXRsZSA/PyAnJyk7XG4gICAgICB0aGlzLnF1ZXN0aW9ucy5zZXQoWy4uLmNmZy5maWVsZFNjaGVtYV0uc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpLm1hcChmID0+IHRoaXMucm93RnJvbUZpZWxkKGYpKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdzdXJ2ZXlCdWlsZGVyLmxvYWQnLFxuICAgICAgICBmYWxsYmFja0tleTogJ2xvYWRFcnJvcicsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IE5BTUVTUEFDRSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgTkFNRVNQQUNFKTtcbiAgfVxuXG4gIHR5cGVMYWJlbCh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGB0eXBlJHt0eXBlfWAsIEVESVRPUl9OQU1FU1BBQ0UpO1xuICB9XG5cbiAgcXVlc3Rpb25UeXBlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMucXVlc3Rpb25UeXBlcz8ubGVuZ3RoID8gdGhpcy5wcm9wcy5xdWVzdGlvblR5cGVzIDogU1VSVkVZX1FVRVNUSU9OX1RZUEVTO1xuICB9XG5cbiAgZWRpdG9yUHJvcHMocm93OiBFZGl0YWJsZUZpZWxkRGVmKTogRmllbGRTY2hlbWFFZGl0b3JNZXRhZGF0YSB7XG4gICAgcmV0dXJuIHsgbW9kZTogJ2VkaXQnLCBmaWVsZDogcm93LCBhbGxvd2VkVHlwZXM6IHRoaXMucXVlc3Rpb25UeXBlcygpIH07XG4gIH1cblxuICBpY29uQWN0aW9uKFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgaWNvbjogc3RyaW5nLFxuICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICBjb2xvcjogQ29sb3IgPSAnZGFyaydcbiAgKTogQnV0dG9uTWV0YWRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICB0b2tlbixcbiAgICAgIHRleHQ6ICcnLFxuICAgICAgYXJpYUxhYmVsOiBsYWJlbCxcbiAgICAgIGNvbG9yLFxuICAgICAgZmlsbDogJ2NsZWFyJyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgc3RhdGU6IGRpc2FibGVkID8gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICBpY29uOiB7IG5hbWU6IGljb24sIHNsb3Q6ICdpY29uLW9ubHknIH0sXG4gICAgfTtcbiAgfVxuXG4gIGFkZFF1ZXN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHJvdzogRWRpdGFibGVGaWVsZERlZiA9IHtcbiAgICAgIGlkOiBgcm93LSR7cm93VWlkKyt9YCxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgbGFiZWw6ICcnLFxuICAgICAgcGxhY2Vob2xkZXJUZXh0OiAnJyxcbiAgICAgIGhpbnRUZXh0OiAnJyxcbiAgICAgIHR5cGU6IHRoaXMucXVlc3Rpb25UeXBlcygpWzBdLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfTtcbiAgICB0aGlzLnF1ZXN0aW9ucy51cGRhdGUocm93cyA9PiBbLi4ucm93cywgcm93XSk7XG4gICAgLy8gVW5hIHByZWd1bnRhIHJlY2nDqW4gYWdyZWdhZGEgZXN0w6EgdmFjw61hOiBhYnJpcmxhIGVzIGVsIMO6bmljbyBwYXNvXG4gICAgLy8gc2lndWllbnRlIHBvc2libGUsIHkgZGVqYXJsYSBjZXJyYWRhIGxhIGhhcsOtYSB2ZXIgY29tbyB1bmEgZmlsYSByb3RhLlxuICAgIHRoaXMuZWRpdGluZ0lkLnNldChyb3cuaWQpO1xuICB9XG5cbiAgdG9nZ2xlRWRpdChyb3c6IEVkaXRhYmxlRmllbGREZWYpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRpbmdJZC51cGRhdGUoY3VycmVudCA9PiAoY3VycmVudCA9PT0gcm93LmlkID8gJycgOiByb3cuaWQpKTtcbiAgfVxuXG4gIHJlbW92ZVF1ZXN0aW9uKHJvdzogRWRpdGFibGVGaWVsZERlZik6IHZvaWQge1xuICAgIHRoaXMucXVlc3Rpb25zLnVwZGF0ZShyb3dzID0+IHJvd3MuZmlsdGVyKHIgPT4gci5pZCAhPT0gcm93LmlkKSk7XG4gICAgaWYgKHRoaXMuZWRpdGluZ0lkKCkgPT09IHJvdy5pZCkgdGhpcy5lZGl0aW5nSWQuc2V0KCcnKTtcbiAgfVxuXG4gIGR1cGxpY2F0ZShyb3c6IEVkaXRhYmxlRmllbGREZWYpOiB2b2lkIHtcbiAgICBjb25zdCBjb3B5OiBFZGl0YWJsZUZpZWxkRGVmID0ge1xuICAgICAgLi4ucm93LFxuICAgICAgaWQ6IGByb3ctJHtyb3dVaWQrK31gLFxuICAgICAgLy8gU2luIHRva2VuIHByb3BpbyBsYSBjb3BpYSBwaXNhcsOtYSBsYXMgcmVzcHVlc3RhcyBkZWwgb3JpZ2luYWw6IGRvc1xuICAgICAgLy8gY2FtcG9zIGNvbiBlbCBtaXNtbyBgbmFtZWAgc29uIGVsIG1pc21vIGNhbXBvIHBhcmEgZWwgYmFja2VuZC5cbiAgICAgIG5hbWU6IHRoaXMuZm9ybUJ1aWxkZXIudW5pcXVlRmllbGROYW1lKHJvdy5uYW1lIHx8IHJvdy5sYWJlbCwgdGhpcy5xdWVzdGlvbnMoKSksXG4gICAgICBvcHRpb25zOiByb3cub3B0aW9ucyA/IHJvdy5vcHRpb25zLm1hcChvID0+ICh7IC4uLm8gfSkpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gICAgdGhpcy5xdWVzdGlvbnMudXBkYXRlKHJvd3MgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSByb3dzLmZpbmRJbmRleChyID0+IHIuaWQgPT09IHJvdy5pZCk7XG4gICAgICByZXR1cm4gWy4uLnJvd3Muc2xpY2UoMCwgaW5kZXggKyAxKSwgY29weSwgLi4ucm93cy5zbGljZShpbmRleCArIDEpXTtcbiAgICB9KTtcbiAgfVxuXG4gIG1vdmUoaW5kZXg6IG51bWJlciwgZGVsdGE6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGluZGV4ICsgZGVsdGE7XG4gICAgdGhpcy5xdWVzdGlvbnMudXBkYXRlKHJvd3MgPT4ge1xuICAgICAgaWYgKHRhcmdldCA8IDAgfHwgdGFyZ2V0ID49IHJvd3MubGVuZ3RoKSByZXR1cm4gcm93cztcbiAgICAgIGNvbnN0IG5leHQgPSBbLi4ucm93c107XG4gICAgICBbbmV4dFtpbmRleF0sIG5leHRbdGFyZ2V0XV0gPSBbbmV4dFt0YXJnZXRdLCBuZXh0W2luZGV4XV07XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHdWFyZGEgbG8gcXVlIHNlIGVzdMOhIGVzY3JpYmllbmRvLCBzaW4gY2VycmFyIGVsIGVkaXRvciBuaSB2YWxpZGFyLlxuICAgKlxuICAgKiBTaW4gZXN0bywgbG8gdGlwZWFkbyBzb2xvIGV4aXN0w61hIGRlbnRybyBkZWwgZWRpdG9yIGhhc3RhIHF1ZSBhbGd1aWVuXG4gICAqIHRvY2FiYSBcIkxpc3RvXCI6IGxhIGZpbGEgc2VndcOtYSBkaWNpZW5kbyBcIlByZWd1bnRhIHNpbiB0ZXh0b1wiIHksIHBlb3IsXG4gICAqIFwiR3VhcmRhciBlbmN1ZXN0YVwiIGZhbGxhYmEgY29uIFwidG9kYXMgbGFzIHByZWd1bnRhcyBuZWNlc2l0YW4gdGV4dG9cIiBzb2JyZVxuICAgKiB1bmEgcHJlZ3VudGEgcXVlIGVuIHBhbnRhbGxhIGNsYXJhbWVudGUgdGVuw61hIHRleHRvLiBUb2NhciBcIkxpc3RvXCIgZXJhIHVuXG4gICAqIHBhc28gb2JsaWdhdG9yaW8gcXVlIG5vIHNlIHZlw61hIHBvciBuaW5nw7puIGxhZG8uXG4gICAqL1xuICBkcmFmdFF1ZXN0aW9uKGZpZWxkOiBFZGl0YWJsZUZpZWxkRGVmKTogdm9pZCB7XG4gICAgdGhpcy5xdWVzdGlvbnMudXBkYXRlKHJvd3MgPT4gcm93cy5tYXAociA9PiAoci5pZCA9PT0gZmllbGQuaWQgPyB7IC4uLnIsIC4uLmZpZWxkIH0gOiByKSkpO1xuICAgIGlmICh0aGlzLnZhbGlkYXRpb25FcnJvcigpKSB0aGlzLnZhbGlkYXRpb25FcnJvci5zZXQoJycpO1xuICB9XG5cbiAgYXBwbHlRdWVzdGlvbihmaWVsZDogRWRpdGFibGVGaWVsZERlZik6IHZvaWQge1xuICAgIHRoaXMucXVlc3Rpb25zLnVwZGF0ZShyb3dzID0+XG4gICAgICByb3dzLm1hcChyID0+XG4gICAgICAgIHIuaWQgPT09IGZpZWxkLmlkXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC4uLmZpZWxkLFxuICAgICAgICAgICAgICBuYW1lOiB0aGlzLmZvcm1CdWlsZGVyLnVuaXF1ZUZpZWxkTmFtZShcbiAgICAgICAgICAgICAgICBmaWVsZC5uYW1lIHx8IGZpZWxkLmxhYmVsLFxuICAgICAgICAgICAgICAgIHJvd3MuZmlsdGVyKG8gPT4gby5pZCAhPT0gci5pZClcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHJcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuZWRpdGluZ0lkLnNldCgnJyk7XG4gICAgdGhpcy52YWxpZGF0aW9uRXJyb3Iuc2V0KCcnKTtcbiAgfVxuXG4gIGFzeW5jIHNhdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuc2F2aW5nKCkpIHJldHVybjtcbiAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5zZXQoJycpO1xuXG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLnRpdGxlQ29udHJvbC52YWx1ZS50cmltKCk7XG4gICAgaWYgKCF0aXRsZSkge1xuICAgICAgdGhpcy50aXRsZUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3Iuc2V0KHRoaXMudCgnbm9UaXRsZScpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByb3dzID0gdGhpcy5xdWVzdGlvbnMoKTtcbiAgICBpZiAoIXJvd3MubGVuZ3RoKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5zZXQodGhpcy50KCdub1F1ZXN0aW9ucycpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHJvd3Muc29tZShyID0+ICFyLmxhYmVsLnRyaW0oKSkpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLnNldCh0aGlzLnQoJ2VtcHR5UXVlc3Rpb25MYWJlbCcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gRWwgZWRpdG9yIHlhIGxvIHZhbGlkYSBhbCBjZXJyYXIgY2FkYSBwcmVndW50YSwgcGVybyB1bmEgcHJlZ3VudGEgYWJpZXJ0YVxuICAgIC8vIChvIGNhcmdhZGEgZGUgdW5hIGVuY3Vlc3RhIHZpZWphKSBwdWVkZSBsbGVnYXIgYWPDoSBzaW4gb3BjaW9uZXMuXG4gICAgaWYgKHJvd3Muc29tZShyID0+IEZJRUxEX1RZUEVTX1dJVEhfT1BUSU9OUy5pbmNsdWRlcyhyLnR5cGUpICYmICFyLm9wdGlvbnM/Lmxlbmd0aCkpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLnNldCh0aGlzLnQoJ21pc3NpbmdPcHRpb25zJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2F2aW5nLnNldCh0cnVlKTtcblxuICAgIGNvbnN0IGZpZWxkU2NoZW1hOiBGaWVsZFNjaGVtYURlZltdID0gW107XG4gICAgcm93cy5mb3JFYWNoKChyb3csIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBuYW1lID0gdGhpcy5mb3JtQnVpbGRlci51bmlxdWVGaWVsZE5hbWUocm93Lm5hbWUgfHwgcm93LmxhYmVsLCBmaWVsZFNjaGVtYSk7XG4gICAgICBmaWVsZFNjaGVtYS5wdXNoKFxuICAgICAgICB0aGlzLmZvcm1CdWlsZGVyLmNyZWF0ZUZpZWxkU2NoZW1hKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBsYWJlbDogcm93LmxhYmVsLnRyaW0oKSxcbiAgICAgICAgICAgIHR5cGU6IHJvdy50eXBlLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHJvdy5yZXF1aXJlZCxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyVGV4dDogcm93LnBsYWNlaG9sZGVyVGV4dCxcbiAgICAgICAgICAgIGhpbnRUZXh0OiByb3cuaGludFRleHQsXG4gICAgICAgICAgICBvcHRpb25zOiByb3cub3B0aW9ucyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluZGV4XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0eXBlSWQgPVxuICAgICAgdGhpcy5wcm9wcy50eXBlSWQgPz8gYCR7dGhpcy5wcm9wcy50eXBlUHJlZml4ID8/IERFRkFVTFRfVFlQRV9QUkVGSVh9OiR7dGhpcy5mb3JtQnVpbGRlci50b1Rva2VuKHRpdGxlKX1gO1xuICAgIGNvbnN0IHN1YnRpdGxlID0gdGhpcy5zdWJ0aXRsZUNvbnRyb2wudmFsdWUudHJpbSgpO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGxhYmVsOiB0aXRsZSxcbiAgICAgIHN1YnRpdGxlLFxuICAgICAgZW50aXR5UmVmOiB0aGlzLnByb3BzLmVudGl0eVJlZixcbiAgICAgIHNraXBSZXZpZXc6IHRydWUsXG4gICAgICBza2lwU3VibWl0dGVySWRlbnRpdHk6IHRydWUsXG4gICAgICBmaWVsZFNjaGVtYSxcbiAgICAgIGFsbG93QW5vbnltb3VzOiB0aGlzLnByb3BzLmFsbG93QW5vbnltb3VzID8/IHRydWUsXG4gICAgICB2aXNpYmlsaXR5OiB0aGlzLnByb3BzLnZpc2liaWxpdHkgPz8gKCdQVUJMSUMnIGFzIGNvbnN0KSxcbiAgICB9O1xuXG4gICAgY29uc3QgY2FsbCQgPSB0aGlzLnByb3BzLnR5cGVJZFxuICAgICAgPyB0aGlzLnJlcXVlc3RzLnVwZGF0ZVJlcXVlc3RUeXBlKHRoaXMucHJvcHMudHlwZUlkLCBwYXlsb2FkKVxuICAgICAgOiB0aGlzLnJlcXVlc3RzLmNyZWF0ZVJlcXVlc3RUeXBlKHsgLi4ucGF5bG9hZCwgdHlwZUlkIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHR5cGVDb25maWcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShjYWxsJCk7XG4gICAgICB0aGlzLnNhdmluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5zYXZlZC5lbWl0KHsgdHlwZUNvbmZpZyB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuc2F2aW5nLnNldChmYWxzZSk7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdzdXJ2ZXlCdWlsZGVyLnNhdmUnLFxuICAgICAgICBmYWxsYmFja0tleTogJ3NhdmVFcnJvcicsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IE5BTUVTUEFDRSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcm93RnJvbUZpZWxkKGY6IEZpZWxkU2NoZW1hRGVmKTogRWRpdGFibGVGaWVsZERlZiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBgcm93LSR7cm93VWlkKyt9YCxcbiAgICAgIG5hbWU6IGYubmFtZSxcbiAgICAgIGxhYmVsOiBmLmxhYmVsID8/ICcnLFxuICAgICAgcGxhY2Vob2xkZXJUZXh0OiBmLnBsYWNlaG9sZGVyVGV4dCA/PyAnJyxcbiAgICAgIGhpbnRUZXh0OiBmLmhpbnRUZXh0ID8/ICcnLFxuICAgICAgdHlwZTogZi50eXBlLFxuICAgICAgcmVxdWlyZWQ6ICEhZi5yZXF1aXJlZCxcbiAgICAgIG9wdGlvbnM6IGYub3B0aW9ucyxcbiAgICB9O1xuICB9XG59XG4iXX0=
512
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9zdXJ2ZXktYnVpbGRlci9zdXJ2ZXktYnVpbGRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRXBHLE9BQU8sRUFBa0IsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLDBCQUEwQixHQUMzQixNQUFNLHNEQUFzRCxDQUFDO0FBQzlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRTNGLE9BQU8sRUFJTCxxQkFB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LEVBQUUsQ0FBQyxDQUFDLE9BQU87U0FDbkIsQ0FBQztJQUNKLENBQUM7K0dBcFJVLHNCQUFzQjttR0FBdEIsc0JBQXNCLHVKQXRNdkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRHVCw2K0NBbkhDLFlBQVksOEJBQ1osbUJBQW1CLCtCQUNuQixrQkFBa0Isd0ZBQ2xCLGVBQWUsMEdBQ2Ysa0JBQWtCLDhFQUNsQiwwQkFBMEI7OzRGQXdNakIsc0JBQXNCO2tCQWpObEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQiwwQkFBMEI7cUJBQzNCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRHVDt3REEyRlEsS0FBSztzQkFBYixLQUFLO2dCQUNhLEtBQUs7c0JBQXZCLE1BQU07Z0JBT1ksS0FBSztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXF1ZXN0cy9yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVxdWVzdEZvcm1CdWlsZGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JlcXVlc3RzL3JlcXVlc3QtZm9ybS1idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmllbGRTY2hlbWFEZWYgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9yZXF1ZXN0cy90eXBlcyc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSwgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBDb2xvciB9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7IFZhbHRlY2hFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvdmFsdGVjaC1lcnJvci5zZXJ2aWNlJztcbmltcG9ydCB7IFRleHRJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90ZXh0LWlucHV0L3RleHQtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEZJRUxEX1RZUEVTX1dJVEhfT1BUSU9OUyxcbiAgRmllbGRTY2hlbWFFZGl0b3JDb21wb25lbnQsXG59IGZyb20gJy4uL2ZpZWxkLXNjaGVtYS1lZGl0b3IvZmllbGQtc2NoZW1hLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRklFTERfU0NIRU1BX0VESVRPUl9JMThOIH0gZnJvbSAnLi4vZmllbGQtc2NoZW1hLWVkaXRvci9maWVsZC1zY2hlbWEtZWRpdG9yLmkxOG4nO1xuaW1wb3J0IHsgRWRpdGFibGVGaWVsZERlZiwgRmllbGRTY2hlbWFFZGl0b3JNZXRhZGF0YSB9IGZyb20gJy4uL2ZpZWxkLXNjaGVtYS1lZGl0b3IvdHlwZXMnO1xuaW1wb3J0IHtcbiAgU3VydmV5QnVpbGRlck1ldGFkYXRhLFxuICBTdXJ2ZXlCdWlsZGVyU2F2ZUV2ZW50LFxuICBTdXJ2ZXlEcmFmdEV2ZW50LFxuICBTVVJWRVlfUVVFU1RJT05fVFlQRVMsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgU1VSVkVZX0JVSUxERVJfSTE4TiB9IGZyb20gJy4vc3VydmV5LWJ1aWxkZXIuaTE4bic7XG5cbmNvbnN0IE5BTUVTUEFDRSA9ICdTdXJ2ZXlCdWlsZGVyJztcbmNvbnN0IEVESVRPUl9OQU1FU1BBQ0UgPSAnRmllbGRTY2hlbWFFZGl0b3InO1xuY29uc3QgREVGQVVMVF9UWVBFX1BSRUZJWCA9ICdzdXJ2ZXknO1xuXG5sZXQgcm93VWlkID0gMDtcblxuLyoqXG4gKiB2YWwtc3VydmV5LWJ1aWxkZXJcbiAqXG4gKiBBdXRvcsOtYSBkZSB1bmEgZW5jdWVzdGE6IHTDrXR1bG8sIHN1YnTDrXR1bG8sIHByZWd1bnRhcyDigJQgYXJtYSBvIGFjdHVhbGl6YSB1blxuICogYFJlcXVlc3RUeXBlQ29uZmlnYCBjb24gYFR5cGU6IFwiPHByZWZpeD46PHNsdWc+XCJgIChBRFItMDkyKSwgYHNraXBSZXZpZXc6XG4gKiB0cnVlYCAoY2FkYSByZXNwdWVzdGEgc2UgYWdyZWdhLCBubyBzZSByZXZpc2EgdW5hIHBvciB1bmEpIHkgZWwgYEVudGl0eVJlZmBcbiAqIHF1ZSBsZSBwYXNhIGVsIGNvbnN1bWVyIChlai4gZWwgZXZlbnRvIGRlIGJpbmdvIGR1ZcOxbyBkZSBsYSBlbmN1ZXN0YSkuXG4gKlxuICogQ2FkYSBwcmVndW50YSBzZSBlZGl0YSBjb24gYHZhbC1maWVsZC1zY2hlbWEtZWRpdG9yYCwgZWwgbWlzbW8gZWRpdG9yIHF1ZSB1c2FcbiAqIGVsIGNoZWNrb3V0IGRlIGJpbmdvIOKAlCBkZSBhaMOtIHF1ZSB1bmEgcHJlZ3VudGEgdGVuZ2EgdGlwbywgcGxhY2Vob2xkZXIsIG5vdGFcbiAqIHkgb3BjaW9uZXMsIG5vIHNvbG8gdGV4dG8uIExhIHYxIGRlIGVzdGUgY29tcG9uZW50ZSB0ZW7DrWEgc3UgcHJvcGlvIGVkaXRvclxuICogcG9icmUgKGRvcyB0aXBvcywgc2luIG9wY2lvbmVzKTsgbGEgRmFzZSA1IGRlbCBBRFItMDkyIGxvIHJlZW1wbGF6w7MgcG9yIGVsXG4gKiBvcmdhbmlzbSBjb21wYXJ0aWRvIGVuIHZleiBkZSBtZWpvcmFybG8gcG9yIGR1cGxpY2Fkby5cbiAqXG4gKiBFbCBjYXTDoWxvZ28gcXVlIG9mcmVjZSBzYWxlIGRlIGBTVVJWRVlfUVVFU1RJT05fVFlQRVNgIOKAlCBhY290YWRvIGEgbG8gcXVlXG4gKiBgdmFsLXN1cnZleS1yZXNwb25zZWAgc2FiZSByZW5kZXJpemFyLCBubyBhIGxvIHF1ZSBlbCBlZGl0b3Igc2FiZSBlZGl0YXIuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1zdXJ2ZXktYnVpbGRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBUZXh0SW5wdXRDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIEZvcm1GaWVsZENvbXBvbmVudCxcbiAgICBGaWVsZFNjaGVtYUVkaXRvckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwic3VydmV5LWJ1aWxkZXJcIj5cbiAgICAgIDx2YWwtZm9ybS1maWVsZCBbbGFiZWxdPVwidCgndGl0bGVMYWJlbCcpXCI+XG4gICAgICAgIDx2YWwtdGV4dC1pbnB1dCBbcHJvcHNdPVwieyBjb250cm9sOiB0aXRsZUNvbnRyb2wsIHBsYWNlaG9sZGVyOiB0KCd0aXRsZVBsYWNlaG9sZGVyJykgfVwiIC8+XG4gICAgICA8L3ZhbC1mb3JtLWZpZWxkPlxuICAgICAgPHZhbC1mb3JtLWZpZWxkIFtsYWJlbF09XCJ0KCdzdWJ0aXRsZUxhYmVsJylcIj5cbiAgICAgICAgPHZhbC10ZXh0LWlucHV0IFtwcm9wc109XCJ7IGNvbnRyb2w6IHN1YnRpdGxlQ29udHJvbCwgcGxhY2Vob2xkZXI6IHQoJ3N1YnRpdGxlUGxhY2Vob2xkZXInKSB9XCIgLz5cbiAgICAgIDwvdmFsLWZvcm0tZmllbGQ+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2ZXktYnVpbGRlcl9fcXVlc3Rpb25zXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3VydmV5LWJ1aWxkZXJfX3F1ZXN0aW9ucy1sYWJlbFwiPnt7IHQoJ3F1ZXN0aW9uc0xhYmVsJykgfX08L3NwYW4+XG5cbiAgICAgICAgQGlmICghcXVlc3Rpb25zKCkubGVuZ3RoKSB7XG4gICAgICAgICAgPHAgY2xhc3M9XCJzdXJ2ZXktYnVpbGRlcl9fZW1wdHlcIj57eyB0KCdub1F1ZXN0aW9ucycpIH19PC9wPlxuICAgICAgICB9XG5cbiAgICAgICAgQGZvciAocm93IG9mIHF1ZXN0aW9ucygpOyB0cmFjayByb3cuaWQ7IGxldCBpID0gJGluZGV4OyBsZXQgZmlyc3QgPSAkZmlyc3Q7IGxldCBsYXN0ID0gJGxhc3QpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmV5LWJ1aWxkZXJfX3Jvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1cnZleS1idWlsZGVyX19yb3ctaGVhZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmV5LWJ1aWxkZXJfX3Jvdy10ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eyByb3cubGFiZWwgfHwgdCgndW50aXRsZWRRdWVzdGlvbicpIH19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdHlwZUxhYmVsKHJvdy50eXBlKSB9fXt7IHJvdy5yZXF1aXJlZCA/ICcgwrcgJyArIHQoJ3JlcXVpcmVkVGFnJykgOiAnJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2ZXktYnVpbGRlcl9fcm93LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cImljb25BY3Rpb24oJ3EtdXAtJyArIHJvdy5pZCwgJ2Fycm93LXVwLW91dGxpbmUnLCB0KCdtb3ZlVXAnKSwgZmlyc3QpXCJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cIm1vdmUoaSwgLTEpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwiaWNvbkFjdGlvbigncS1kb3duLScgKyByb3cuaWQsICdhcnJvdy1kb3duLW91dGxpbmUnLCB0KCdtb3ZlRG93bicpLCBsYXN0KVwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJtb3ZlKGksIDEpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwiaWNvbkFjdGlvbigncS1jb3B5LScgKyByb3cuaWQsICdjb3B5LW91dGxpbmUnLCB0KCdkdXBsaWNhdGVRdWVzdGlvbicpKVwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJkdXBsaWNhdGUocm93KVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cImljb25BY3Rpb24oJ3EtZWRpdC0nICsgcm93LmlkLCAnY3JlYXRlLW91dGxpbmUnLCB0KCdlZGl0UXVlc3Rpb24nKSlcIlxuICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwidG9nZ2xlRWRpdChyb3cpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDx2YWwtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbcHJvcHNdPVwiaWNvbkFjdGlvbigncS1yZW1vdmUtJyArIHJvdy5pZCwgJ3RyYXNoLW91dGxpbmUnLCB0KCdyZW1vdmVRdWVzdGlvbicpLCBmYWxzZSwgJ2RhbmdlcicpXCJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInJlbW92ZVF1ZXN0aW9uKHJvdylcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIEBpZiAoZWRpdGluZ0lkKCkgPT09IHJvdy5pZCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmV5LWJ1aWxkZXJfX3Jvdy1lZGl0b3JcIj5cbiAgICAgICAgICAgICAgICA8dmFsLWZpZWxkLXNjaGVtYS1lZGl0b3JcbiAgICAgICAgICAgICAgICAgICNlZGl0b3JcbiAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJlZGl0b3JQcm9wcyhyb3cpXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2VkKT1cImRyYWZ0UXVlc3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAoc2F2ZSk9XCJhcHBseVF1ZXN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuOiAncS1kb25lLScgKyByb3cuaWQsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHQoJ2RvbmVFZGl0aW5nJyksXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICAgICAgICAgICAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgICAgICAgICAgICAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgICAgICAgICBzdGF0ZTogJ0VOQUJMRUQnLFxuICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJlZGl0b3Iuc3VibWl0KClcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgdG9rZW46ICdzdXJ2ZXktYnVpbGRlci1hZGQtcXVlc3Rpb24nLFxuICAgICAgICAgICAgdGV4dDogdCgnYWRkUXVlc3Rpb24nKSxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgICAgIGljb246IHsgbmFtZTogJ2FkZC1vdXRsaW5lJywgc2xvdDogJ3N0YXJ0JyB9LFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChvbkNsaWNrKT1cImFkZFF1ZXN0aW9uKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAodmFsaWRhdGlvbkVycm9yKCkpIHtcbiAgICAgICAgPHAgY2xhc3M9XCJzdXJ2ZXktYnVpbGRlcl9fZXJyb3JcIj57eyB2YWxpZGF0aW9uRXJyb3IoKSB9fTwvcD5cbiAgICAgIH1cblxuICAgICAgPHZhbC1idXR0b25cbiAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICB0b2tlbjogJ3N1cnZleS1idWlsZGVyLXNhdmUnLFxuICAgICAgICAgIHRleHQ6IHQoJ3NhdmUnKSxcbiAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgICAgICBleHBhbmQ6ICdibG9jaycsXG4gICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgc3RhdGU6IHNhdmluZygpID8gJ1dPUktJTkcnIDogJ0VOQUJMRUQnLFxuICAgICAgICB9XCJcbiAgICAgICAgKG9uQ2xpY2spPVwic2F2ZSgpXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICAuc3VydmV5LWJ1aWxkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDE2cHg7XG4gICAgICB9XG4gICAgICAuc3VydmV5LWJ1aWxkZXJfX3F1ZXN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgIH1cbiAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcXVlc3Rpb25zLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgIH1cbiAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fZW1wdHkge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgIH1cbiAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS12YWwtcmFkaXVzLW1kLCAxMnB4KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNhcmQtYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbiAgICAgIH1cbiAgICAgIC8qIE1vYmlsZS1maXJzdDogZWwgdGV4dG8gZGUgbGEgcHJlZ3VudGEgeSBzdXMgYWNjaW9uZXMgYXBpbGFkb3MuIEVuIGZpbGFcbiAgICAgICAgIGZpamEsIGNpbmNvIGJvdG9uZXMgbGUgY29tZW4gZWwgYW5jaG8gYWwgdGV4dG8geSBsbyBwYXJ0ZW4gZW4gbXVjaGFzXG4gICAgICAgICBsw61uZWFzIGFuZ29zdGFzIOKAlCBqdXN0byBlbiBlbCB2aWV3cG9ydCBkb25kZSBtw6FzIHNlIHVzYS4gKi9cbiAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcm93LWhlYWQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cbiAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcm93LXRleHQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuICAgICAgLnN1cnZleS1idWlsZGVyX19yb3ctdGV4dCBzdHJvbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLXRleHQtY29sb3IsICMwMDApO1xuICAgICAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICAgIH1cbiAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcm93LXRleHQgc3BhbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICB9XG4gICAgICAuc3VydmV5LWJ1aWxkZXJfX3Jvdy1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIH1cbiAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcm93LWVkaXRvciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDEycHg7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1pb24tYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xuICAgICAgfVxuICAgICAgLnN1cnZleS1idWlsZGVyX19lcnJvciB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIpO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgfVxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gICAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcm93LWhlYWQge1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICB9XG4gICAgICAgIC5zdXJ2ZXktYnVpbGRlcl9fcm93LXRleHQge1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTdXJ2ZXlCdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcHJvcHM6IFN1cnZleUJ1aWxkZXJNZXRhZGF0YSA9IHt9O1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFN1cnZleUJ1aWxkZXJTYXZlRXZlbnQ+KCk7XG4gIC8qKlxuICAgKiBFbWl0ZSBsbyBlc2NyaXRvLCB5YSB2YWxpZGFkbywgU0lOIGd1YXJkYXJsby4gU29sbyBjb24gYHByb3BzLnBlcnNpc3Q6XG4gICAqIGZhbHNlYCDigJQgdmVyIGVsIGNvbWVudGFyaW8gZGUgZXNlIGNhbXBvOiBjdWFuZG8gbGEgYXBwIHRpZW5lIGVuZHBvaW50XG4gICAqIHByb3BpbywgZ3VhcmRhciBkZXNkZSBhY8OhIHNlIHNhbHRhIGxhIHZhbGlkYWNpw7NuIGRlIGxhIGVudGlkYWQgZHVlw7FhIHkgZWxcbiAgICogcGVybWlzbyBkZSBsYSB2ZXJ0aWNhbC5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBkcmFmdCA9IG5ldyBFdmVudEVtaXR0ZXI8U3VydmV5RHJhZnRFdmVudD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3RzID0gaW5qZWN0KFJlcXVlc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlciA9IGluamVjdChSZXF1ZXN0Rm9ybUJ1aWxkZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvcnMgPSBpbmplY3QoVmFsdGVjaEVycm9yU2VydmljZSk7XG5cbiAgcmVhZG9ubHkgdGl0bGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xuICByZWFkb25seSBzdWJ0aXRsZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycsIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XG4gIHJlYWRvbmx5IHF1ZXN0aW9ucyA9IHNpZ25hbDxFZGl0YWJsZUZpZWxkRGVmW10+KFtdKTtcbiAgcmVhZG9ubHkgZWRpdGluZ0lkID0gc2lnbmFsKCcnKTtcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbkVycm9yID0gc2lnbmFsKCcnKTtcbiAgcmVhZG9ubHkgc2F2aW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoTkFNRVNQQUNFKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoTkFNRVNQQUNFLCBTVVJWRVlfQlVJTERFUl9JMThOKTtcbiAgICB9XG4gICAgLy8gRWwgbm9tYnJlIGRlbCB0aXBvIGRlIGNhZGEgcHJlZ3VudGEgc2UgbXVlc3RyYSBlbiBsYSBmaWxhIGNvbGFwc2FkYSwgcXVlXG4gICAgLy8gZGlidWphIGVzdGUgY29tcG9uZW50ZSB5IG5vIGVsIGVkaXRvciDigJQgc2kgbmFkaWUgbW9udMOzIHVuIGVkaXRvciB0b2RhdsOtYSxcbiAgICAvLyBlbCBuYW1lc3BhY2Ugbm8gZXhpc3RpcsOtYSB5IGxhIGZpbGEgbW9zdHJhcsOtYSBsYSBjbGF2ZSBjcnVkYS5cbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoRURJVE9SX05BTUVTUEFDRSkpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKEVESVRPUl9OQU1FU1BBQ0UsIEZJRUxEX1NDSEVNQV9FRElUT1JfSTE4Tik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnR5cGVJZCkgcmV0dXJuO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjZmcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnJlcXVlc3RzLmdldFJlcXVlc3RUeXBlKHRoaXMucHJvcHMudHlwZUlkKSk7XG4gICAgICB0aGlzLnRpdGxlQ29udHJvbC5zZXRWYWx1ZShjZmcubGFiZWwpO1xuICAgICAgdGhpcy5zdWJ0aXRsZUNvbnRyb2wuc2V0VmFsdWUoY2ZnLnN1YnRpdGxlID8/ICcnKTtcbiAgICAgIHRoaXMucXVlc3Rpb25zLnNldChbLi4uY2ZnLmZpZWxkU2NoZW1hXS5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIC0gYi5vcmRlcikubWFwKGYgPT4gdGhpcy5yb3dGcm9tRmllbGQoZikpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ3N1cnZleUJ1aWxkZXIubG9hZCcsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAnbG9hZEVycm9yJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogTkFNRVNQQUNFLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCBOQU1FU1BBQ0UpO1xuICB9XG5cbiAgdHlwZUxhYmVsKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoYHR5cGUke3R5cGV9YCwgRURJVE9SX05BTUVTUEFDRSk7XG4gIH1cblxuICBxdWVzdGlvblR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5xdWVzdGlvblR5cGVzPy5sZW5ndGggPyB0aGlzLnByb3BzLnF1ZXN0aW9uVHlwZXMgOiBTVVJWRVlfUVVFU1RJT05fVFlQRVM7XG4gIH1cblxuICBlZGl0b3JQcm9wcyhyb3c6IEVkaXRhYmxlRmllbGREZWYpOiBGaWVsZFNjaGVtYUVkaXRvck1ldGFkYXRhIHtcbiAgICByZXR1cm4geyBtb2RlOiAnZWRpdCcsIGZpZWxkOiByb3csIGFsbG93ZWRUeXBlczogdGhpcy5xdWVzdGlvblR5cGVzKCkgfTtcbiAgfVxuXG4gIGljb25BY3Rpb24oXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBpY29uOiBzdHJpbmcsXG4gICAgbGFiZWw6IHN0cmluZyxcbiAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgIGNvbG9yOiBDb2xvciA9ICdkYXJrJ1xuICApOiBCdXR0b25NZXRhZGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRva2VuLFxuICAgICAgdGV4dDogJycsXG4gICAgICBhcmlhTGFiZWw6IGxhYmVsLFxuICAgICAgY29sb3IsXG4gICAgICBmaWxsOiAnY2xlYXInLFxuICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICBzdGF0ZTogZGlzYWJsZWQgPyBDb21wb25lbnRTdGF0ZXMuRElTQUJMRUQgOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgIGljb246IHsgbmFtZTogaWNvbiwgc2xvdDogJ2ljb24tb25seScgfSxcbiAgICB9O1xuICB9XG5cbiAgYWRkUXVlc3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3Qgcm93OiBFZGl0YWJsZUZpZWxkRGVmID0ge1xuICAgICAgaWQ6IGByb3ctJHtyb3dVaWQrK31gLFxuICAgICAgbmFtZTogJycsXG4gICAgICBsYWJlbDogJycsXG4gICAgICBwbGFjZWhvbGRlclRleHQ6ICcnLFxuICAgICAgaGludFRleHQ6ICcnLFxuICAgICAgdHlwZTogdGhpcy5xdWVzdGlvblR5cGVzKClbMF0sXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9O1xuICAgIHRoaXMucXVlc3Rpb25zLnVwZGF0ZShyb3dzID0+IFsuLi5yb3dzLCByb3ddKTtcbiAgICAvLyBVbmEgcHJlZ3VudGEgcmVjacOpbiBhZ3JlZ2FkYSBlc3TDoSB2YWPDrWE6IGFicmlybGEgZXMgZWwgw7puaWNvIHBhc29cbiAgICAvLyBzaWd1aWVudGUgcG9zaWJsZSwgeSBkZWphcmxhIGNlcnJhZGEgbGEgaGFyw61hIHZlciBjb21vIHVuYSBmaWxhIHJvdGEuXG4gICAgdGhpcy5lZGl0aW5nSWQuc2V0KHJvdy5pZCk7XG4gIH1cblxuICB0b2dnbGVFZGl0KHJvdzogRWRpdGFibGVGaWVsZERlZik6IHZvaWQge1xuICAgIHRoaXMuZWRpdGluZ0lkLnVwZGF0ZShjdXJyZW50ID0+IChjdXJyZW50ID09PSByb3cuaWQgPyAnJyA6IHJvdy5pZCkpO1xuICB9XG5cbiAgcmVtb3ZlUXVlc3Rpb24ocm93OiBFZGl0YWJsZUZpZWxkRGVmKTogdm9pZCB7XG4gICAgdGhpcy5xdWVzdGlvbnMudXBkYXRlKHJvd3MgPT4gcm93cy5maWx0ZXIociA9PiByLmlkICE9PSByb3cuaWQpKTtcbiAgICBpZiAodGhpcy5lZGl0aW5nSWQoKSA9PT0gcm93LmlkKSB0aGlzLmVkaXRpbmdJZC5zZXQoJycpO1xuICB9XG5cbiAgZHVwbGljYXRlKHJvdzogRWRpdGFibGVGaWVsZERlZik6IHZvaWQge1xuICAgIGNvbnN0IGNvcHk6IEVkaXRhYmxlRmllbGREZWYgPSB7XG4gICAgICAuLi5yb3csXG4gICAgICBpZDogYHJvdy0ke3Jvd1VpZCsrfWAsXG4gICAgICAvLyBTaW4gdG9rZW4gcHJvcGlvIGxhIGNvcGlhIHBpc2Fyw61hIGxhcyByZXNwdWVzdGFzIGRlbCBvcmlnaW5hbDogZG9zXG4gICAgICAvLyBjYW1wb3MgY29uIGVsIG1pc21vIGBuYW1lYCBzb24gZWwgbWlzbW8gY2FtcG8gcGFyYSBlbCBiYWNrZW5kLlxuICAgICAgbmFtZTogdGhpcy5mb3JtQnVpbGRlci51bmlxdWVGaWVsZE5hbWUocm93Lm5hbWUgfHwgcm93LmxhYmVsLCB0aGlzLnF1ZXN0aW9ucygpKSxcbiAgICAgIG9wdGlvbnM6IHJvdy5vcHRpb25zID8gcm93Lm9wdGlvbnMubWFwKG8gPT4gKHsgLi4ubyB9KSkgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgICB0aGlzLnF1ZXN0aW9ucy51cGRhdGUocm93cyA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IHJvd3MuZmluZEluZGV4KHIgPT4gci5pZCA9PT0gcm93LmlkKTtcbiAgICAgIHJldHVybiBbLi4ucm93cy5zbGljZSgwLCBpbmRleCArIDEpLCBjb3B5LCAuLi5yb3dzLnNsaWNlKGluZGV4ICsgMSldO1xuICAgIH0pO1xuICB9XG5cbiAgbW92ZShpbmRleDogbnVtYmVyLCBkZWx0YTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gaW5kZXggKyBkZWx0YTtcbiAgICB0aGlzLnF1ZXN0aW9ucy51cGRhdGUocm93cyA9PiB7XG4gICAgICBpZiAodGFyZ2V0IDwgMCB8fCB0YXJnZXQgPj0gcm93cy5sZW5ndGgpIHJldHVybiByb3dzO1xuICAgICAgY29uc3QgbmV4dCA9IFsuLi5yb3dzXTtcbiAgICAgIFtuZXh0W2luZGV4XSwgbmV4dFt0YXJnZXRdXSA9IFtuZXh0W3RhcmdldF0sIG5leHRbaW5kZXhdXTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEd1YXJkYSBsbyBxdWUgc2UgZXN0w6EgZXNjcmliaWVuZG8sIHNpbiBjZXJyYXIgZWwgZWRpdG9yIG5pIHZhbGlkYXIuXG4gICAqXG4gICAqIFNpbiBlc3RvLCBsbyB0aXBlYWRvIHNvbG8gZXhpc3TDrWEgZGVudHJvIGRlbCBlZGl0b3IgaGFzdGEgcXVlIGFsZ3VpZW5cbiAgICogdG9jYWJhIFwiTGlzdG9cIjogbGEgZmlsYSBzZWd1w61hIGRpY2llbmRvIFwiUHJlZ3VudGEgc2luIHRleHRvXCIgeSwgcGVvcixcbiAgICogXCJHdWFyZGFyIGVuY3Vlc3RhXCIgZmFsbGFiYSBjb24gXCJ0b2RhcyBsYXMgcHJlZ3VudGFzIG5lY2VzaXRhbiB0ZXh0b1wiIHNvYnJlXG4gICAqIHVuYSBwcmVndW50YSBxdWUgZW4gcGFudGFsbGEgY2xhcmFtZW50ZSB0ZW7DrWEgdGV4dG8uIFRvY2FyIFwiTGlzdG9cIiBlcmEgdW5cbiAgICogcGFzbyBvYmxpZ2F0b3JpbyBxdWUgbm8gc2UgdmXDrWEgcG9yIG5pbmfDum4gbGFkby5cbiAgICovXG4gIGRyYWZ0UXVlc3Rpb24oZmllbGQ6IEVkaXRhYmxlRmllbGREZWYpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXN0aW9ucy51cGRhdGUocm93cyA9PiByb3dzLm1hcChyID0+IChyLmlkID09PSBmaWVsZC5pZCA/IHsgLi4uciwgLi4uZmllbGQgfSA6IHIpKSk7XG4gICAgaWYgKHRoaXMudmFsaWRhdGlvbkVycm9yKCkpIHRoaXMudmFsaWRhdGlvbkVycm9yLnNldCgnJyk7XG4gIH1cblxuICBhcHBseVF1ZXN0aW9uKGZpZWxkOiBFZGl0YWJsZUZpZWxkRGVmKTogdm9pZCB7XG4gICAgdGhpcy5xdWVzdGlvbnMudXBkYXRlKHJvd3MgPT5cbiAgICAgIHJvd3MubWFwKHIgPT5cbiAgICAgICAgci5pZCA9PT0gZmllbGQuaWRcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgICAgIG5hbWU6IHRoaXMuZm9ybUJ1aWxkZXIudW5pcXVlRmllbGROYW1lKFxuICAgICAgICAgICAgICAgIGZpZWxkLm5hbWUgfHwgZmllbGQubGFiZWwsXG4gICAgICAgICAgICAgICAgcm93cy5maWx0ZXIobyA9PiBvLmlkICE9PSByLmlkKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogclxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5lZGl0aW5nSWQuc2V0KCcnKTtcbiAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5zZXQoJycpO1xuICB9XG5cbiAgYXN5bmMgc2F2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5zYXZpbmcoKSkgcmV0dXJuO1xuICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLnNldCgnJyk7XG5cbiAgICBjb25zdCB0aXRsZSA9IHRoaXMudGl0bGVDb250cm9sLnZhbHVlLnRyaW0oKTtcbiAgICBpZiAoIXRpdGxlKSB7XG4gICAgICB0aGlzLnRpdGxlQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5zZXQodGhpcy50KCdub1RpdGxlJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJvd3MgPSB0aGlzLnF1ZXN0aW9ucygpO1xuICAgIGlmICghcm93cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLnNldCh0aGlzLnQoJ25vUXVlc3Rpb25zJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocm93cy5zb21lKHIgPT4gIXIubGFiZWwudHJpbSgpKSkge1xuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3Iuc2V0KHRoaXMudCgnZW1wdHlRdWVzdGlvbkxhYmVsJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBFbCBlZGl0b3IgeWEgbG8gdmFsaWRhIGFsIGNlcnJhciBjYWRhIHByZWd1bnRhLCBwZXJvIHVuYSBwcmVndW50YSBhYmllcnRhXG4gICAgLy8gKG8gY2FyZ2FkYSBkZSB1bmEgZW5jdWVzdGEgdmllamEpIHB1ZWRlIGxsZWdhciBhY8OhIHNpbiBvcGNpb25lcy5cbiAgICBpZiAocm93cy5zb21lKHIgPT4gRklFTERfVFlQRVNfV0lUSF9PUFRJT05TLmluY2x1ZGVzKHIudHlwZSkgJiYgIXIub3B0aW9ucz8ubGVuZ3RoKSkge1xuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3Iuc2V0KHRoaXMudCgnbWlzc2luZ09wdGlvbnMnKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGRTY2hlbWE6IEZpZWxkU2NoZW1hRGVmW10gPSBbXTtcbiAgICByb3dzLmZvckVhY2goKHJvdywgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLmZvcm1CdWlsZGVyLnVuaXF1ZUZpZWxkTmFtZShyb3cubmFtZSB8fCByb3cubGFiZWwsIGZpZWxkU2NoZW1hKTtcbiAgICAgIGZpZWxkU2NoZW1hLnB1c2goXG4gICAgICAgIHRoaXMuZm9ybUJ1aWxkZXIuY3JlYXRlRmllbGRTY2hlbWEoXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGxhYmVsOiByb3cubGFiZWwudHJpbSgpLFxuICAgICAgICAgICAgdHlwZTogcm93LnR5cGUsXG4gICAgICAgICAgICByZXF1aXJlZDogcm93LnJlcXVpcmVkLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXJUZXh0OiByb3cucGxhY2Vob2xkZXJUZXh0LFxuICAgICAgICAgICAgaGludFRleHQ6IHJvdy5oaW50VGV4dCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHJvdy5vcHRpb25zLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5kZXhcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHN1YnRpdGxlID0gdGhpcy5zdWJ0aXRsZUNvbnRyb2wudmFsdWUudHJpbSgpO1xuXG4gICAgLy8gTGEgYXBwIGd1YXJkYTogYWPDoSBzb2xvIHNlIHZhbGlkYSB5IHNlIGVudHJlZ2EgbG8gZXNjcml0by5cbiAgICBpZiAodGhpcy5wcm9wcy5wZXJzaXN0ID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5kcmFmdC5lbWl0KHsgbGFiZWw6IHRpdGxlLCBzdWJ0aXRsZSwgcXVlc3Rpb25zOiBmaWVsZFNjaGVtYSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNhdmluZy5zZXQodHJ1ZSk7XG5cbiAgICAvLyBgdHlwZUlkYCBkZXJpdmFkbyBkZWwgdMOtdHVsbzogc2lydmUgcGFyYSB1biB0aXBvIGRlIHNvbGljaXR1ZCBkZVxuICAgIC8vIHBsYXRhZm9ybWEsIGRvbmRlIGVsIHTDrXR1bG8gRVMgbGEgaWRlbnRpZGFkLiBQYXJhIHVuYSBlbmN1ZXN0YSBhdGFkYSBhXG4gICAgLy8gdW5hIGVudGlkYWQgTk8gYWxjYW56YSDigJQgZG9zIGV2ZW50b3MgY29uIGVsIG1pc21vIHTDrXR1bG8gY29saXNpb25hcsOtYW4gZW5cbiAgICAvLyBlbCBtaXNtbyB0aXBvIHkgY29tcGFydGlyw61hbiByZXNwdWVzdGFzLiBQb3IgZXNvIHVuYSB2ZXJ0aWNhbCB1c2Egc3VcbiAgICAvLyBlbmRwb2ludCAoYHBlcnNpc3Q6IGZhbHNlYCkgeSBhcm1hIGVsIGlkIGNvbiBsYSBlbnRpZGFkIGFkZW50cm8uXG4gICAgY29uc3QgdHlwZUlkID1cbiAgICAgIHRoaXMucHJvcHMudHlwZUlkID8/IGAke3RoaXMucHJvcHMudHlwZVByZWZpeCA/PyBERUZBVUxUX1RZUEVfUFJFRklYfToke3RoaXMuZm9ybUJ1aWxkZXIudG9Ub2tlbih0aXRsZSl9YDtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBsYWJlbDogdGl0bGUsXG4gICAgICBzdWJ0aXRsZSxcbiAgICAgIGVudGl0eVJlZjogdGhpcy5wcm9wcy5lbnRpdHlSZWYsXG4gICAgICBza2lwUmV2aWV3OiB0cnVlLFxuICAgICAgc2tpcFN1Ym1pdHRlcklkZW50aXR5OiB0cnVlLFxuICAgICAgZmllbGRTY2hlbWEsXG4gICAgICBhbGxvd0Fub255bW91czogdGhpcy5wcm9wcy5hbGxvd0Fub255bW91cyA/PyB0cnVlLFxuICAgICAgdmlzaWJpbGl0eTogdGhpcy5wcm9wcy52aXNpYmlsaXR5ID8/ICgnUFVCTElDJyBhcyBjb25zdCksXG4gICAgfTtcblxuICAgIGNvbnN0IGNhbGwkID0gdGhpcy5wcm9wcy50eXBlSWRcbiAgICAgID8gdGhpcy5yZXF1ZXN0cy51cGRhdGVSZXF1ZXN0VHlwZSh0aGlzLnByb3BzLnR5cGVJZCwgcGF5bG9hZClcbiAgICAgIDogdGhpcy5yZXF1ZXN0cy5jcmVhdGVSZXF1ZXN0VHlwZSh7IC4uLnBheWxvYWQsIHR5cGVJZCB9KTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB0eXBlQ29uZmlnID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oY2FsbCQpO1xuICAgICAgdGhpcy5zYXZpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuc2F2ZWQuZW1pdCh7IHR5cGVDb25maWcgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnNhdmluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnc3VydmV5QnVpbGRlci5zYXZlJyxcbiAgICAgICAgZmFsbGJhY2tLZXk6ICdzYXZlRXJyb3InLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiBOQU1FU1BBQ0UsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJvd0Zyb21GaWVsZChmOiBGaWVsZFNjaGVtYURlZik6IEVkaXRhYmxlRmllbGREZWYge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogYHJvdy0ke3Jvd1VpZCsrfWAsXG4gICAgICBuYW1lOiBmLm5hbWUsXG4gICAgICBsYWJlbDogZi5sYWJlbCA/PyAnJyxcbiAgICAgIHBsYWNlaG9sZGVyVGV4dDogZi5wbGFjZWhvbGRlclRleHQgPz8gJycsXG4gICAgICBoaW50VGV4dDogZi5oaW50VGV4dCA/PyAnJyxcbiAgICAgIHR5cGU6IGYudHlwZSxcbiAgICAgIHJlcXVpcmVkOiAhIWYucmVxdWlyZWQsXG4gICAgICBvcHRpb25zOiBmLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -33,4 +33,4 @@ export const SURVEY_QUESTION_TYPES = [
33
33
  'EMAIL',
34
34
  'PHONE',
35
35
  ];
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3N1cnZleS1idWlsZGVyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNuQyxjQUFjO0lBQ2QsUUFBUTtJQUNSLE9BQU87SUFDUCxjQUFjO0lBQ2QsUUFBUTtJQUNSLE1BQU07SUFDTixVQUFVO0lBQ1YsUUFBUTtJQUNSLE1BQU07SUFDTixPQUFPO0lBQ1AsT0FBTztDQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlSZWYsIFJlcXVlc3RUeXBlQ29uZmlnLCBSZXF1ZXN0VmlzaWJpbGl0eSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JlcXVlc3RzL3R5cGVzJztcblxuLyoqXG4gKiBUaXBvcyBkZSBwcmVndW50YSBxdWUgb2ZyZWNlIHVuYSBlbmN1ZXN0YS5cbiAqXG4gKiBFbCBjb3J0ZSBubyBlcyBlc3TDqXRpY286ICoqdG9kbyB0aXBvIHF1ZSBlc3RhIGxpc3RhIG9mcmV6Y2EsIGB2YWwtc3VydmV5LXJlc3BvbnNlYFxuICogdGllbmUgcXVlIHNhYmVyIHJlbmRlcml6YXJsbyoqLCBvIGxhIGVuY3Vlc3RhIHNlIGd1YXJkYSBiaWVuIHkgc2UgcmVzcG9uZGUgbWFsXG4gKiAodW4gcmF0aW5nIGRpYnVqYWRvIGNvbW8gY2FqYSBkZSB0ZXh0bykuIEFtcGxpYXIgYWPDoSBvYmxpZ2EgYSBhbXBsaWFyIGVsXG4gKiByZW5kZXJlciBlbiBsYSBtaXNtYSBlbnRyZWdhLlxuICpcbiAqIExvcyBzZWlzIHByaW1lcm9zIHNvbiBkZSByZXNwdWVzdGEgY2VycmFkYSDigJQgYGNsb3NlZEFuc3dlclR5cGVzYCBlblxuICogYGJhY2tlbmQvZ28vc2VydmljZXMvcmVxdWVzdC9hZ2dyZWdhdGUuZ29gIGxvcyBjdWVudGEgcG9yIHZhbG9yIGVuIGVsXG4gKiBkYXNoYm9hcmQuIExvcyBzZWlzIMO6bHRpbW9zIHNvbiBhYmllcnRvczogZWwgZGFzaGJvYXJkIGxpc3RhIHN1cyByZXNwdWVzdGFzLlxuICpcbiAqIGBGSUxFYC9gQVRUQUNITUVOVGAgcXVlZGFuIGRlbGliZXJhZGFtZW50ZSBmdWVyYTogdW5hIGVuY3Vlc3RhIGVzIHDDumJsaWNhIHlcbiAqIGFuw7NuaW1hIHBvciBkZWZhdWx0LCB5IGFjZXB0YXIgc3ViaWRhcyBhaMOtIGVzIHN1cGVyZmljaWUgZGUgYWJ1c28gc2luIHVuIGNhc29cbiAqIGRlIHVzbyBxdWUgbG8gcGlkYS5cbiAqXG4gKiBgQ0hFQ0tgIHRhbWJpw6luIHF1ZWTDsyBmdWVyYSwgcG9yIG90cm8gbW90aXZvOiBwYXJhIHF1aWVuIHJlc3BvbmRlIGVyYSBsYSBtaXNtYVxuICogcHJlZ3VudGEgcXVlIGBUT0dHTEVgLiBEb3MgZm9ybWFzIGRlIGVzY3JpYmlyIFwic8OtIG8gbm9cIiBubyBsZSBkYWJhbiB1bmEgb3BjacOzblxuICogYSBxdWllbiBhcm1hIGxhIGVuY3Vlc3RhLCBsZSBkYWJhbiB1bmEgZHVkYS4gRWwgcmVuZGVyZXIgeSBsYSBhZ3JlZ2FjacOzblxuICogc2lndWVuIGVudGVuZGllbmRvIGBDSEVDS2Ag4oCUIHVuYSBlbmN1ZXN0YSB2aWVqYSBxdWUgbG8gdGVuZ2Egc2UgcmVzcG9uZGUgeSBzZVxuICogY3VlbnRhIGlndWFsLlxuICovXG5leHBvcnQgY29uc3QgU1VSVkVZX1FVRVNUSU9OX1RZUEVTID0gW1xuICAnRU1PSklfUkFUSU5HJyxcbiAgJ1NFTEVDVCcsXG4gICdSQURJTycsXG4gICdNVUxUSV9TRUxFQ1QnLFxuICAnVE9HR0xFJyxcbiAgJ1RFWFQnLFxuICAnVEVYVEFSRUEnLFxuICAnTlVNQkVSJyxcbiAgJ0RBVEUnLFxuICAnRU1BSUwnLFxuICAnUEhPTkUnLFxuXTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBRdWVkw7MgZGUgbGEgdjEgZGVsIGJ1aWxkZXIgKEFEUi0wOTIgRmFzZSAyKSwgY3VhbmRvIHVuYSBwcmVndW50YVxuICogZXJhIHNvbG8gbGFiZWwgKyB1bm8gZGUgZG9zIHRpcG9zLiBIb3kgdW5hIHByZWd1bnRhIGVzIHVuIGBFZGl0YWJsZUZpZWxkRGVmYFxuICogY29tcGxldG8g4oCUIHZlciBgdmFsLWZpZWxkLXNjaGVtYS1lZGl0b3JgLiBObyBzZSB1c2EgZW4gbmluZ8O6biBsYWRvOyBzZVxuICogY29uc2VydmEgdW4gY2ljbG8gcGFyYSBubyByb21wZXIgdW4gaW1wb3J0IHBlcmRpZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VydmV5UXVlc3Rpb25Sb3cge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB0eXBlOiAnVEVYVEFSRUEnIHwgJ0VNT0pJX1JBVElORyc7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1cnZleUJ1aWxkZXJNZXRhZGF0YSB7XG4gIC8qKiBTaSBzZSBwYXNhLCBlZGl0YSBlc2UgdGlwbyBleGlzdGVudGU7IHNpIG5vLCBjcmVhIHVubyBudWV2by4gKi9cbiAgdHlwZUlkPzogc3RyaW5nO1xuICAvKiogUHJlZmlqbyBkZWwgYFR5cGVgIGRlbCBSZXF1ZXN0VHlwZUNvbmZpZyDigJQgZWwgY29tcG9uZW50ZSBhcm1hIGBcIjxwcmVmaXg+OjxzbHVnPlwiYC4gKi9cbiAgdHlwZVByZWZpeD86IHN0cmluZztcbiAgZW50aXR5UmVmPzogRW50aXR5UmVmO1xuICAvKiogRGVmYXVsdCAnUFVCTElDJyDigJQgZWwgY2FzbyBtw6FzIGNvbcO6bjogbGluayBlbnZpYWRvIGEgZ2VudGUgc2luIGN1ZW50YS4gKi9cbiAgdmlzaWJpbGl0eT86IFJlcXVlc3RWaXNpYmlsaXR5O1xuICAvKiogRGVmYXVsdCB0cnVlLiAqL1xuICBhbGxvd0Fub255bW91cz86IGJvb2xlYW47XG4gIC8qKiBBY290YSBlbCBjYXTDoWxvZ28gZGUgYFNVUlZFWV9RVUVTVElPTl9UWVBFU2Agc2kgdW5hIGFwcCBxdWllcmUgb2ZyZWNlciBtZW5vcy4gKi9cbiAgcXVlc3Rpb25UeXBlcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1cnZleUJ1aWxkZXJTYXZlRXZlbnQge1xuICB0eXBlQ29uZmlnOiBSZXF1ZXN0VHlwZUNvbmZpZztcbn1cbiJdfQ==
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3N1cnZleS1idWlsZGVyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNuQyxjQUFjO0lBQ2QsUUFBUTtJQUNSLE9BQU87SUFDUCxjQUFjO0lBQ2QsUUFBUTtJQUNSLE1BQU07SUFDTixVQUFVO0lBQ1YsUUFBUTtJQUNSLE1BQU07SUFDTixPQUFPO0lBQ1AsT0FBTztDQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbnRpdHlSZWYsXG4gIEZpZWxkU2NoZW1hRGVmLFxuICBSZXF1ZXN0VHlwZUNvbmZpZyxcbiAgUmVxdWVzdFZpc2liaWxpdHksXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JlcXVlc3RzL3R5cGVzJztcblxuLyoqXG4gKiBUaXBvcyBkZSBwcmVndW50YSBxdWUgb2ZyZWNlIHVuYSBlbmN1ZXN0YS5cbiAqXG4gKiBFbCBjb3J0ZSBubyBlcyBlc3TDqXRpY286ICoqdG9kbyB0aXBvIHF1ZSBlc3RhIGxpc3RhIG9mcmV6Y2EsIGB2YWwtc3VydmV5LXJlc3BvbnNlYFxuICogdGllbmUgcXVlIHNhYmVyIHJlbmRlcml6YXJsbyoqLCBvIGxhIGVuY3Vlc3RhIHNlIGd1YXJkYSBiaWVuIHkgc2UgcmVzcG9uZGUgbWFsXG4gKiAodW4gcmF0aW5nIGRpYnVqYWRvIGNvbW8gY2FqYSBkZSB0ZXh0bykuIEFtcGxpYXIgYWPDoSBvYmxpZ2EgYSBhbXBsaWFyIGVsXG4gKiByZW5kZXJlciBlbiBsYSBtaXNtYSBlbnRyZWdhLlxuICpcbiAqIExvcyBzZWlzIHByaW1lcm9zIHNvbiBkZSByZXNwdWVzdGEgY2VycmFkYSDigJQgYGNsb3NlZEFuc3dlclR5cGVzYCBlblxuICogYGJhY2tlbmQvZ28vc2VydmljZXMvcmVxdWVzdC9hZ2dyZWdhdGUuZ29gIGxvcyBjdWVudGEgcG9yIHZhbG9yIGVuIGVsXG4gKiBkYXNoYm9hcmQuIExvcyBzZWlzIMO6bHRpbW9zIHNvbiBhYmllcnRvczogZWwgZGFzaGJvYXJkIGxpc3RhIHN1cyByZXNwdWVzdGFzLlxuICpcbiAqIGBGSUxFYC9gQVRUQUNITUVOVGAgcXVlZGFuIGRlbGliZXJhZGFtZW50ZSBmdWVyYTogdW5hIGVuY3Vlc3RhIGVzIHDDumJsaWNhIHlcbiAqIGFuw7NuaW1hIHBvciBkZWZhdWx0LCB5IGFjZXB0YXIgc3ViaWRhcyBhaMOtIGVzIHN1cGVyZmljaWUgZGUgYWJ1c28gc2luIHVuIGNhc29cbiAqIGRlIHVzbyBxdWUgbG8gcGlkYS5cbiAqXG4gKiBgQ0hFQ0tgIHRhbWJpw6luIHF1ZWTDsyBmdWVyYSwgcG9yIG90cm8gbW90aXZvOiBwYXJhIHF1aWVuIHJlc3BvbmRlIGVyYSBsYSBtaXNtYVxuICogcHJlZ3VudGEgcXVlIGBUT0dHTEVgLiBEb3MgZm9ybWFzIGRlIGVzY3JpYmlyIFwic8OtIG8gbm9cIiBubyBsZSBkYWJhbiB1bmEgb3BjacOzblxuICogYSBxdWllbiBhcm1hIGxhIGVuY3Vlc3RhLCBsZSBkYWJhbiB1bmEgZHVkYS4gRWwgcmVuZGVyZXIgeSBsYSBhZ3JlZ2FjacOzblxuICogc2lndWVuIGVudGVuZGllbmRvIGBDSEVDS2Ag4oCUIHVuYSBlbmN1ZXN0YSB2aWVqYSBxdWUgbG8gdGVuZ2Egc2UgcmVzcG9uZGUgeSBzZVxuICogY3VlbnRhIGlndWFsLlxuICovXG5leHBvcnQgY29uc3QgU1VSVkVZX1FVRVNUSU9OX1RZUEVTID0gW1xuICAnRU1PSklfUkFUSU5HJyxcbiAgJ1NFTEVDVCcsXG4gICdSQURJTycsXG4gICdNVUxUSV9TRUxFQ1QnLFxuICAnVE9HR0xFJyxcbiAgJ1RFWFQnLFxuICAnVEVYVEFSRUEnLFxuICAnTlVNQkVSJyxcbiAgJ0RBVEUnLFxuICAnRU1BSUwnLFxuICAnUEhPTkUnLFxuXTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBRdWVkw7MgZGUgbGEgdjEgZGVsIGJ1aWxkZXIgKEFEUi0wOTIgRmFzZSAyKSwgY3VhbmRvIHVuYSBwcmVndW50YVxuICogZXJhIHNvbG8gbGFiZWwgKyB1bm8gZGUgZG9zIHRpcG9zLiBIb3kgdW5hIHByZWd1bnRhIGVzIHVuIGBFZGl0YWJsZUZpZWxkRGVmYFxuICogY29tcGxldG8g4oCUIHZlciBgdmFsLWZpZWxkLXNjaGVtYS1lZGl0b3JgLiBObyBzZSB1c2EgZW4gbmluZ8O6biBsYWRvOyBzZVxuICogY29uc2VydmEgdW4gY2ljbG8gcGFyYSBubyByb21wZXIgdW4gaW1wb3J0IHBlcmRpZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VydmV5UXVlc3Rpb25Sb3cge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB0eXBlOiAnVEVYVEFSRUEnIHwgJ0VNT0pJX1JBVElORyc7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1cnZleUJ1aWxkZXJNZXRhZGF0YSB7XG4gIC8qKiBTaSBzZSBwYXNhLCBlZGl0YSBlc2UgdGlwbyBleGlzdGVudGU7IHNpIG5vLCBjcmVhIHVubyBudWV2by4gKi9cbiAgdHlwZUlkPzogc3RyaW5nO1xuICAvKiogUHJlZmlqbyBkZWwgYFR5cGVgIGRlbCBSZXF1ZXN0VHlwZUNvbmZpZyDigJQgZWwgY29tcG9uZW50ZSBhcm1hIGBcIjxwcmVmaXg+OjxzbHVnPlwiYC4gKi9cbiAgdHlwZVByZWZpeD86IHN0cmluZztcbiAgZW50aXR5UmVmPzogRW50aXR5UmVmO1xuICAvKiogRGVmYXVsdCAnUFVCTElDJyDigJQgZWwgY2FzbyBtw6FzIGNvbcO6bjogbGluayBlbnZpYWRvIGEgZ2VudGUgc2luIGN1ZW50YS4gKi9cbiAgdmlzaWJpbGl0eT86IFJlcXVlc3RWaXNpYmlsaXR5O1xuICAvKiogRGVmYXVsdCB0cnVlLiAqL1xuICBhbGxvd0Fub255bW91cz86IGJvb2xlYW47XG4gIC8qKiBBY290YSBlbCBjYXTDoWxvZ28gZGUgYFNVUlZFWV9RVUVTVElPTl9UWVBFU2Agc2kgdW5hIGFwcCBxdWllcmUgb2ZyZWNlciBtZW5vcy4gKi9cbiAgcXVlc3Rpb25UeXBlcz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogU2kgZWwgYnVpbGRlciBndWFyZGEgcG9yIHN1IGN1ZW50YSBjb250cmEgYC92Mi9yZXF1ZXN0LXR5cGVzYC5cbiAgICpcbiAgICogRGVmYXVsdCBgdHJ1ZWAgcG9yIGNvbXBhdGliaWxpZGFkLCBwZXJvICoqdW5hIGFwcCBjb24gZW5kcG9pbnQgcHJvcGlvIGRlYmVcbiAgICogcGFzYXIgYGZhbHNlYCoqIHkgZ3VhcmRhciBlbGxhOiBlbCBlbmRwb2ludCBkZSBsYSB2ZXJ0aWNhbCBlcyBlbCBxdWUgdmFsaWRhXG4gICAqIGxhIGVudGlkYWQgZHVlw7FhLCBldml0YSBxdWUgZG9zIGVuY3Vlc3RhcyBkZSBkaXN0aW50byBldmVudG8gY29saXNpb25lbiBlblxuICAgKiBlbCBtaXNtbyBgdHlwZUlkYCwgeSBhdXRvcml6YSBjb24gU1UgcGVybWlzby4gQ29uIGBmYWxzZWAsIGBzYXZlKClgIHZhbGlkYVxuICAgKiB5IGVtaXRlIGBkcmFmdGAgc2luIHRvY2FyIGxhIHJlZC5cbiAgICovXG4gIHBlcnNpc3Q/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1cnZleUJ1aWxkZXJTYXZlRXZlbnQge1xuICB0eXBlQ29uZmlnOiBSZXF1ZXN0VHlwZUNvbmZpZztcbn1cblxuLyoqXG4gKiBMbyBxdWUgc2UgZXNjcmliacOzLCBzaW4gcGVyc2lzdGlyLlxuICpcbiAqIEV4aXN0ZSBwb3JxdWUgKiplbCBidWlsZGVyIG5vIHNpZW1wcmUgZGViZSBndWFyZGFyIHBvciBzdSBjdWVudGEqKi4gQ3VhbmRvIGxhXG4gKiBhcHAgdGllbmUgc3UgcHJvcGlvIGVuZHBvaW50IGRlIGRvbWluaW8gKGVsIGRlIGJpbmdvIHZhbGlkYSBlbCBldmVudG8sIGFjb3RhXG4gKiBlbCBgdHlwZUlkYCBwYXJhIHF1ZSBkb3MgZXZlbnRvcyBubyBjb2xpc2lvbmVuIHkgYXV0b3JpemEgY29uIGVsIHBlcm1pc28gZGVcbiAqIGxhIHZlcnRpY2FsIGVuIHZleiBkZSBgYXBwczptYW5hZ2VgKSwgZ3VhcmRhciBkZXNkZSBhY8OhIHNlIHNhbHRhIHRvZG8gZXNvLlxuICpcbiAqIExvcyB0cmVzIGNhbXBvcyBzb24gZXhhY3RhbWVudGUgbG9zIGRlIGBDcmVhdGVFdmVudFN1cnZleVJlcXVlc3RgIGVuXG4gKiBgc2VydmljZXMvYmluZ28vc3VydmV5LmdvYCDigJQgbm8gZXMgY2FzdWFsaWRhZDogZXMgZWwgY29udHJhdG8gcXVlIGxhIGFwcFxuICogbmVjZXNpdGEgcmVlbnZpYXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VydmV5RHJhZnRFdmVudCB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHN1YnRpdGxlOiBzdHJpbmc7XG4gIHF1ZXN0aW9uczogRmllbGRTY2hlbWFEZWZbXTtcbn1cbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import { InjectionToken, makeEnvironmentProviders } from '@angular/core';
2
+ /** Token de inyección de la configuración de pagos. */
3
+ export const VALTECH_PAYMENTS_CONFIG = new InjectionToken('ValtechPaymentsConfig');
4
+ export const DEFAULT_PAYMENTS_CONFIG = {
5
+ paymentsPrefix: '/v1/payments',
6
+ };
7
+ /**
8
+ * Provee el cliente de pasarelas de pago.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * providePaymentsGateway({ apiUrl: environment.apiUrl }),
13
+ * ```
14
+ */
15
+ export function providePaymentsGateway(config) {
16
+ return makeEnvironmentProviders([
17
+ {
18
+ provide: VALTECH_PAYMENTS_CONFIG,
19
+ useValue: { ...DEFAULT_PAYMENTS_CONFIG, ...config },
20
+ },
21
+ ]);
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9wYXltZW50cy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixjQUFjLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0YsdURBQXVEO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUN2RCx1QkFBdUIsQ0FDeEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFtQztJQUNyRSxjQUFjLEVBQUUsY0FBYztDQUMvQixDQUFDO0FBRUY7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsTUFBNkI7SUFFN0IsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QjtZQUNFLE9BQU8sRUFBRSx1QkFBdUI7WUFDaEMsUUFBUSxFQUFFLEVBQUUsR0FBRyx1QkFBdUIsRUFBRSxHQUFHLE1BQU0sRUFBRTtTQUNwRDtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgSW5qZWN0aW9uVG9rZW4sIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsdGVjaFBheW1lbnRzQ29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKiBUb2tlbiBkZSBpbnllY2Npw7NuIGRlIGxhIGNvbmZpZ3VyYWNpw7NuIGRlIHBhZ29zLiAqL1xuZXhwb3J0IGNvbnN0IFZBTFRFQ0hfUEFZTUVOVFNfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFZhbHRlY2hQYXltZW50c0NvbmZpZz4oXG4gICdWYWx0ZWNoUGF5bWVudHNDb25maWcnLFxuKTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUEFZTUVOVFNfQ09ORklHOiBQYXJ0aWFsPFZhbHRlY2hQYXltZW50c0NvbmZpZz4gPSB7XG4gIHBheW1lbnRzUHJlZml4OiAnL3YxL3BheW1lbnRzJyxcbn07XG5cbi8qKlxuICogUHJvdmVlIGVsIGNsaWVudGUgZGUgcGFzYXJlbGFzIGRlIHBhZ28uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHByb3ZpZGVQYXltZW50c0dhdGV3YXkoeyBhcGlVcmw6IGVudmlyb25tZW50LmFwaVVybCB9KSxcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVBheW1lbnRzR2F0ZXdheShcbiAgY29uZmlnOiBWYWx0ZWNoUGF5bWVudHNDb25maWcsXG4pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFZBTFRFQ0hfUEFZTUVOVFNfQ09ORklHLFxuICAgICAgdXNlVmFsdWU6IHsgLi4uREVGQVVMVF9QQVlNRU5UU19DT05GSUcsIC4uLmNvbmZpZyB9LFxuICAgIH0sXG4gIF0pO1xufVxuIl19
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export * from './config';
3
+ export * from './payments-gateway.service';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3BheW1lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vcGF5bWVudHMtZ2F0ZXdheS5zZXJ2aWNlJztcbiJdfQ==
@@ -0,0 +1,69 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Injectable, inject } from '@angular/core';
3
+ import { VALTECH_PAYMENTS_CONFIG } from './config';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Cliente del onboarding de pasarelas de pago (ADR-028).
7
+ *
8
+ * Conecta la cuenta de UNA ORGANIZACIÓN con una pasarela, para que el dinero
9
+ * le llegue directo. Ese es el punto: si el dinero pasara por una cuenta de
10
+ * Valtech, Valtech sería un PSP regulado por la CMF (ver ADR-028). Por eso
11
+ * todas las operaciones son por `orgId`, y no existe acá un modo "cuenta de la
12
+ * plataforma".
13
+ *
14
+ * Vive en la lib y no en una app porque el flujo es idéntico en todas: Bingo
15
+ * lo usa para que cada colegio cobre sus cartones, y Chesed para que cada
16
+ * refugio reciba aportes. Lo que cambia entre apps es qué se cobra, no cómo se
17
+ * conecta la cuenta.
18
+ *
19
+ * Autenticación: no agrega el Bearer a mano — lo pone el interceptor de
20
+ * `provideValtechAuth`. Errores: no se capturan acá; los maneja la pantalla.
21
+ */
22
+ export class PaymentsGatewayService {
23
+ constructor() {
24
+ this.http = inject(HttpClient);
25
+ this.config = inject(VALTECH_PAYMENTS_CONFIG, { optional: true });
26
+ }
27
+ get base() {
28
+ const apiUrl = this.config?.apiUrl ?? '';
29
+ const prefix = this.config?.paymentsPrefix ?? '/v1/payments';
30
+ return `${apiUrl}${prefix}`;
31
+ }
32
+ /**
33
+ * Estado de conexión de la organización con una pasarela.
34
+ *
35
+ * Es lo que decide si la app puede ofrecer el cobro: `connected` habilita,
36
+ * `expired` y `revoked` NO. Mostrar un botón de pago con un token revocado
37
+ * lleva al usuario a un cobro que falla después de que ya decidió pagar.
38
+ */
39
+ getConnectionStatus(orgId, gateway) {
40
+ return this.http.get(`${this.base}/credentials/orgs/${orgId}/${gateway}/connection-status`);
41
+ }
42
+ /**
43
+ * URL de autorización OAuth, con su `state` CSRF.
44
+ *
45
+ * El caller guarda el `state` antes de redirigir y lo compara al volver: sin
46
+ * eso, cualquiera podría completar la conexión de otra organización.
47
+ */
48
+ getOAuthAuthorizeURL(orgId, gateway) {
49
+ return this.http.get(`${this.base}/credentials/orgs/${orgId}/${gateway}/oauth/authorize-url`);
50
+ }
51
+ /** Desconecta la credencial de la organización para esa pasarela. */
52
+ disconnect(orgId, gateway) {
53
+ return this.http.delete(`${this.base}/credentials/orgs/${orgId}/${gateway}`);
54
+ }
55
+ /**
56
+ * Guarda una credencial de acceso directo (pasarelas sin OAuth, ej. Khipu).
57
+ * El token es el secreto del cobrador.
58
+ */
59
+ setCredential(orgId, gateway, accessToken) {
60
+ return this.http.put(`${this.base}/credentials/orgs/${orgId}/${gateway}`, { accessToken });
61
+ }
62
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaymentsGatewayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
63
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaymentsGatewayService, providedIn: 'root' }); }
64
+ }
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaymentsGatewayService, decorators: [{
66
+ type: Injectable,
67
+ args: [{ providedIn: 'root' }]
68
+ }] });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudHMtZ2F0ZXdheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9wYXltZW50cy9wYXltZW50cy1nYXRld2F5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFHbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSCxNQUFNLE9BQU8sc0JBQXNCO0lBRG5DO1FBRVUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQixXQUFNLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7S0FrRHRFO0lBaERDLElBQVksSUFBSTtRQUNkLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUN6QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLGNBQWMsSUFBSSxjQUFjLENBQUM7UUFDN0QsT0FBTyxHQUFHLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsbUJBQW1CLENBQUMsS0FBYSxFQUFFLE9BQWU7UUFDaEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsR0FBRyxJQUFJLENBQUMsSUFBSSxxQkFBcUIsS0FBSyxJQUFJLE9BQU8sb0JBQW9CLENBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxvQkFBb0IsQ0FBQyxLQUFhLEVBQUUsT0FBZTtRQUNqRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixHQUFHLElBQUksQ0FBQyxJQUFJLHFCQUFxQixLQUFLLElBQUksT0FBTyxzQkFBc0IsQ0FDeEUsQ0FBQztJQUNKLENBQUM7SUFFRCxxRUFBcUU7SUFDckUsVUFBVSxDQUFDLEtBQWEsRUFBRSxPQUFlO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQ3JCLEdBQUcsSUFBSSxDQUFDLElBQUkscUJBQXFCLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FDcEQsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsS0FBYSxFQUFFLE9BQWUsRUFBRSxXQUFtQjtRQUMvRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixHQUFHLElBQUksQ0FBQyxJQUFJLHFCQUFxQixLQUFLLElBQUksT0FBTyxFQUFFLEVBQ25ELEVBQUUsV0FBVyxFQUFFLENBQ2hCLENBQUM7SUFDSixDQUFDOytHQW5EVSxzQkFBc0I7bUhBQXRCLHNCQUFzQixjQURULE1BQU07OzRGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVkFMVEVDSF9QQVlNRU5UU19DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU3RhdHVzUmVzcG9uc2UsIE9BdXRoQXV0aG9yaXplVVJMUmVzcG9uc2UgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBDbGllbnRlIGRlbCBvbmJvYXJkaW5nIGRlIHBhc2FyZWxhcyBkZSBwYWdvIChBRFItMDI4KS5cbiAqXG4gKiBDb25lY3RhIGxhIGN1ZW50YSBkZSBVTkEgT1JHQU5JWkFDScOTTiBjb24gdW5hIHBhc2FyZWxhLCBwYXJhIHF1ZSBlbCBkaW5lcm9cbiAqIGxlIGxsZWd1ZSBkaXJlY3RvLiBFc2UgZXMgZWwgcHVudG86IHNpIGVsIGRpbmVybyBwYXNhcmEgcG9yIHVuYSBjdWVudGEgZGVcbiAqIFZhbHRlY2gsIFZhbHRlY2ggc2Vyw61hIHVuIFBTUCByZWd1bGFkbyBwb3IgbGEgQ01GICh2ZXIgQURSLTAyOCkuIFBvciBlc29cbiAqIHRvZGFzIGxhcyBvcGVyYWNpb25lcyBzb24gcG9yIGBvcmdJZGAsIHkgbm8gZXhpc3RlIGFjw6EgdW4gbW9kbyBcImN1ZW50YSBkZSBsYVxuICogcGxhdGFmb3JtYVwiLlxuICpcbiAqIFZpdmUgZW4gbGEgbGliIHkgbm8gZW4gdW5hIGFwcCBwb3JxdWUgZWwgZmx1am8gZXMgaWTDqW50aWNvIGVuIHRvZGFzOiBCaW5nb1xuICogbG8gdXNhIHBhcmEgcXVlIGNhZGEgY29sZWdpbyBjb2JyZSBzdXMgY2FydG9uZXMsIHkgQ2hlc2VkIHBhcmEgcXVlIGNhZGFcbiAqIHJlZnVnaW8gcmVjaWJhIGFwb3J0ZXMuIExvIHF1ZSBjYW1iaWEgZW50cmUgYXBwcyBlcyBxdcOpIHNlIGNvYnJhLCBubyBjw7NtbyBzZVxuICogY29uZWN0YSBsYSBjdWVudGEuXG4gKlxuICogQXV0ZW50aWNhY2nDs246IG5vIGFncmVnYSBlbCBCZWFyZXIgYSBtYW5vIOKAlCBsbyBwb25lIGVsIGludGVyY2VwdG9yIGRlXG4gKiBgcHJvdmlkZVZhbHRlY2hBdXRoYC4gRXJyb3Jlczogbm8gc2UgY2FwdHVyYW4gYWPDoTsgbG9zIG1hbmVqYSBsYSBwYW50YWxsYS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQYXltZW50c0dhdGV3YXlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChWQUxURUNIX1BBWU1FTlRTX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBwcml2YXRlIGdldCBiYXNlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYXBpVXJsID0gdGhpcy5jb25maWc/LmFwaVVybCA/PyAnJztcbiAgICBjb25zdCBwcmVmaXggPSB0aGlzLmNvbmZpZz8ucGF5bWVudHNQcmVmaXggPz8gJy92MS9wYXltZW50cyc7XG4gICAgcmV0dXJuIGAke2FwaVVybH0ke3ByZWZpeH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEVzdGFkbyBkZSBjb25leGnDs24gZGUgbGEgb3JnYW5pemFjacOzbiBjb24gdW5hIHBhc2FyZWxhLlxuICAgKlxuICAgKiBFcyBsbyBxdWUgZGVjaWRlIHNpIGxhIGFwcCBwdWVkZSBvZnJlY2VyIGVsIGNvYnJvOiBgY29ubmVjdGVkYCBoYWJpbGl0YSxcbiAgICogYGV4cGlyZWRgIHkgYHJldm9rZWRgIE5PLiBNb3N0cmFyIHVuIGJvdMOzbiBkZSBwYWdvIGNvbiB1biB0b2tlbiByZXZvY2Fkb1xuICAgKiBsbGV2YSBhbCB1c3VhcmlvIGEgdW4gY29icm8gcXVlIGZhbGxhIGRlc3B1w6lzIGRlIHF1ZSB5YSBkZWNpZGnDsyBwYWdhci5cbiAgICovXG4gIGdldENvbm5lY3Rpb25TdGF0dXMob3JnSWQ6IHN0cmluZywgZ2F0ZXdheTogc3RyaW5nKTogT2JzZXJ2YWJsZTxDb25uZWN0aW9uU3RhdHVzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDb25uZWN0aW9uU3RhdHVzUmVzcG9uc2U+KFxuICAgICAgYCR7dGhpcy5iYXNlfS9jcmVkZW50aWFscy9vcmdzLyR7b3JnSWR9LyR7Z2F0ZXdheX0vY29ubmVjdGlvbi1zdGF0dXNgLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVVJMIGRlIGF1dG9yaXphY2nDs24gT0F1dGgsIGNvbiBzdSBgc3RhdGVgIENTUkYuXG4gICAqXG4gICAqIEVsIGNhbGxlciBndWFyZGEgZWwgYHN0YXRlYCBhbnRlcyBkZSByZWRpcmlnaXIgeSBsbyBjb21wYXJhIGFsIHZvbHZlcjogc2luXG4gICAqIGVzbywgY3VhbHF1aWVyYSBwb2Ryw61hIGNvbXBsZXRhciBsYSBjb25leGnDs24gZGUgb3RyYSBvcmdhbml6YWNpw7NuLlxuICAgKi9cbiAgZ2V0T0F1dGhBdXRob3JpemVVUkwob3JnSWQ6IHN0cmluZywgZ2F0ZXdheTogc3RyaW5nKTogT2JzZXJ2YWJsZTxPQXV0aEF1dGhvcml6ZVVSTFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T0F1dGhBdXRob3JpemVVUkxSZXNwb25zZT4oXG4gICAgICBgJHt0aGlzLmJhc2V9L2NyZWRlbnRpYWxzL29yZ3MvJHtvcmdJZH0vJHtnYXRld2F5fS9vYXV0aC9hdXRob3JpemUtdXJsYCxcbiAgICApO1xuICB9XG5cbiAgLyoqIERlc2NvbmVjdGEgbGEgY3JlZGVuY2lhbCBkZSBsYSBvcmdhbml6YWNpw7NuIHBhcmEgZXNhIHBhc2FyZWxhLiAqL1xuICBkaXNjb25uZWN0KG9yZ0lkOiBzdHJpbmcsIGdhdGV3YXk6IHN0cmluZyk6IE9ic2VydmFibGU8eyBvcGVyYXRpb25JZDogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTx7IG9wZXJhdGlvbklkOiBzdHJpbmcgfT4oXG4gICAgICBgJHt0aGlzLmJhc2V9L2NyZWRlbnRpYWxzL29yZ3MvJHtvcmdJZH0vJHtnYXRld2F5fWAsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHdWFyZGEgdW5hIGNyZWRlbmNpYWwgZGUgYWNjZXNvIGRpcmVjdG8gKHBhc2FyZWxhcyBzaW4gT0F1dGgsIGVqLiBLaGlwdSkuXG4gICAqIEVsIHRva2VuIGVzIGVsIHNlY3JldG8gZGVsIGNvYnJhZG9yLlxuICAgKi9cbiAgc2V0Q3JlZGVudGlhbChvcmdJZDogc3RyaW5nLCBnYXRld2F5OiBzdHJpbmcsIGFjY2Vzc1Rva2VuOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHsgb3BlcmF0aW9uSWQ6IHN0cmluZyB9PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8eyBvcGVyYXRpb25JZDogc3RyaW5nIH0+KFxuICAgICAgYCR7dGhpcy5iYXNlfS9jcmVkZW50aWFscy9vcmdzLyR7b3JnSWR9LyR7Z2F0ZXdheX1gLFxuICAgICAgeyBhY2Nlc3NUb2tlbiB9LFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Contratos del onboarding de pasarelas de pago (ADR-028).
3
+ *
4
+ * Espejo reducido del backend: solo lo que una app necesita para conectar la
5
+ * cuenta de una organización y saber si puede cobrar.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3BheW1lbnRzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb250cmF0b3MgZGVsIG9uYm9hcmRpbmcgZGUgcGFzYXJlbGFzIGRlIHBhZ28gKEFEUi0wMjgpLlxuICpcbiAqIEVzcGVqbyByZWR1Y2lkbyBkZWwgYmFja2VuZDogc29sbyBsbyBxdWUgdW5hIGFwcCBuZWNlc2l0YSBwYXJhIGNvbmVjdGFyIGxhXG4gKiBjdWVudGEgZGUgdW5hIG9yZ2FuaXphY2nDs24geSBzYWJlciBzaSBwdWVkZSBjb2JyYXIuXG4gKi9cblxuLyoqIEVzdGFkbyBkZWwgY2ljbG8gZGUgdmlkYSBkZSB1bmEgY3JlZGVuY2lhbCBPQXV0aC4gKi9cbmV4cG9ydCB0eXBlIE9BdXRoU3RhdHVzID0gJ25ldmVyJyB8ICdjb25uZWN0ZWQnIHwgJ2V4cGlyZWQnIHwgJ3Jldm9rZWQnO1xuXG4vKipcbiAqIFJlc3B1ZXN0YSBkZSBgY29ubmVjdGlvbi1zdGF0dXNgLiBObyBleHBvbmUgZWwgdG9rZW46IHNvbG8gdW4gZW5tYXNjYXJhZG9cbiAqIGluZm9ybWF0aXZvLCBwb3JxdWUgbGEgVUkgbnVuY2EgbmVjZXNpdGEgZWwgc2VjcmV0by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0aW9uU3RhdHVzUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBjb25uZWN0ZWQ6IGJvb2xlYW47XG4gIG9hdXRoU3RhdHVzOiBPQXV0aFN0YXR1cztcbiAgY29ubmVjdGVkQXQ/OiBzdHJpbmc7XG4gIG1hc2tlZFRva2VuPzogc3RyaW5nO1xufVxuXG4vKiogUmVzcHVlc3RhIGRlIGBvYXV0aC9hdXRob3JpemUtdXJsYC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT0F1dGhBdXRob3JpemVVUkxSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGF1dGhvcml6ZVVybDogc3RyaW5nO1xuICAvKiogQ1NSRi4gRWwgY2FsbGVyIGxvIGd1YXJkYSBhbnRlcyBkZSByZWRpcmlnaXIgeSBsbyBjb21wYXJhIGFsIHZvbHZlci4gKi9cbiAgc3RhdGU6IHN0cmluZztcbn1cblxuLyoqIENvbmZpZ3VyYWNpw7NuIGRlbCBjbGllbnRlIGRlIHBhZ29zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWx0ZWNoUGF5bWVudHNDb25maWcge1xuICAvKiogQmFzZSBkZWwgYmFja2VuZCwgc2luIGJhcnJhIGZpbmFsIChlai4gYGh0dHBzOi8vYXBpLWRldi5teXZhbHRlY2guY29tYCkuICovXG4gIGFwaVVybDogc3RyaW5nO1xuICAvKiogUHJlZmlqbyBkZSBsYSBBUEkgZGUgcGFnb3MuIERlZmF1bHQgYC92MS9wYXltZW50c2AuICovXG4gIHBheW1lbnRzUHJlZml4Pzogc3RyaW5nO1xufVxuIl19
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '4.0.988';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC45ODgnO1xuIl19
5
+ export const VERSION = '4.0.990';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC45OTAnO1xuIl19