truly-ui
Version:
Web Components for Desktop Applications.
174 lines (172 loc) • 22.3 kB
JavaScript
/*
MIT License
Copyright (c) 2019 Temainfo Software
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "../../i18n/i18n.service";
export class FilterOptionsService {
constructor(i18n) {
this.i18n = i18n;
}
optionDescription() {
return this.i18n.getLocale().Datatable;
}
getOptionsByType(type) {
switch (type) {
case 'text':
return this.getOptionsText();
case 'number':
return this.getOptionsNumber();
case 'date':
return this.getOptionsDate();
default:
return this.getOptionsDefault();
}
}
getOptionsDefault() {
return [{
description: this.optionDescription().filterOptionStartsWith,
valueItem: 'startsWith',
icon: 'dx-icon-filter-operation-starts-with'
}, {
description: this.optionDescription().filterOptionContains,
valueItem: 'contains',
icon: 'dx-icon-filter-operation-contains'
}, {
description: this.optionDescription().filterOptionNotContains,
valueItem: 'notContains',
icon: 'dx-icon-filter-operation-not-contains'
}, {
description: this.optionDescription().filterOptionEndsWith,
valueItem: 'endsWith',
icon: 'dx-icon-filter-operation-ends-with'
}, {
description: this.optionDescription().filterOptionEquals,
valueItem: 'equals',
icon: 'dx-icon-filter-operation-equals'
}, {
description: this.optionDescription().filterOptionNotEquals,
valueItem: 'notEquals',
icon: 'dx-icon-filter-operation-not-equals'
}, {
description: this.optionDescription().filterOptionLessThan,
valueItem: 'lessThan',
icon: 'dx-icon-filter-operation-less'
}, {
description: this.optionDescription().filterOptionGreaterThan,
valueItem: 'greaterThan',
icon: 'dx-icon-filter-operation-greater'
}, {
description: this.optionDescription().filterOptionLessThanOrEqual,
valueItem: 'lessThanOrEqual',
icon: 'dx-icon-filter-operation-less-equal'
}, {
description: this.optionDescription().filterOptionGreaterThanOrEqual,
valueItem: 'greaterThanOrEqual',
icon: 'dx-icon-filter-operation-greater-equal'
}];
}
getOptionsText() {
return [{
description: this.optionDescription().filterOptionStartsWith,
valueItem: 'startsWith',
icon: 'dx-icon-filter-operation-starts-with'
}, {
description: this.optionDescription().filterOptionContains,
valueItem: 'contains',
icon: 'dx-icon-filter-operation-contains'
}, {
description: this.optionDescription().filterOptionNotContains,
valueItem: 'notContains',
icon: 'dx-icon-filter-operation-not-contains'
}, {
description: this.optionDescription().filterOptionEndsWith,
valueItem: 'endsWith',
icon: 'dx-icon-filter-operation-ends-with'
}, {
description: this.optionDescription().filterOptionEquals,
valueItem: 'equals',
icon: 'dx-icon-filter-operation-equals'
}, {
description: this.optionDescription().filterOptionNotEquals,
valueItem: 'notEquals',
icon: 'dx-icon-filter-operation-not-equals'
}];
}
getOptionsNumber() {
return [{
description: this.optionDescription().filterOptionEquals,
valueItem: 'equals',
icon: 'dx-icon-filter-operation-equals'
}, {
description: this.optionDescription().filterOptionNotEquals,
valueItem: 'notEquals',
icon: 'dx-icon-filter-operation-not-equals'
}, {
description: this.optionDescription().filterOptionLessThan,
valueItem: 'lessThan',
icon: 'dx-icon-filter-operation-less'
}, {
description: this.optionDescription().filterOptionGreaterThan,
valueItem: 'greaterThan',
icon: 'dx-icon-filter-operation-greater'
}, {
description: this.optionDescription().filterOptionLessThanOrEqual,
valueItem: 'lessThanOrEqual',
icon: 'dx-icon-filter-operation-less-equal'
}, {
description: this.optionDescription().filterOptionGreaterThanOrEqual,
valueItem: 'greaterThanOrEqual',
icon: 'dx-icon-filter-operation-greater-equal'
}];
}
getOptionsDate() {
return [{
description: this.optionDescription().filterOptionEquals,
valueItem: 'equals',
icon: 'dx-icon-filter-operation-equals'
}, {
description: this.optionDescription().filterOptionNotEquals,
valueItem: 'notEquals',
icon: 'dx-icon-filter-operation-not-equals'
}, {
description: this.optionDescription().filterOptionLessThan,
valueItem: 'lessThan',
icon: 'dx-icon-filter-operation-less'
}, {
description: this.optionDescription().filterOptionGreaterThan,
valueItem: 'greaterThan',
icon: 'dx-icon-filter-operation-greater'
}, {
description: this.optionDescription().filterOptionLessThanOrEqual,
valueItem: 'lessThanOrEqual',
icon: 'dx-icon-filter-operation-less-equal'
}, {
description: this.optionDescription().filterOptionGreaterThanOrEqual,
valueItem: 'greaterThanOrEqual',
icon: 'dx-icon-filter-operation-greater-equal'
}];
}
}
/** @nocollapse */ FilterOptionsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterOptionsService, deps: [{ token: i1.I18nService }], target: i0.ɵɵFactoryTarget.Injectable });
/** @nocollapse */ FilterOptionsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterOptionsService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FilterOptionsService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.I18nService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLWZpbHRlci1vcHRpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnVseS11aS9zcmMvY29tcG9uZW50cy9kYXRhdGFibGUvc2VydmljZXMvZGF0YXRhYmxlLWZpbHRlci1vcHRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0JFO0FBRUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBSzNDLE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsWUFBcUIsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUFJLENBQUM7SUFFM0MsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUUsSUFBSTtRQUNwQixRQUFTLElBQUksRUFBRztZQUNkLEtBQUssTUFBTTtnQkFDVCxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMvQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNqQyxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDL0I7Z0JBQ0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLENBQUU7Z0JBQ1AsV0FBVyxFQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLHNCQUFzQjtnQkFDN0QsU0FBUyxFQUFHLFlBQVk7Z0JBQ3hCLElBQUksRUFBRyxzQ0FBc0M7YUFDOUMsRUFBRTtnQkFDRCxXQUFXLEVBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsb0JBQW9CO2dCQUMzRCxTQUFTLEVBQUcsVUFBVTtnQkFDdEIsSUFBSSxFQUFHLG1DQUFtQzthQUMzQyxFQUFFO2dCQUNELFdBQVcsRUFBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyx1QkFBdUI7Z0JBQzlELFNBQVMsRUFBRyxhQUFhO2dCQUN6QixJQUFJLEVBQUcsdUNBQXVDO2FBQy9DLEVBQUU7Z0JBQ0QsV0FBVyxFQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLG9CQUFvQjtnQkFDM0QsU0FBUyxFQUFHLFVBQVU7Z0JBQ3RCLElBQUksRUFBRyxvQ0FBb0M7YUFDNUMsRUFBRTtnQkFDRCxXQUFXLEVBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsa0JBQWtCO2dCQUN6RCxTQUFTLEVBQUcsUUFBUTtnQkFDcEIsSUFBSSxFQUFHLGlDQUFpQzthQUN6QyxFQUFFO2dCQUNELFdBQVcsRUFBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxxQkFBcUI7Z0JBQzVELFNBQVMsRUFBRyxXQUFXO2dCQUN2QixJQUFJLEVBQUcscUNBQXFDO2FBQzdDLEVBQUU7Z0JBQ0QsV0FBVyxFQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLG9CQUFvQjtnQkFDM0QsU0FBUyxFQUFHLFVBQVU7Z0JBQ3RCLElBQUksRUFBRywrQkFBK0I7YUFDdkMsRUFBRTtnQkFDRCxXQUFXLEVBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsdUJBQXVCO2dCQUM5RCxTQUFTLEVBQUcsYUFBYTtnQkFDekIsSUFBSSxFQUFHLGtDQUFrQzthQUMxQyxFQUFFO2dCQUNELFdBQVcsRUFBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQywyQkFBMkI7Z0JBQ2xFLFNBQVMsRUFBRyxpQkFBaUI7Z0JBQzdCLElBQUksRUFBRyxxQ0FBcUM7YUFDN0MsRUFBRTtnQkFDRCxXQUFXLEVBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsOEJBQThCO2dCQUNyRSxTQUFTLEVBQUcsb0JBQW9CO2dCQUNoQyxJQUFJLEVBQUcsd0NBQXdDO2FBQ2hELENBQUUsQ0FBQztJQUNOLENBQUM7SUFHRCxjQUFjO1FBQ1osT0FBTyxDQUFFO2dCQUNQLFdBQVcsRUFBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxzQkFBc0I7Z0JBQzdELFNBQVMsRUFBRyxZQUFZO2dCQUN4QixJQUFJLEVBQUcsc0NBQXNDO2FBQzlDLEVBQUU7Z0JBQ0QsV0FBVyxFQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLG9CQUFvQjtnQkFDM0QsU0FBUyxFQUFHLFVBQVU7Z0JBQ3RCLElBQUksRUFBRyxtQ0FBbUM7YUFDM0MsRUFBRTtnQkFDRCxXQUFXLEVBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsdUJBQXVCO2dCQUM5RCxTQUFTLEVBQUcsYUFBYTtnQkFDekIsSUFBSSxFQUFHLHVDQUF1QzthQUMvQyxFQUFFO2dCQUNELFdBQVcsRUFBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxvQkFBb0I7Z0JBQzNELFNBQVMsRUFBRyxVQUFVO2dCQUN0QixJQUFJLEVBQUcsb0NBQW9DO2FBQzVDLEVBQUU7Z0JBQ0QsV0FBVyxFQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLGtCQUFrQjtnQkFDekQsU0FBUyxFQUFHLFFBQVE7Z0JBQ3BCLElBQUksRUFBRyxpQ0FBaUM7YUFDekMsRUFBRTtnQkFDRCxXQUFXLEVBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMscUJBQXFCO2dCQUM1RCxTQUFTLEVBQUcsV0FBVztnQkFDdkIsSUFBSSxFQUFHLHFDQUFxQzthQUM3QyxDQUFFLENBQUM7SUFDTixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxDQUFFO2dCQUNQLFdBQVcsRUFBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxrQkFBa0I7Z0JBQ3pELFNBQVMsRUFBRyxRQUFRO2dCQUNwQixJQUFJLEVBQUcsaUNBQWlDO2FBQ3pDLEVBQUU7Z0JBQ0QsV0FBVyxFQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLHFCQUFxQjtnQkFDNUQsU0FBUyxFQUFHLFdBQVc7Z0JBQ3ZCLElBQUksRUFBRyxxQ0FBcUM7YUFDN0MsRUFBRTtnQkFDRCxXQUFXLEVBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsb0JBQW9CO2dCQUMzRCxTQUFTLEVBQUcsVUFBVTtnQkFDdEIsSUFBSSxFQUFHLCtCQUErQjthQUN2QyxFQUFFO2dCQUNELFdBQVcsRUFBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyx1QkFBdUI7Z0JBQzlELFNBQVMsRUFBRyxhQUFhO2dCQUN6QixJQUFJLEVBQUcsa0NBQWtDO2FBQzFDLEVBQUU7Z0JBQ0QsV0FBVyxFQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLDJCQUEyQjtnQkFDbEUsU0FBUyxFQUFHLGlCQUFpQjtnQkFDN0IsSUFBSSxFQUFHLHFDQUFxQzthQUM3QyxFQUFFO2dCQUNELFdBQVcsRUFBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyw4QkFBOEI7Z0JBQ3JFLFNBQVMsRUFBRyxvQkFBb0I7Z0JBQ2hDLElBQUksRUFBRyx3Q0FBd0M7YUFDaEQsQ0FBRSxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLENBQUU7Z0JBQ1AsV0FBVyxFQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLGtCQUFrQjtnQkFDekQsU0FBUyxFQUFHLFFBQVE7Z0JBQ3BCLElBQUksRUFBRyxpQ0FBaUM7YUFDekMsRUFBRTtnQkFDRCxXQUFXLEVBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMscUJBQXFCO2dCQUM1RCxTQUFTLEVBQUcsV0FBVztnQkFDdkIsSUFBSSxFQUFHLHFDQUFxQzthQUM3QyxFQUFFO2dCQUNELFdBQVcsRUFBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxvQkFBb0I7Z0JBQzNELFNBQVMsRUFBRyxVQUFVO2dCQUN0QixJQUFJLEVBQUcsK0JBQStCO2FBQ3ZDLEVBQUU7Z0JBQ0QsV0FBVyxFQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLHVCQUF1QjtnQkFDOUQsU0FBUyxFQUFHLGFBQWE7Z0JBQ3pCLElBQUksRUFBRyxrQ0FBa0M7YUFDMUMsRUFBRTtnQkFDRCxXQUFXLEVBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsMkJBQTJCO2dCQUNsRSxTQUFTLEVBQUcsaUJBQWlCO2dCQUM3QixJQUFJLEVBQUcscUNBQXFDO2FBQzdDLEVBQUU7Z0JBQ0QsV0FBVyxFQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLDhCQUE4QjtnQkFDckUsU0FBUyxFQUFHLG9CQUFvQjtnQkFDaEMsSUFBSSxFQUFHLHdDQUF3QzthQUNoRCxDQUFFLENBQUM7SUFDTixDQUFDOztxSUFwSlUsb0JBQW9CO3lJQUFwQixvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgTUlUIExpY2Vuc2VcblxuICAgIENvcHlyaWdodCAoYykgMjAxOSBUZW1haW5mbyBTb2Z0d2FyZVxuXG4gICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICAgIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAgICBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gICAgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICAgIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICAgIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gICAgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gICAgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gICAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gICAgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gICAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAgICBTT0ZUV0FSRS5cbiovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YXRhYmxlSTE4bkludGVyZmFjZSB9IGZyb20gJy4uLy4uL2kxOG4vbGFuZ3VhZ2VzL2RhdGF0YWJsZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGaWx0ZXJPcHRpb25zU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoIHByaXZhdGUgaTE4bjogSTE4blNlcnZpY2UgKSB7fVxuXG4gIG9wdGlvbkRlc2NyaXB0aW9uKCk6IERhdGF0YWJsZUkxOG5JbnRlcmZhY2Uge1xuICAgIHJldHVybiB0aGlzLmkxOG4uZ2V0TG9jYWxlKCkuRGF0YXRhYmxlO1xuICB9XG5cbiAgZ2V0T3B0aW9uc0J5VHlwZSggdHlwZSApOiBBcnJheTxhbnk+IHtcbiAgICBzd2l0Y2ggKCB0eXBlICkge1xuICAgICAgY2FzZSAndGV4dCcgOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25zVGV4dCgpO1xuICAgICAgY2FzZSAnbnVtYmVyJyA6XG4gICAgICAgIHJldHVybiB0aGlzLmdldE9wdGlvbnNOdW1iZXIoKTtcbiAgICAgIGNhc2UgJ2RhdGUnIDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9uc0RhdGUoKTtcbiAgICAgIGRlZmF1bHQgOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25zRGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldE9wdGlvbnNEZWZhdWx0KCkge1xuICAgIHJldHVybiBbIHtcbiAgICAgIGRlc2NyaXB0aW9uIDogdGhpcy5vcHRpb25EZXNjcmlwdGlvbigpLmZpbHRlck9wdGlvblN0YXJ0c1dpdGgsXG4gICAgICB2YWx1ZUl0ZW0gOiAnc3RhcnRzV2l0aCcsXG4gICAgICBpY29uIDogJ2R4LWljb24tZmlsdGVyLW9wZXJhdGlvbi1zdGFydHMtd2l0aCdcbiAgICB9LCB7XG4gICAgICBkZXNjcmlwdGlvbiA6IHRoaXMub3B0aW9uRGVzY3JpcHRpb24oKS5maWx0ZXJPcHRpb25Db250YWlucyxcbiAgICAgIHZhbHVlSXRlbSA6ICdjb250YWlucycsXG4gICAgICBpY29uIDogJ2R4LWljb24tZmlsdGVyLW9wZXJhdGlvbi1jb250YWlucydcbiAgICB9LCB7XG4gICAgICBkZXNjcmlwdGlvbiA6IHRoaXMub3B0aW9uRGVzY3JpcHRpb24oKS5maWx0ZXJPcHRpb25Ob3RDb250YWlucyxcbiAgICAgIHZhbHVlSXRlbSA6ICdub3RDb250YWlucycsXG4gICAgICBpY29uIDogJ2R4LWljb24tZmlsdGVyLW9wZXJhdGlvbi1ub3QtY29udGFpbnMnXG4gICAgfSwge1xuICAgICAgZGVzY3JpcHRpb24gOiB0aGlzLm9wdGlvbkRlc2NyaXB0aW9uKCkuZmlsdGVyT3B0aW9uRW5kc1dpdGgsXG4gICAgICB2YWx1ZUl0ZW0gOiAnZW5kc1dpdGgnLFxuICAgICAgaWNvbiA6ICdkeC1pY29uLWZpbHRlci1vcGVyYXRpb24tZW5kcy13aXRoJ1xuICAgIH0sIHtcbiAgICAgIGRlc2NyaXB0aW9uIDogdGhpcy5vcHRpb25EZXNjcmlwdGlvbigpLmZpbHRlck9wdGlvbkVxdWFscyxcbiAgICAgIHZhbHVlSXRlbSA6ICdlcXVhbHMnLFxuICAgICAgaWNvbiA6ICdkeC1pY29uLWZpbHRlci1vcGVyYXRpb24tZXF1YWxzJ1xuICAgIH0sIHtcbiAgICAgIGRlc2NyaXB0aW9uIDogdGhpcy5vcHRpb25EZXNjcmlwdGlvbigpLmZpbHRlck9wdGlvbk5vdEVxdWFscyxcbiAgICAgIHZhbHVlSXRlbSA6ICdub3RFcXVhbHMnLFxuICAgICAgaWNvbiA6ICdkeC1pY29uLWZpbHRlci1vcGVyYXRpb24tbm90LWVxdWFscydcbiAgICB9LCB7XG4gICAgICBkZXNjcmlwdGlvbiA6IHRoaXMub3B0aW9uRGVzY3JpcHRpb24oKS5maWx0ZXJPcHRpb25MZXNzVGhhbixcbiAgICAgIHZhbHVlSXRlbSA6ICdsZXNzVGhhbicsXG4gICAgICBpY29uIDogJ2R4LWljb24tZmlsdGVyLW9wZXJhdGlvbi1sZXNzJ1xuICAgIH0sIHtcbiAgICAgIGRlc2NyaXB0aW9uIDogdGhpcy5vcHRpb25EZXNjcmlwdGlvbigpLmZpbHRlck9wdGlvbkdyZWF0ZXJUaGFuLFxuICAgICAgdmFsdWVJdGVtIDogJ2dyZWF0ZXJUaGFuJyxcbiAgICAgIGljb24gOiAnZHgtaWNvbi1maWx0ZXItb3BlcmF0aW9uLWdyZWF0ZXInXG4gICAgfSwge1xuICAgICAgZGVzY3JpcHRpb24gOiB0aGlzLm9wdGlvbkRlc2NyaXB0aW9uKCkuZmlsdGVyT3B0aW9uTGVzc1RoYW5PckVxdWFsLFxuICAgICAgdmFsdWVJdGVtIDogJ2xlc3NUaGFuT3JFcXVhbCcsXG4gICAgICBpY29uIDogJ2R4LWljb24tZmlsdGVyLW9wZXJhdGlvbi1sZXNzLWVxdWFsJ1xuICAgIH0sIHtcbiAgICAgIGRlc2NyaXB0aW9uIDogdGhpcy5vcHRpb25EZXNjcmlwdGlvbigpLmZpbHRlck9wdGlvbkdyZWF0ZXJUaGFuT3JFcXVhbCxcbiAgICAgIHZhbHVlSXRlbSA6ICdncmVhdGVyVGhhbk9yRXF1YWwnLFxuICAgICAgaWNvbiA6ICdkeC1pY29uLWZpbHRlci1vcGVyYXRpb24tZ3JlYXRlci1lcXVhbCdcbiAgICB9IF07XG4gIH1cblxuXG4gIGdldE9wdGlvbnNUZXh0KCkge1xuICAgIHJldHVybiBbIHtcbiAgICAgIGRlc2NyaXB0aW9uIDogdGhpcy5vcHRpb25EZXNjcmlwdGlvbigpLmZpbHRlck9wdGlvblN0YXJ0c1dpdGgsXG4gICAgICB2YWx1ZUl0ZW0gOiAnc3RhcnRzV2l0aCcsXG4gICAgICBpY29uIDogJ2R4LWljb24tZmlsdGVyLW9wZXJhdGlvbi1zdGFydHMtd2l0aCdcbiAgICB9LCB7XG4gICAgICBkZXNjcmlwdGlvbiA6IHRoaXMub3B0aW9uRGVzY3JpcHRpb24oKS5maWx0ZXJPcHRpb25Db250YWlucyxcbiAgICAgIHZhbHVlSXRlbSA6ICdjb250YWlucycsXG4gICAgICBpY29uIDogJ2R4LWljb24tZmlsdGVyLW9wZXJhdGlvbi1jb250YWlucydcbiAgICB9LCB7XG4gICAgICBkZXNjcmlwdGlvbiA6IHRoaXMub3B0aW9uRGVzY3JpcHRpb24oKS5maWx0ZXJPcHRpb25Ob3RDb250YWlucyxcbiAgICAgIHZhbHVlSXRlbSA6ICdub3RDb250YWlucycsXG4gICAgICBpY29uIDogJ2R4LWljb24tZmlsdGVyLW9wZXJhdGlvbi1ub3QtY29udGFpbnMnXG4gICAgfSwge1xuICAgICAgZGVzY3JpcHRpb24gOiB0aGlzLm9wdGlvbkRlc2NyaXB0aW9uKCkuZmlsdGVyT3B0aW9uRW5kc1dpdGgsXG4gICAgICB2YWx1ZUl0ZW0gOiAnZW5kc1dpdGgnLFxuICAgICAgaWNvbiA6ICdkeC1pY29uLWZpbHRlci1vcGVyYXRpb24tZW5kcy13aXRoJ1xuICAgIH0sIHtcbiAgICAgIGRlc2NyaXB0aW9uIDogdGhpcy5vcHRpb25EZXNjcmlwdGlvbigpLmZpbHRlck9wdGlvbkVxdWFscyxcbiAgICAgIHZhbHVlSXRlbSA6ICdlcXVhbHMnLFxuICAgICAgaWNvbiA6ICdkeC1pY29uLWZpbHRlci1vcGVyYXRpb24tZXF1YWxzJ1xuICAgIH0sIHtcbiAgICAgIGRlc2NyaXB0aW9uIDogdGhpcy5vcHRpb25EZXNjcmlwdGlvbigpLmZpbHRlck9wdGlvbk5vdEVxdWFscyxcbiAgICAgIHZhbHVlSXRlbSA6ICdub3RFcXVhbHMnLFxuICAgICAgaWNvbiA6ICdkeC1pY29uLWZpbHRlci1vcGVyYXRpb24tbm90LWVxdWFscydcbiAgICB9IF07XG4gIH1cblxuICBnZXRPcHRpb25zTnVtYmVyKCkge1xuICAgIHJldHVybiBbIHtcbiAgICAgIGRlc2NyaXB0aW9uIDogdGhpcy5vcHRpb25EZXNjcmlwdGlvbigpLmZpbHRlck9wdGlvbkVxdWFscyxcbiAgICAgIHZhbHVlSXRlbSA6ICdlcXVhbHMnLFxuICAgICAgaWNvbiA6ICdkeC1pY29uLWZpbHRlci1vcGVyYXRpb24tZXF1YWxzJ1xuICAgIH0sIHtcbiAgICAgIGRlc2NyaXB0aW9uIDogdGhpcy5vcHRpb25EZXNjcmlwdGlvbigpLmZpbHRlck9wdGlvbk5vdEVxdWFscyxcbiAgICAgIHZhbHVlSXRlbSA6ICdub3RFcXVhbHMnLFxuICAgICAgaWNvbiA6ICdkeC1pY29uLWZpbHRlci1vcGVyYXRpb24tbm90LWVxdWFscydcbiAgICB9LCB7XG4gICAgICBkZXNjcmlwdGlvbiA6IHRoaXMub3B0aW9uRGVzY3JpcHRpb24oKS5maWx0ZXJPcHRpb25MZXNzVGhhbixcbiAgICAgIHZhbHVlSXRlbSA6ICdsZXNzVGhhbicsXG4gICAgICBpY29uIDogJ2R4LWljb24tZmlsdGVyLW9wZXJhdGlvbi1sZXNzJ1xuICAgIH0sIHtcbiAgICAgIGRlc2NyaXB0aW9uIDogdGhpcy5vcHRpb25EZXNjcmlwdGlvbigpLmZpbHRlck9wdGlvbkdyZWF0ZXJUaGFuLFxuICAgICAgdmFsdWVJdGVtIDogJ2dyZWF0ZXJUaGFuJyxcbiAgICAgIGljb24gOiAnZHgtaWNvbi1maWx0ZXItb3BlcmF0aW9uLWdyZWF0ZXInXG4gICAgfSwge1xuICAgICAgZGVzY3JpcHRpb24gOiB0aGlzLm9wdGlvbkRlc2NyaXB0aW9uKCkuZmlsdGVyT3B0aW9uTGVzc1RoYW5PckVxdWFsLFxuICAgICAgdmFsdWVJdGVtIDogJ2xlc3NUaGFuT3JFcXVhbCcsXG4gICAgICBpY29uIDogJ2R4LWljb24tZmlsdGVyLW9wZXJhdGlvbi1sZXNzLWVxdWFsJ1xuICAgIH0sIHtcbiAgICAgIGRlc2NyaXB0aW9uIDogdGhpcy5vcHRpb25EZXNjcmlwdGlvbigpLmZpbHRlck9wdGlvbkdyZWF0ZXJUaGFuT3JFcXVhbCxcbiAgICAgIHZhbHVlSXRlbSA6ICdncmVhdGVyVGhhbk9yRXF1YWwnLFxuICAgICAgaWNvbiA6ICdkeC1pY29uLWZpbHRlci1vcGVyYXRpb24tZ3JlYXRlci1lcXVhbCdcbiAgICB9IF07XG4gIH1cblxuICBnZXRPcHRpb25zRGF0ZSgpIHtcbiAgICByZXR1cm4gWyB7XG4gICAgICBkZXNjcmlwdGlvbiA6IHRoaXMub3B0aW9uRGVzY3JpcHRpb24oKS5maWx0ZXJPcHRpb25FcXVhbHMsXG4gICAgICB2YWx1ZUl0ZW0gOiAnZXF1YWxzJyxcbiAgICAgIGljb24gOiAnZHgtaWNvbi1maWx0ZXItb3BlcmF0aW9uLWVxdWFscydcbiAgICB9LCB7XG4gICAgICBkZXNjcmlwdGlvbiA6IHRoaXMub3B0aW9uRGVzY3JpcHRpb24oKS5maWx0ZXJPcHRpb25Ob3RFcXVhbHMsXG4gICAgICB2YWx1ZUl0ZW0gOiAnbm90RXF1YWxzJyxcbiAgICAgIGljb24gOiAnZHgtaWNvbi1maWx0ZXItb3BlcmF0aW9uLW5vdC1lcXVhbHMnXG4gICAgfSwge1xuICAgICAgZGVzY3JpcHRpb24gOiB0aGlzLm9wdGlvbkRlc2NyaXB0aW9uKCkuZmlsdGVyT3B0aW9uTGVzc1RoYW4sXG4gICAgICB2YWx1ZUl0ZW0gOiAnbGVzc1RoYW4nLFxuICAgICAgaWNvbiA6ICdkeC1pY29uLWZpbHRlci1vcGVyYXRpb24tbGVzcydcbiAgICB9LCB7XG4gICAgICBkZXNjcmlwdGlvbiA6IHRoaXMub3B0aW9uRGVzY3JpcHRpb24oKS5maWx0ZXJPcHRpb25HcmVhdGVyVGhhbixcbiAgICAgIHZhbHVlSXRlbSA6ICdncmVhdGVyVGhhbicsXG4gICAgICBpY29uIDogJ2R4LWljb24tZmlsdGVyLW9wZXJhdGlvbi1ncmVhdGVyJ1xuICAgIH0sIHtcbiAgICAgIGRlc2NyaXB0aW9uIDogdGhpcy5vcHRpb25EZXNjcmlwdGlvbigpLmZpbHRlck9wdGlvbkxlc3NUaGFuT3JFcXVhbCxcbiAgICAgIHZhbHVlSXRlbSA6ICdsZXNzVGhhbk9yRXF1YWwnLFxuICAgICAgaWNvbiA6ICdkeC1pY29uLWZpbHRlci1vcGVyYXRpb24tbGVzcy1lcXVhbCdcbiAgICB9LCB7XG4gICAgICBkZXNjcmlwdGlvbiA6IHRoaXMub3B0aW9uRGVzY3JpcHRpb24oKS5maWx0ZXJPcHRpb25HcmVhdGVyVGhhbk9yRXF1YWwsXG4gICAgICB2YWx1ZUl0ZW0gOiAnZ3JlYXRlclRoYW5PckVxdWFsJyxcbiAgICAgIGljb24gOiAnZHgtaWNvbi1maWx0ZXItb3BlcmF0aW9uLWdyZWF0ZXItZXF1YWwnXG4gICAgfSBdO1xuICB9XG59XG4iXX0=