@valtimo/zgw 12.3.1 → 12.4.1
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.
- package/esm2022/lib/modules/documenten-api/components/documenten-api-columns/documenten-api-columns.component.mjs +3 -3
- package/esm2022/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.mjs +56 -12
- package/esm2022/lib/modules/documenten-api/components/documenten-api-filter/documenten-api-filter.component.mjs +3 -3
- package/esm2022/lib/modules/documenten-api/components/documenten-api-link-upload-process/dossier-management-link-process.component.mjs +3 -3
- package/esm2022/lib/modules/documenten-api/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.mjs +6 -4
- package/esm2022/lib/modules/documenten-api/components/documenten-api-tag-modal/documenten-api-tag-modal.component.mjs +3 -3
- package/esm2022/lib/modules/documenten-api/components/documenten-api-tags/documenten-api-tags.component.mjs +3 -3
- package/esm2022/lib/modules/documenten-api/components/documenten-api-version/documenten-api-version.component.mjs +3 -3
- package/esm2022/lib/modules/haalcentraal-brp/components/cases-list/cases-list.component.mjs +3 -3
- package/esm2022/lib/modules/objecten-api/components/object-type/object-type.component.mjs +3 -3
- package/esm2022/lib/modules/objecten-api/components/zaakobjecten/zaakobjecten.component.mjs +3 -3
- package/esm2022/lib/modules/zaakdetails/components/document-objecten-api-sync/document-objecten-api-sync.component.mjs +3 -3
- package/esm2022/lib/modules/zaken-api/components/zaken-api-zaaktype-link/zaken-api-zaaktype-link.component.mjs +3 -3
- package/fesm2022/valtimo-zgw.mjs +82 -36
- package/fesm2022/valtimo-zgw.mjs.map +1 -1
- package/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.d.ts +11 -2
- package/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.d.ts.map +1 -1
- package/lib/modules/documenten-api/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -171,13 +171,13 @@ export class ZakenApiZaaktypeLinkComponent {
|
|
|
171
171
|
});
|
|
172
172
|
}
|
|
173
173
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ZakenApiZaaktypeLinkComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.OpenZaakService }, { token: i3.AlertService }, { token: i4.ToastrService }, { token: i5.TranslateService }, { token: i6.ZakenApiZaaktypeLinkService }, { token: i7.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
174
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ZakenApiZaaktypeLinkComponent, isStandalone: true, selector: "valtimo-zaken-api-zaaktype-link", viewQueries: [{ propertyName: "modal", first: true, predicate: ["openZaakTypeLinkModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 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<div class=\"input-group mt-4 mb-2 align-items-center\">\n <div>\n <h2>{{ 'openZaak.links' | translate }}</h2>\n </div>\n</div>\n\n<ng-container\n *ngIf=\"{\n loading: loading$ | async,\n zaakTypeLink: zaakTypeLink$ | async
|
|
174
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ZakenApiZaaktypeLinkComponent, isStandalone: true, selector: "valtimo-zaken-api-zaaktype-link", viewQueries: [{ propertyName: "modal", first: true, predicate: ["openZaakTypeLinkModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 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<div class=\"input-group mt-4 mb-2 align-items-center\">\n <div>\n <h2>{{ 'openZaak.links' | translate }}</h2>\n </div>\n</div>\n\n<ng-container\n *ngIf=\"{\n loading: loading$ | async,\n zaakTypeLink: zaakTypeLink$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <ng-container *ngIf=\"obs.zaakTypeLink; else addSync\">\n <div class=\"card card-border card-contrast\">\n <div class=\"card-header card-header-contrast card-header-featured\">\n <div>\n {{ this.selectedZaakType?.omschrijving || '-' }}\n </div>\n <div class=\"controls\">\n <button class=\"btn btn-danger ml-3\" (click)=\"openModal(obs.zaakTypeLink)\">\n <i class=\"icon mdi mdi-pencil\"></i>\n </button>\n <button class=\"btn btn-danger ml-3\" (click)=\"removeZaakTypeLink()\">\n <i class=\"icon mdi mdi-delete\"></i>\n </button>\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-3\">\n <strong>{{ 'openZaak.autoCreateForCase' | translate }}</strong>\n </div>\n <div class=\"col-3\">\n {{\n obs.zaakTypeLink?.createWithDossier\n ? ('viewTypeConverter.Yes' | translate)\n : ('viewTypeConverter.No' | translate)\n }}\n </div>\n </div>\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-3\">\n <strong>{{ 'openZaak.zakenApiPlugin' | translate }}</strong>\n </div>\n <div class=\"col-3\">\n {{ this.selectedPluginConfiguration?.title || '-' }}\n </div>\n </div>\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-3\">\n <strong>{{ 'openZaak.rsin' | translate }}</strong>\n </div>\n <div class=\"col-3\">\n {{ obs.zaakTypeLink?.rsin || '-' }}\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #addSync>\n <div class=\"text-right mt-5\">\n <button class=\"btn btn-primary\" (click)=\"openModal(null)\">\n <i class=\"icon mdi mdi-plus mr-1\"></i>{{ 'openZaak.linkZaakType' | translate }}\n </button>\n </div>\n</ng-template>\n\n<valtimo-modal\n #openZaakTypeLinkModal\n elementId=\"openZaakTypeLinkModal\"\n [title]=\"'Zaak types'\"\n subtitle=\"Connect Zaak type to Dossier\"\n showFooter=\"true\"\n>\n <div body>\n <p>{{ 'openZaak.selectZaakTypeForCase' | translate }}</p>\n <div class=\"input-group mb-3 mr-3 align-items-center\">\n <select class=\"form-control\" [(ngModel)]=\"this.zaakTypeLinkRequest.zaakTypeUrl\">\n <option [ngValue]=\"null\">{{ 'openZaak.selectZaakType' | translate }}</option>\n <option *ngFor=\"let zaakType of zaakTypes\" [ngValue]=\"zaakType.url\">\n {{ zaakType?.omschrijving || '-' }}\n </option>\n </select>\n </div>\n\n <p>{{ 'openZaak.selectZakenApiPluginForCase' | translate }}</p>\n <div class=\"input-group mb-3 mr-3 align-items-center\">\n <select\n class=\"form-control\"\n [(ngModel)]=\"this.zaakTypeLinkRequest.zakenApiPluginConfigurationId\"\n >\n <option [ngValue]=\"null\">{{ 'openZaak.selectZakenApiPlugin' | translate }}</option>\n <option\n *ngFor=\"let pluginConfiguration of pluginConfigurations\"\n [ngValue]=\"pluginConfiguration.id\"\n >\n {{ pluginConfiguration?.title || '-' }}\n </option>\n </select>\n </div>\n\n <p>{{ 'openZaak.rsin' | translate }}</p>\n <div class=\"input-group mb-3 mr-3 align-items-center\">\n <input\n type=\"text\"\n id=\"name\"\n class=\"form-control\"\n placeholder=\"RSIN\"\n [(ngModel)]=\"this.zaakTypeLinkRequest.rsin\"\n />\n </div>\n\n <div class=\"setting-row\">\n <p>{{ 'openZaak.autoCreateForCase' | translate }}</p>\n <div class=\"controls\">\n <div class=\"switch-button switch-button-success\">\n <input\n type=\"checkbox\"\n [checked]=\"this.zaakTypeLinkRequest.createWithDossier\"\n name=\"createWithDossier\"\n id=\"createWithDossier\"\n (change)=\"\n this.zaakTypeLinkRequest.createWithDossier =\n !this.zaakTypeLinkRequest.createWithDossier\n \"\n />\n <span><label for=\"createWithDossier\"></label></span>\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"informatieObjectTypeSelectionEnabled && selectedZaakType\"\n class=\"input-group mb-3 align-items-center\"\n >\n <select class=\"form-control\" [(ngModel)]=\"selectedInformatieObjectTypeUrl\">\n <option [ngValue]=\"null\" selected>{{ 'openZaak.selectInfoObjectType' | translate }}</option>\n <option\n *ngFor=\"let informatieObjectType of informatieObjectTypes\"\n [ngValue]=\"informatieObjectType.url\"\n >\n {{ informatieObjectType?.omschrijving || '-' }}\n </option>\n </select>\n </div>\n </div>\n <div footer>\n <button\n (click)=\"submit()\"\n class=\"btn btn-primary\"\n data-dismiss=\"modal\"\n [disabled]=\"!this.zaakTypeLinkRequest.zaakTypeUrl\"\n >\n <i class=\"icon mdi mdi-save\"></i>\n {{ 'openZaak.save' | translate }}\n </button>\n </div>\n</valtimo-modal>\n\n<ng-template #loading>\n <div class=\"mb-8\">\n <valtimo-spinner></valtimo-spinner>\n </div>\n</ng-template>\n\n<ng-template #noConfigAvailable>\n <div class=\"mb-8\">\n <h4>{{ 'openZaak.error.configNotFound' | translate }}</h4>\n </div>\n</ng-template>\n", styles: [".card-header,.setting-row{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.controls{display:flex;align-items:center}.full-width-notification{max-inline-size:100%;min-inline-size:100%}\n/*!\n * Copyright 2015-2024 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"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i9.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i9.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i3.ModalComponent, selector: "valtimo-modal", inputs: ["elementId", "title", "subtitle", "templateBelowSubtitle", "showFooter"] }, { kind: "ngmodule", type: NotificationModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
|
|
175
175
|
}
|
|
176
176
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ZakenApiZaaktypeLinkComponent, decorators: [{
|
|
177
177
|
type: Component,
|
|
178
|
-
args: [{ selector: 'valtimo-zaken-api-zaaktype-link', standalone: true, imports: [CommonModule, FormsModule, ModalModule, NotificationModule, TranslateModule], template: "<!--\n ~ Copyright 2015-2024 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<div class=\"input-group mt-4 mb-2 align-items-center\">\n <div>\n <h2>{{ 'openZaak.links' | translate }}</h2>\n </div>\n</div>\n\n<ng-container\n *ngIf=\"{\n loading: loading$ | async,\n zaakTypeLink: zaakTypeLink$ | async
|
|
178
|
+
args: [{ selector: 'valtimo-zaken-api-zaaktype-link', standalone: true, imports: [CommonModule, FormsModule, ModalModule, NotificationModule, TranslateModule], template: "<!--\n ~ Copyright 2015-2024 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<div class=\"input-group mt-4 mb-2 align-items-center\">\n <div>\n <h2>{{ 'openZaak.links' | translate }}</h2>\n </div>\n</div>\n\n<ng-container\n *ngIf=\"{\n loading: loading$ | async,\n zaakTypeLink: zaakTypeLink$ | async,\n } as obs\"\n>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <ng-container *ngIf=\"obs.zaakTypeLink; else addSync\">\n <div class=\"card card-border card-contrast\">\n <div class=\"card-header card-header-contrast card-header-featured\">\n <div>\n {{ this.selectedZaakType?.omschrijving || '-' }}\n </div>\n <div class=\"controls\">\n <button class=\"btn btn-danger ml-3\" (click)=\"openModal(obs.zaakTypeLink)\">\n <i class=\"icon mdi mdi-pencil\"></i>\n </button>\n <button class=\"btn btn-danger ml-3\" (click)=\"removeZaakTypeLink()\">\n <i class=\"icon mdi mdi-delete\"></i>\n </button>\n </div>\n </div>\n <div class=\"card-body\">\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-3\">\n <strong>{{ 'openZaak.autoCreateForCase' | translate }}</strong>\n </div>\n <div class=\"col-3\">\n {{\n obs.zaakTypeLink?.createWithDossier\n ? ('viewTypeConverter.Yes' | translate)\n : ('viewTypeConverter.No' | translate)\n }}\n </div>\n </div>\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-3\">\n <strong>{{ 'openZaak.zakenApiPlugin' | translate }}</strong>\n </div>\n <div class=\"col-3\">\n {{ this.selectedPluginConfiguration?.title || '-' }}\n </div>\n </div>\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-3\">\n <strong>{{ 'openZaak.rsin' | translate }}</strong>\n </div>\n <div class=\"col-3\">\n {{ obs.zaakTypeLink?.rsin || '-' }}\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #addSync>\n <div class=\"text-right mt-5\">\n <button class=\"btn btn-primary\" (click)=\"openModal(null)\">\n <i class=\"icon mdi mdi-plus mr-1\"></i>{{ 'openZaak.linkZaakType' | translate }}\n </button>\n </div>\n</ng-template>\n\n<valtimo-modal\n #openZaakTypeLinkModal\n elementId=\"openZaakTypeLinkModal\"\n [title]=\"'Zaak types'\"\n subtitle=\"Connect Zaak type to Dossier\"\n showFooter=\"true\"\n>\n <div body>\n <p>{{ 'openZaak.selectZaakTypeForCase' | translate }}</p>\n <div class=\"input-group mb-3 mr-3 align-items-center\">\n <select class=\"form-control\" [(ngModel)]=\"this.zaakTypeLinkRequest.zaakTypeUrl\">\n <option [ngValue]=\"null\">{{ 'openZaak.selectZaakType' | translate }}</option>\n <option *ngFor=\"let zaakType of zaakTypes\" [ngValue]=\"zaakType.url\">\n {{ zaakType?.omschrijving || '-' }}\n </option>\n </select>\n </div>\n\n <p>{{ 'openZaak.selectZakenApiPluginForCase' | translate }}</p>\n <div class=\"input-group mb-3 mr-3 align-items-center\">\n <select\n class=\"form-control\"\n [(ngModel)]=\"this.zaakTypeLinkRequest.zakenApiPluginConfigurationId\"\n >\n <option [ngValue]=\"null\">{{ 'openZaak.selectZakenApiPlugin' | translate }}</option>\n <option\n *ngFor=\"let pluginConfiguration of pluginConfigurations\"\n [ngValue]=\"pluginConfiguration.id\"\n >\n {{ pluginConfiguration?.title || '-' }}\n </option>\n </select>\n </div>\n\n <p>{{ 'openZaak.rsin' | translate }}</p>\n <div class=\"input-group mb-3 mr-3 align-items-center\">\n <input\n type=\"text\"\n id=\"name\"\n class=\"form-control\"\n placeholder=\"RSIN\"\n [(ngModel)]=\"this.zaakTypeLinkRequest.rsin\"\n />\n </div>\n\n <div class=\"setting-row\">\n <p>{{ 'openZaak.autoCreateForCase' | translate }}</p>\n <div class=\"controls\">\n <div class=\"switch-button switch-button-success\">\n <input\n type=\"checkbox\"\n [checked]=\"this.zaakTypeLinkRequest.createWithDossier\"\n name=\"createWithDossier\"\n id=\"createWithDossier\"\n (change)=\"\n this.zaakTypeLinkRequest.createWithDossier =\n !this.zaakTypeLinkRequest.createWithDossier\n \"\n />\n <span><label for=\"createWithDossier\"></label></span>\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"informatieObjectTypeSelectionEnabled && selectedZaakType\"\n class=\"input-group mb-3 align-items-center\"\n >\n <select class=\"form-control\" [(ngModel)]=\"selectedInformatieObjectTypeUrl\">\n <option [ngValue]=\"null\" selected>{{ 'openZaak.selectInfoObjectType' | translate }}</option>\n <option\n *ngFor=\"let informatieObjectType of informatieObjectTypes\"\n [ngValue]=\"informatieObjectType.url\"\n >\n {{ informatieObjectType?.omschrijving || '-' }}\n </option>\n </select>\n </div>\n </div>\n <div footer>\n <button\n (click)=\"submit()\"\n class=\"btn btn-primary\"\n data-dismiss=\"modal\"\n [disabled]=\"!this.zaakTypeLinkRequest.zaakTypeUrl\"\n >\n <i class=\"icon mdi mdi-save\"></i>\n {{ 'openZaak.save' | translate }}\n </button>\n </div>\n</valtimo-modal>\n\n<ng-template #loading>\n <div class=\"mb-8\">\n <valtimo-spinner></valtimo-spinner>\n </div>\n</ng-template>\n\n<ng-template #noConfigAvailable>\n <div class=\"mb-8\">\n <h4>{{ 'openZaak.error.configNotFound' | translate }}</h4>\n </div>\n</ng-template>\n", styles: [".card-header,.setting-row{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.controls{display:flex;align-items:center}.full-width-notification{max-inline-size:100%;min-inline-size:100%}\n/*!\n * Copyright 2015-2024 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"] }]
|
|
179
179
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.OpenZaakService }, { type: i3.AlertService }, { type: i4.ToastrService }, { type: i5.TranslateService }, { type: i6.ZakenApiZaaktypeLinkService }, { type: i7.ConfigService }], propDecorators: { modal: [{
|
|
180
180
|
type: ViewChild,
|
|
181
181
|
args: ['openZaakTypeLinkModal']
|
|
182
182
|
}] } });
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFrZW4tYXBpLXphYWt0eXBlLWxpbmsuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL3pha2VuLWFwaS9jb21wb25lbnRzL3pha2VuLWFwaS16YWFrdHlwZS1saW5rL3pha2VuLWFwaS16YWFrdHlwZS1saW5rLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kdWxlcy96YWtlbi1hcGkvY29tcG9uZW50cy96YWtlbi1hcGktemFha3R5cGUtbGluay96YWtlbi1hcGktemFha3R5cGUtbGluay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBUzNELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQStCLFdBQVcsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTlFLE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLGVBQWUsRUFBRSxHQUFHLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFnQixjQUFjLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7O0FBVTdELE1BQU0sT0FBTyw2QkFBNkI7SUFvQnhDLFlBQ21CLEtBQXFCLEVBQ3JCLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLGNBQTZCLEVBQzdCLGdCQUFrQyxFQUNsQywyQkFBd0QsRUFDeEQsYUFBNEI7UUFONUIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQUN4RCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXJCeEMscUJBQWdCLEdBQWEsSUFBSSxDQUFDO1FBQ2xDLGdDQUEyQixHQUF3QixJQUFJLENBQUM7UUFDeEQsb0NBQStCLEdBQVcsSUFBSSxDQUFDO1FBRzdDLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUM5QyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFlLElBQUksQ0FBQyxDQUFDO1FBRXhELDRCQUF1QixHQUF1QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzNFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQ2pDLENBQUM7UUFhQSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsb0NBQW9DO1lBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGNBQWMsS0FBSyxjQUFjLENBQUMsU0FBUyxDQUFDO0lBQzFFLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLG1CQUFtQixHQUFHO1lBQ3pCLHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7WUFDbkQsaUJBQWlCLEVBQUUsS0FBSztTQUN6QixDQUFDO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3pGLElBQUksWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsbUJBQW1CLEdBQUc7b0JBQ3pCLHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7b0JBQ25ELGlCQUFpQixFQUFFLFlBQVksRUFBRSxpQkFBaUI7b0JBQ2xELElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSTtvQkFDeEIsNkJBQTZCLEVBQUUsWUFBWSxFQUFFLDZCQUE2QjtvQkFDMUUsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXO2lCQUN2QyxDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTyxZQUFZLENBQUMsV0FBbUI7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRU8sdUJBQXVCLENBQUMscUJBQTZCO1FBQzNELElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUMvRCxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFBRSxLQUFLLHFCQUFxQixDQUN4RSxDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBcUIsRUFBRSxFQUFFO1lBQzdFLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQ0FBZ0M7UUFDOUIsT0FBTyxJQUFJLENBQUMsMkJBQTJCO2FBQ3BDLDRDQUE0QyxDQUFDLFVBQVUsQ0FBQzthQUN4RCxTQUFTLENBQUMsQ0FBQyxPQUE4QixFQUFFLEVBQUU7WUFDNUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztZQUNwQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBQzdGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDRCQUE0QjtRQUMxQixJQUFJLENBQUMsZUFBZTthQUNqQix3QkFBd0IsRUFBRTthQUMxQixTQUFTLENBQUMsQ0FBQyxxQkFBNkMsRUFBRSxFQUFFO1lBQzNELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxTQUFTLENBQUMsWUFBMEI7UUFDbEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHO1lBQ3pCLHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7WUFDbkQsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLGlCQUFpQjtZQUNsRCxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUk7WUFDeEIsNkJBQTZCLEVBQUUsWUFBWSxFQUFFLDZCQUE2QjtZQUMxRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVc7U0FDdkMsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLG9DQUFvQyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDMUQsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDO2dCQUMxRixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7b0JBQ3BDLElBQUksQ0FBQyxlQUFlO3lCQUNqQiwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUM7eUJBQ3hELFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFO3dCQUNwQyxJQUFJLHdCQUF3QixLQUFLLElBQUksRUFBRSxDQUFDOzRCQUN0QyxJQUFJLENBQUMsK0JBQStCO2dDQUNsQyx3QkFBd0IsQ0FBQyxvQkFBb0IsQ0FBQzt3QkFDbEQsQ0FBQztvQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDO2dCQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxTQUFTLENBQzVFLEdBQUcsRUFBRTtZQUNILElBQUksSUFBSSxDQUFDLCtCQUErQixLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNsRCxJQUFJLENBQUMsZUFBZSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQ25GLENBQUM7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUMsRUFDRCxHQUFHLEVBQUU7WUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU07UUFDSixNQUFNLCtCQUErQixHQUEwQztZQUM3RSxzQkFBc0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCO1lBQ25ELFFBQVEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVztZQUM5QyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsK0JBQStCO1NBQzNELENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFNBQVMsQ0FDekUsVUFBVSxDQUFDLEVBQUU7WUFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsbUJBQW1CLEdBQUc7Z0JBQ3pCLHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7Z0JBQ25ELGlCQUFpQixFQUFFLFVBQVUsRUFBRSxpQkFBaUI7Z0JBQ2hELElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSTtnQkFDdEIsNkJBQTZCLEVBQUUsVUFBVSxFQUFFLDZCQUE2QjtnQkFDeEUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXO2FBQ3JDLENBQUM7WUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDdkUsSUFBSSwrQkFBK0IsQ0FBQyxvQkFBb0IsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLGVBQWU7cUJBQ2pCLDhCQUE4QixDQUFDLCtCQUErQixDQUFDO3FCQUMvRCxTQUFTLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7Z0JBQ3ZGLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDekUsQ0FBQyxFQUNELEdBQUcsQ0FBQyxFQUFFO1lBQ0osSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7K0dBdktVLDZCQUE2QjttR0FBN0IsNkJBQTZCLDJNQzVDMUMsczVNQThMQSxpNUJEcEpZLFlBQVksb1RBQUUsV0FBVyx5Z0NBQUUsV0FBVyw0TEFBRSxrQkFBa0IsOEJBQUUsZUFBZTs7NEZBRTFFLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDRSxpQ0FBaUMsY0FHL0IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxDQUFDOzZRQW9CbEQsS0FBSztzQkFBeEMsU0FBUzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ3JlYXRlSW5mb3JtYXRpZU9iamVjdFR5cGVMaW5rUmVxdWVzdCxcbiAgQ3JlYXRlWmFha1R5cGVMaW5rUmVxdWVzdCxcbiAgSW5mb3JtYXRpZU9iamVjdFR5cGUsXG4gIE9wZW5aYWFrU2VydmljZSxcbiAgWmFha1R5cGUsXG4gIFphYWtUeXBlTGluayxcbn0gZnJvbSAnQHZhbHRpbW8vcmVzb3VyY2UnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QWxlcnRTZXJ2aWNlLCBNb2RhbENvbXBvbmVudCwgTW9kYWxNb2R1bGV9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtUb2FzdHJTZXJ2aWNlfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBtYXAsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlLCBVcGxvYWRQcm92aWRlcn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7UGx1Z2luQ29uZmlndXJhdGlvbn0gZnJvbSAnQHZhbHRpbW8vcGx1Z2luJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtOb3RpZmljYXRpb25Nb2R1bGV9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtaYWtlbkFwaVphYWt0eXBlTGlua1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby16YWtlbi1hcGktemFha3R5cGUtbGluaycsXG4gIHRlbXBsYXRlVXJsOiAnLi96YWtlbi1hcGktemFha3R5cGUtbGluay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3pha2VuLWFwaS16YWFrdHlwZS1saW5rLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBNb2RhbE1vZHVsZSwgTm90aWZpY2F0aW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBaYWtlbkFwaVphYWt0eXBlTGlua0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyB6YWFrVHlwZXM6IFphYWtUeXBlW107XG4gIHB1YmxpYyBwbHVnaW5Db25maWd1cmF0aW9uczogUGx1Z2luQ29uZmlndXJhdGlvbltdO1xuICBwdWJsaWMgemFha1R5cGVMaW5rUmVxdWVzdDogQ3JlYXRlWmFha1R5cGVMaW5rUmVxdWVzdDtcbiAgcHVibGljIGluZm9ybWF0aWVPYmplY3RUeXBlU2VsZWN0aW9uRW5hYmxlZDogYm9vbGVhbjtcbiAgcHVibGljIGluZm9ybWF0aWVPYmplY3RUeXBlczogSW5mb3JtYXRpZU9iamVjdFR5cGVbXTtcbiAgcHVibGljIHNlbGVjdGVkWmFha1R5cGU6IFphYWtUeXBlID0gbnVsbDtcbiAgcHVibGljIHNlbGVjdGVkUGx1Z2luQ29uZmlndXJhdGlvbjogUGx1Z2luQ29uZmlndXJhdGlvbiA9IG51bGw7XG4gIHB1YmxpYyBzZWxlY3RlZEluZm9ybWF0aWVPYmplY3RUeXBlVXJsOiBzdHJpbmcgPSBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZztcblxuICByZWFkb25seSBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IHphYWtUeXBlTGluayQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFphYWtUeXBlTGluaz4obnVsbCk7XG5cbiAgcmVhZG9ubHkgZG9jdW1lbnREZWZpbml0aW9uTmFtZSQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMucm91dGUucGFyYW1zLnBpcGUoXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXMubmFtZSB8fCAnJylcbiAgKTtcblxuICBAVmlld0NoaWxkKCdvcGVuWmFha1R5cGVMaW5rTW9kYWwnKSBtb2RhbDogTW9kYWxDb21wb25lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcGVuWmFha1NlcnZpY2U6IE9wZW5aYWFrU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RlclNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgemFrZW5BcGlaYWFrdHlwZUxpbmtTZXJ2aWNlOiBaYWtlbkFwaVphYWt0eXBlTGlua1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCduYW1lJyk7XG4gICAgdGhpcy5pbmZvcm1hdGllT2JqZWN0VHlwZVNlbGVjdGlvbkVuYWJsZWQgPVxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy51cGxvYWRQcm92aWRlciA9PT0gVXBsb2FkUHJvdmlkZXIuT1BFTl9aQUFLO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuemFha1R5cGVMaW5rUmVxdWVzdCA9IHtcbiAgICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgIGNyZWF0ZVdpdGhEb3NzaWVyOiBmYWxzZSxcbiAgICB9O1xuICAgIHRoaXMub3BlblphYWtTZXJ2aWNlLmdldFphYWtUeXBlTGluayh0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUpLnN1YnNjcmliZSh6YWFrVHlwZUxpbmsgPT4ge1xuICAgICAgaWYgKHphYWtUeXBlTGluayAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnphYWtUeXBlTGlua1JlcXVlc3QgPSB7XG4gICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZTogdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lLFxuICAgICAgICAgIGNyZWF0ZVdpdGhEb3NzaWVyOiB6YWFrVHlwZUxpbms/LmNyZWF0ZVdpdGhEb3NzaWVyLFxuICAgICAgICAgIHJzaW46IHphYWtUeXBlTGluaz8ucnNpbixcbiAgICAgICAgICB6YWtlbkFwaVBsdWdpbkNvbmZpZ3VyYXRpb25JZDogemFha1R5cGVMaW5rPy56YWtlbkFwaVBsdWdpbkNvbmZpZ3VyYXRpb25JZCxcbiAgICAgICAgICB6YWFrVHlwZVVybDogemFha1R5cGVMaW5rPy56YWFrVHlwZVVybCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHRoaXMuemFha1R5cGVMaW5rJC5uZXh0KHphYWtUeXBlTGluayk7XG4gICAgICB0aGlzLmxvYWRaYWFrVHlwZXMoKTtcbiAgICAgIHRoaXMubG9hZFpha2VuQXBpUGx1Z2luQ29uZmlndXJhdGlvbnMoKTtcbiAgICB9KTtcbiAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kWmFha1R5cGUoemFha1R5cGVVcmw6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWRaYWFrVHlwZSA9IHRoaXMuemFha1R5cGVzLmZpbmQoemFha1R5cGUgPT4gemFha1R5cGUudXJsID09PSB6YWFrVHlwZVVybCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRQbHVnaW5Db25maWd1cmF0aW9uKHBsdWdpbkNvbmZpZ3VyYXRpb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWxlY3RlZFBsdWdpbkNvbmZpZ3VyYXRpb24gPSB0aGlzLnBsdWdpbkNvbmZpZ3VyYXRpb25zLmZpbmQoXG4gICAgICBwbHVnaW5Db25maWd1cmF0aW9uID0+IHBsdWdpbkNvbmZpZ3VyYXRpb24uaWQgPT09IHBsdWdpbkNvbmZpZ3VyYXRpb25JZFxuICAgICk7XG4gIH1cblxuICBsb2FkWmFha1R5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLm9wZW5aYWFrU2VydmljZS5nZXRaYWFrVHlwZXMoKS5zdWJzY3JpYmUoKHphYWtUeXBlczogWmFha1R5cGVbXSkgPT4ge1xuICAgICAgdGhpcy56YWFrVHlwZXMgPSB6YWFrVHlwZXM7XG4gICAgICB0aGlzLmZpbmRaYWFrVHlwZSh0aGlzLnphYWtUeXBlTGluayQuZ2V0VmFsdWUoKT8uemFha1R5cGVVcmwpO1xuICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGxvYWRaYWtlbkFwaVBsdWdpbkNvbmZpZ3VyYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnpha2VuQXBpWmFha3R5cGVMaW5rU2VydmljZVxuICAgICAgLmdldFBsdWdpbkNvbmZpZ3VyYXRpb25zQnlQbHVnaW5EZWZpbml0aW9uS2V5KCd6YWtlbmFwaScpXG4gICAgICAuc3Vic2NyaWJlKChwbHVnaW5zOiBQbHVnaW5Db25maWd1cmF0aW9uW10pID0+IHtcbiAgICAgICAgdGhpcy5wbHVnaW5Db25maWd1cmF0aW9ucyA9IHBsdWdpbnM7XG4gICAgICAgIHRoaXMuZmluZFBsdWdpbkNvbmZpZ3VyYXRpb24odGhpcy56YWFrVHlwZUxpbmskLmdldFZhbHVlKCk/Lnpha2VuQXBpUGx1Z2luQ29uZmlndXJhdGlvbklkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbG9hZEluZm9ybWF0aWVPYmplY3RUeXBlVXJscygpIHtcbiAgICB0aGlzLm9wZW5aYWFrU2VydmljZVxuICAgICAgLmdldEluZm9ybWF0aWVPYmplY3RUeXBlcygpXG4gICAgICAuc3Vic2NyaWJlKChpbmZvcm1hdGllT2JqZWN0VHlwZXM6IEluZm9ybWF0aWVPYmplY3RUeXBlW10pID0+IHtcbiAgICAgICAgdGhpcy5pbmZvcm1hdGllT2JqZWN0VHlwZXMgPSBpbmZvcm1hdGllT2JqZWN0VHlwZXM7XG4gICAgICB9KTtcbiAgfVxuXG4gIG9wZW5Nb2RhbCh6YWFrVHlwZUxpbms6IFphYWtUeXBlTGluaykge1xuICAgIHRoaXMuemFha1R5cGVMaW5rUmVxdWVzdCA9IHtcbiAgICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgIGNyZWF0ZVdpdGhEb3NzaWVyOiB6YWFrVHlwZUxpbms/LmNyZWF0ZVdpdGhEb3NzaWVyLFxuICAgICAgcnNpbjogemFha1R5cGVMaW5rPy5yc2luLFxuICAgICAgemFrZW5BcGlQbHVnaW5Db25maWd1cmF0aW9uSWQ6IHphYWtUeXBlTGluaz8uemFrZW5BcGlQbHVnaW5Db25maWd1cmF0aW9uSWQsXG4gICAgICB6YWFrVHlwZVVybDogemFha1R5cGVMaW5rPy56YWFrVHlwZVVybCxcbiAgICB9O1xuICAgIGlmICh0aGlzLmluZm9ybWF0aWVPYmplY3RUeXBlU2VsZWN0aW9uRW5hYmxlZCkge1xuICAgICAgdGhpcy5vcGVuWmFha1NlcnZpY2UuZ2V0T3BlblphYWtDb25maWcoKS5zdWJzY3JpYmUoY29uZmlnID0+IHtcbiAgICAgICAgaWYgKGNvbmZpZyA9PT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdvcGVuWmFhay5lcnJvci5jb25maWdOb3RGb3VuZCcpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvYWRJbmZvcm1hdGllT2JqZWN0VHlwZVVybHMoKTtcbiAgICAgICAgICB0aGlzLm9wZW5aYWFrU2VydmljZVxuICAgICAgICAgICAgLmdldEluZm9ybWF0aWVPYmplY3RUeXBlTGluayh0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGluZm9ybWF0aWVPYmplY3RUeXBlTGluayA9PiB7XG4gICAgICAgICAgICAgIGlmIChpbmZvcm1hdGllT2JqZWN0VHlwZUxpbmsgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5mb3JtYXRpZU9iamVjdFR5cGVVcmwgPVxuICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpZU9iamVjdFR5cGVMaW5rLmluZm9ybWF0aWVPYmplY3RUeXBlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1vZGFsLnNob3coKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vZGFsLnNob3coKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVaYWFrVHlwZUxpbmsoKSB7XG4gICAgdGhpcy5vcGVuWmFha1NlcnZpY2UuZGVsZXRlWmFha1R5cGVMaW5rKHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSkuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEluZm9ybWF0aWVPYmplY3RUeXBlVXJsICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5vcGVuWmFha1NlcnZpY2UuZGVsZXRlSW5mb3JtYXRpZU9iamVjdFR5cGVMaW5rKHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKCdTdWNjZXNzZnVsbHkgZGUtbGlua2VkIHphYWt0eXBlJyk7XG4gICAgICAgIHRoaXMuemFha1R5cGVMaW5rJC5uZXh0KG51bGwpO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcignRmFpbGVkIHRvIGRlLWxpbmsgemFha3R5cGUnKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIGNvbnN0IHJlcXVlc3RJbmZvcm1hdGllT2JqZWN0VHlwZUxpbms6IENyZWF0ZUluZm9ybWF0aWVPYmplY3RUeXBlTGlua1JlcXVlc3QgPSB7XG4gICAgICBkb2N1bWVudERlZmluaXRpb25OYW1lOiB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUsXG4gICAgICB6YWFrVHlwZTogdGhpcy56YWFrVHlwZUxpbmtSZXF1ZXN0LnphYWtUeXBlVXJsLFxuICAgICAgaW5mb3JtYXRpZU9iamVjdFR5cGU6IHRoaXMuc2VsZWN0ZWRJbmZvcm1hdGllT2JqZWN0VHlwZVVybCxcbiAgICB9O1xuICAgIHRoaXMub3BlblphYWtTZXJ2aWNlLmNyZWF0ZVphYWtUeXBlTGluayh0aGlzLnphYWtUeXBlTGlua1JlcXVlc3QpLnN1YnNjcmliZShcbiAgICAgIGxpbmtSZXN1bHQgPT4ge1xuICAgICAgICB0aGlzLnphYWtUeXBlTGluayQubmV4dChsaW5rUmVzdWx0KTtcbiAgICAgICAgdGhpcy56YWFrVHlwZUxpbmtSZXF1ZXN0ID0ge1xuICAgICAgICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgICAgICBjcmVhdGVXaXRoRG9zc2llcjogbGlua1Jlc3VsdD8uY3JlYXRlV2l0aERvc3NpZXIsXG4gICAgICAgICAgcnNpbjogbGlua1Jlc3VsdD8ucnNpbixcbiAgICAgICAgICB6YWtlbkFwaVBsdWdpbkNvbmZpZ3VyYXRpb25JZDogbGlua1Jlc3VsdD8uemFrZW5BcGlQbHVnaW5Db25maWd1cmF0aW9uSWQsXG4gICAgICAgICAgemFha1R5cGVVcmw6IGxpbmtSZXN1bHQ/LnphYWtUeXBlVXJsLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZpbmRaYWFrVHlwZShsaW5rUmVzdWx0LnphYWtUeXBlVXJsKTtcbiAgICAgICAgdGhpcy5maW5kUGx1Z2luQ29uZmlndXJhdGlvbihsaW5rUmVzdWx0Lnpha2VuQXBpUGx1Z2luQ29uZmlndXJhdGlvbklkKTtcbiAgICAgICAgaWYgKHJlcXVlc3RJbmZvcm1hdGllT2JqZWN0VHlwZUxpbmsuaW5mb3JtYXRpZU9iamVjdFR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLm9wZW5aYWFrU2VydmljZVxuICAgICAgICAgICAgLmNyZWF0ZUluZm9ybWF0aWVPYmplY3RUeXBlTGluayhyZXF1ZXN0SW5mb3JtYXRpZU9iamVjdFR5cGVMaW5rKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcygnU3VjY2Vzc2Z1bGx5IGxpbmtlZCBvYmplY3QgaW5mb3JtYXRpZSB0eXBlIHRvIGRvc3NpZXInKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcygnU3VjY2Vzc2Z1bGx5IGxpbmtlZCB6YWFrdHlwZSB0byBkb3NzaWVyJyk7XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcignRmFpbGVkIHRvIGxpbmsgemFha3R5cGUgdG8gZG9zc2llcicpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIG10LTQgbWItMiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgPGRpdj5cbiAgICA8aDI+e3sgJ29wZW5aYWFrLmxpbmtzJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgbG9hZGluZzogbG9hZGluZyQgfCBhc3luYyxcbiAgICB6YWFrVHlwZUxpbms6IHphYWtUeXBlTGluayQgfCBhc3luY1xuICB9IGFzIG9ic1wiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYnMubG9hZGluZyA9PT0gZmFsc2U7IGVsc2UgbG9hZGluZ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYnMuemFha1R5cGVMaW5rOyBlbHNlIGFkZFN5bmNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9yZGVyIGNhcmQtY29udHJhc3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGNhcmQtaGVhZGVyLWNvbnRyYXN0IGNhcmQtaGVhZGVyLWZlYXR1cmVkXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIHt7IHRoaXMuc2VsZWN0ZWRaYWFrVHlwZT8ub21zY2hyaWp2aW5nIHx8ICctJyB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIG1sLTNcIiAoY2xpY2spPVwib3Blbk1vZGFsKG9icy56YWFrVHlwZUxpbmspXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBtZGkgbWRpLXBlbmNpbFwiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIG1sLTNcIiAoY2xpY2spPVwicmVtb3ZlWmFha1R5cGVMaW5rKClcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktZGVsZXRlXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0zIG10LTFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7ICdvcGVuWmFhay5hdXRvQ3JlYXRlRm9yQ2FzZScgfCB0cmFuc2xhdGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgb2JzLnphYWtUeXBlTGluaz8uY3JlYXRlV2l0aERvc3NpZXJcbiAgICAgICAgICAgICAgICAgID8gKCd2aWV3VHlwZUNvbnZlcnRlci5ZZXMnIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgOiAoJ3ZpZXdUeXBlQ29udmVydGVyLk5vJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMyBtdC0xXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyAnb3BlblphYWsuemFrZW5BcGlQbHVnaW4nIHwgdHJhbnNsYXRlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICB7eyB0aGlzLnNlbGVjdGVkUGx1Z2luQ29uZmlndXJhdGlvbj8udGl0bGUgfHwgJy0nIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTMgbXQtMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgJ29wZW5aYWFrLnJzaW4nIHwgdHJhbnNsYXRlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICB7eyBvYnMuemFha1R5cGVMaW5rPy5yc2luIHx8ICctJyB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjYWRkU3luYz5cbiAgPGRpdiBjbGFzcz1cInRleHQtcmlnaHQgbXQtNVwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwib3Blbk1vZGFsKG51bGwpXCI+XG4gICAgICA8aSBjbGFzcz1cImljb24gbWRpIG1kaS1wbHVzIG1yLTFcIj48L2k+e3sgJ29wZW5aYWFrLmxpbmtaYWFrVHlwZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48dmFsdGltby1tb2RhbFxuICAjb3BlblphYWtUeXBlTGlua01vZGFsXG4gIGVsZW1lbnRJZD1cIm9wZW5aYWFrVHlwZUxpbmtNb2RhbFwiXG4gIFt0aXRsZV09XCInWmFhayB0eXBlcydcIlxuICBzdWJ0aXRsZT1cIkNvbm5lY3QgWmFhayB0eXBlIHRvIERvc3NpZXJcIlxuICBzaG93Rm9vdGVyPVwidHJ1ZVwiXG4+XG4gIDxkaXYgYm9keT5cbiAgICA8cD57eyAnb3BlblphYWsuc2VsZWN0WmFha1R5cGVGb3JDYXNlJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgbWItMyBtci0zIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwidGhpcy56YWFrVHlwZUxpbmtSZXF1ZXN0LnphYWtUeXBlVXJsXCI+XG4gICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiPnt7ICdvcGVuWmFhay5zZWxlY3RaYWFrVHlwZScgfCB0cmFuc2xhdGUgfX08L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgemFha1R5cGUgb2YgemFha1R5cGVzXCIgW25nVmFsdWVdPVwiemFha1R5cGUudXJsXCI+XG4gICAgICAgICAge3sgemFha1R5cGU/Lm9tc2NocmlqdmluZyB8fCAnLScgfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cblxuICAgIDxwPnt7ICdvcGVuWmFhay5zZWxlY3RaYWtlbkFwaVBsdWdpbkZvckNhc2UnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBtYi0zIG1yLTMgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8c2VsZWN0XG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ0aGlzLnphYWtUeXBlTGlua1JlcXVlc3QuemFrZW5BcGlQbHVnaW5Db25maWd1cmF0aW9uSWRcIlxuICAgICAgPlxuICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIj57eyAnb3BlblphYWsuc2VsZWN0WmFrZW5BcGlQbHVnaW4nIHwgdHJhbnNsYXRlIH19PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgcGx1Z2luQ29uZmlndXJhdGlvbiBvZiBwbHVnaW5Db25maWd1cmF0aW9uc1wiXG4gICAgICAgICAgW25nVmFsdWVdPVwicGx1Z2luQ29uZmlndXJhdGlvbi5pZFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwbHVnaW5Db25maWd1cmF0aW9uPy50aXRsZSB8fCAnLScgfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cblxuICAgIDxwPnt7ICdvcGVuWmFhay5yc2luJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgbWItMyBtci0zIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgaWQ9XCJuYW1lXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIlJTSU5cIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInRoaXMuemFha1R5cGVMaW5rUmVxdWVzdC5yc2luXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwic2V0dGluZy1yb3dcIj5cbiAgICAgIDxwPnt7ICdvcGVuWmFhay5hdXRvQ3JlYXRlRm9yQ2FzZScgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN3aXRjaC1idXR0b24gc3dpdGNoLWJ1dHRvbi1zdWNjZXNzXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwidGhpcy56YWFrVHlwZUxpbmtSZXF1ZXN0LmNyZWF0ZVdpdGhEb3NzaWVyXCJcbiAgICAgICAgICAgIG5hbWU9XCJjcmVhdGVXaXRoRG9zc2llclwiXG4gICAgICAgICAgICBpZD1cImNyZWF0ZVdpdGhEb3NzaWVyXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiXG4gICAgICAgICAgICAgIHRoaXMuemFha1R5cGVMaW5rUmVxdWVzdC5jcmVhdGVXaXRoRG9zc2llciA9XG4gICAgICAgICAgICAgICAgIXRoaXMuemFha1R5cGVMaW5rUmVxdWVzdC5jcmVhdGVXaXRoRG9zc2llclxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuPjxsYWJlbCBmb3I9XCJjcmVhdGVXaXRoRG9zc2llclwiPjwvbGFiZWw+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJpbmZvcm1hdGllT2JqZWN0VHlwZVNlbGVjdGlvbkVuYWJsZWQgJiYgc2VsZWN0ZWRaYWFrVHlwZVwiXG4gICAgICBjbGFzcz1cImlucHV0LWdyb3VwIG1iLTMgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICA+XG4gICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEluZm9ybWF0aWVPYmplY3RUeXBlVXJsXCI+XG4gICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiIHNlbGVjdGVkPnt7ICdvcGVuWmFhay5zZWxlY3RJbmZvT2JqZWN0VHlwZScgfCB0cmFuc2xhdGUgfX08L29wdGlvbj5cbiAgICAgICAgPG9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBpbmZvcm1hdGllT2JqZWN0VHlwZSBvZiBpbmZvcm1hdGllT2JqZWN0VHlwZXNcIlxuICAgICAgICAgIFtuZ1ZhbHVlXT1cImluZm9ybWF0aWVPYmplY3RUeXBlLnVybFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBpbmZvcm1hdGllT2JqZWN0VHlwZT8ub21zY2hyaWp2aW5nIHx8ICctJyB9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBmb290ZXI+XG4gICAgPGJ1dHRvblxuICAgICAgKGNsaWNrKT1cInN1Ym1pdCgpXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhdGhpcy56YWFrVHlwZUxpbmtSZXF1ZXN0LnphYWtUeXBlVXJsXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cImljb24gbWRpIG1kaS1zYXZlXCI+PC9pPlxuICAgICAge3sgJ29wZW5aYWFrLnNhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC92YWx0aW1vLW1vZGFsPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gIDxkaXYgY2xhc3M9XCJtYi04XCI+XG4gICAgPHZhbHRpbW8tc3Bpbm5lcj48L3ZhbHRpbW8tc3Bpbm5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vQ29uZmlnQXZhaWxhYmxlPlxuICA8ZGl2IGNsYXNzPVwibWItOFwiPlxuICAgIDxoND57eyAnb3BlblphYWsuZXJyb3IuY29uZmlnTm90Rm91bmQnIHwgdHJhbnNsYXRlIH19PC9oND5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFrZW4tYXBpLXphYWt0eXBlLWxpbmsuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL3pha2VuLWFwaS9jb21wb25lbnRzL3pha2VuLWFwaS16YWFrdHlwZS1saW5rL3pha2VuLWFwaS16YWFrdHlwZS1saW5rLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kdWxlcy96YWtlbi1hcGkvY29tcG9uZW50cy96YWtlbi1hcGktemFha3R5cGUtbGluay96YWtlbi1hcGktemFha3R5cGUtbGluay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBUzNELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQStCLFdBQVcsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTlFLE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFDLGVBQWUsRUFBRSxHQUFHLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFnQixjQUFjLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7O0FBVTdELE1BQU0sT0FBTyw2QkFBNkI7SUFvQnhDLFlBQ21CLEtBQXFCLEVBQ3JCLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLGNBQTZCLEVBQzdCLGdCQUFrQyxFQUNs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QUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDekUsQ0FBQyxFQUNELEdBQUcsQ0FBQyxFQUFFO1lBQ0osSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7K0dBdktVLDZCQUE2QjttR0FBN0IsNkJBQTZCLDJNQzVDMUMsdTVNQThMQSxpNUJEcEpZLFlBQVksb1RBQUUsV0FBVyx5Z0NBQUUsV0FBVyw0TEFBRSxrQkFBa0IsOEJBQUUsZUFBZTs7NEZBRTFFLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDRSxpQ0FBaUMsY0FHL0IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxDQUFDOzZRQW9CbEQsS0FBSztzQkFBeEMsU0FBUzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ3JlYXRlSW5mb3JtYXRpZU9iamVjdFR5cGVMaW5rUmVxdWVzdCxcbiAgQ3JlYXRlWmFha1R5cGVMaW5rUmVxdWVzdCxcbiAgSW5mb3JtYXRpZU9iamVjdFR5cGUsXG4gIE9wZW5aYWFrU2VydmljZSxcbiAgWmFha1R5cGUsXG4gIFphYWtUeXBlTGluayxcbn0gZnJvbSAnQHZhbHRpbW8vcmVzb3VyY2UnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QWxlcnRTZXJ2aWNlLCBNb2RhbENvbXBvbmVudCwgTW9kYWxNb2R1bGV9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtUb2FzdHJTZXJ2aWNlfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBtYXAsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlLCBVcGxvYWRQcm92aWRlcn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7UGx1Z2luQ29uZmlndXJhdGlvbn0gZnJvbSAnQHZhbHRpbW8vcGx1Z2luJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtOb3RpZmljYXRpb25Nb2R1bGV9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtaYWtlbkFwaVphYWt0eXBlTGlua1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby16YWtlbi1hcGktemFha3R5cGUtbGluaycsXG4gIHRlbXBsYXRlVXJsOiAnLi96YWtlbi1hcGktemFha3R5cGUtbGluay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3pha2VuLWFwaS16YWFrdHlwZS1saW5rLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBNb2RhbE1vZHVsZSwgTm90aWZpY2F0aW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBaYWtlbkFwaVphYWt0eXBlTGlua0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyB6YWFrVHlwZXM6IFphYWtUeXBlW107XG4gIHB1YmxpYyBwbHVnaW5Db25maWd1cmF0aW9uczogUGx1Z2luQ29uZmlndXJhdGlvbltdO1xuICBwdWJsaWMgemFha1R5cGVMaW5rUmVxdWVzdDogQ3JlYXRlWmFha1R5cGVMaW5rUmVxdWVzdDtcbiAgcHVibGljIGluZm9ybWF0aWVPYmplY3RUeXBlU2VsZWN0aW9uRW5hYmxlZDogYm9vbGVhbjtcbiAgcHVibGljIGluZm9ybWF0aWVPYmplY3RUeXBlczogSW5mb3JtYXRpZU9iamVjdFR5cGVbXTtcbiAgcHVibGljIHNlbGVjdGVkWmFha1R5cGU6IFphYWtUeXBlID0gbnVsbDtcbiAgcHVibGljIHNlbGVjdGVkUGx1Z2luQ29uZmlndXJhdGlvbjogUGx1Z2luQ29uZmlndXJhdGlvbiA9IG51bGw7XG4gIHB1YmxpYyBzZWxlY3RlZEluZm9ybWF0aWVPYmplY3RUeXBlVXJsOiBzdHJpbmcgPSBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZztcblxuICByZWFkb25seSBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IHphYWtUeXBlTGluayQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFphYWtUeXBlTGluaz4obnVsbCk7XG5cbiAgcmVhZG9ubHkgZG9jdW1lbnREZWZpbml0aW9uTmFtZSQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMucm91dGUucGFyYW1zLnBpcGUoXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXMubmFtZSB8fCAnJylcbiAgKTtcblxuICBAVmlld0NoaWxkKCdvcGVuWmFha1R5cGVMaW5rTW9kYWwnKSBtb2RhbDogTW9kYWxDb21wb25lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcGVuWmFha1NlcnZpY2U6IE9wZW5aYWFrU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RlclNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgemFrZW5BcGlaYWFrdHlwZUxpbmtTZXJ2aWNlOiBaYWtlbkFwaVphYWt0eXBlTGlua1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCduYW1lJyk7XG4gICAgdGhpcy5pbmZvcm1hdGllT2JqZWN0VHlwZVNlbGVjdGlvbkVuYWJsZWQgPVxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy51cGxvYWRQcm92aWRlciA9PT0gVXBsb2FkUHJvdmlkZXIuT1BFTl9aQUFLO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuemFha1R5cGVMaW5rUmVxdWVzdCA9IHtcbiAgICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgIGNyZWF0ZVdpdGhEb3NzaWVyOiBmYWxzZSxcbiAgICB9O1xuICAgIHRoaXMub3BlblphYWtTZXJ2aWNlLmdldFphYWtUeXBlTGluayh0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUpLnN1YnNjcmliZSh6YWFrVHlwZUxpbmsgPT4ge1xuICAgICAgaWYgKHphYWtUeXBlTGluayAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnphYWtUeXBlTGlua1JlcXVlc3QgPSB7XG4gICAgICAgICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZTogdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lLFxuICAgICAgICAgIGNyZWF0ZVdpdGhEb3NzaWVyOiB6YWFrVHlwZUxpbms/LmNyZWF0ZVdpdGhEb3NzaWVyLFxuICAgICAgICAgIHJzaW46IHphYWtUeXBlTGluaz8ucnNpbixcbiAgICAgICAgICB6YWtlbkFwaVBsdWdpbkNvbmZpZ3VyYXRpb25JZDogemFha1R5cGVMaW5rPy56YWtlbkFwaVBsdWdpbkNvbmZpZ3VyYXRpb25JZCxcbiAgICAgICAgICB6YWFrVHlwZVVybDogemFha1R5cGVMaW5rPy56YWFrVHlwZVVybCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHRoaXMuemFha1R5cGVMaW5rJC5uZXh0KHphYWtUeXBlTGluayk7XG4gICAgICB0aGlzLmxvYWRaYWFrVHlwZXMoKTtcbiAgICAgIHRoaXMubG9hZFpha2VuQXBpUGx1Z2luQ29uZmlndXJhdGlvbnMoKTtcbiAgICB9KTtcbiAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kWmFha1R5cGUoemFha1R5cGVVcmw6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWRaYWFrVHlwZSA9IHRoaXMuemFha1R5cGVzLmZpbmQoemFha1R5cGUgPT4gemFha1R5cGUudXJsID09PSB6YWFrVHlwZVVybCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRQbHVnaW5Db25maWd1cmF0aW9uKHBsdWdpbkNvbmZpZ3VyYXRpb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWxlY3RlZFBsdWdpbkNvbmZpZ3VyYXRpb24gPSB0aGlzLnBsdWdpbkNvbmZpZ3VyYXRpb25zLmZpbmQoXG4gICAgICBwbHVnaW5Db25maWd1cmF0aW9uID0+IHBsdWdpbkNvbmZpZ3VyYXRpb24uaWQgPT09IHBsdWdpbkNvbmZpZ3VyYXRpb25JZFxuICAgICk7XG4gIH1cblxuICBsb2FkWmFha1R5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLm9wZW5aYWFrU2VydmljZS5nZXRaYWFrVHlwZXMoKS5zdWJzY3JpYmUoKHphYWtUeXBlczogWmFha1R5cGVbXSkgPT4ge1xuICAgICAgdGhpcy56YWFrVHlwZXMgPSB6YWFrVHlwZXM7XG4gICAgICB0aGlzLmZpbmRaYWFrVHlwZSh0aGlzLnphYWtUeXBlTGluayQuZ2V0VmFsdWUoKT8uemFha1R5cGVVcmwpO1xuICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGxvYWRaYWtlbkFwaVBsdWdpbkNvbmZpZ3VyYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnpha2VuQXBpWmFha3R5cGVMaW5rU2VydmljZVxuICAgICAgLmdldFBsdWdpbkNvbmZpZ3VyYXRpb25zQnlQbHVnaW5EZWZpbml0aW9uS2V5KCd6YWtlbmFwaScpXG4gICAgICAuc3Vic2NyaWJlKChwbHVnaW5zOiBQbHVnaW5Db25maWd1cmF0aW9uW10pID0+IHtcbiAgICAgICAgdGhpcy5wbHVnaW5Db25maWd1cmF0aW9ucyA9IHBsdWdpbnM7XG4gICAgICAgIHRoaXMuZmluZFBsdWdpbkNvbmZpZ3VyYXRpb24odGhpcy56YWFrVHlwZUxpbmskLmdldFZhbHVlKCk/Lnpha2VuQXBpUGx1Z2luQ29uZmlndXJhdGlvbklkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbG9hZEluZm9ybWF0aWVPYmplY3RUeXBlVXJscygpIHtcbiAgICB0aGlzLm9wZW5aYWFrU2VydmljZVxuICAgICAgLmdldEluZm9ybWF0aWVPYmplY3RUeXBlcygpXG4gICAgICAuc3Vic2NyaWJlKChpbmZvcm1hdGllT2JqZWN0VHlwZXM6IEluZm9ybWF0aWVPYmplY3RUeXBlW10pID0+IHtcbiAgICAgICAgdGhpcy5pbmZvcm1hdGllT2JqZWN0VHlwZXMgPSBpbmZvcm1hdGllT2JqZWN0VHlwZXM7XG4gICAgICB9KTtcbiAgfVxuXG4gIG9wZW5Nb2RhbCh6YWFrVHlwZUxpbms6IFphYWtUeXBlTGluaykge1xuICAgIHRoaXMuemFha1R5cGVMaW5rUmVxdWVzdCA9IHtcbiAgICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgIGNyZWF0ZVdpdGhEb3NzaWVyOiB6YWFrVHlwZUxpbms/LmNyZWF0ZVdpdGhEb3NzaWVyLFxuICAgICAgcnNpbjogemFha1R5cGVMaW5rPy5yc2luLFxuICAgICAgemFrZW5BcGlQbHVnaW5Db25maWd1cmF0aW9uSWQ6IHphYWtUeXBlTGluaz8uemFrZW5BcGlQbHVnaW5Db25maWd1cmF0aW9uSWQsXG4gICAgICB6YWFrVHlwZVVybDogemFha1R5cGVMaW5rPy56YWFrVHlwZVVybCxcbiAgICB9O1xuICAgIGlmICh0aGlzLmluZm9ybWF0aWVPYmplY3RUeXBlU2VsZWN0aW9uRW5hYmxlZCkge1xuICAgICAgdGhpcy5vcGVuWmFha1NlcnZpY2UuZ2V0T3BlblphYWtDb25maWcoKS5zdWJzY3JpYmUoY29uZmlnID0+IHtcbiAgICAgICAgaWYgKGNvbmZpZyA9PT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdvcGVuWmFhay5lcnJvci5jb25maWdOb3RGb3VuZCcpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvYWRJbmZvcm1hdGllT2JqZWN0VHlwZVVybHMoKTtcbiAgICAgICAgICB0aGlzLm9wZW5aYWFrU2VydmljZVxuICAgICAgICAgICAgLmdldEluZm9ybWF0aWVPYmplY3RUeXBlTGluayh0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGluZm9ybWF0aWVPYmplY3RUeXBlTGluayA9PiB7XG4gICAgICAgICAgICAgIGlmIChpbmZvcm1hdGllT2JqZWN0VHlwZUxpbmsgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5mb3JtYXRpZU9iamVjdFR5cGVVcmwgPVxuICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpZU9iamVjdFR5cGVMaW5rLmluZm9ybWF0aWVPYmplY3RUeXBlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1vZGFsLnNob3coKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vZGFsLnNob3coKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVaYWFrVHlwZUxpbmsoKSB7XG4gICAgdGhpcy5vcGVuWmFha1NlcnZpY2UuZGVsZXRlWmFha1R5cGVMaW5rKHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSkuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEluZm9ybWF0aWVPYmplY3RUeXBlVXJsICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5vcGVuWmFha1NlcnZpY2UuZGVsZXRlSW5mb3JtYXRpZU9iamVjdFR5cGVMaW5rKHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKCdTdWNjZXNzZnVsbHkgZGUtbGlua2VkIHphYWt0eXBlJyk7XG4gICAgICAgIHRoaXMuemFha1R5cGVMaW5rJC5uZXh0KG51bGwpO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcignRmFpbGVkIHRvIGRlLWxpbmsgemFha3R5cGUnKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIGNvbnN0IHJlcXVlc3RJbmZvcm1hdGllT2JqZWN0VHlwZUxpbms6IENyZWF0ZUluZm9ybWF0aWVPYmplY3RUeXBlTGlua1JlcXVlc3QgPSB7XG4gICAgICBkb2N1bWVudERlZmluaXRpb25OYW1lOiB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUsXG4gICAgICB6YWFrVHlwZTogdGhpcy56YWFrVHlwZUxpbmtSZXF1ZXN0LnphYWtUeXBlVXJsLFxuICAgICAgaW5mb3JtYXRpZU9iamVjdFR5cGU6IHRoaXMuc2VsZWN0ZWRJbmZvcm1hdGllT2JqZWN0VHlwZVVybCxcbiAgICB9O1xuICAgIHRoaXMub3BlblphYWtTZXJ2aWNlLmNyZWF0ZVphYWtUeXBlTGluayh0aGlzLnphYWtUeXBlTGlua1JlcXVlc3QpLnN1YnNjcmliZShcbiAgICAgIGxpbmtSZXN1bHQgPT4ge1xuICAgICAgICB0aGlzLnphYWtUeXBlTGluayQubmV4dChsaW5rUmVzdWx0KTtcbiAgICAgICAgdGhpcy56YWFrVHlwZUxpbmtSZXF1ZXN0ID0ge1xuICAgICAgICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgICAgICBjcmVhdGVXaXRoRG9zc2llcjogbGlua1Jlc3VsdD8uY3JlYXRlV2l0aERvc3NpZXIsXG4gICAgICAgICAgcnNpbjogbGlua1Jlc3VsdD8ucnNpbixcbiAgICAgICAgICB6YWtlbkFwaVBsdWdpbkNvbmZpZ3VyYXRpb25JZDogbGlua1Jlc3VsdD8uemFrZW5BcGlQbHVnaW5Db25maWd1cmF0aW9uSWQsXG4gICAgICAgICAgemFha1R5cGVVcmw6IGxpbmtSZXN1bHQ/LnphYWtUeXBlVXJsLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZpbmRaYWFrVHlwZShsaW5rUmVzdWx0LnphYWtUeXBlVXJsKTtcbiAgICAgICAgdGhpcy5maW5kUGx1Z2luQ29uZmlndXJhdGlvbihsaW5rUmVzdWx0Lnpha2VuQXBpUGx1Z2luQ29uZmlndXJhdGlvbklkKTtcbiAgICAgICAgaWYgKHJlcXVlc3RJbmZvcm1hdGllT2JqZWN0VHlwZUxpbmsuaW5mb3JtYXRpZU9iamVjdFR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLm9wZW5aYWFrU2VydmljZVxuICAgICAgICAgICAgLmNyZWF0ZUluZm9ybWF0aWVPYmplY3RUeXBlTGluayhyZXF1ZXN0SW5mb3JtYXRpZU9iamVjdFR5cGVMaW5rKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcygnU3VjY2Vzc2Z1bGx5IGxpbmtlZCBvYmplY3QgaW5mb3JtYXRpZSB0eXBlIHRvIGRvc3NpZXInKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcygnU3VjY2Vzc2Z1bGx5IGxpbmtlZCB6YWFrdHlwZSB0byBkb3NzaWVyJyk7XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcignRmFpbGVkIHRvIGxpbmsgemFha3R5cGUgdG8gZG9zc2llcicpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIG10LTQgbWItMiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgPGRpdj5cbiAgICA8aDI+e3sgJ29wZW5aYWFrLmxpbmtzJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgbG9hZGluZzogbG9hZGluZyQgfCBhc3luYyxcbiAgICB6YWFrVHlwZUxpbms6IHphYWtUeXBlTGluayQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLmxvYWRpbmcgPT09IGZhbHNlOyBlbHNlIGxvYWRpbmdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLnphYWtUeXBlTGluazsgZWxzZSBhZGRTeW5jXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWJvcmRlciBjYXJkLWNvbnRyYXN0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBjYXJkLWhlYWRlci1jb250cmFzdCBjYXJkLWhlYWRlci1mZWF0dXJlZFwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICB7eyB0aGlzLnNlbGVjdGVkWmFha1R5cGU/Lm9tc2NocmlqdmluZyB8fCAnLScgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbHNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlciBtbC0zXCIgKGNsaWNrKT1cIm9wZW5Nb2RhbChvYnMuemFha1R5cGVMaW5rKVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gbWRpIG1kaS1wZW5jaWxcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlciBtbC0zXCIgKGNsaWNrKT1cInJlbW92ZVphYWtUeXBlTGluaygpXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBtZGkgbWRpLWRlbGV0ZVwiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMyBtdC0xXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57eyAnb3BlblphYWsuYXV0b0NyZWF0ZUZvckNhc2UnIHwgdHJhbnNsYXRlIH19PC9zdHJvbmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIG9icy56YWFrVHlwZUxpbms/LmNyZWF0ZVdpdGhEb3NzaWVyXG4gICAgICAgICAgICAgICAgICA/ICgndmlld1R5cGVDb252ZXJ0ZXIuWWVzJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgIDogKCd2aWV3VHlwZUNvbnZlcnRlci5ObycgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTMgbXQtMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgJ29wZW5aYWFrLnpha2VuQXBpUGx1Z2luJyB8IHRyYW5zbGF0ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAge3sgdGhpcy5zZWxlY3RlZFBsdWdpbkNvbmZpZ3VyYXRpb24/LnRpdGxlIHx8ICctJyB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0zIG10LTFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtM1wiPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7ICdvcGVuWmFhay5yc2luJyB8IHRyYW5zbGF0ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIj5cbiAgICAgICAgICAgICAge3sgb2JzLnphYWtUeXBlTGluaz8ucnNpbiB8fCAnLScgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2FkZFN5bmM+XG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0IG10LTVcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5Nb2RhbChudWxsKVwiPlxuICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktcGx1cyBtci0xXCI+PC9pPnt7ICdvcGVuWmFhay5saW5rWmFha1R5cGUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPHZhbHRpbW8tbW9kYWxcbiAgI29wZW5aYWFrVHlwZUxpbmtNb2RhbFxuICBlbGVtZW50SWQ9XCJvcGVuWmFha1R5cGVMaW5rTW9kYWxcIlxuICBbdGl0bGVdPVwiJ1phYWsgdHlwZXMnXCJcbiAgc3VidGl0bGU9XCJDb25uZWN0IFphYWsgdHlwZSB0byBEb3NzaWVyXCJcbiAgc2hvd0Zvb3Rlcj1cInRydWVcIlxuPlxuICA8ZGl2IGJvZHk+XG4gICAgPHA+e3sgJ29wZW5aYWFrLnNlbGVjdFphYWtUeXBlRm9yQ2FzZScgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIG1iLTMgbXItMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cInRoaXMuemFha1R5cGVMaW5rUmVxdWVzdC56YWFrVHlwZVVybFwiPlxuICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIj57eyAnb3BlblphYWsuc2VsZWN0WmFha1R5cGUnIHwgdHJhbnNsYXRlIH19PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHphYWtUeXBlIG9mIHphYWtUeXBlc1wiIFtuZ1ZhbHVlXT1cInphYWtUeXBlLnVybFwiPlxuICAgICAgICAgIHt7IHphYWtUeXBlPy5vbXNjaHJpanZpbmcgfHwgJy0nIH19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9kaXY+XG5cbiAgICA8cD57eyAnb3BlblphYWsuc2VsZWN0WmFrZW5BcGlQbHVnaW5Gb3JDYXNlJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgbWItMyBtci0zIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPHNlbGVjdFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwidGhpcy56YWFrVHlwZUxpbmtSZXF1ZXN0Lnpha2VuQXBpUGx1Z2luQ29uZmlndXJhdGlvbklkXCJcbiAgICAgID5cbiAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJudWxsXCI+e3sgJ29wZW5aYWFrLnNlbGVjdFpha2VuQXBpUGx1Z2luJyB8IHRyYW5zbGF0ZSB9fTwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHBsdWdpbkNvbmZpZ3VyYXRpb24gb2YgcGx1Z2luQ29uZmlndXJhdGlvbnNcIlxuICAgICAgICAgIFtuZ1ZhbHVlXT1cInBsdWdpbkNvbmZpZ3VyYXRpb24uaWRcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcGx1Z2luQ29uZmlndXJhdGlvbj8udGl0bGUgfHwgJy0nIH19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9kaXY+XG5cbiAgICA8cD57eyAnb3BlblphYWsucnNpbicgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIG1iLTMgbXItMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGlkPVwibmFtZVwiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJSU0lOXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ0aGlzLnphYWtUeXBlTGlua1JlcXVlc3QucnNpblwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInNldHRpbmctcm93XCI+XG4gICAgICA8cD57eyAnb3BlblphYWsuYXV0b0NyZWF0ZUZvckNhc2UnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzd2l0Y2gtYnV0dG9uIHN3aXRjaC1idXR0b24tc3VjY2Vzc1wiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInRoaXMuemFha1R5cGVMaW5rUmVxdWVzdC5jcmVhdGVXaXRoRG9zc2llclwiXG4gICAgICAgICAgICBuYW1lPVwiY3JlYXRlV2l0aERvc3NpZXJcIlxuICAgICAgICAgICAgaWQ9XCJjcmVhdGVXaXRoRG9zc2llclwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIlxuICAgICAgICAgICAgICB0aGlzLnphYWtUeXBlTGlua1JlcXVlc3QuY3JlYXRlV2l0aERvc3NpZXIgPVxuICAgICAgICAgICAgICAgICF0aGlzLnphYWtUeXBlTGlua1JlcXVlc3QuY3JlYXRlV2l0aERvc3NpZXJcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3Bhbj48bGFiZWwgZm9yPVwiY3JlYXRlV2l0aERvc3NpZXJcIj48L2xhYmVsPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiaW5mb3JtYXRpZU9iamVjdFR5cGVTZWxlY3Rpb25FbmFibGVkICYmIHNlbGVjdGVkWmFha1R5cGVcIlxuICAgICAgY2xhc3M9XCJpbnB1dC1ncm91cCBtYi0zIGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgPlxuICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRJbmZvcm1hdGllT2JqZWN0VHlwZVVybFwiPlxuICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBzZWxlY3RlZD57eyAnb3BlblphYWsuc2VsZWN0SW5mb09iamVjdFR5cGUnIHwgdHJhbnNsYXRlIH19PC9vcHRpb24+XG4gICAgICAgIDxvcHRpb25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaW5mb3JtYXRpZU9iamVjdFR5cGUgb2YgaW5mb3JtYXRpZU9iamVjdFR5cGVzXCJcbiAgICAgICAgICBbbmdWYWx1ZV09XCJpbmZvcm1hdGllT2JqZWN0VHlwZS51cmxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgaW5mb3JtYXRpZU9iamVjdFR5cGU/Lm9tc2NocmlqdmluZyB8fCAnLScgfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgZm9vdGVyPlxuICAgIDxidXR0b25cbiAgICAgIChjbGljayk9XCJzdWJtaXQoKVwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXG4gICAgICBbZGlzYWJsZWRdPVwiIXRoaXMuemFha1R5cGVMaW5rUmVxdWVzdC56YWFrVHlwZVVybFwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJpY29uIG1kaSBtZGktc2F2ZVwiPjwvaT5cbiAgICAgIHt7ICdvcGVuWmFhay5zYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvdmFsdGltby1tb2RhbD5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8ZGl2IGNsYXNzPVwibWItOFwiPlxuICAgIDx2YWx0aW1vLXNwaW5uZXI+PC92YWx0aW1vLXNwaW5uZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub0NvbmZpZ0F2YWlsYWJsZT5cbiAgPGRpdiBjbGFzcz1cIm1iLThcIj5cbiAgICA8aDQ+e3sgJ29wZW5aYWFrLmVycm9yLmNvbmZpZ05vdEZvdW5kJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|