@valtimo/components 5.9.1 → 5.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/esm2020/lib/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.mjs +213 -0
  2. package/esm2020/lib/components/documenten-api-metadata-modal/documenten-api-metadata-modal.module.mjs +69 -0
  3. package/esm2020/lib/components/dropzone/dropzone.component.mjs +5 -2
  4. package/esm2020/lib/components/form-io/documenten-api-uploader/documenten-api-uploader-edit-form.mjs +295 -0
  5. package/esm2020/lib/components/form-io/documenten-api-uploader/documenten-api-uploader.component.mjs +147 -0
  6. package/esm2020/lib/components/form-io/documenten-api-uploader/documenten-api-uploader.formio.mjs +43 -0
  7. package/esm2020/lib/components/form-io/form-io-uploader/form-io-uploader.component.mjs +1 -1
  8. package/esm2020/lib/components/form-io/form-io.module.mjs +26 -5
  9. package/esm2020/lib/components/view-content/type-converters/dateTypeConverter.mjs +2 -2
  10. package/esm2020/lib/components/view-content/view-content.service.mjs +11 -1
  11. package/esm2020/lib/models/documenten-api-metadata.model.mjs +17 -0
  12. package/esm2020/lib/models/form-io.model.mjs +1 -1
  13. package/esm2020/lib/models/index.mjs +2 -1
  14. package/esm2020/lib/services/valtimo-modal.service.mjs +9 -2
  15. package/esm2020/public_api.mjs +5 -1
  16. package/fesm2015/valtimo-components.mjs +788 -24
  17. package/fesm2015/valtimo-components.mjs.map +1 -1
  18. package/fesm2020/valtimo-components.mjs +800 -13
  19. package/fesm2020/valtimo-components.mjs.map +1 -1
  20. package/lib/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.d.ts +74 -0
  21. package/lib/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.d.ts.map +1 -0
  22. package/lib/components/documenten-api-metadata-modal/documenten-api-metadata-modal.module.d.ts +11 -0
  23. package/lib/components/documenten-api-metadata-modal/documenten-api-metadata-modal.module.d.ts.map +1 -0
  24. package/lib/components/dropzone/dropzone.component.d.ts +4 -3
  25. package/lib/components/dropzone/dropzone.component.d.ts.map +1 -1
  26. package/lib/components/form-io/documenten-api-uploader/documenten-api-uploader-edit-form.d.ts +105 -0
  27. package/lib/components/form-io/documenten-api-uploader/documenten-api-uploader-edit-form.d.ts.map +1 -0
  28. package/lib/components/form-io/documenten-api-uploader/documenten-api-uploader.component.d.ts +61 -0
  29. package/lib/components/form-io/documenten-api-uploader/documenten-api-uploader.component.d.ts.map +1 -0
  30. package/lib/components/form-io/documenten-api-uploader/documenten-api-uploader.formio.d.ts +4 -0
  31. package/lib/components/form-io/documenten-api-uploader/documenten-api-uploader.formio.d.ts.map +1 -0
  32. package/lib/components/form-io/form-io.module.d.ts +11 -9
  33. package/lib/components/form-io/form-io.module.d.ts.map +1 -1
  34. package/lib/components/view-content/type-converters/dateTypeConverter.d.ts.map +1 -1
  35. package/lib/components/view-content/view-content.service.d.ts +1 -0
  36. package/lib/components/view-content/view-content.service.d.ts.map +1 -1
  37. package/lib/models/documenten-api-metadata.model.d.ts +19 -0
  38. package/lib/models/documenten-api-metadata.model.d.ts.map +1 -0
  39. package/lib/models/form-io.model.d.ts +3 -0
  40. package/lib/models/form-io.model.d.ts.map +1 -1
  41. package/lib/models/index.d.ts +1 -0
  42. package/lib/models/index.d.ts.map +1 -1
  43. package/lib/services/valtimo-modal.service.d.ts +3 -0
  44. package/lib/services/valtimo-modal.service.d.ts.map +1 -1
  45. package/package.json +1 -1
  46. package/public_api.d.ts +4 -0
  47. package/public_api.d.ts.map +1 -1
