UNPKG

@linid-dm/directory-manager-client-core

Version:

Core package by providing a set of angular components for the Directory Manager app.

104 lines 24.2 kB
/** * Copyright (C) 2020-2024 Linagora * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) any * later version, provided you comply with the Additional Terms applicable for * LinID Directory Manager software by LINAGORA pursuant to Section 7 of the GNU * Affero General Public License, subsections (b), (c), and (e), pursuant to * which these Appropriate Legal Notices must notably (i) retain the display of * the "LinID™" trademark/logo at the top of the interface window, the display * of the “You are using the Open Source and free version of LinID™, powered by * Linagora © 2009–2013. Contribute to LinID R&D by subscribing to an Enterprise * offer!” infobox and in the e-mails sent with the Program, notice appended to * any type of outbound messages (e.g. e-mail and meeting requests) as well as * in the LinID Directory Manager user interface, (ii) retain all hypertext * links between LinID Directory Manager and https://linid.org/, as well as * between LINAGORA and LINAGORA.com, and (iii) refrain from infringing LINAGORA * intellectual property rights over its trademarks and commercial brands. Other * Additional Terms apply, see <http://www.linagora.com/licenses/> for more * details. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License and * its applicable Additional Terms for LinID Directory Manager along with this * program. If not, see <http://www.gnu.org/licenses/> for the GNU Affero * General Public License version 3 and <http://www.linagora.com/licenses/> for * the Additional Terms applicable to the LinID Directory Manager software. */ import { trigger } from '@angular/animations'; import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core'; import { delay, takeUntil, tap } from 'rxjs'; import { fadeIn, } from '../../shared'; import { AddEditGenericFormDialogComponent } from '../add-edit-generic-form-dialog/add-edit-generic-form-dialog.component'; import * as i0 from "@angular/core"; import * as i1 from "@angular/material/dialog"; import * as i2 from "@angular/material/button"; export class DataDetailEditButtonComponent { constructor(dialog) { this.dialog = dialog; this.updatedEntryAttributes = new EventEmitter(); this.scimProperties = { schemas: [] }; } ngOnInit() { this.scimProperties.schemas = [ this.resourcesTypes.byId[this.selectedResourceTypeId].schema, ]; } openEditEntryDialog(updatedEntryAttributes, title, scimProperties, selectedResourceTypeId, resourcesTypes, selectedEntryIds, formDataAttributes) { this.clickOnUpdate = true; this.dialogRef = this.dialog.open(AddEditGenericFormDialogComponent, { minWidth: '40%', restoreFocus: false, data: { title, formData: formDataAttributes, endpoint: resourcesTypes.byId[selectedResourceTypeId].endpoint, entryId: selectedEntryIds.id, scimProperties, crudAction: 'update', }, }); this.dialogRef .afterClosed() .pipe(tap((_) => (this.clickOnUpdate = false)), delay(0), tap((_) => { if (!!this.editBtn) { this.editBtn.focus(); } })) .subscribe(); this.dialogRef.componentInstance.updateSucceeded .pipe(takeUntil(this.dialogRef.afterClosed()), tap((request) => updatedEntryAttributes.emit(request))) .subscribe(); } clickOnBtn() { this.openEditEntryDialog(this.updatedEntryAttributes, this.editAction.title, this.scimProperties, this.selectedResourceTypeId, this.resourcesTypes, this.selectedEntryIds, this.formDataAttributes); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: DataDetailEditButtonComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: DataDetailEditButtonComponent, selector: "dm-data-detail-edit-button", inputs: { editAction: "editAction", selectedResourceTypeId: "selectedResourceTypeId", resourcesTypes: "resourcesTypes", selectedEntryIds: "selectedEntryIds", formDataAttributes: "formDataAttributes" }, outputs: { updatedEntryAttributes: "updatedEntryAttributes" }, viewQueries: [{ propertyName: "editBtn", first: true, predicate: ["editBtn"], descendants: true }], ngImport: i0, template: "<!-- Copyright (C) 2020-2024 Linagora\n\nThis program is free software: you can redistribute it and/or modify it under\nthe terms of the GNU Affero General Public License as published by the Free\nSoftware Foundation, either version 3 of the License, or (at your option) any\nlater version, provided you comply with the Additional Terms applicable for\nLinID Directory Manager software by LINAGORA pursuant to Section 7 of the GNU\nAffero General Public License, subsections (b), (c), and (e), pursuant to\nwhich these Appropriate Legal Notices must notably (i) retain the display of\nthe \"LinID\u2122\" trademark/logo at the top of the interface window, the display\nof the \u201CYou are using the Open Source and free version of LinID\u2122, powered by\nLinagora \u00A9 2009\u20132013. Contribute to LinID R&D by subscribing to an Enterprise\noffer!\u201D infobox and in the e-mails sent with the Program, notice appended to\nany type of outbound messages (e.g. e-mail and meeting requests) as well as\nin the LinID Directory Manager user interface, (ii) retain all hypertext\nlinks between LinID Directory Manager and https://linid.org/, as well as\nbetween LINAGORA and LINAGORA.com, and (iii) refrain from infringing LINAGORA\nintellectual property rights over its trademarks and commercial brands. Other\nAdditional Terms apply, see <http://www.linagora.com/licenses/> for more\ndetails.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT\nANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\nFOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\ndetails.\n\nYou should have received a copy of the GNU Affero General Public License and\nits applicable Additional Terms for LinID Directory Manager along with this\nprogram. If not, see <http://www.gnu.org/licenses/> for the GNU Affero\nGeneral Public License version 3 and <http://www.linagora.com/licenses/> for\nthe Additional Terms applicable to the LinID Directory Manager software. -->\n\n<button\n #editBtn=\"matButton\"\n mat-raised-button\n color=\"accent\"\n [disabled]=\"clickOnUpdate\"\n (click)=\"clickOnBtn()\"\n class=\"btn-edit-detail\"\n>\n {{ editAction.btnLabel }}\n</button>\n", styles: ["@charset \"UTF-8\";.btn-edit-detail{margin:0 20px 16px}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], animations: [trigger('fadeIn', fadeIn(':enter'))] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: DataDetailEditButtonComponent, decorators: [{ type: Component, args: [{ selector: 'dm-data-detail-edit-button', animations: [trigger('fadeIn', fadeIn(':enter'))], template: "<!-- Copyright (C) 2020-2024 Linagora\n\nThis program is free software: you can redistribute it and/or modify it under\nthe terms of the GNU Affero General Public License as published by the Free\nSoftware Foundation, either version 3 of the License, or (at your option) any\nlater version, provided you comply with the Additional Terms applicable for\nLinID Directory Manager software by LINAGORA pursuant to Section 7 of the GNU\nAffero General Public License, subsections (b), (c), and (e), pursuant to\nwhich these Appropriate Legal Notices must notably (i) retain the display of\nthe \"LinID\u2122\" trademark/logo at the top of the interface window, the display\nof the \u201CYou are using the Open Source and free version of LinID\u2122, powered by\nLinagora \u00A9 2009\u20132013. Contribute to LinID R&D by subscribing to an Enterprise\noffer!\u201D infobox and in the e-mails sent with the Program, notice appended to\nany type of outbound messages (e.g. e-mail and meeting requests) as well as\nin the LinID Directory Manager user interface, (ii) retain all hypertext\nlinks between LinID Directory Manager and https://linid.org/, as well as\nbetween LINAGORA and LINAGORA.com, and (iii) refrain from infringing LINAGORA\nintellectual property rights over its trademarks and commercial brands. Other\nAdditional Terms apply, see <http://www.linagora.com/licenses/> for more\ndetails.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT\nANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\nFOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more\ndetails.\n\nYou should have received a copy of the GNU Affero General Public License and\nits applicable Additional Terms for LinID Directory Manager along with this\nprogram. If not, see <http://www.gnu.org/licenses/> for the GNU Affero\nGeneral Public License version 3 and <http://www.linagora.com/licenses/> for\nthe Additional Terms applicable to the LinID Directory Manager software. -->\n\n<button\n #editBtn=\"matButton\"\n mat-raised-button\n color=\"accent\"\n [disabled]=\"clickOnUpdate\"\n (click)=\"clickOnBtn()\"\n class=\"btn-edit-detail\"\n>\n {{ editAction.btnLabel }}\n</button>\n", styles: ["@charset \"UTF-8\";.btn-edit-detail{margin:0 20px 16px}\n"] }] }], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { editAction: [{ type: Input }], selectedResourceTypeId: [{ type: Input }], resourcesTypes: [{ type: Input }], selectedEntryIds: [{ type: Input }], formDataAttributes: [{ type: Input }], updatedEntryAttributes: [{ type: Output }], editBtn: [{ type: ViewChild, args: ['editBtn', { static: false }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1kZXRhaWwtZWRpdC1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbGlicy9jbGllbnQtY29yZS9zcmMvbGliL2ZlYXR1cmUvZGF0YS1kZXRhaWwtZWRpdC1idXR0b24vZGF0YS1kZXRhaWwtZWRpdC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbGlicy9jbGllbnQtY29yZS9zcmMvbGliL2ZlYXR1cmUvZGF0YS1kZXRhaWwtZWRpdC1idXR0b24vZGF0YS1kZXRhaWwtZWRpdC1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBRUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBT0wsTUFBTSxHQUNQLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHdFQUF3RSxDQUFDOzs7O0FBUTNILE1BQU0sT0FBTyw2QkFBNkI7SUFleEMsWUFBbUIsTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVIxQiwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBTXBELG1CQUFjLEdBQW9CLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBRWxCLENBQUM7SUFFeEMsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHO1lBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE1BQU07U0FDN0QsQ0FBQztJQUNKLENBQUM7SUFFRCxtQkFBbUIsQ0FDakIsc0JBQXlDLEVBQ3pDLEtBQWEsRUFDYixjQUErQixFQUMvQixzQkFBOEIsRUFDOUIsY0FBc0MsRUFDdEMsZ0JBQTJCLEVBQzNCLGtCQUErQjtRQUUvQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUUxQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFO1lBQ25FLFFBQVEsRUFBRSxLQUFLO1lBQ2YsWUFBWSxFQUFFLEtBQUs7WUFDbkIsSUFBSSxFQUFFO2dCQUNKLEtBQUs7Z0JBQ0wsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsUUFBUSxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxRQUFRO2dCQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsRUFBRTtnQkFDNUIsY0FBYztnQkFDZCxVQUFVLEVBQUUsUUFBUTthQUNyQjtTQUNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTO2FBQ1gsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQ3hDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNSLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztRQUVmLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsZUFBZTthQUM3QyxJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsRUFDdkMsR0FBRyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDNUQ7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsSUFBSSxDQUFDLHNCQUFzQixFQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFDckIsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLHNCQUFzQixFQUMzQixJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsQ0FBQztJQUNKLENBQUM7OEdBN0VVLDZCQUE2QjtrR0FBN0IsNkJBQTZCLCthQy9EMUMsK3JFQTBDQSxrU0RtQmMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDOzsyRkFFdEMsNkJBQTZCO2tCQU56QyxTQUFTOytCQUNFLDRCQUE0QixjQUcxQixDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7OEVBR3hDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBRWtDLE9BQU87c0JBQS9DLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjQgTGluYWdvcmFcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlclxuICogdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlXG4gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueVxuICogbGF0ZXIgdmVyc2lvbiwgcHJvdmlkZWQgeW91IGNvbXBseSB3aXRoIHRoZSBBZGRpdGlvbmFsIFRlcm1zIGFwcGxpY2FibGUgZm9yXG4gKiBMaW5JRCBEaXJlY3RvcnkgTWFuYWdlciBzb2Z0d2FyZSBieSBMSU5BR09SQSBwdXJzdWFudCB0byBTZWN0aW9uIDcgb2YgdGhlIEdOVVxuICogQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHN1YnNlY3Rpb25zIChiKSwgKGMpLCBhbmQgKGUpLCBwdXJzdWFudCB0b1xuICogd2hpY2ggdGhlc2UgQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyBtdXN0IG5vdGFibHkgKGkpIHJldGFpbiB0aGUgZGlzcGxheSBvZlxuICogdGhlIFwiTGluSUTihKJcIiB0cmFkZW1hcmsvbG9nbyBhdCB0aGUgdG9wIG9mIHRoZSBpbnRlcmZhY2Ugd2luZG93LCB0aGUgZGlzcGxheVxuICogb2YgdGhlIOKAnFlvdSBhcmUgdXNpbmcgdGhlIE9wZW4gU291cmNlIGFuZCBmcmVlIHZlcnNpb24gb2YgTGluSUTihKIsIHBvd2VyZWQgYnlcbiAqIExpbmFnb3JhIMKpIDIwMDnigJMyMDEzLiBDb250cmlidXRlIHRvIExpbklEIFImRCBieSBzdWJzY3JpYmluZyB0byBhbiBFbnRlcnByaXNlXG4gKiBvZmZlciHigJ0gaW5mb2JveCBhbmQgaW4gdGhlIGUtbWFpbHMgc2VudCB3aXRoIHRoZSBQcm9ncmFtLCBub3RpY2UgYXBwZW5kZWQgdG9cbiAqIGFueSB0eXBlIG9mIG91dGJvdW5kIG1lc3NhZ2VzIChlLmcuIGUtbWFpbCBhbmQgbWVldGluZyByZXF1ZXN0cykgYXMgd2VsbCBhc1xuICogaW4gdGhlIExpbklEIERpcmVjdG9yeSBNYW5hZ2VyIHVzZXIgaW50ZXJmYWNlLCAoaWkpIHJldGFpbiBhbGwgaHlwZXJ0ZXh0XG4gKiBsaW5rcyBiZXR3ZWVuIExpbklEIERpcmVjdG9yeSBNYW5hZ2VyIGFuZCBodHRwczovL2xpbmlkLm9yZy8sIGFzIHdlbGwgYXNcbiAqIGJldHdlZW4gTElOQUdPUkEgYW5kIExJTkFHT1JBLmNvbSwgYW5kIChpaWkpIHJlZnJhaW4gZnJvbSBpbmZyaW5naW5nIExJTkFHT1JBXG4gKiBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG92ZXIgaXRzIHRyYWRlbWFya3MgYW5kIGNvbW1lcmNpYWwgYnJhbmRzLiBPdGhlclxuICogQWRkaXRpb25hbCBUZXJtcyBhcHBseSwgc2VlIDxodHRwOi8vd3d3LmxpbmFnb3JhLmNvbS9saWNlbnNlcy8+IGZvciBtb3JlXG4gKiBkZXRhaWxzLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1NcbiAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmVcbiAqIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZFxuICogaXRzIGFwcGxpY2FibGUgQWRkaXRpb25hbCBUZXJtcyBmb3IgTGluSUQgRGlyZWN0b3J5IE1hbmFnZXIgYWxvbmcgd2l0aCB0aGlzXG4gKiBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4gZm9yIHRoZSBHTlUgQWZmZXJvXG4gKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhbmQgPGh0dHA6Ly93d3cubGluYWdvcmEuY29tL2xpY2Vuc2VzLz4gZm9yXG4gKiB0aGUgQWRkaXRpb25hbCBUZXJtcyBhcHBsaWNhYmxlIHRvIHRoZSBMaW5JRCBEaXJlY3RvcnkgTWFuYWdlciBzb2Z0d2FyZS5cbiAqL1xuXG5pbXBvcnQgeyB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IGRlbGF5LCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgSUJ0bkxhYmVsLFxuICBJRW50cnlJZHMsXG4gIElGb3JtRGF0YSxcbiAgSVJlc291cmNlVHlwZSxcbiAgSVNjaW1Qcm9wZXJ0aWVzLFxuICBKc1RhYmxlLFxuICBmYWRlSW4sXG59IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBBZGRFZGl0R2VuZXJpY0Zvcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9hZGQtZWRpdC1nZW5lcmljLWZvcm0tZGlhbG9nL2FkZC1lZGl0LWdlbmVyaWMtZm9ybS1kaWFsb2cuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZG0tZGF0YS1kZXRhaWwtZWRpdC1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1kZXRhaWwtZWRpdC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLWRldGFpbC1lZGl0LWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbdHJpZ2dlcignZmFkZUluJywgZmFkZUluKCc6ZW50ZXInKSldLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhRGV0YWlsRWRpdEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGVkaXRBY3Rpb246IElCdG5MYWJlbDtcbiAgQElucHV0KCkgc2VsZWN0ZWRSZXNvdXJjZVR5cGVJZDogc3RyaW5nO1xuICBASW5wdXQoKSByZXNvdXJjZXNUeXBlczogSnNUYWJsZTxJUmVzb3VyY2VUeXBlPjtcbiAgQElucHV0KCkgc2VsZWN0ZWRFbnRyeUlkczogSUVudHJ5SWRzO1xuICBASW5wdXQoKSBmb3JtRGF0YUF0dHJpYnV0ZXM6IElGb3JtRGF0YVtdO1xuXG4gIEBPdXRwdXQoKSB1cGRhdGVkRW50cnlBdHRyaWJ1dGVzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZWRpdEJ0bicsIHsgc3RhdGljOiBmYWxzZSB9KSBlZGl0QnRuOiBNYXRCdXR0b247XG5cbiAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEFkZEVkaXRHZW5lcmljRm9ybURpYWxvZ0NvbXBvbmVudCwgYW55PjtcbiAgcHVibGljIGNsaWNrT25VcGRhdGU6IGJvb2xlYW47XG4gIHB1YmxpYyBzY2ltUHJvcGVydGllczogSVNjaW1Qcm9wZXJ0aWVzID0geyBzY2hlbWFzOiBbXSB9O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZykge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNjaW1Qcm9wZXJ0aWVzLnNjaGVtYXMgPSBbXG4gICAgICB0aGlzLnJlc291cmNlc1R5cGVzLmJ5SWRbdGhpcy5zZWxlY3RlZFJlc291cmNlVHlwZUlkXS5zY2hlbWEsXG4gICAgXTtcbiAgfVxuXG4gIG9wZW5FZGl0RW50cnlEaWFsb2coXG4gICAgdXBkYXRlZEVudHJ5QXR0cmlidXRlczogRXZlbnRFbWl0dGVyPGFueT4sXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBzY2ltUHJvcGVydGllczogSVNjaW1Qcm9wZXJ0aWVzLFxuICAgIHNlbGVjdGVkUmVzb3VyY2VUeXBlSWQ6IHN0cmluZyxcbiAgICByZXNvdXJjZXNUeXBlczogSnNUYWJsZTxJUmVzb3VyY2VUeXBlPixcbiAgICBzZWxlY3RlZEVudHJ5SWRzOiBJRW50cnlJZHMsXG4gICAgZm9ybURhdGFBdHRyaWJ1dGVzOiBJRm9ybURhdGFbXVxuICApOiB2b2lkIHtcbiAgICB0aGlzLmNsaWNrT25VcGRhdGUgPSB0cnVlO1xuXG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFkZEVkaXRHZW5lcmljRm9ybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgbWluV2lkdGg6ICc0MCUnLFxuICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIGZvcm1EYXRhOiBmb3JtRGF0YUF0dHJpYnV0ZXMsXG4gICAgICAgIGVuZHBvaW50OiByZXNvdXJjZXNUeXBlcy5ieUlkW3NlbGVjdGVkUmVzb3VyY2VUeXBlSWRdLmVuZHBvaW50LFxuICAgICAgICBlbnRyeUlkOiBzZWxlY3RlZEVudHJ5SWRzLmlkLFxuICAgICAgICBzY2ltUHJvcGVydGllcyxcbiAgICAgICAgY3J1ZEFjdGlvbjogJ3VwZGF0ZScsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMuZGlhbG9nUmVmXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoXykgPT4gKHRoaXMuY2xpY2tPblVwZGF0ZSA9IGZhbHNlKSksXG4gICAgICAgIGRlbGF5KDApLFxuICAgICAgICB0YXAoKF8pID0+IHtcbiAgICAgICAgICBpZiAoISF0aGlzLmVkaXRCdG4pIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdEJ0bi5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLnVwZGF0ZVN1Y2NlZWRlZFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpKSxcbiAgICAgICAgdGFwKChyZXF1ZXN0OiBhbnkpID0+IHVwZGF0ZWRFbnRyeUF0dHJpYnV0ZXMuZW1pdChyZXF1ZXN0KSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGNsaWNrT25CdG4oKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuRWRpdEVudHJ5RGlhbG9nKFxuICAgICAgdGhpcy51cGRhdGVkRW50cnlBdHRyaWJ1dGVzLFxuICAgICAgdGhpcy5lZGl0QWN0aW9uLnRpdGxlLFxuICAgICAgdGhpcy5zY2ltUHJvcGVydGllcyxcbiAgICAgIHRoaXMuc2VsZWN0ZWRSZXNvdXJjZVR5cGVJZCxcbiAgICAgIHRoaXMucmVzb3VyY2VzVHlwZXMsXG4gICAgICB0aGlzLnNlbGVjdGVkRW50cnlJZHMsXG4gICAgICB0aGlzLmZvcm1EYXRhQXR0cmlidXRlc1xuICAgICk7XG4gIH1cbn1cbiIsIjwhLS0gQ29weXJpZ2h0IChDKSAyMDIwLTIwMjQgTGluYWdvcmFcblxuVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXJcbnRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZVxuU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnlcbmxhdGVyIHZlcnNpb24sIHByb3ZpZGVkIHlvdSBjb21wbHkgd2l0aCB0aGUgQWRkaXRpb25hbCBUZXJtcyBhcHBsaWNhYmxlIGZvclxuTGluSUQgRGlyZWN0b3J5IE1hbmFnZXIgc29mdHdhcmUgYnkgTElOQUdPUkEgcHVyc3VhbnQgdG8gU2VjdGlvbiA3IG9mIHRoZSBHTlVcbkFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBzdWJzZWN0aW9ucyAoYiksIChjKSwgYW5kIChlKSwgcHVyc3VhbnQgdG9cbndoaWNoIHRoZXNlIEFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXMgbXVzdCBub3RhYmx5IChpKSByZXRhaW4gdGhlIGRpc3BsYXkgb2ZcbnRoZSBcIkxpbklE4oSiXCIgdHJhZGVtYXJrL2xvZ28gYXQgdGhlIHRvcCBvZiB0aGUgaW50ZXJmYWNlIHdpbmRvdywgdGhlIGRpc3BsYXlcbm9mIHRoZSDigJxZb3UgYXJlIHVzaW5nIHRoZSBPcGVuIFNvdXJjZSBhbmQgZnJlZSB2ZXJzaW9uIG9mIExpbklE4oSiLCBwb3dlcmVkIGJ5XG5MaW5hZ29yYSDCqSAyMDA54oCTMjAxMy4gQ29udHJpYnV0ZSB0byBMaW5JRCBSJkQgYnkgc3Vic2NyaWJpbmcgdG8gYW4gRW50ZXJwcmlzZVxub2ZmZXIh4oCdIGluZm9ib3ggYW5kIGluIHRoZSBlLW1haWxzIHNlbnQgd2l0aCB0aGUgUHJvZ3JhbSwgbm90aWNlIGFwcGVuZGVkIHRvXG5hbnkgdHlwZSBvZiBvdXRib3VuZCBtZXNzYWdlcyAoZS5nLiBlLW1haWwgYW5kIG1lZXRpbmcgcmVxdWVzdHMpIGFzIHdlbGwgYXNcbmluIHRoZSBMaW5JRCBEaXJlY3RvcnkgTWFuYWdlciB1c2VyIGludGVyZmFjZSwgKGlpKSByZXRhaW4gYWxsIGh5cGVydGV4dFxubGlua3MgYmV0d2VlbiBMaW5JRCBEaXJlY3RvcnkgTWFuYWdlciBhbmQgaHR0cHM6Ly9saW5pZC5vcmcvLCBhcyB3ZWxsIGFzXG5iZXR3ZWVuIExJTkFHT1JBIGFuZCBMSU5BR09SQS5jb20sIGFuZCAoaWlpKSByZWZyYWluIGZyb20gaW5mcmluZ2luZyBMSU5BR09SQVxuaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBvdmVyIGl0cyB0cmFkZW1hcmtzIGFuZCBjb21tZXJjaWFsIGJyYW5kcy4gT3RoZXJcbkFkZGl0aW9uYWwgVGVybXMgYXBwbHksIHNlZSA8aHR0cDovL3d3dy5saW5hZ29yYS5jb20vbGljZW5zZXMvPiBmb3IgbW9yZVxuZGV0YWlscy5cblxuVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG5BTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTU1xuRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZVxuZGV0YWlscy5cblxuWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZFxuaXRzIGFwcGxpY2FibGUgQWRkaXRpb25hbCBUZXJtcyBmb3IgTGluSUQgRGlyZWN0b3J5IE1hbmFnZXIgYWxvbmcgd2l0aCB0aGlzXG5wcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4gZm9yIHRoZSBHTlUgQWZmZXJvXG5HZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhbmQgPGh0dHA6Ly93d3cubGluYWdvcmEuY29tL2xpY2Vuc2VzLz4gZm9yXG50aGUgQWRkaXRpb25hbCBUZXJtcyBhcHBsaWNhYmxlIHRvIHRoZSBMaW5JRCBEaXJlY3RvcnkgTWFuYWdlciBzb2Z0d2FyZS4gLS0+XG5cbjxidXR0b25cbiAgI2VkaXRCdG49XCJtYXRCdXR0b25cIlxuICBtYXQtcmFpc2VkLWJ1dHRvblxuICBjb2xvcj1cImFjY2VudFwiXG4gIFtkaXNhYmxlZF09XCJjbGlja09uVXBkYXRlXCJcbiAgKGNsaWNrKT1cImNsaWNrT25CdG4oKVwiXG4gIGNsYXNzPVwiYnRuLWVkaXQtZGV0YWlsXCJcbj5cbiAge3sgZWRpdEFjdGlvbi5idG5MYWJlbCB9fVxuPC9idXR0b24+XG4iXX0=