@@ -0,0 +1,213 @@
1
+ /*
2
+ * Copyright 2015-2020 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
17
+ import { BehaviorSubject, combineLatest, filter, from, map, of, Subject, switchMap, take, } from 'rxjs';
18
+ import { tap } from 'rxjs/operators';
19
+ import * as i0 from "@angular/core";
20
+ import * as i1 from "@valtimo/user-interface";
21
+ import * as i2 from "@ngx-translate/core";
22
+ import * as i3 from "@angular/router";
23
+ import * as i4 from "@valtimo/document";
24
+ import * as i5 from "keycloak-angular";
25
+ import * as i6 from "../../services/valtimo-modal.service";
26
+ import * as i7 from "@angular/common";
27
+ export class DocumentenApiMetadataModalComponent {
28
+ constructor(modalService, translateService, route, documentService, keycloakService, valtimoModalService) {
29
+ this.modalService = modalService;
30
+ this.translateService = translateService;
31
+ this.route = route;
32
+ this.documentService = documentService;
33
+ this.keycloakService = keycloakService;
34
+ this.valtimoModalService = valtimoModalService;
35
+ this.documentTitle = '';
36
+ this.metadata = new EventEmitter();
37
+ this.CONFIDENTIALITY_LEVELS = [
38
+ 'openbaar',
39
+ 'beperkt_openbaar',
40
+ 'intern',
41
+ 'zaakvertrouwelijk',
42
+ 'vertrouwelijk',
43
+ 'confidentieel',
44
+ 'geheim',
45
+ 'zeer_geheim',
46
+ ];
47
+ this.confidentialityLevelItems$ = this.translateService
48
+ .stream('key')
49
+ .pipe(map(() => this.CONFIDENTIALITY_LEVELS.map(confidentialityLevel => ({
50
+ id: confidentialityLevel,
51
+ text: this.translateService.instant(`document.${confidentialityLevel}`),
52
+ }))));
53
+ this.ADDITONAL_DOCUMENT_DATE_OPTIONS = [
54
+ {
55
+ value: 'neither',
56
+ translationKey: 'document.noAdditionalDate',
57
+ },
58
+ {
59
+ value: 'sent',
60
+ translationKey: 'document.sendDate',
61
+ },
62
+ {
63
+ value: 'received',
64
+ translationKey: 'document.receiptDate',
65
+ },
66
+ ];
67
+ this.clearStatusSelection$ = new Subject();
68
+ this.additionalDocumentDate$ = new BehaviorSubject('neither');
69
+ this.STATUSES = [
70
+ 'in_bewerking',
71
+ 'ter_vaststelling',
72
+ 'definitief',
73
+ 'gearchiveerd',
74
+ ];
75
+ this.RECEIPT_STATUSES = ['definitief', 'gearchiveerd'];
76
+ this.formData$ = new BehaviorSubject(null);
77
+ this.statusItems$ = combineLatest([
78
+ this.additionalDocumentDate$,
79
+ this.translateService.stream('key'),
80
+ ]).pipe(tap(([additionalDocumentDate]) => {
81
+ this.formData$.pipe(take(1)).subscribe(formData => {
82
+ if (additionalDocumentDate === 'received' &&
83
+ (formData.status === 'in_bewerking' || formData.status === 'ter_vaststelling')) {
84
+ this.clearStatusSelection$.next(null);
85
+ }
86
+ });
87
+ }), map(([additionalDocumentDate]) => (additionalDocumentDate === 'received' ? this.RECEIPT_STATUSES : this.STATUSES).map(status => ({
88
+ id: status,
89
+ text: this.translateService.instant(`document.${status}`),
90
+ }))));
91
+ this.LANGUAGES = ['nld', 'eng', 'deu'];
92
+ this.languageItems$ = this.translateService.stream('key').pipe(map(() => this.LANGUAGES.map(language => ({
93
+ id: language,
94
+ text: this.translateService.instant(`document.${language}`),
95
+ }))));
96
+ this.documentTypeItems$ = combineLatest([
97
+ this.route?.params || of(null),
98
+ this.route?.firstChild?.params || of(null),
99
+ this.valtimoModalService.documentDefinitionName$,
100
+ ]).pipe(filter(([params, firstChildParams, documentDefinitionName]) => !!(params?.documentDefinitionName ||
101
+ firstChildParams?.documentDefinitionName ||
102
+ documentDefinitionName)), switchMap(([params, firstChildParams, documentDefinitionName]) => this.documentService.getDocumentTypes(params?.documentDefinitionName ||
103
+ firstChildParams?.documentDefinitionName ||
104
+ documentDefinitionName)), map(documentTypes => documentTypes.map(type => ({ id: type.url, text: type.name }))));
105
+ this.showForm$ = this.modalService.modalVisible$;
106
+ this.valid$ = new BehaviorSubject(false);
107
+ this.userEmail$ = from(this.keycloakService.loadUserProfile()).pipe(map(userProfile => userProfile?.email || ''));
108
+ }
109
+ ngOnInit() {
110
+ this.openShowSubscription();
111
+ this.openHideSubscription();
112
+ }
113
+ ngOnDestroy() {
114
+ this.showSubscription?.unsubscribe();
115
+ this.hideSubscription?.unsubscribe();
116
+ }
117
+ hide() {
118
+ this.formData$.next(null);
119
+ this.valid$.next(false);
120
+ this.additionalDocumentDate$.next('neither');
121
+ this.modalService.closeModal();
122
+ }
123
+ cancel() {
124
+ this.hide();
125
+ }
126
+ save() {
127
+ combineLatest([this.valid$, this.formData$])
128
+ .pipe(take(1))
129
+ .subscribe(([valid, formData]) => {
130
+ if (valid) {
131
+ this.metadata.emit(formData);
132
+ }
133
+ });
134
+ }
135
+ formValueChange(data) {
136
+ this.formData$.next(data);
137
+ this.setValid(data);
138
+ }
139
+ setAdditionalDate(value) {
140
+ this.additionalDocumentDate$.next(value);
141
+ }
142
+ setValid(data) {
143
+ this.valid$.next(!!(data.filename &&
144
+ data.title &&
145
+ data.author &&
146
+ data.creationDate &&
147
+ data.status &&
148
+ data.language &&
149
+ data.informatieobjecttype));
150
+ }
151
+ openShowSubscription() {
152
+ this.showSubscription = this.show$.subscribe(() => {
153
+ this.modalService.openModal(this.documentenApiMetadataModal);
154
+ });
155
+ }
156
+ openHideSubscription() {
157
+ this.hideSubscription = this.hide$.subscribe(() => {
158
+ this.hide();
159
+ });
160
+ }
161
+ }
162
+ DocumentenApiMetadataModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DocumentenApiMetadataModalComponent, deps: [{ token: i1.ModalService }, { token: i2.TranslateService }, { token: i3.ActivatedRoute }, { token: i4.DocumentService }, { token: i5.KeycloakService }, { token: i6.ValtimoModalService }], target: i0.ɵɵFactoryTarget.Component });
163
+ DocumentenApiMetadataModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: DocumentenApiMetadataModalComponent, selector: "valtimo-documenten-api-metadata-modal", inputs: { show$: "show$", hide$: "hide$", disabled$: "disabled$", file$: "file$", documentTitle: "documentTitle", disableDocumentTitle: "disableDocumentTitle", filename: "filename", disableFilename: "disableFilename", author: "author", disableAuthor: "disableAuthor", status: "status", disableStatus: "disableStatus", language: "language", disableLanguage: "disableLanguage", documentType: "documentType", disableDocumentType: "disableDocumentType", description: "description", disableDescription: "disableDescription", confidentialityLevel: "confidentialityLevel", disableConfidentialityLevel: "disableConfidentialityLevel" }, outputs: { metadata: "metadata" }, viewQueries: [{ propertyName: "documentenApiMetadataModal", first: true, predicate: ["documentenApiMetadataModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-modal\n #documentenApiMetadataModal\n (closeEvent)=\"hide()\"\n *ngIf=\"{file: file$ | async, disabled: disabled$ | async, valid: valid$ | async} as obs\"\n>\n <div role=\"header\">\n <div class=\"edit-configuration-title\">\n <v-title [center]=\"true\" [fullWidth]=\"true\" [margin]=\"false\" type=\"h2\">{{\n 'document.fillInMetadata' | translate\n }}</v-title>\n </div>\n </div>\n <div role=\"content\">\n <ng-container *ngTemplateOutlet=\"metadataForm; context: {obs: obs}\"></ng-container>\n </div>\n <div role=\"footer\">\n <div class=\"buttons\">\n <v-button (clickEvent)=\"cancel()\" [disabled]=\"obs.disabled\" type=\"secondary\">{{\n 'document.cancel' | translate\n }}</v-button>\n <v-button\n (clickEvent)=\"save()\"\n [disabled]=\"obs.disabled || !obs.valid\"\n mdiIcon=\"upload\"\n type=\"success\"\n >{{ 'document.upload' | translate }}</v-button\n >\n </div>\n </div>\n</v-modal>\n\n<ng-template #metadataForm let-obs=\"obs\">\n <ng-container *ngIf=\"showForm$ | async\">\n <v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"additionalDocumentDate$ | async as additionalDate\"\n >\n <v-input\n [defaultValue]=\"filename || obs.file?.name\"\n [disabled]=\"obs.disabled || disableFilename\"\n [fullWidth]=\"true\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'document.filename' | translate\"\n [tooltip]=\"'document.filenameTooltip' | translate\"\n name=\"filename\"\n >\n </v-input>\n <v-input\n [defaultValue]=\"documentTitle\"\n [disabled]=\"obs.disabled || disableDocumentTitle\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'document.inputTitle' | translate\"\n [tooltip]=\"'document.inputTitleTooltip' | translate\"\n [widthPx]=\"400\"\n name=\"title\"\n >\n </v-input>\n <v-input\n [defaultValue]=\"author || (userEmail$ | async)\"\n [disabled]=\"obs.disabled || disableAuthor\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'document.author' | translate\"\n [tooltip]=\"'document.authorTooltip' | translate\"\n [widthPx]=\"300\"\n name=\"author\"\n >\n </v-input>\n <v-select\n *ngIf=\"languageItems$ | async as languageItems\"\n [defaultSelectionId]=\"language || languageItems[0].id\"\n [disabled]=\"obs.disabled || disableLanguage\"\n [items]=\"languageItems\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'document.language' | translate\"\n [tooltip]=\"'document.languageTooltip' | translate\"\n [widthInPx]=\"200\"\n name=\"language\"\n ></v-select>\n <ng-container *ngIf=\"{documentTypeItems: documentTypeItems$ | async} as obs\">\n <v-select\n [defaultSelectionId]=\"documentType\"\n [disabled]=\"obs.disabled || disableDocumentType\"\n [items]=\"obs.documentTypeItems\"\n [loading]=\"!obs.documentTypeItems\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'document.informatieobjecttype' | translate\"\n [tooltip]=\"'document.informatieobjecttypeTooltip' | translate\"\n [widthInPx]=\"200\"\n name=\"informatieobjecttype\"\n ></v-select>\n </ng-container>\n <v-date-picker\n [defaultDateIsToday]=\"true\"\n [disabled]=\"obs.disabled\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'document.creationDate' | translate\"\n [tooltip]=\"'document.creationDateTooltip' | translate\"\n [widthPx]=\"100\"\n name=\"creationDate\"\n ></v-date-picker>\n <ng-container\n *ngTemplateOutlet=\"additionalDatePicker; context: {additionalDate: additionalDate}\"\n ></ng-container>\n <v-date-picker\n *ngIf=\"additionalDate === 'received'\"\n [defaultDateIsToday]=\"true\"\n [disabled]=\"obs.disabled\"\n [margin]=\"true\"\n [title]=\"'document.receiptDate' | translate\"\n [tooltip]=\"'document.receiptDateTooltip' | translate\"\n [widthPx]=\"100\"\n name=\"receiptDate\"\n ></v-date-picker>\n <v-date-picker\n *ngIf=\"additionalDate === 'sent'\"\n [defaultDateIsToday]=\"true\"\n [disabled]=\"obs.disabled\"\n [margin]=\"true\"\n [title]=\"'document.sendDate' | translate\"\n [tooltip]=\"'document.sendDateTooltip' | translate\"\n [widthPx]=\"100\"\n name=\"sendDate\"\n ></v-date-picker>\n <v-select\n [defaultSelectionId]=\"status\"\n [disabled]=\"obs.disabled || disableStatus\"\n [items]=\"statusItems$ | async\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'document.status' | translate\"\n [tooltip]=\"'document.statusTooltip' | translate\"\n [widthInPx]=\"200\"\n [clearSelectionSubject$]=\"clearStatusSelection$\"\n name=\"status\"\n ></v-select>\n <v-input\n [defaultValue]=\"description\"\n [disabled]=\"obs.disabled || disableDescription\"\n [fullWidth]=\"true\"\n [margin]=\"true\"\n [title]=\"'document.inputDescription' | translate\"\n [tooltip]=\"'document.inputDescriptionTooltip' | translate\"\n name=\"description\"\n >\n </v-input>\n <v-select\n [defaultSelectionId]=\"confidentialityLevel\"\n [disabled]=\"obs.disabled || disableConfidentialityLevel\"\n [items]=\"confidentialityLevelItems$ | async\"\n [margin]=\"true\"\n [title]=\"'document.confidentialityLevel' | translate\"\n [tooltip]=\"'document.confidentialityLevelTooltip' | translate\"\n [widthInPx]=\"200\"\n name=\"confidentialityLevel\"\n ></v-select>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template #additionalDatePicker let-additionalDate=\"additionalDate\">\n <v-input-label\n [title]=\"'document.additionalDate' | translate\"\n [name]=\"'additionalDate'\"\n [tooltip]=\"'document.additionalDateTooltip' | translate\"\n [required]=\"true\"\n >\n </v-input-label>\n <div class=\"col-12 col-sm-8 col-lg-6 form-check mt-1 additional-date\">\n <label\n class=\"custom-control custom-radio custom-control-inline\"\n *ngFor=\"let option of ADDITONAL_DOCUMENT_DATE_OPTIONS\"\n (click)=\"setAdditionalDate(option.value)\"\n >\n <input\n class=\"custom-control-input\"\n type=\"radio\"\n name=\"radio-inline\"\n [checked]=\"additionalDate === option.value\"\n /><span class=\"custom-control-label\">{{ option.translationKey | translate }}</span>\n </label>\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.buttons{display:flex;flex-direction:row;width:100%;justify-content:space-between}.additional-date{padding:0;width:100%;max-width:100%;margin:0;margin-block-end:var(--v-input-margin)}.additional-date .custom-control{margin-bottom:0}\n"], components: [{ type: i1.ModalComponent, selector: "v-modal", inputs: ["appearingDelayMs", "maxWidthPx", "hideFooter"], outputs: ["closeEvent"] }, { type: i1.TitleComponent, selector: "v-title", inputs: ["type", "margin", "fullWidth", "center"] }, { type: i1.ButtonComponent, selector: "v-button", inputs: ["type", "mdiIcon", "disabled", "title", "titleTranslationKey"], outputs: ["clickEvent"] }, { type: i1.FormComponent, selector: "v-form", outputs: ["valueChange"] }, { type: i1.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox"], outputs: ["valueChange"] }, { type: i1.SelectComponent, selector: "v-select", inputs: ["items", "defaultSelection", "defaultSelectionId", "clearable", "disabled", "multiple", "margin", "widthInPx", "notFoundText", "clearAllText", "name", "title", "titleTranslationKey", "clearSelectionSubject$", "tooltip", "required", "loading", "loadingText", "placeholder"], outputs: ["selectedChange", "clear"] }, { type: i1.DatePickerComponent, selector: "v-date-picker", inputs: ["name", "title", "titleTranslationKey", "widthPx", "fullWidth", "margin", "disabled", "tooltip", "required", "defaultDate", "defaultDateIsToday"] }, { type: i1.InputLabelComponent, selector: "v-input-label", inputs: ["name", "title", "titleTranslationKey", "tooltip", "required", "largeMargin"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i7.AsyncPipe, "translate": i2.TranslatePipe } });
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DocumentenApiMetadataModalComponent, decorators: [{
165
+ type: Component,
166
+ args: [{ selector: 'valtimo-documenten-api-metadata-modal', template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-modal\n #documentenApiMetadataModal\n (closeEvent)=\"hide()\"\n *ngIf=\"{file: file$ | async, disabled: disabled$ | async, valid: valid$ | async} as obs\"\n>\n <div role=\"header\">\n <div class=\"edit-configuration-title\">\n <v-title [center]=\"true\" [fullWidth]=\"true\" [margin]=\"false\" type=\"h2\">{{\n 'document.fillInMetadata' | translate\n }}</v-title>\n </div>\n </div>\n <div role=\"content\">\n <ng-container *ngTemplateOutlet=\"metadataForm; context: {obs: obs}\"></ng-container>\n </div>\n <div role=\"footer\">\n <div class=\"buttons\">\n <v-button (clickEvent)=\"cancel()\" [disabled]=\"obs.disabled\" type=\"secondary\">{{\n 'document.cancel' | translate\n }}</v-button>\n <v-button\n (clickEvent)=\"save()\"\n [disabled]=\"obs.disabled || !obs.valid\"\n mdiIcon=\"upload\"\n type=\"success\"\n >{{ 'document.upload' | translate }}</v-button\n >\n </div>\n </div>\n</v-modal>\n\n<ng-template #metadataForm let-obs=\"obs\">\n <ng-container *ngIf=\"showForm$ | async\">\n <v-form\n (valueChange)=\"formValueChange($event)\"\n *ngIf=\"additionalDocumentDate$ | async as additionalDate\"\n >\n <v-input\n [defaultValue]=\"filename || obs.file?.name\"\n [disabled]=\"obs.disabled || disableFilename\"\n [fullWidth]=\"true\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'document.filename' | translate\"\n [tooltip]=\"'document.filenameTooltip' | translate\"\n name=\"filename\"\n >\n </v-input>\n <v-input\n [defaultValue]=\"documentTitle\"\n [disabled]=\"obs.disabled || disableDocumentTitle\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'document.inputTitle' | translate\"\n [tooltip]=\"'document.inputTitleTooltip' | translate\"\n [widthPx]=\"400\"\n name=\"title\"\n >\n </v-input>\n <v-input\n [defaultValue]=\"author || (userEmail$ | async)\"\n [disabled]=\"obs.disabled || disableAuthor\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'document.author' | translate\"\n [tooltip]=\"'document.authorTooltip' | translate\"\n [widthPx]=\"300\"\n name=\"author\"\n >\n </v-input>\n <v-select\n *ngIf=\"languageItems$ | async as languageItems\"\n [defaultSelectionId]=\"language || languageItems[0].id\"\n [disabled]=\"obs.disabled || disableLanguage\"\n [items]=\"languageItems\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'document.language' | translate\"\n [tooltip]=\"'document.languageTooltip' | translate\"\n [widthInPx]=\"200\"\n name=\"language\"\n ></v-select>\n <ng-container *ngIf=\"{documentTypeItems: documentTypeItems$ | async} as obs\">\n <v-select\n [defaultSelectionId]=\"documentType\"\n [disabled]=\"obs.disabled || disableDocumentType\"\n [items]=\"obs.documentTypeItems\"\n [loading]=\"!obs.documentTypeItems\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'document.informatieobjecttype' | translate\"\n [tooltip]=\"'document.informatieobjecttypeTooltip' | translate\"\n [widthInPx]=\"200\"\n name=\"informatieobjecttype\"\n ></v-select>\n </ng-container>\n <v-date-picker\n [defaultDateIsToday]=\"true\"\n [disabled]=\"obs.disabled\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'document.creationDate' | translate\"\n [tooltip]=\"'document.creationDateTooltip' | translate\"\n [widthPx]=\"100\"\n name=\"creationDate\"\n ></v-date-picker>\n <ng-container\n *ngTemplateOutlet=\"additionalDatePicker; context: {additionalDate: additionalDate}\"\n ></ng-container>\n <v-date-picker\n *ngIf=\"additionalDate === 'received'\"\n [defaultDateIsToday]=\"true\"\n [disabled]=\"obs.disabled\"\n [margin]=\"true\"\n [title]=\"'document.receiptDate' | translate\"\n [tooltip]=\"'document.receiptDateTooltip' | translate\"\n [widthPx]=\"100\"\n name=\"receiptDate\"\n ></v-date-picker>\n <v-date-picker\n *ngIf=\"additionalDate === 'sent'\"\n [defaultDateIsToday]=\"true\"\n [disabled]=\"obs.disabled\"\n [margin]=\"true\"\n [title]=\"'document.sendDate' | translate\"\n [tooltip]=\"'document.sendDateTooltip' | translate\"\n [widthPx]=\"100\"\n name=\"sendDate\"\n ></v-date-picker>\n <v-select\n [defaultSelectionId]=\"status\"\n [disabled]=\"obs.disabled || disableStatus\"\n [items]=\"statusItems$ | async\"\n [margin]=\"true\"\n [required]=\"true\"\n [title]=\"'document.status' | translate\"\n [tooltip]=\"'document.statusTooltip' | translate\"\n [widthInPx]=\"200\"\n [clearSelectionSubject$]=\"clearStatusSelection$\"\n name=\"status\"\n ></v-select>\n <v-input\n [defaultValue]=\"description\"\n [disabled]=\"obs.disabled || disableDescription\"\n [fullWidth]=\"true\"\n [margin]=\"true\"\n [title]=\"'document.inputDescription' | translate\"\n [tooltip]=\"'document.inputDescriptionTooltip' | translate\"\n name=\"description\"\n >\n </v-input>\n <v-select\n [defaultSelectionId]=\"confidentialityLevel\"\n [disabled]=\"obs.disabled || disableConfidentialityLevel\"\n [items]=\"confidentialityLevelItems$ | async\"\n [margin]=\"true\"\n [title]=\"'document.confidentialityLevel' | translate\"\n [tooltip]=\"'document.confidentialityLevelTooltip' | translate\"\n [widthInPx]=\"200\"\n name=\"confidentialityLevel\"\n ></v-select>\n </v-form>\n </ng-container>\n</ng-template>\n\n<ng-template #additionalDatePicker let-additionalDate=\"additionalDate\">\n <v-input-label\n [title]=\"'document.additionalDate' | translate\"\n [name]=\"'additionalDate'\"\n [tooltip]=\"'document.additionalDateTooltip' | translate\"\n [required]=\"true\"\n >\n </v-input-label>\n <div class=\"col-12 col-sm-8 col-lg-6 form-check mt-1 additional-date\">\n <label\n class=\"custom-control custom-radio custom-control-inline\"\n *ngFor=\"let option of ADDITONAL_DOCUMENT_DATE_OPTIONS\"\n (click)=\"setAdditionalDate(option.value)\"\n >\n <input\n class=\"custom-control-input\"\n type=\"radio\"\n name=\"radio-inline\"\n [checked]=\"additionalDate === option.value\"\n /><span class=\"custom-control-label\">{{ option.translationKey | translate }}</span>\n </label>\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */.buttons{display:flex;flex-direction:row;width:100%;justify-content:space-between}.additional-date{padding:0;width:100%;max-width:100%;margin:0;margin-block-end:var(--v-input-margin)}.additional-date .custom-control{margin-bottom:0}\n"] }]
167
+ }], ctorParameters: function () { return [{ type: i1.ModalService }, { type: i2.TranslateService }, { type: i3.ActivatedRoute }, { type: i4.DocumentService }, { type: i5.KeycloakService }, { type: i6.ValtimoModalService }]; }, propDecorators: { documentenApiMetadataModal: [{
168
+ type: ViewChild,
169
+ args: ['documentenApiMetadataModal']
170
+ }], show$: [{
171
+ type: Input
172
+ }], hide$: [{
173
+ type: Input
174
+ }], disabled$: [{
175
+ type: Input
176
+ }], file$: [{
177
+ type: Input
178
+ }], documentTitle: [{
179
+ type: Input
180
+ }], disableDocumentTitle: [{
181
+ type: Input
182
+ }], filename: [{
183
+ type: Input
184
+ }], disableFilename: [{
185
+ type: Input
186
+ }], author: [{
187
+ type: Input
188
+ }], disableAuthor: [{
189
+ type: Input
190
+ }], status: [{
191
+ type: Input
192
+ }], disableStatus: [{
193
+ type: Input
194
+ }], language: [{
195
+ type: Input
196
+ }], disableLanguage: [{
197
+ type: Input
198
+ }], documentType: [{
199
+ type: Input
200
+ }], disableDocumentType: [{
201
+ type: Input
202
+ }], description: [{
203
+ type: Input
204
+ }], disableDescription: [{
205
+ type: Input
206
+ }], confidentialityLevel: [{
207
+ type: Input
208
+ }], disableConfidentialityLevel: [{
209
+ type: Input
210
+ }], metadata: [{
211
+ type: Output
212
+ }] } });
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRlbi1hcGktbWV0YWRhdGEtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kb2N1bWVudGVuLWFwaS1tZXRhZGF0YS1tb2RhbC9kb2N1bWVudGVuLWFwaS1tZXRhZGF0YS1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsL2RvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5HLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLE1BQU0sRUFDTixJQUFJLEVBQ0osR0FBRyxFQUVILEVBQUUsRUFDRixPQUFPLEVBRVAsU0FBUyxFQUNULElBQUksR0FDTCxNQUFNLE1BQU0sQ0FBQztBQWFkLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBT25DLE1BQU0sT0FBTyxtQ0FBbUM7SUF5STlDLFlBQ21CLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxLQUFxQixFQUNyQixlQUFnQyxFQUNoQyxlQUFnQyxFQUNoQyxtQkFBd0M7UUFMeEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUF2SWxELGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBaUJsQixhQUFRLEdBQXdDLElBQUksWUFBWSxFQUFFLENBQUM7UUFFcEUsMkJBQXNCLEdBQWdDO1lBQzdELFVBQVU7WUFDVixrQkFBa0I7WUFDbEIsUUFBUTtZQUNSLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsZUFBZTtZQUNmLFFBQVE7WUFDUixhQUFhO1NBQ2QsQ0FBQztRQUNPLCtCQUEwQixHQUFrQyxJQUFJLENBQUMsZ0JBQWdCO2FBQ3ZGLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDYixJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUNQLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkQsRUFBRSxFQUFFLG9CQUFvQjtZQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxZQUFZLG9CQUFvQixFQUFFLENBQUM7U0FDeEUsQ0FBQyxDQUFDLENBQ0osQ0FDRixDQUFDO1FBQ0ssb0NBQStCLEdBR25DO1lBQ0g7Z0JBQ0UsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLGNBQWMsRUFBRSwyQkFBMkI7YUFDNUM7WUFDRDtnQkFDRSxLQUFLLEVBQUUsTUFBTTtnQkFDYixjQUFjLEVBQUUsbUJBQW1CO2FBQ3BDO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLGNBQWMsRUFBRSxzQkFBc0I7YUFDdkM7U0FDRixDQUFDO1FBQ08sMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUM1Qyw0QkFBdUIsR0FBRyxJQUFJLGVBQWUsQ0FBeUIsU0FBUyxDQUFDLENBQUM7UUFDakYsYUFBUSxHQUEwQjtZQUN6QyxjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLFlBQVk7WUFDWixjQUFjO1NBQ2YsQ0FBQztRQUNPLHFCQUFnQixHQUEwQixDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN6RSxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQXdCLElBQUksQ0FBQyxDQUFDO1FBQzdELGlCQUFZLEdBQWtDLGFBQWEsQ0FBQztZQUNuRSxJQUFJLENBQUMsdUJBQXVCO1lBQzVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNoRCxJQUNFLHNCQUFzQixLQUFLLFVBQVU7b0JBQ3JDLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxjQUFjLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxrQkFBa0IsQ0FBQyxFQUM5RTtvQkFDQSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN2QztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLEVBQUUsQ0FDL0IsQ0FBQyxzQkFBc0IsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FDakYsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1QsRUFBRSxFQUFFLE1BQU07WUFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxZQUFZLE1BQU0sRUFBRSxDQUFDO1NBQzFELENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FBQztRQUNPLGNBQVMsR0FBNEIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNELG1CQUFjLEdBQWtDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUMvRixHQUFHLENBQUMsR0FBRyxFQUFFLENBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlCLEVBQUUsRUFBRSxRQUFRO1lBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsWUFBWSxRQUFRLEVBQUUsQ0FBQztTQUM1RCxDQUFDLENBQUMsQ0FDSixDQUNGLENBQUM7UUFDTyx1QkFBa0IsR0FBa0MsYUFBYSxDQUFDO1lBQ3pFLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDOUIsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDMUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QjtTQUNqRCxDQUFDLENBQUMsSUFBSSxDQUNMLE1BQU0sQ0FDSixDQUFDLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxDQUNyRCxDQUFDLENBQUMsQ0FDQSxNQUFNLEVBQUUsc0JBQXNCO1lBQzlCLGdCQUFnQixFQUFFLHNCQUFzQjtZQUN4QyxzQkFBc0IsQ0FDdkIsQ0FDSixFQUNELFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxDQUMvRCxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUNuQyxNQUFNLEVBQUUsc0JBQXNCO1lBQzVCLGdCQUFnQixFQUFFLHNCQUFzQjtZQUN4QyxzQkFBc0IsQ0FDekIsQ0FDRixFQUNELEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDbkYsQ0FBQztRQUNPLGNBQVMsR0FBd0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUM7UUFDakUsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzdDLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDckUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FDN0MsQ0FBQztJQVlDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUk7UUFDRixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUMvQixJQUFJLEtBQUssRUFBRTtnQkFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUEyQjtRQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUE2QjtRQUM3QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTyxRQUFRLENBQUMsSUFBMkI7UUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2QsQ0FBQyxDQUFDLENBQ0EsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsS0FBSztZQUNWLElBQUksQ0FBQyxNQUFNO1lBQ1gsSUFBSSxDQUFDLFlBQVk7WUFDakIsSUFBSSxDQUFDLE1BQU07WUFDWCxJQUFJLENBQUMsUUFBUTtZQUNiLElBQUksQ0FBQyxvQkFBb0IsQ0FDMUIsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2hELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7aUlBbE5VLG1DQUFtQztxSEFBbkMsbUNBQW1DLDgyQkNsRGhELG00T0E0TUE7NEZEMUphLG1DQUFtQztrQkFML0MsU0FBUzsrQkFDRSx1Q0FBdUM7NlBBS1IsMEJBQTBCO3NCQUFsRSxTQUFTO3VCQUFDLDRCQUE0QjtnQkFFOUIsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNb2RhbENvbXBvbmVudCwgTW9kYWxTZXJ2aWNlLCBTZWxlY3RJdGVtfSBmcm9tICdAdmFsdGltby91c2VyLWludGVyZmFjZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgZnJvbSxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgU3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgQWRkaXRpb25hbERvY3VtZW50RGF0ZSxcbiAgQ29uZmlkZW50aWFsaXR5TGV2ZWwsXG4gIERvY3VtZW50ZW5BcGlNZXRhZGF0YSxcbiAgRG9jdW1lbnRMYW5ndWFnZSxcbiAgRG9jdW1lbnRTdGF0dXMsXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge0tleWNsb2FrU2VydmljZX0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XG5pbXBvcnQge1ZhbHRpbW9Nb2RhbFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZhbHRpbW8tbW9kYWwuc2VydmljZSc7XG5pbXBvcnQge3RhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9jdW1lbnRlbi1hcGktbWV0YWRhdGEtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRlbkFwaU1ldGFkYXRhTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2RvY3VtZW50ZW5BcGlNZXRhZGF0YU1vZGFsJykgZG9jdW1lbnRlbkFwaU1ldGFkYXRhTW9kYWw6IE1vZGFsQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpIHNob3ckITogT2JzZXJ2YWJsZTxudWxsPjtcbiAgQElucHV0KCkgaGlkZSQhOiBPYnNlcnZhYmxlPG51bGw+O1xuICBASW5wdXQoKSBkaXNhYmxlZCQhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBASW5wdXQoKSBmaWxlJCE6IE9ic2VydmFibGU8RmlsZT47XG5cbiAgQElucHV0KCkgZG9jdW1lbnRUaXRsZSA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlRG9jdW1lbnRUaXRsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgZmlsZW5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgZGlzYWJsZUZpbGVuYW1lOiBib29sZWFuO1xuICBASW5wdXQoKSBhdXRob3I6IHN0cmluZztcbiAgQElucHV0KCkgZGlzYWJsZUF1dGhvcjogYm9vbGVhbjtcbiAgQElucHV0KCkgc3RhdHVzOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVTdGF0dXM6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGxhbmd1YWdlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVMYW5ndWFnZTogYm9vbGVhbjtcbiAgQElucHV0KCkgZG9jdW1lbnRUeXBlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVEb2N1bWVudFR5cGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVEZXNjcmlwdGlvbjogYm9vbGVhbjtcbiAgQElucHV0KCkgY29uZmlkZW50aWFsaXR5TGV2ZWw6IHN0cmluZztcbiAgQElucHV0KCkgZGlzYWJsZUNvbmZpZGVudGlhbGl0eUxldmVsOiBib29sZWFuO1xuXG4gIEBPdXRwdXQoKSBtZXRhZGF0YTogRXZlbnRFbWl0dGVyPERvY3VtZW50ZW5BcGlNZXRhZGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcmVhZG9ubHkgQ09ORklERU5USUFMSVRZX0xFVkVMUzogQXJyYXk8Q29uZmlkZW50aWFsaXR5TGV2ZWw+ID0gW1xuICAgICdvcGVuYmFhcicsXG4gICAgJ2JlcGVya3Rfb3BlbmJhYXInLFxuICAgICdpbnRlcm4nLFxuICAgICd6YWFrdmVydHJvdXdlbGlqaycsXG4gICAgJ3ZlcnRyb3V3ZWxpamsnLFxuICAgICdjb25maWRlbnRpZWVsJyxcbiAgICAnZ2VoZWltJyxcbiAgICAnemVlcl9nZWhlaW0nLFxuICBdO1xuICByZWFkb25seSBjb25maWRlbnRpYWxpdHlMZXZlbEl0ZW1zJDogT2JzZXJ2YWJsZTxBcnJheTxTZWxlY3RJdGVtPj4gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAuc3RyZWFtKCdrZXknKVxuICAgIC5waXBlKFxuICAgICAgbWFwKCgpID0+XG4gICAgICAgIHRoaXMuQ09ORklERU5USUFMSVRZX0xFVkVMUy5tYXAoY29uZmlkZW50aWFsaXR5TGV2ZWwgPT4gKHtcbiAgICAgICAgICBpZDogY29uZmlkZW50aWFsaXR5TGV2ZWwsXG4gICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYGRvY3VtZW50LiR7Y29uZmlkZW50aWFsaXR5TGV2ZWx9YCksXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgICk7XG4gIHJlYWRvbmx5IEFERElUT05BTF9ET0NVTUVOVF9EQVRFX09QVElPTlM6IEFycmF5PHtcbiAgICB2YWx1ZTogQWRkaXRpb25hbERvY3VtZW50RGF0ZTtcbiAgICB0cmFuc2xhdGlvbktleTogc3RyaW5nO1xuICB9PiA9IFtcbiAgICB7XG4gICAgICB2YWx1ZTogJ25laXRoZXInLFxuICAgICAgdHJhbnNsYXRpb25LZXk6ICdkb2N1bWVudC5ub0FkZGl0aW9uYWxEYXRlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnc2VudCcsXG4gICAgICB0cmFuc2xhdGlvbktleTogJ2RvY3VtZW50LnNlbmREYXRlJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAncmVjZWl2ZWQnLFxuICAgICAgdHJhbnNsYXRpb25LZXk6ICdkb2N1bWVudC5yZWNlaXB0RGF0ZScsXG4gICAgfSxcbiAgXTtcbiAgcmVhZG9ubHkgY2xlYXJTdGF0dXNTZWxlY3Rpb24kID0gbmV3IFN1YmplY3Q8bnVsbD4oKTtcbiAgcmVhZG9ubHkgYWRkaXRpb25hbERvY3VtZW50RGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFkZGl0aW9uYWxEb2N1bWVudERhdGU+KCduZWl0aGVyJyk7XG4gIHJlYWRvbmx5IFNUQVRVU0VTOiBBcnJheTxEb2N1bWVudFN0YXR1cz4gPSBbXG4gICAgJ2luX2Jld2Vya2luZycsXG4gICAgJ3Rlcl92YXN0c3RlbGxpbmcnLFxuICAgICdkZWZpbml0aWVmJyxcbiAgICAnZ2VhcmNoaXZlZXJkJyxcbiAgXTtcbiAgcmVhZG9ubHkgUkVDRUlQVF9TVEFUVVNFUzogQXJyYXk8RG9jdW1lbnRTdGF0dXM+ID0gWydkZWZpbml0aWVmJywgJ2dlYXJjaGl2ZWVyZCddO1xuICByZWFkb25seSBmb3JtRGF0YSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERvY3VtZW50ZW5BcGlNZXRhZGF0YT4obnVsbCk7XG4gIHJlYWRvbmx5IHN0YXR1c0l0ZW1zJDogT2JzZXJ2YWJsZTxBcnJheTxTZWxlY3RJdGVtPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmFkZGl0aW9uYWxEb2N1bWVudERhdGUkLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIHRhcCgoW2FkZGl0aW9uYWxEb2N1bWVudERhdGVdKSA9PiB7XG4gICAgICB0aGlzLmZvcm1EYXRhJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShmb3JtRGF0YSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhZGRpdGlvbmFsRG9jdW1lbnREYXRlID09PSAncmVjZWl2ZWQnICYmXG4gICAgICAgICAgKGZvcm1EYXRhLnN0YXR1cyA9PT0gJ2luX2Jld2Vya2luZycgfHwgZm9ybURhdGEuc3RhdHVzID09PSAndGVyX3Zhc3RzdGVsbGluZycpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuY2xlYXJTdGF0dXNTZWxlY3Rpb24kLm5leHQobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pLFxuICAgIG1hcCgoW2FkZGl0aW9uYWxEb2N1bWVudERhdGVdKSA9PlxuICAgICAgKGFkZGl0aW9uYWxEb2N1bWVudERhdGUgPT09ICdyZWNlaXZlZCcgPyB0aGlzLlJFQ0VJUFRfU1RBVFVTRVMgOiB0aGlzLlNUQVRVU0VTKS5tYXAoXG4gICAgICAgIHN0YXR1cyA9PiAoe1xuICAgICAgICAgIGlkOiBzdGF0dXMsXG4gICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYGRvY3VtZW50LiR7c3RhdHVzfWApLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgIClcbiAgKTtcbiAgcmVhZG9ubHkgTEFOR1VBR0VTOiBBcnJheTxEb2N1bWVudExhbmd1YWdlPiA9IFsnbmxkJywgJ2VuZycsICdkZXUnXTtcbiAgcmVhZG9ubHkgbGFuZ3VhZ2VJdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8U2VsZWN0SXRlbT4+ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JykucGlwZShcbiAgICBtYXAoKCkgPT5cbiAgICAgIHRoaXMuTEFOR1VBR0VTLm1hcChsYW5ndWFnZSA9PiAoe1xuICAgICAgICBpZDogbGFuZ3VhZ2UsXG4gICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGBkb2N1bWVudC4ke2xhbmd1YWdlfWApLFxuICAgICAgfSkpXG4gICAgKVxuICApO1xuICByZWFkb25seSBkb2N1bWVudFR5cGVJdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8U2VsZWN0SXRlbT4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5yb3V0ZT8ucGFyYW1zIHx8IG9mKG51bGwpLFxuICAgIHRoaXMucm91dGU/LmZpcnN0Q2hpbGQ/LnBhcmFtcyB8fCBvZihudWxsKSxcbiAgICB0aGlzLnZhbHRpbW9Nb2RhbFNlcnZpY2UuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQsXG4gIF0pLnBpcGUoXG4gICAgZmlsdGVyKFxuICAgICAgKFtwYXJhbXMsIGZpcnN0Q2hpbGRQYXJhbXMsIGRvY3VtZW50RGVmaW5pdGlvbk5hbWVdKSA9PlxuICAgICAgICAhIShcbiAgICAgICAgICBwYXJhbXM/LmRvY3VtZW50RGVmaW5pdGlvbk5hbWUgfHxcbiAgICAgICAgICBmaXJzdENoaWxkUGFyYW1zPy5kb2N1bWVudERlZmluaXRpb25OYW1lIHx8XG4gICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZVxuICAgICAgICApXG4gICAgKSxcbiAgICBzd2l0Y2hNYXAoKFtwYXJhbXMsIGZpcnN0Q2hpbGRQYXJhbXMsIGRvY3VtZW50RGVmaW5pdGlvbk5hbWVdKSA9PlxuICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0RG9jdW1lbnRUeXBlcyhcbiAgICAgICAgcGFyYW1zPy5kb2N1bWVudERlZmluaXRpb25OYW1lIHx8XG4gICAgICAgICAgZmlyc3RDaGlsZFBhcmFtcz8uZG9jdW1lbnREZWZpbml0aW9uTmFtZSB8fFxuICAgICAgICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWVcbiAgICAgIClcbiAgICApLFxuICAgIG1hcChkb2N1bWVudFR5cGVzID0+IGRvY3VtZW50VHlwZXMubWFwKHR5cGUgPT4gKHtpZDogdHlwZS51cmwsIHRleHQ6IHR5cGUubmFtZX0pKSlcbiAgKTtcbiAgcmVhZG9ubHkgc2hvd0Zvcm0kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5tb2RhbFNlcnZpY2UubW9kYWxWaXNpYmxlJDtcbiAgcmVhZG9ubHkgdmFsaWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHVzZXJFbWFpbCQgPSBmcm9tKHRoaXMua2V5Y2xvYWtTZXJ2aWNlLmxvYWRVc2VyUHJvZmlsZSgpKS5waXBlKFxuICAgIG1hcCh1c2VyUHJvZmlsZSA9PiB1c2VyUHJvZmlsZT8uZW1haWwgfHwgJycpXG4gICk7XG5cbiAgcHJpdmF0ZSBzaG93U3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGhpZGVTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGtleWNsb2FrU2VydmljZTogS2V5Y2xvYWtTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmFsdGltb01vZGFsU2VydmljZTogVmFsdGltb01vZGFsU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuU2hvd1N1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMub3BlbkhpZGVTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmhpZGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBoaWRlKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybURhdGEkLm5leHQobnVsbCk7XG4gICAgdGhpcy52YWxpZCQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5hZGRpdGlvbmFsRG9jdW1lbnREYXRlJC5uZXh0KCduZWl0aGVyJyk7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2UuY2xvc2VNb2RhbCgpO1xuICB9XG5cbiAgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgc2F2ZSgpOiB2b2lkIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnZhbGlkJCwgdGhpcy5mb3JtRGF0YSRdKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKFt2YWxpZCwgZm9ybURhdGFdKSA9PiB7XG4gICAgICAgIGlmICh2YWxpZCkge1xuICAgICAgICAgIHRoaXMubWV0YWRhdGEuZW1pdChmb3JtRGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgZm9ybVZhbHVlQ2hhbmdlKGRhdGE6IERvY3VtZW50ZW5BcGlNZXRhZGF0YSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybURhdGEkLm5leHQoZGF0YSk7XG4gICAgdGhpcy5zZXRWYWxpZChkYXRhKTtcbiAgfVxuXG4gIHNldEFkZGl0aW9uYWxEYXRlKHZhbHVlOiBBZGRpdGlvbmFsRG9jdW1lbnREYXRlKTogdm9pZCB7XG4gICAgdGhpcy5hZGRpdGlvbmFsRG9jdW1lbnREYXRlJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmFsaWQoZGF0YTogRG9jdW1lbnRlbkFwaU1ldGFkYXRhKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZCQubmV4dChcbiAgICAgICEhKFxuICAgICAgICBkYXRhLmZpbGVuYW1lICYmXG4gICAgICAgIGRhdGEudGl0bGUgJiZcbiAgICAgICAgZGF0YS5hdXRob3IgJiZcbiAgICAgICAgZGF0YS5jcmVhdGlvbkRhdGUgJiZcbiAgICAgICAgZGF0YS5zdGF0dXMgJiZcbiAgICAgICAgZGF0YS5sYW5ndWFnZSAmJlxuICAgICAgICBkYXRhLmluZm9ybWF0aWVvYmplY3R0eXBlXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblNob3dTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zaG93U3Vic2NyaXB0aW9uID0gdGhpcy5zaG93JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbk1vZGFsKHRoaXMuZG9jdW1lbnRlbkFwaU1ldGFkYXRhTW9kYWwpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuSGlkZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGVTdWJzY3JpcHRpb24gPSB0aGlzLmhpZGUkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48di1tb2RhbFxuICAjZG9jdW1lbnRlbkFwaU1ldGFkYXRhTW9kYWxcbiAgKGNsb3NlRXZlbnQpPVwiaGlkZSgpXCJcbiAgKm5nSWY9XCJ7ZmlsZTogZmlsZSQgfCBhc3luYywgZGlzYWJsZWQ6IGRpc2FibGVkJCB8IGFzeW5jLCB2YWxpZDogdmFsaWQkIHwgYXN5bmN9IGFzIG9ic1wiXG4+XG4gIDxkaXYgcm9sZT1cImhlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJlZGl0LWNvbmZpZ3VyYXRpb24tdGl0bGVcIj5cbiAgICAgIDx2LXRpdGxlIFtjZW50ZXJdPVwidHJ1ZVwiIFtmdWxsV2lkdGhdPVwidHJ1ZVwiIFttYXJnaW5dPVwiZmFsc2VcIiB0eXBlPVwiaDJcIj57e1xuICAgICAgICAnZG9jdW1lbnQuZmlsbEluTWV0YWRhdGEnIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvdi10aXRsZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgcm9sZT1cImNvbnRlbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWV0YWRhdGFGb3JtOyBjb250ZXh0OiB7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IHJvbGU9XCJmb290ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgPHYtYnV0dG9uIChjbGlja0V2ZW50KT1cImNhbmNlbCgpXCIgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiIHR5cGU9XCJzZWNvbmRhcnlcIj57e1xuICAgICAgICAnZG9jdW1lbnQuY2FuY2VsJyB8IHRyYW5zbGF0ZVxuICAgICAgfX08L3YtYnV0dG9uPlxuICAgICAgPHYtYnV0dG9uXG4gICAgICAgIChjbGlja0V2ZW50KT1cInNhdmUoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWQgfHwgIW9icy52YWxpZFwiXG4gICAgICAgIG1kaUljb249XCJ1cGxvYWRcIlxuICAgICAgICB0eXBlPVwic3VjY2Vzc1wiXG4gICAgICAgID57eyAnZG9jdW1lbnQudXBsb2FkJyB8IHRyYW5zbGF0ZSB9fTwvdi1idXR0b25cbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3YtbW9kYWw+XG5cbjxuZy10ZW1wbGF0ZSAjbWV0YWRhdGFGb3JtIGxldC1vYnM9XCJvYnNcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGb3JtJCB8IGFzeW5jXCI+XG4gICAgPHYtZm9ybVxuICAgICAgKHZhbHVlQ2hhbmdlKT1cImZvcm1WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICpuZ0lmPVwiYWRkaXRpb25hbERvY3VtZW50RGF0ZSQgfCBhc3luYyBhcyBhZGRpdGlvbmFsRGF0ZVwiXG4gICAgPlxuICAgICAgPHYtaW5wdXRcbiAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJmaWxlbmFtZSB8fCBvYnMuZmlsZT8ubmFtZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWQgfHwgZGlzYWJsZUZpbGVuYW1lXCJcbiAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbdGl0bGVdPVwiJ2RvY3VtZW50LmZpbGVuYW1lJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFt0b29sdGlwXT1cIidkb2N1bWVudC5maWxlbmFtZVRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgbmFtZT1cImZpbGVuYW1lXCJcbiAgICAgID5cbiAgICAgIDwvdi1pbnB1dD5cbiAgICAgIDx2LWlucHV0XG4gICAgICAgIFtkZWZhdWx0VmFsdWVdPVwiZG9jdW1lbnRUaXRsZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWQgfHwgZGlzYWJsZURvY3VtZW50VGl0bGVcIlxuICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgIFt0aXRsZV09XCInZG9jdW1lbnQuaW5wdXRUaXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdG9vbHRpcF09XCInZG9jdW1lbnQuaW5wdXRUaXRsZVRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3dpZHRoUHhdPVwiNDAwXCJcbiAgICAgICAgbmFtZT1cInRpdGxlXCJcbiAgICAgID5cbiAgICAgIDwvdi1pbnB1dD5cbiAgICAgIDx2LWlucHV0XG4gICAgICAgIFtkZWZhdWx0VmFsdWVdPVwiYXV0aG9yIHx8ICh1c2VyRW1haWwkIHwgYXN5bmMpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZCB8fCBkaXNhYmxlQXV0aG9yXCJcbiAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbdGl0bGVdPVwiJ2RvY3VtZW50LmF1dGhvcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdG9vbHRpcF09XCInZG9jdW1lbnQuYXV0aG9yVG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbd2lkdGhQeF09XCIzMDBcIlxuICAgICAgICBuYW1lPVwiYXV0aG9yXCJcbiAgICAgID5cbiAgICAgIDwvdi1pbnB1dD5cbiAgICAgIDx2LXNlbGVjdFxuICAgICAgICAqbmdJZj1cImxhbmd1YWdlSXRlbXMkIHwgYXN5bmMgYXMgbGFuZ3VhZ2VJdGVtc1wiXG4gICAgICAgIFtkZWZhdWx0U2VsZWN0aW9uSWRdPVwibGFuZ3VhZ2UgfHwgbGFuZ3VhZ2VJdGVtc1swXS5pZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWQgfHwgZGlzYWJsZUxhbmd1YWdlXCJcbiAgICAgICAgW2l0ZW1zXT1cImxhbmd1YWdlSXRlbXNcIlxuICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgIFt0aXRsZV09XCInZG9jdW1lbnQubGFuZ3VhZ2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3Rvb2x0aXBdPVwiJ2RvY3VtZW50Lmxhbmd1YWdlVG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbd2lkdGhJblB4XT1cIjIwMFwiXG4gICAgICAgIG5hbWU9XCJsYW5ndWFnZVwiXG4gICAgICA+PC92LXNlbGVjdD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ7ZG9jdW1lbnRUeXBlSXRlbXM6IGRvY3VtZW50VHlwZUl0ZW1zJCB8IGFzeW5jfSBhcyBvYnNcIj5cbiAgICAgICAgPHYtc2VsZWN0XG4gICAgICAgICAgW2RlZmF1bHRTZWxlY3Rpb25JZF09XCJkb2N1bWVudFR5cGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWQgfHwgZGlzYWJsZURvY3VtZW50VHlwZVwiXG4gICAgICAgICAgW2l0ZW1zXT1cIm9icy5kb2N1bWVudFR5cGVJdGVtc1wiXG4gICAgICAgICAgW2xvYWRpbmddPVwiIW9icy5kb2N1bWVudFR5cGVJdGVtc1wiXG4gICAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgW3RpdGxlXT1cIidkb2N1bWVudC5pbmZvcm1hdGllb2JqZWN0dHlwZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFt0b29sdGlwXT1cIidkb2N1bWVudC5pbmZvcm1hdGllb2JqZWN0dHlwZVRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbd2lkdGhJblB4XT1cIjIwMFwiXG4gICAgICAgICAgbmFtZT1cImluZm9ybWF0aWVvYmplY3R0eXBlXCJcbiAgICAgICAgPjwvdi1zZWxlY3Q+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDx2LWRhdGUtcGlja2VyXG4gICAgICAgIFtkZWZhdWx0RGF0ZUlzVG9kYXldPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgIFt0aXRsZV09XCInZG9jdW1lbnQuY3JlYXRpb25EYXRlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFt0b29sdGlwXT1cIidkb2N1bWVudC5jcmVhdGlvbkRhdGVUb29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFt3aWR0aFB4XT1cIjEwMFwiXG4gICAgICAgIG5hbWU9XCJjcmVhdGlvbkRhdGVcIlxuICAgICAgPjwvdi1kYXRlLXBpY2tlcj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZGRpdGlvbmFsRGF0ZVBpY2tlcjsgY29udGV4dDoge2FkZGl0aW9uYWxEYXRlOiBhZGRpdGlvbmFsRGF0ZX1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPHYtZGF0ZS1waWNrZXJcbiAgICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsRGF0ZSA9PT0gJ3JlY2VpdmVkJ1wiXG4gICAgICAgIFtkZWZhdWx0RGF0ZUlzVG9kYXldPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICBbdGl0bGVdPVwiJ2RvY3VtZW50LnJlY2VpcHREYXRlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFt0b29sdGlwXT1cIidkb2N1bWVudC5yZWNlaXB0RGF0ZVRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3dpZHRoUHhdPVwiMTAwXCJcbiAgICAgICAgbmFtZT1cInJlY2VpcHREYXRlXCJcbiAgICAgID48L3YtZGF0ZS1waWNrZXI+XG4gICAgICA8di1kYXRlLXBpY2tlclxuICAgICAgICAqbmdJZj1cImFkZGl0aW9uYWxEYXRlID09PSAnc2VudCdcIlxuICAgICAgICBbZGVmYXVsdERhdGVJc1RvZGF5XT1cInRydWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgW3RpdGxlXT1cIidkb2N1bWVudC5zZW5kRGF0ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdG9vbHRpcF09XCInZG9jdW1lbnQuc2VuZERhdGVUb29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFt3aWR0aFB4XT1cIjEwMFwiXG4gICAgICAgIG5hbWU9XCJzZW5kRGF0ZVwiXG4gICAgICA+PC92LWRhdGUtcGlja2VyPlxuICAgICAgPHYtc2VsZWN0XG4gICAgICAgIFtkZWZhdWx0U2VsZWN0aW9uSWRdPVwic3RhdHVzXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZCB8fCBkaXNhYmxlU3RhdHVzXCJcbiAgICAgICAgW2l0ZW1zXT1cInN0YXR1c0l0ZW1zJCB8IGFzeW5jXCJcbiAgICAgICAgW21hcmdpbl09XCJ0cnVlXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICBbdGl0bGVdPVwiJ2RvY3VtZW50LnN0YXR1cycgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbdG9vbHRpcF09XCInZG9jdW1lbnQuc3RhdHVzVG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbd2lkdGhJblB4XT1cIjIwMFwiXG4gICAgICAgIFtjbGVhclNlbGVjdGlvblN1YmplY3QkXT1cImNsZWFyU3RhdHVzU2VsZWN0aW9uJFwiXG4gICAgICAgIG5hbWU9XCJzdGF0dXNcIlxuICAgICAgPjwvdi1zZWxlY3Q+XG4gICAgICA8di1pbnB1dFxuICAgICAgICBbZGVmYXVsdFZhbHVlXT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZCB8fCBkaXNhYmxlRGVzY3JpcHRpb25cIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICBbdGl0bGVdPVwiJ2RvY3VtZW50LmlucHV0RGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3Rvb2x0aXBdPVwiJ2RvY3VtZW50LmlucHV0RGVzY3JpcHRpb25Ub29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIG5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICA+XG4gICAgICA8L3YtaW5wdXQ+XG4gICAgICA8di1zZWxlY3RcbiAgICAgICAgW2RlZmF1bHRTZWxlY3Rpb25JZF09XCJjb25maWRlbnRpYWxpdHlMZXZlbFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWQgfHwgZGlzYWJsZUNvbmZpZGVudGlhbGl0eUxldmVsXCJcbiAgICAgICAgW2l0ZW1zXT1cImNvbmZpZGVudGlhbGl0eUxldmVsSXRlbXMkIHwgYXN5bmNcIlxuICAgICAgICBbbWFyZ2luXT1cInRydWVcIlxuICAgICAgICBbdGl0bGVdPVwiJ2RvY3VtZW50LmNvbmZpZGVudGlhbGl0eUxldmVsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFt0b29sdGlwXT1cIidkb2N1bWVudC5jb25maWRlbnRpYWxpdHlMZXZlbFRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3dpZHRoSW5QeF09XCIyMDBcIlxuICAgICAgICBuYW1lPVwiY29uZmlkZW50aWFsaXR5TGV2ZWxcIlxuICAgICAgPjwvdi1zZWxlY3Q+XG4gICAgPC92LWZvcm0+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNhZGRpdGlvbmFsRGF0ZVBpY2tlciBsZXQtYWRkaXRpb25hbERhdGU9XCJhZGRpdGlvbmFsRGF0ZVwiPlxuICA8di1pbnB1dC1sYWJlbFxuICAgIFt0aXRsZV09XCInZG9jdW1lbnQuYWRkaXRpb25hbERhdGUnIHwgdHJhbnNsYXRlXCJcbiAgICBbbmFtZV09XCInYWRkaXRpb25hbERhdGUnXCJcbiAgICBbdG9vbHRpcF09XCInZG9jdW1lbnQuYWRkaXRpb25hbERhdGVUb29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICA+XG4gIDwvdi1pbnB1dC1sYWJlbD5cbiAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tOCBjb2wtbGctNiBmb3JtLWNoZWNrIG10LTEgYWRkaXRpb25hbC1kYXRlXCI+XG4gICAgPGxhYmVsXG4gICAgICBjbGFzcz1cImN1c3RvbS1jb250cm9sIGN1c3RvbS1yYWRpbyBjdXN0b20tY29udHJvbC1pbmxpbmVcIlxuICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBBRERJVE9OQUxfRE9DVU1FTlRfREFURV9PUFRJT05TXCJcbiAgICAgIChjbGljayk9XCJzZXRBZGRpdGlvbmFsRGF0ZShvcHRpb24udmFsdWUpXCJcbiAgICA+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJjdXN0b20tY29udHJvbC1pbnB1dFwiXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgIG5hbWU9XCJyYWRpby1pbmxpbmVcIlxuICAgICAgICBbY2hlY2tlZF09XCJhZGRpdGlvbmFsRGF0ZSA9PT0gb3B0aW9uLnZhbHVlXCJcbiAgICAgIC8+PHNwYW4gY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbFwiPnt7IG9wdGlvbi50cmFuc2xhdGlvbktleSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,69 @@
1
+ /*
2
+ * Copyright 2015-2020 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { NgModule } from '@angular/core';
17
+ import { CommonModule } from '@angular/common';
18
+ import { DocumentenApiMetadataModalComponent } from './documenten-api-metadata-modal.component';
19
+ import { TranslateModule } from '@ngx-translate/core';
20
+ import { ButtonModule, DatePickerModule, FormModule, InputLabelModule, InputModule, ModalModule, SelectModule, TitleModule, } from '@valtimo/user-interface';
21
+ import * as i0 from "@angular/core";
22
+ export class DocumentenApiMetadataModalModule {
23
+ }
24
+ DocumentenApiMetadataModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DocumentenApiMetadataModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
25
+ DocumentenApiMetadataModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DocumentenApiMetadataModalModule, declarations: [DocumentenApiMetadataModalComponent], imports: [CommonModule,
26
+ TranslateModule,
27
+ ModalModule,
28
+ TitleModule,
29
+ ButtonModule,
30
+ TranslateModule,
31
+ FormModule,
32
+ InputModule,
33
+ SelectModule,
34
+ DatePickerModule,
35
+ InputLabelModule], exports: [DocumentenApiMetadataModalComponent] });
36
+ DocumentenApiMetadataModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DocumentenApiMetadataModalModule, imports: [[
37
+ CommonModule,
38
+ TranslateModule,
39
+ ModalModule,
40
+ TitleModule,
41
+ ButtonModule,
42
+ TranslateModule,
43
+ FormModule,
44
+ InputModule,
45
+ SelectModule,
46
+ DatePickerModule,
47
+ InputLabelModule,
48
+ ]] });
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DocumentenApiMetadataModalModule, decorators: [{
50
+ type: NgModule,
51
+ args: [{
52
+ declarations: [DocumentenApiMetadataModalComponent],
53
+ exports: [DocumentenApiMetadataModalComponent],
54
+ imports: [
55
+ CommonModule,
56
+ TranslateModule,
57
+ ModalModule,
58
+ TitleModule,
59
+ ButtonModule,
60
+ TranslateModule,
61
+ FormModule,
62
+ InputModule,
63
+ SelectModule,
64
+ DatePickerModule,
65
+ InputLabelModule,
66
+ ],
67
+ }]
68
+ }] });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRlbi1hcGktbWV0YWRhdGEtbW9kYWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kb2N1bWVudGVuLWFwaS1tZXRhZGF0YS1tb2RhbC9kb2N1bWVudGVuLWFwaS1tZXRhZGF0YS1tb2RhbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUM5RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUNMLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsV0FBVyxFQUNYLFlBQVksRUFDWixXQUFXLEdBQ1osTUFBTSx5QkFBeUIsQ0FBQzs7QUFtQmpDLE1BQU0sT0FBTyxnQ0FBZ0M7OzhIQUFoQyxnQ0FBZ0M7K0hBQWhDLGdDQUFnQyxpQkFoQjVCLG1DQUFtQyxhQUdoRCxZQUFZO1FBQ1osZUFBZTtRQUNmLFdBQVc7UUFDWCxXQUFXO1FBQ1gsWUFBWTtRQUNaLGVBQWU7UUFDZixVQUFVO1FBQ1YsV0FBVztRQUNYLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsZ0JBQWdCLGFBWlIsbUNBQW1DOytIQWVsQyxnQ0FBZ0MsWUFkbEM7WUFDUCxZQUFZO1lBQ1osZUFBZTtZQUNmLFdBQVc7WUFDWCxXQUFXO1lBQ1gsWUFBWTtZQUNaLGVBQWU7WUFDZixVQUFVO1lBQ1YsV0FBVztZQUNYLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsZ0JBQWdCO1NBQ2pCOzRGQUVVLGdDQUFnQztrQkFqQjVDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsbUNBQW1DLENBQUM7b0JBQ25ELE9BQU8sRUFBRSxDQUFDLG1DQUFtQyxDQUFDO29CQUM5QyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsVUFBVTt3QkFDVixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixnQkFBZ0I7cUJBQ2pCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjAgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaU1ldGFkYXRhTW9kYWxDb21wb25lbnR9IGZyb20gJy4vZG9jdW1lbnRlbi1hcGktbWV0YWRhdGEtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIEJ1dHRvbk1vZHVsZSxcbiAgRGF0ZVBpY2tlck1vZHVsZSxcbiAgRm9ybU1vZHVsZSxcbiAgSW5wdXRMYWJlbE1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG4gIE1vZGFsTW9kdWxlLFxuICBTZWxlY3RNb2R1bGUsXG4gIFRpdGxlTW9kdWxlLFxufSBmcm9tICdAdmFsdGltby91c2VyLWludGVyZmFjZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0RvY3VtZW50ZW5BcGlNZXRhZGF0YU1vZGFsQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0RvY3VtZW50ZW5BcGlNZXRhZGF0YU1vZGFsQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTW9kYWxNb2R1bGUsXG4gICAgVGl0bGVNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIFNlbGVjdE1vZHVsZSxcbiAgICBEYXRlUGlja2VyTW9kdWxlLFxuICAgIElucHV0TGFiZWxNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERvY3VtZW50ZW5BcGlNZXRhZGF0YU1vZGFsTW9kdWxlIHt9XG4iXX0=
@@ -93,6 +93,7 @@ export class DropzoneComponent {
93
93
  createImageThumbnails: false,
94
94
  acceptedFiles: this.acceptedFiles,
95
95
  previewTemplate: `<p style='display:none'></p>`,
96
+ ...(this.maxFiles && { maxFiles: this.maxFiles }),
96
97
  accept: file => {
97
98
  this.dropzone.removeAllFiles();
98
99
  this.setFile(file);
@@ -119,7 +120,7 @@ export class DropzoneComponent {
119
120
  }
120
121
  }
121
122
  DropzoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropzoneComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
122
- DropzoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: DropzoneComponent, selector: "valtimo-dropzone", inputs: { title: "title", hideTitle: "hideTitle", subtitle: "subtitle", externalError$: "externalError$", maxFileSize: "maxFileSize", showMaxFileSize: "showMaxFileSize", acceptedFiles: "acceptedFiles", clear$: "clear$", disabled: "disabled", hideFilePreview: "hideFilePreview", uploading: "uploading", camera: "camera" }, outputs: { fileSelected: "fileSelected" }, viewQueries: [{ propertyName: "dropzoneRef", first: true, predicate: ["dropzone"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form #dropzone [ngClass]=\"{disabled: disabled || uploading}\" class=\"dropzone dz-clickable\">\n <div class=\"dz-message\">\n <div class=\"icon large-icon\"><span class=\"mdi mdi-cloud-upload\"></span></div>\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n <ng-container *ngIf=\"uploading\">\n <ng-container *ngTemplateOutlet=\"progressBar\"></ng-container>\n </ng-container>\n <div class=\"dropzone-mobile-trigger needsclick\"></div>\n </div>\n <button\n (click)=\"showCamera()\"\n *ngIf=\"camera\"\n type=\"button\"\n class=\"btn btn-primary px-3 webcam-button\"\n >\n <i class=\"icon mdi mdi-camera\" aria-hidden=\"true\"></i>\n </button>\n <ng-container *ngIf=\"showingCamera$ | async\">\n <ng-container *ngTemplateOutlet=\"webcam\"></ng-container>\n </ng-container>\n</form>\n\n<ng-template #body>\n <h2 *ngIf=\"!hideTitle\" class=\"mb-4 mt-2\">{{ title || ('dropzone.drop' | translate) }}</h2>\n <span *ngIf=\"subtitle\" class=\"note mb-3\">{{ subtitle }}</span>\n <span *ngIf=\"showMaxFileSize\" class=\"note mb-3 small-font\"\n >{{ 'dropzone.maxFileSize' | translate }}<b>{{ maxFileSize }}mb</b></span\n >\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\n</ng-template>\n\n<ng-template #preview>\n <ng-container\n *ngIf=\"{\n errorMessage: errorMessage$ | async,\n externalError: externalError$ | async,\n file: file$ | async\n } as obs\"\n >\n <ng-container *ngIf=\"obs.externalError || obs.errorMessage\">\n <div class=\"alert alert-danger mt-2 mb-0\">\n <div class=\"message\">\n {{ obs.externalError || obs.errorMessage }}\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!hideFilePreview && obs.file && !obs.externalError && !obs.errorMessage\">\n <div class=\"file\">\n <i class=\"icon mdi mdi-file-text mr-2\"></i>\n <span class=\"note\">{{ obs.file.name }}</span>\n <span class=\"note file-size\">- {{ obs.file.size | filesize: 2 }}</span>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #progressBar>\n <div class=\"progress-bar-container\">\n <valtimo-progress-bar></valtimo-progress-bar>\n </div>\n</ng-template>\n\n<ng-template #webcam>\n <valtimo-webcam (imageSaved)=\"webcamImageSaved($event)\"></valtimo-webcam>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */form.dropzone{padding:30px 20px}form.dropzone h2{text-align:center;font-size:2rem}form.dropzone.disabled{opacity:.7;pointer-events:none;cursor:default}form.dropzone.preview{padding:15px 20px;border:none}.dz-message{display:flex;flex-direction:column;align-items:center}.dropzone-mobile-trigger{cursor:pointer}.alert-light{display:flex;align-items:center}form.dropzone .mdi{background-color:transparent;border-radius:0;display:inline-block;height:auto;width:auto;margin-bottom:0;padding:0}form.dropzone .message{padding:1.385rem 2.1542rem}.file{font-size:1.5rem;display:flex;flex-direction:row;align-items:center}.small-font{font-size:1rem;color:#959595}.file-size{margin-left:5px}.progress-bar-container{height:auto;width:100%;position:absolute;bottom:0}.webcam-button{position:absolute;top:10px;right:10px}.large-icon{line-height:4.615rem}\n"], components: [{ type: i2.ProgressBarComponent, selector: "valtimo-progress-bar" }, { type: i3.WebcamComponent, selector: "valtimo-webcam", outputs: ["imageSaved"] }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i4.AsyncPipe, "translate": i1.TranslatePipe, "filesize": i5.FileSizePipe } });
123
+ DropzoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: DropzoneComponent, selector: "valtimo-dropzone", inputs: { title: "title", hideTitle: "hideTitle", subtitle: "subtitle", externalError$: "externalError$", maxFileSize: "maxFileSize", showMaxFileSize: "showMaxFileSize", acceptedFiles: "acceptedFiles", clear$: "clear$", disabled: "disabled", hideFilePreview: "hideFilePreview", uploading: "uploading", camera: "camera", maxFiles: "maxFiles" }, outputs: { fileSelected: "fileSelected" }, viewQueries: [{ propertyName: "dropzoneRef", first: true, predicate: ["dropzone"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form #dropzone [ngClass]=\"{disabled: disabled || uploading}\" class=\"dropzone dz-clickable\">\n <div class=\"dz-message\">\n <div class=\"icon large-icon\"><span class=\"mdi mdi-cloud-upload\"></span></div>\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n <ng-container *ngIf=\"uploading\">\n <ng-container *ngTemplateOutlet=\"progressBar\"></ng-container>\n </ng-container>\n <div class=\"dropzone-mobile-trigger needsclick\"></div>\n </div>\n <button\n (click)=\"showCamera()\"\n *ngIf=\"camera\"\n type=\"button\"\n class=\"btn btn-primary px-3 webcam-button\"\n >\n <i class=\"icon mdi mdi-camera\" aria-hidden=\"true\"></i>\n </button>\n <ng-container *ngIf=\"showingCamera$ | async\">\n <ng-container *ngTemplateOutlet=\"webcam\"></ng-container>\n </ng-container>\n</form>\n\n<ng-template #body>\n <h2 *ngIf=\"!hideTitle\" class=\"mb-4 mt-2\">{{ title || ('dropzone.drop' | translate) }}</h2>\n <span *ngIf=\"subtitle\" class=\"note mb-3\">{{ subtitle }}</span>\n <span *ngIf=\"showMaxFileSize\" class=\"note mb-3 small-font\"\n >{{ 'dropzone.maxFileSize' | translate }}<b>{{ maxFileSize }}mb</b></span\n >\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\n</ng-template>\n\n<ng-template #preview>\n <ng-container\n *ngIf=\"{\n errorMessage: errorMessage$ | async,\n externalError: externalError$ | async,\n file: file$ | async\n } as obs\"\n >\n <ng-container *ngIf=\"obs.externalError || obs.errorMessage\">\n <div class=\"alert alert-danger mt-2 mb-0\">\n <div class=\"message\">\n {{ obs.externalError || obs.errorMessage }}\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!hideFilePreview && obs.file && !obs.externalError && !obs.errorMessage\">\n <div class=\"file\">\n <i class=\"icon mdi mdi-file-text mr-2\"></i>\n <span class=\"note\">{{ obs.file.name }}</span>\n <span class=\"note file-size\">- {{ obs.file.size | filesize: 2 }}</span>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #progressBar>\n <div class=\"progress-bar-container\">\n <valtimo-progress-bar></valtimo-progress-bar>\n </div>\n</ng-template>\n\n<ng-template #webcam>\n <valtimo-webcam (imageSaved)=\"webcamImageSaved($event)\"></valtimo-webcam>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */form.dropzone{padding:30px 20px}form.dropzone h2{text-align:center;font-size:2rem}form.dropzone.disabled{opacity:.7;pointer-events:none;cursor:default}form.dropzone.preview{padding:15px 20px;border:none}.dz-message{display:flex;flex-direction:column;align-items:center}.dropzone-mobile-trigger{cursor:pointer}.alert-light{display:flex;align-items:center}form.dropzone .mdi{background-color:transparent;border-radius:0;display:inline-block;height:auto;width:auto;margin-bottom:0;padding:0}form.dropzone .message{padding:1.385rem 2.1542rem}.file{font-size:1.5rem;display:flex;flex-direction:row;align-items:center}.small-font{font-size:1rem;color:#959595}.file-size{margin-left:5px}.progress-bar-container{height:auto;width:100%;position:absolute;bottom:0}.webcam-button{position:absolute;top:10px;right:10px}.large-icon{line-height:4.615rem}\n"], components: [{ type: i2.ProgressBarComponent, selector: "valtimo-progress-bar" }, { type: i3.WebcamComponent, selector: "valtimo-webcam", outputs: ["imageSaved"] }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i4.AsyncPipe, "translate": i1.TranslatePipe, "filesize": i5.FileSizePipe } });
123
124
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropzoneComponent, decorators: [{
124
125
  type: Component,
125
126
  args: [{ selector: 'valtimo-dropzone', template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form #dropzone [ngClass]=\"{disabled: disabled || uploading}\" class=\"dropzone dz-clickable\">\n <div class=\"dz-message\">\n <div class=\"icon large-icon\"><span class=\"mdi mdi-cloud-upload\"></span></div>\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n <ng-container *ngIf=\"uploading\">\n <ng-container *ngTemplateOutlet=\"progressBar\"></ng-container>\n </ng-container>\n <div class=\"dropzone-mobile-trigger needsclick\"></div>\n </div>\n <button\n (click)=\"showCamera()\"\n *ngIf=\"camera\"\n type=\"button\"\n class=\"btn btn-primary px-3 webcam-button\"\n >\n <i class=\"icon mdi mdi-camera\" aria-hidden=\"true\"></i>\n </button>\n <ng-container *ngIf=\"showingCamera$ | async\">\n <ng-container *ngTemplateOutlet=\"webcam\"></ng-container>\n </ng-container>\n</form>\n\n<ng-template #body>\n <h2 *ngIf=\"!hideTitle\" class=\"mb-4 mt-2\">{{ title || ('dropzone.drop' | translate) }}</h2>\n <span *ngIf=\"subtitle\" class=\"note mb-3\">{{ subtitle }}</span>\n <span *ngIf=\"showMaxFileSize\" class=\"note mb-3 small-font\"\n >{{ 'dropzone.maxFileSize' | translate }}<b>{{ maxFileSize }}mb</b></span\n >\n <ng-container *ngTemplateOutlet=\"preview\"></ng-container>\n</ng-template>\n\n<ng-template #preview>\n <ng-container\n *ngIf=\"{\n errorMessage: errorMessage$ | async,\n externalError: externalError$ | async,\n file: file$ | async\n } as obs\"\n >\n <ng-container *ngIf=\"obs.externalError || obs.errorMessage\">\n <div class=\"alert alert-danger mt-2 mb-0\">\n <div class=\"message\">\n {{ obs.externalError || obs.errorMessage }}\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!hideFilePreview && obs.file && !obs.externalError && !obs.errorMessage\">\n <div class=\"file\">\n <i class=\"icon mdi mdi-file-text mr-2\"></i>\n <span class=\"note\">{{ obs.file.name }}</span>\n <span class=\"note file-size\">- {{ obs.file.size | filesize: 2 }}</span>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #progressBar>\n <div class=\"progress-bar-container\">\n <valtimo-progress-bar></valtimo-progress-bar>\n </div>\n</ng-template>\n\n<ng-template #webcam>\n <valtimo-webcam (imageSaved)=\"webcamImageSaved($event)\"></valtimo-webcam>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */form.dropzone{padding:30px 20px}form.dropzone h2{text-align:center;font-size:2rem}form.dropzone.disabled{opacity:.7;pointer-events:none;cursor:default}form.dropzone.preview{padding:15px 20px;border:none}.dz-message{display:flex;flex-direction:column;align-items:center}.dropzone-mobile-trigger{cursor:pointer}.alert-light{display:flex;align-items:center}form.dropzone .mdi{background-color:transparent;border-radius:0;display:inline-block;height:auto;width:auto;margin-bottom:0;padding:0}form.dropzone .message{padding:1.385rem 2.1542rem}.file{font-size:1.5rem;display:flex;flex-direction:row;align-items:center}.small-font{font-size:1rem;color:#959595}.file-size{margin-left:5px}.progress-bar-container{height:auto;width:100%;position:absolute;bottom:0}.webcam-button{position:absolute;top:10px;right:10px}.large-icon{line-height:4.615rem}\n"] }]
@@ -150,7 +151,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
150
151
  type: Input
151
152
  }], camera: [{
152
153
  type: Input
154
+ }], maxFiles: [{
155
+ type: Input
153
156
  }], fileSelected: [{
154
157
  type: Output
155
158
  }] } });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kcm9wem9uZS9kcm9wem9uZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3B6b25lL2Ryb3B6b25lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUN2RixPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFPbkMsTUFBTSxPQUFPLGlCQUFpQjtJQXdENUIsWUFBNkIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFsRHRELG1CQUFjLEdBQTRCLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLGtCQUFhLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLFdBQU0sR0FBaUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUlyQyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWQsaUJBQVksR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU12RCxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQU8sU0FBUyxDQUFDLENBQUM7UUFFN0Ms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ZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgRHJvcHpvbmUgZnJvbSAnZHJvcHpvbmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRyb3B6b25lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3B6b25lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcHpvbmUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcHpvbmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3B6b25lJykgZHJvcHpvbmVSZWY6IEVsZW1lbnRSZWY8YW55PjtcblxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBoaWRlVGl0bGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHN1YnRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGV4dGVybmFsRXJyb3IkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIEBJbnB1dCgpIG1heEZpbGVTaXplID0gNTtcbiAgQElucHV0KCkgc2hvd01heEZpbGVTaXplID0gdHJ1ZTtcbiAgQElucHV0KCkgYWNjZXB0ZWRGaWxlcyA9ICcuanNvbic7XG4gIEBJbnB1dCgpIGNsZWFyJDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGhpZGVGaWxlUHJldmlldzogYm9vbGVhbjtcbiAgQElucHV0KCkgdXBsb2FkaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBjYW1lcmEgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgZmlsZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8RmlsZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJpdmF0ZSBjbGVhclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgZHJvcHpvbmU6IERyb3B6b25lO1xuXG4gIHJlYWRvbmx5IGZpbGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWxlPih1bmRlZmluZWQpO1xuXG4gIHJlYWRvbmx5IHNob3dpbmdDYW1lcmEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JNZXNzYWdlc1N0cmluZ3M6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge1xuICAgIHRvb0JpZzogJ3RvbyBiaWcnLFxuICAgIHdyb25nVHlwZTogJ3RoaXMgdHlwZScsXG4gIH07XG5cbiAgcmVhZG9ubHkgZXJyb3JNZXNzYWdlJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5lcnJvciQsXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgnZHJvcHpvbmUuZXJyb3IuZ2VuZXJpYycpLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2Ryb3B6b25lLmVycm9yLnRvb0JpZycpLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2Ryb3B6b25lLmVycm9yLndyb25nVHlwZScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2Ryb3B6b25lRXJyb3IsIGdlbmVyaWMsIHRvb0JpZywgd3JvbmdUeXBlXSkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5ncyA9IHRoaXMuZXJyb3JNZXNzYWdlc1N0cmluZ3M7XG5cbiAgICAgIGlmIChkcm9wem9uZUVycm9yKSB7XG4gICAgICAgIGlmIChkcm9wem9uZUVycm9yLmluY2x1ZGVzKHN0cmluZ3MudG9vQmlnKSkge1xuICAgICAgICAgIHJldHVybiB0b29CaWc7XG4gICAgICAgIH0gZWxzZSBpZiAoZHJvcHpvbmVFcnJvci5pbmNsdWRlcyhzdHJpbmdzLndyb25nVHlwZSkpIHtcbiAgICAgICAgICByZXR1cm4gd3JvbmdUeXBlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBnZW5lcmljO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfSlcbiAgKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclN1YnNjcmlwdGlvbiA9IHRoaXMuY2xlYXIkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNsZWFyRmlsZSgpO1xuICAgICAgdGhpcy5jbGVhckVycm9yKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5pbml0RHJvcHpvbmUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHNob3dDYW1lcmEoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93aW5nQ2FtZXJhJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgd2ViY2FtSW1hZ2VTYXZlZChpbWFnZTogRmlsZSk6IHZvaWQge1xuICAgIGlmIChpbWFnZSkge1xuICAgICAgdGhpcy5zZXRGaWxlKGltYWdlKTtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dpbmdDYW1lcmEkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0RHJvcHpvbmUoKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wem9uZSA9IG5ldyBEcm9wem9uZSh0aGlzLmRyb3B6b25lUmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgIHVybDogJy8nLFxuICAgICAgbWF4RmlsZXNpemU6IHRoaXMubWF4RmlsZVNpemUsXG4gICAgICBjbGlja2FibGU6IHRoaXMuZHJvcHpvbmVSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIGF1dG9Qcm9jZXNzUXVldWU6IGZhbHNlLFxuICAgICAgY3JlYXRlSW1hZ2VUaHVtYm5haWxzOiBmYWxzZSxcbiAgICAgIGFjY2VwdGVkRmlsZXM6IHRoaXMuYWNjZXB0ZWRGaWxlcyxcbiAgICAgIHByZXZpZXdUZW1wbGF0ZTogYDxwIHN0eWxlPSdkaXNwbGF5Om5vbmUnPjwvcD5gLFxuICAgICAgYWNjZXB0OiBmaWxlID0+IHtcbiAgICAgICAgdGhpcy5kcm9wem9uZS5yZW1vdmVBbGxGaWxlcygpO1xuICAgICAgICB0aGlzLnNldEZpbGUoZmlsZSk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZXREcm9wem9uZUV2ZW50cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREcm9wem9uZUV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3B6b25lLm9uKCdlcnJvcicsIChmaWxlLCBtZXNzYWdlKSA9PiB7XG4gICAgICB0aGlzLmNsZWFyRmlsZSgpO1xuICAgICAgdGhpcy5lcnJvciQubmV4dChtZXNzYWdlLnRvU3RyaW5nKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckZpbGUoKTogdm9pZCB7XG4gICAgdGhpcy5maWxlJC5uZXh0KHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRXJyb3IoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvciQubmV4dCgnJyk7XG4gIH1cblxuICBwcml2YXRlIHNldEZpbGUoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgIHRoaXMuZmlsZSQubmV4dChmaWxlKTtcbiAgICB0aGlzLmNsZWFyRXJyb3IoKTtcbiAgICB0aGlzLmZpbGVTZWxlY3RlZC5lbWl0KGZpbGUpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxmb3JtICNkcm9wem9uZSBbbmdDbGFzc109XCJ7ZGlzYWJsZWQ6IGRpc2FibGVkIHx8IHVwbG9hZGluZ31cIiBjbGFzcz1cImRyb3B6b25lIGR6LWNsaWNrYWJsZVwiPlxuICA8ZGl2IGNsYXNzPVwiZHotbWVzc2FnZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJpY29uIGxhcmdlLWljb25cIj48c3BhbiBjbGFzcz1cIm1kaSBtZGktY2xvdWQtdXBsb2FkXCI+PC9zcGFuPjwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJib2R5XCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVwbG9hZGluZ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByb2dyZXNzQmFyXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImRyb3B6b25lLW1vYmlsZS10cmlnZ2VyIG5lZWRzY2xpY2tcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxidXR0b25cbiAgICAoY2xpY2spPVwic2hvd0NhbWVyYSgpXCJcbiAgICAqbmdJZj1cImNhbWVyYVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtMyB3ZWJjYW0tYnV0dG9uXCJcbiAgPlxuICAgIDxpIGNsYXNzPVwiaWNvbiBtZGkgbWRpLWNhbWVyYVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgPC9idXR0b24+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93aW5nQ2FtZXJhJCB8IGFzeW5jXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIndlYmNhbVwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZm9ybT5cblxuPG5nLXRlbXBsYXRlICNib2R5PlxuICA8aDIgKm5nSWY9XCIhaGlkZVRpdGxlXCIgY2xhc3M9XCJtYi00IG10LTJcIj57eyB0aXRsZSB8fCAoJ2Ryb3B6b25lLmRyb3AnIHwgdHJhbnNsYXRlKSB9fTwvaDI+XG4gIDxzcGFuICpuZ0lmPVwic3VidGl0bGVcIiBjbGFzcz1cIm5vdGUgbWItM1wiPnt7IHN1YnRpdGxlIH19PC9zcGFuPlxuICA8c3BhbiAqbmdJZj1cInNob3dNYXhGaWxlU2l6ZVwiIGNsYXNzPVwibm90ZSBtYi0zIHNtYWxsLWZvbnRcIlxuICAgID57eyAnZHJvcHpvbmUubWF4RmlsZVNpemUnIHwgdHJhbnNsYXRlIH19PGI+e3sgbWF4RmlsZVNpemUgfX1tYjwvYj48L3NwYW5cbiAgPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJldmlld1wiPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwcmV2aWV3PlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJ7XG4gICAgICBlcnJvck1lc3NhZ2U6IGVycm9yTWVzc2FnZSQgfCBhc3luYyxcbiAgICAgIGV4dGVybmFsRXJyb3I6IGV4dGVybmFsRXJyb3IkIHwgYXN5bmMsXG4gICAgICBmaWxlOiBmaWxlJCB8IGFzeW5jXG4gICAgfSBhcyBvYnNcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9icy5leHRlcm5hbEVycm9yIHx8IG9icy5lcnJvck1lc3NhZ2VcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgbXQtMiBtYi0wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlXCI+XG4gICAgICAgICAge3sgb2JzLmV4dGVybmFsRXJyb3IgfHwgb2JzLmVycm9yTWVzc2FnZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoaWRlRmlsZVByZXZpZXcgJiYgb2JzLmZpbGUgJiYgIW9icy5leHRlcm5hbEVycm9yICYmICFvYnMuZXJyb3JNZXNzYWdlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsZVwiPlxuICAgICAgICA8aSBjbGFzcz1cImljb24gbWRpIG1kaS1maWxlLXRleHQgbXItMlwiPjwvaT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJub3RlXCI+e3sgb2JzLmZpbGUubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJub3RlIGZpbGUtc2l6ZVwiPi0ge3sgb2JzLmZpbGUuc2l6ZSB8IGZpbGVzaXplOiAyIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwcm9ncmVzc0Jhcj5cbiAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhci1jb250YWluZXJcIj5cbiAgICA8dmFsdGltby1wcm9ncmVzcy1iYXI+PC92YWx0aW1vLXByb2dyZXNzLWJhcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3dlYmNhbT5cbiAgPHZhbHRpbW8td2ViY2FtIChpbWFnZVNhdmVkKT1cIndlYmNhbUltYWdlU2F2ZWQoJGV2ZW50KVwiPjwvdmFsdGltby13ZWJjYW0+XG48L25nLXRlbXBsYXRlPlxuIl19
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kcm9wem9uZS9kcm9wem9uZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3B6b25lL2Ryb3B6b25lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUN2RixPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFPbkMsTUFBTSxPQUFPLGlCQUFpQjtJQW9ENUIsWUFBNkIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUE5Q3RELG1CQUFjLEdBQTRCLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLGtCQUFhLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLFdBQU0sR0FBaUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUlyQyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBR2QsaUJBQVksR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2RCxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQU8sU0FBUyxDQUFDLENBQUM7UUFDN0Ms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O2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgRHJvcHpvbmUgZnJvbSAnZHJvcHpvbmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRyb3B6b25lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3B6b25lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcHpvbmUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcHpvbmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3B6b25lJykgZHJvcHpvbmVSZWY6IEVsZW1lbnRSZWY8YW55PjtcblxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBoaWRlVGl0bGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHN1YnRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGV4dGVybmFsRXJyb3IkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIEBJbnB1dCgpIG1heEZpbGVTaXplID0gNTtcbiAgQElucHV0KCkgc2hvd01heEZpbGVTaXplID0gdHJ1ZTtcbiAgQElucHV0KCkgYWNjZXB0ZWRGaWxlcyA9ICcuanNvbic7XG4gIEBJbnB1dCgpIGNsZWFyJDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGhpZGVGaWxlUHJldmlldzogYm9vbGVhbjtcbiAgQElucHV0KCkgdXBsb2FkaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBjYW1lcmEgPSBmYWxzZTtcbiAgQElucHV0KCkgbWF4RmlsZXMhOiBudW1iZXI7XG5cbiAgQE91dHB1dCgpIGZpbGVTZWxlY3RlZDogRXZlbnRFbWl0dGVyPEZpbGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICByZWFkb25seSBmaWxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsZT4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2hvd2luZ0NhbWVyYSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBjbGVhclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGRyb3B6b25lOiBEcm9wem9uZTtcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JNZXNzYWdlc1N0cmluZ3M6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge1xuICAgIHRvb0JpZzogJ3RvbyBiaWcnLFxuICAgIHdyb25nVHlwZTogJ3RoaXMgdHlwZScsXG4gIH07XG5cbiAgcmVhZG9ubHkgZXJyb3JNZXNzYWdlJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5lcnJvciQsXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgnZHJvcHpvbmUuZXJyb3IuZ2VuZXJpYycpLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2Ryb3B6b25lLmVycm9yLnRvb0JpZycpLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2Ryb3B6b25lLmVycm9yLndyb25nVHlwZScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2Ryb3B6b25lRXJyb3IsIGdlbmVyaWMsIHRvb0JpZywgd3JvbmdUeXBlXSkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5ncyA9IHRoaXMuZXJyb3JNZXNzYWdlc1N0cmluZ3M7XG5cbiAgICAgIGlmIChkcm9wem9uZUVycm9yKSB7XG4gICAgICAgIGlmIChkcm9wem9uZUVycm9yLmluY2x1ZGVzKHN0cmluZ3MudG9vQmlnKSkge1xuICAgICAgICAgIHJldHVybiB0b29CaWc7XG4gICAgICAgIH0gZWxzZSBpZiAoZHJvcHpvbmVFcnJvci5pbmNsdWRlcyhzdHJpbmdzLndyb25nVHlwZSkpIHtcbiAgICAgICAgICByZXR1cm4gd3JvbmdUeXBlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBnZW5lcmljO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfSlcbiAgKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclN1YnNjcmlwdGlvbiA9IHRoaXMuY2xlYXIkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNsZWFyRmlsZSgpO1xuICAgICAgdGhpcy5jbGVhckVycm9yKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5pbml0RHJvcHpvbmUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHNob3dDYW1lcmEoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93aW5nQ2FtZXJhJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgd2ViY2FtSW1hZ2VTYXZlZChpbWFnZTogRmlsZSk6IHZvaWQge1xuICAgIGlmIChpbWFnZSkge1xuICAgICAgdGhpcy5zZXRGaWxlKGltYWdlKTtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dpbmdDYW1lcmEkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0RHJvcHpvbmUoKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wem9uZSA9IG5ldyBEcm9wem9uZSh0aGlzLmRyb3B6b25lUmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgIHVybDogJy8nLFxuICAgICAgbWF4RmlsZXNpemU6IHRoaXMubWF4RmlsZVNpemUsXG4gICAgICBjbGlja2FibGU6IHRoaXMuZHJvcHpvbmVSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIGF1dG9Qcm9jZXNzUXVldWU6IGZhbHNlLFxuICAgICAgY3JlYXRlSW1hZ2VUaHVtYm5haWxzOiBmYWxzZSxcbiAgICAgIGFjY2VwdGVkRmlsZXM6IHRoaXMuYWNjZXB0ZWRGaWxlcyxcbiAgICAgIHByZXZpZXdUZW1wbGF0ZTogYDxwIHN0eWxlPSdkaXNwbGF5Om5vbmUnPjwvcD5gLFxuICAgICAgLi4uKHRoaXMubWF4RmlsZXMgJiYge21heEZpbGVzOiB0aGlzLm1heEZpbGVzfSksXG4gICAgICBhY2NlcHQ6IGZpbGUgPT4ge1xuICAgICAgICB0aGlzLmRyb3B6b25lLnJlbW92ZUFsbEZpbGVzKCk7XG4gICAgICAgIHRoaXMuc2V0RmlsZShmaWxlKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnNldERyb3B6b25lRXZlbnRzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldERyb3B6b25lRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuZHJvcHpvbmUub24oJ2Vycm9yJywgKGZpbGUsIG1lc3NhZ2UpID0+IHtcbiAgICAgIHRoaXMuY2xlYXJGaWxlKCk7XG4gICAgICB0aGlzLmVycm9yJC5uZXh0KG1lc3NhZ2UudG9TdHJpbmcoKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRmlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGUkLm5leHQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJFcnJvcigpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yJC5uZXh0KCcnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RmlsZShmaWxlOiBGaWxlKTogdm9pZCB7XG4gICAgdGhpcy5maWxlJC5uZXh0KGZpbGUpO1xuICAgIHRoaXMuY2xlYXJFcnJvcigpO1xuICAgIHRoaXMuZmlsZVNlbGVjdGVkLmVtaXQoZmlsZSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIwIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGZvcm0gI2Ryb3B6b25lIFtuZ0NsYXNzXT1cIntkaXNhYmxlZDogZGlzYWJsZWQgfHwgdXBsb2FkaW5nfVwiIGNsYXNzPVwiZHJvcHpvbmUgZHotY2xpY2thYmxlXCI+XG4gIDxkaXYgY2xhc3M9XCJkei1tZXNzYWdlXCI+XG4gICAgPGRpdiBjbGFzcz1cImljb24gbGFyZ2UtaWNvblwiPjxzcGFuIGNsYXNzPVwibWRpIG1kaS1jbG91ZC11cGxvYWRcIj48L3NwYW4+PC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXBsb2FkaW5nXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvZ3Jlc3NCYXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiZHJvcHpvbmUtbW9iaWxlLXRyaWdnZXIgbmVlZHNjbGlja1wiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGJ1dHRvblxuICAgIChjbGljayk9XCJzaG93Q2FtZXJhKClcIlxuICAgICpuZ0lmPVwiY2FtZXJhXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBweC0zIHdlYmNhbS1idXR0b25cIlxuICA+XG4gICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktY2FtZXJhXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICA8L2J1dHRvbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dpbmdDYW1lcmEkIHwgYXN5bmNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwid2ViY2FtXCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9mb3JtPlxuXG48bmctdGVtcGxhdGUgI2JvZHk+XG4gIDxoMiAqbmdJZj1cIiFoaWRlVGl0bGVcIiBjbGFzcz1cIm1iLTQgbXQtMlwiPnt7IHRpdGxlIHx8ICgnZHJvcHpvbmUuZHJvcCcgfCB0cmFuc2xhdGUpIH19PC9oMj5cbiAgPHNwYW4gKm5nSWY9XCJzdWJ0aXRsZVwiIGNsYXNzPVwibm90ZSBtYi0zXCI+e3sgc3VidGl0bGUgfX08L3NwYW4+XG4gIDxzcGFuICpuZ0lmPVwic2hvd01heEZpbGVTaXplXCIgY2xhc3M9XCJub3RlIG1iLTMgc21hbGwtZm9udFwiXG4gICAgPnt7ICdkcm9wem9uZS5tYXhGaWxlU2l6ZScgfCB0cmFuc2xhdGUgfX08Yj57eyBtYXhGaWxlU2l6ZSB9fW1iPC9iPjwvc3BhblxuICA+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmV2aWV3XCI+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3ByZXZpZXc+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIntcbiAgICAgIGVycm9yTWVzc2FnZTogZXJyb3JNZXNzYWdlJCB8IGFzeW5jLFxuICAgICAgZXh0ZXJuYWxFcnJvcjogZXh0ZXJuYWxFcnJvciQgfCBhc3luYyxcbiAgICAgIGZpbGU6IGZpbGUkIHwgYXN5bmNcbiAgICB9IGFzIG9ic1wiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLmV4dGVybmFsRXJyb3IgfHwgb2JzLmVycm9yTWVzc2FnZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBtdC0yIG1iLTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIj5cbiAgICAgICAgICB7eyBvYnMuZXh0ZXJuYWxFcnJvciB8fCBvYnMuZXJyb3JNZXNzYWdlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhpZGVGaWxlUHJldmlldyAmJiBvYnMuZmlsZSAmJiAhb2JzLmV4dGVybmFsRXJyb3IgJiYgIW9icy5lcnJvck1lc3NhZ2VcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWxlXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiaWNvbiBtZGkgbWRpLWZpbGUtdGV4dCBtci0yXCI+PC9pPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5vdGVcIj57eyBvYnMuZmlsZS5uYW1lIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5vdGUgZmlsZS1zaXplXCI+LSB7eyBvYnMuZmlsZS5zaXplIHwgZmlsZXNpemU6IDIgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Byb2dyZXNzQmFyPlxuICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyLWNvbnRhaW5lclwiPlxuICAgIDx2YWx0aW1vLXByb2dyZXNzLWJhcj48L3ZhbHRpbW8tcHJvZ3Jlc3MtYmFyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjd2ViY2FtPlxuICA8dmFsdGltby13ZWJjYW0gKGltYWdlU2F2ZWQpPVwid2ViY2FtSW1hZ2VTYXZlZCgkZXZlbnQpXCI+PC92YWx0aW1vLXdlYmNhbT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=