@maplander/components 0.21.42 → 0.21.44
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/_theming.scss +0 -1
- package/bundles/maplander-components.umd.js +3 -173
- package/bundles/maplander-components.umd.js.map +1 -1
- package/bundles/maplander-components.umd.min.js +2 -2
- package/bundles/maplander-components.umd.min.js.map +1 -1
- package/esm2015/lib/components/fab-filters/fab-filters.component.js +2 -2
- package/esm2015/lib/components/filters/filters.component.js +4 -85
- package/esm2015/lib/services/markers/markers.service.js +1 -68
- package/esm5/lib/components/fab-filters/fab-filters.component.js +2 -2
- package/esm5/lib/components/filters/filters.component.js +4 -103
- package/esm5/lib/services/markers/markers.service.js +1 -84
- package/fesm2015/maplander-components.js +4 -141
- package/fesm2015/maplander-components.js.map +1 -1
- package/fesm5/maplander-components.js +4 -174
- package/fesm5/maplander-components.js.map +1 -1
- package/lib/components/filters/filters.component.d.ts +1 -16
- package/lib/services/markers/markers.service.d.ts +1 -12
- package/maplander-components.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -239,7 +239,7 @@ export class FabFiltersComponent {
|
|
|
239
239
|
FabFiltersComponent.decorators = [
|
|
240
240
|
{ type: Component, args: [{
|
|
241
241
|
selector: 'lib-fab-filters',
|
|
242
|
-
template: "<div class=\"fab-filters\">\r\n <button mat-flat-button=\"\" color=\"primary\" class=\"btn_filters\" (click)=\"openFilters()\">\r\n Filtros\r\n </button>\r\n
|
|
242
|
+
template: "<div class=\"fab-filters\">\r\n <button mat-flat-button=\"\" color=\"primary\" class=\"btn_filters\" (click)=\"openFilters()\">\r\n Filtros\r\n </button>\r\n <div class=\"filters-container\">\r\n <ng-template [ngIf]=\"chips.length > 0\">\r\n <mat-chip-list aria-orientation=\"horizontal\">\r\n <ng-container *ngFor=\"let chip of chips\">\r\n <mat-chip (click)=\"onClickChip(chip.type)\">\r\n <ng-container [ngSwitch]=\"chip.type\">\r\n <ng-container *ngSwitchCase=\"'PROPERTY_TYPE'\">\r\n <span class=\"icon property-icon ic-property-{{chip.icon}}\"\r\n [ngStyle]=\"{'background': 'var(--' + chip.icon + ')'}\"></span>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'LISTING'\">\r\n <ng-template [ngIf]=\"chip.icon[0] !== 'mlm'\" [ngIfElse]=\"mlm\">\r\n <mat-icon class=\"listing-icon\">\r\n list\r\n </mat-icon>\r\n </ng-template>\r\n <ng-template #mlm>\r\n <mat-icon class=\"listing-icon\" svgIcon=\"opi:mlm\"></mat-icon>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'AMENITIES'\">\r\n <span class=\"icon ic-amenities-{{chip.icon[0]}}\"></span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container *ngFor=\"let i of chip.icon\">\r\n <span class=\"icon ic-features-{{i}}\"></span>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n {{chip.text}}\r\n </mat-chip>\r\n </ng-container>\r\n </mat-chip-list>\r\n </ng-template>\r\n </div>\r\n</div>\r\n",
|
|
243
243
|
styles: [":host{display:block;position:inherit;top:inherit;bottom:inherit;left:inherit;right:inherit;z-index:inherit;width:inherit}.fab-filters{display:flex;width:100%;border-radius:8px 0 0 8px}.fab-filters .filters-container{width:calc(100% - 64px);height:40px;padding-right:8px;box-sizing:border-box;border-radius:4px 4px 4px 0;display:flex;align-items:center;transition:150ms}.fab-filters .filters-container mat-chip-list{width:100%;height:100%;overflow:hidden}.fab-filters .filters-container mat-chip-list mat-chip{min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content}.fab-filters ::ng-deep .filters-container mat-chip-list .mat-chip-list-wrapper{width:100%;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;padding-bottom:16px;margin:0}.fab-filters .filters-container mat-chip-list mat-chip .icon{width:24px;height:24px;font-size:16px;border-radius:50%;margin-right:8px;display:flex;align-items:center;justify-content:center}"]
|
|
244
244
|
}] }
|
|
245
245
|
];
|
|
@@ -296,4 +296,4 @@ if (false) {
|
|
|
296
296
|
*/
|
|
297
297
|
FabFiltersComponent.prototype._filtersService;
|
|
298
298
|
}
|
|
299
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG1hcGxhbmRlci9jb21wb25lbnRzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZmFiLWZpbHRlcnMvZmFiLWZpbHRlcnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFTLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBRWhGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQVNsQyxNQUFNLE9BQU8sbUJBQW1COzs7Ozs7SUFTOUIsWUFDVSxTQUEwQixFQUMxQixhQUErQixFQUMvQixlQUErQjtRQUYvQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0Isb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBVHhCLGlCQUFZLEdBQUcsV0FBVyxDQUFDO1FBVzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDOzs7O0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUzs7OztRQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQzNCLENBQUMsRUFBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTOzs7O1FBQUMsQ0FBQyxRQUF1QixFQUFFLEVBQUU7WUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkUsQ0FBQyxFQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Ozs7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzs7O0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0RBQWdELENBQUMsQ0FBQztZQUMvRCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7Ozs7O0lBRUQsV0FBVyxDQUFDLElBQW9CO1FBQzlCLElBQUksSUFBSSxLQUFLLGNBQWMsQ0FBQyxhQUFhLElBQUksSUFBSSxLQUFLLGNBQWMsQ0FBQyxRQUFRLEVBQUU7WUFDN0UsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQzs7Ozs7Ozs7SUFFTyxJQUFJLENBQUMsTUFBYyxFQUFFLEVBQVcsRUFBRSxnQkFBMEI7UUFDbEUsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQzs7Ozs7O0lBRU8sV0FBVyxDQUFDLGdCQUEwQjtRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ2QsSUFBSSxFQUFFLGNBQWMsQ0FBQyxPQUFPO1lBQzVCLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQ2pHLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUMxQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7OztJQUVPLFlBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7O2dCQUNwRSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7O2tCQUNuRixXQUFXLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxRQUFRLEdBQUcsR0FBRyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxRQUFRLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDZCxJQUFJLEVBQUUsY0FBYyxDQUFDLFFBQVE7Z0JBQzdCLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxJQUFJO2FBQ1gsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7OztJQUVPLFlBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7WUFDcEUsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsT0FBTzs7OztZQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNsRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO3dCQUNkLElBQUksRUFBRSxjQUFjLENBQUMsYUFBYTt3QkFDbEMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO3dCQUNmLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7cUJBQ3RCLENBQUMsQ0FBQztpQkFDSjtZQUNILENBQUMsRUFBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7OztJQUVPLEtBQUs7O1lBQ1AsR0FBRyxHQUFHLEVBQUU7O1lBQUUsR0FBRyxHQUFHLEVBQUU7O1lBQUUsUUFBUTtRQUNoQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxLQUFLLENBQUMsRUFBRTtZQUNyQyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUM5RDtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEtBQUssQ0FBQyxFQUFFO1lBQ25DLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzVEO1FBQ0QsSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7WUFDNUIsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNkLElBQUksRUFBRSxjQUFjLENBQUMsS0FBSztnQkFDMUIsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxFQUFFLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJLFFBQVEsRUFBRTtnQkFDeEUsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDO2FBQ2hCLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7Ozs7O0lBRU8sT0FBTyxDQUFDLEVBQVc7UUFDekIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsSUFBSSxFQUFFLGNBQWMsQ0FBQyxPQUFPO2dCQUM1QixJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQzNJLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQzthQUNsQixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Ozs7O0lBRU8sUUFBUTtRQUNkLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNkLElBQUksRUFBRSxjQUFjLENBQUMsUUFBUTtnQkFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtnQkFDdEMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDO2FBQ2xCLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzs7Ozs7SUFFTyxTQUFTO1FBQ2YsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsS0FBSyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsSUFBSSxFQUFFLGNBQWMsQ0FBQyxTQUFTO2dCQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO2dCQUN2QyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUM7YUFDbkIsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7OztJQUVPLGFBQWE7UUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsS0FBSyxDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsSUFBSSxFQUFFLGNBQWMsQ0FBQyxjQUFjO2dCQUNuQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFO2dCQUMzQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUM7YUFDbEIsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7OztJQUVPLFNBQVM7UUFDZixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsSUFBSSxFQUFFLGNBQWMsQ0FBQyxTQUFTO2dCQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtnQkFDM0MsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0IsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7WUE3S0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLCt6REFBMkM7O2FBRTVDOzs7O1lBZE8sZUFBZTtZQUNmLGdCQUFnQjtZQUloQixjQUFjOzs7b0JBV25CLEtBQUs7dUJBQ0wsS0FBSzs7OztJQUROLG9DQUF3Qjs7SUFDeEIsdUNBQTBCOzs7OztJQUMxQiwyQ0FBNEM7Ozs7O0lBQzVDLHNDQUF3Qjs7Ozs7SUFDeEIsdUNBQWlDOzs7OztJQUNqQyw0Q0FBb0M7O0lBQ3BDLG9DQUEyQjs7Ozs7SUFHekIsd0NBQWtDOzs7OztJQUNsQyw0Q0FBdUM7Ozs7O0lBQ3ZDLDhDQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0ZpbHRlciwgUHJvcGVydHlUeXBlRW51bX0gZnJvbSAnQG1hcGxhbmRlci90eXBlcyc7XHJcbmltcG9ydCB7TWFya2VyUHJpY2VQaXBlfSBmcm9tICcuLy4uLy4uL3BpcGVzL21hcmtlci1wcmljZS9tYXJrZXItcHJpY2UucGlwZSc7XHJcbmltcG9ydCB7T2ZmZXJpbmdUeXBlUGlwZX0gZnJvbSAnLi8uLi8uLi9waXBlcy9vZmZlcmluZy10eXBlL29mZmVyaW5nLXR5cGUucGlwZSc7XHJcbmltcG9ydCB7RmlsdGVyQ2hpcH0gZnJvbSAnLi8uLi8uLi91dGlscy9tb2RlbHMvZmlsdGVyLWNoaXAnO1xyXG5pbXBvcnQge0ZpbHRlckNoaXBUeXBlfSBmcm9tICcuLi8uLi91dGlscy9lbnVtcy9maWx0ZXItY2hpcC10eXBlJztcclxuaW1wb3J0IHtDb25zdGFudHNDb21wb25lbnRzfSBmcm9tICcuLi8uLi9jb25zdGFudHNDb21wb25lbnRzJztcclxuaW1wb3J0IHtGaWx0ZXJzU2VydmljZX0gZnJvbSAnLi8uLi9maWx0ZXJzL2ZpbHRlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtGaWx0ZXJzQ2hhbmdlfSBmcm9tICcuLy4vLi4vLi4vdXRpbHMvbW9kZWxzL2ZpbHRlcnMtY2hhbmdlJztcclxuaW1wb3J0IHtGaWx0ZXJzV3JhcHBlcn0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3Nlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mYWItZmlsdGVycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZhYi1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mYWItZmlsdGVycy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGYWJGaWx0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIGlzT1BJOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIG1sc0xhYmVsOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBNRVRFUlNfVE9fU1EgPSAxMC43NjM5MTA0MjtcclxuICBwcml2YXRlIF9maWx0ZXI6IEZpbHRlcjtcclxuICBwcml2YXRlIF93cmFwcGVyOiBGaWx0ZXJzV3JhcHBlcjtcclxuICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwdWJsaWMgY2hpcHM6IEZpbHRlckNoaXBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9jdXJyZW5jeTogTWFya2VyUHJpY2VQaXBlLFxyXG4gICAgcHJpdmF0ZSBfb2ZmZXJpbmdQaXBlOiBPZmZlcmluZ1R5cGVQaXBlLFxyXG4gICAgcHJpdmF0ZSBfZmlsdGVyc1NlcnZpY2U6IEZpbHRlcnNTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNoaXBzID0gW107XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMuX2ZpbHRlcnNTZXJ2aWNlLm9uU3RhcnRDb21wb25lbnQoKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIHRoaXMuX3dyYXBwZXIgPSByZXNwb25zZTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLl9maWx0ZXJzU2VydmljZS5nZXRDaGFuZ2VzKCkuc3Vic2NyaWJlKChyZXNwb25zZTogRmlsdGVyc0NoYW5nZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaW5pdChyZXNwb25zZS5maWx0ZXIsIHJlc3BvbnNlLmZ0LCByZXNwb25zZS5pc1NoYXJlZFByb3BlcnRpZXMpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuRmlsdGVycygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5fd3JhcHBlcikge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ1tGYWJGaWx0ZXJzQ29tcG9uZW50XSB3YWl0aW5nIG9uU3RhcnRDb21wb25lbnQnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fd3JhcHBlci5vcGVuKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQ2hpcCh0eXBlOiBGaWx0ZXJDaGlwVHlwZSk6IHZvaWQge1xyXG4gICAgaWYgKHR5cGUgPT09IEZpbHRlckNoaXBUeXBlLlBST1BFUlRZX1RZUEUgfHwgdHlwZSA9PT0gRmlsdGVyQ2hpcFR5cGUuT0ZGRVJJTkcpIHtcclxuICAgICAgdGhpcy5vcGVuRmlsdGVycygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0KGZpbHRlcjogRmlsdGVyLCBmdDogYm9vbGVhbiwgc2hhcmVkUHJvcGVydGllcz86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuY2hpcHMgPSBbXTtcclxuICAgIHRoaXMuX2ZpbHRlciA9IGZpbHRlcjtcclxuICAgIHRoaXMubGlzdGluZ1R5cGUoc2hhcmVkUHJvcGVydGllcyk7XHJcbiAgICB0aGlzLm9mZmVyaW5nVHlwZSgpO1xyXG4gICAgdGhpcy5wcm9wZXJ0eVR5cGUoKTtcclxuICAgIHRoaXMucHJpY2UoKTtcclxuICAgIHRoaXMuc3VyZmFjZShmdCk7XHJcbiAgICB0aGlzLmJlZHJvb21zKCk7XHJcbiAgICB0aGlzLmJhdGhyb29tcygpO1xyXG4gICAgdGhpcy5wYXJraW5nUGxhY2VzKCk7XHJcbiAgICB0aGlzLmFtZW5pdGllcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0aW5nVHlwZShzaGFyZWRQcm9wZXJ0aWVzPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzT1BJKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuY2hpcHMucHVzaCh7XHJcbiAgICAgIHR5cGU6IEZpbHRlckNoaXBUeXBlLkxJU1RJTkcsXHJcbiAgICAgIHRleHQ6IHNoYXJlZFByb3BlcnRpZXMgPyAnQ29tcGFydGlkYXMnIDogKHRoaXMuX2ZpbHRlci5tbHMgPyB0aGlzLm1sc0xhYmVsIHx8ICdNTFMnIDogJ01pIGxpc3RhJyksXHJcbiAgICAgIGljb246IFt0aGlzLl9maWx0ZXIubWxzID8gJ21sbScgOiAnbGlzdCddXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb2ZmZXJpbmdUeXBlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2ZpbHRlci5vZmZlcmluZyAmJiB0aGlzLl9maWx0ZXIudHlwZSAhPT0gUHJvcGVydHlUeXBlRW51bS5OT05FKSB7XHJcbiAgICAgIGxldCBvZmZlcmluZyA9IHRoaXMuX29mZmVyaW5nUGlwZS50cmFuc2Zvcm0odGhpcy5fZmlsdGVyLm9mZmVyaW5nLCAnICcpLnJlcGxhY2UoLyAvZywgJycpO1xyXG4gICAgICBjb25zdCBmaXJzdExldHRlciA9IG9mZmVyaW5nLnN1YnN0cigwLCAxKTtcclxuICAgICAgb2ZmZXJpbmcgPSBvZmZlcmluZy5yZXBsYWNlKGZpcnN0TGV0dGVyLCAnJyk7XHJcbiAgICAgIG9mZmVyaW5nID0gYCR7Zmlyc3RMZXR0ZXIudG9Mb2NhbGVVcHBlckNhc2UoKX0ke29mZmVyaW5nfWA7XHJcbiAgICAgIHRoaXMuY2hpcHMucHVzaCh7XHJcbiAgICAgICAgdHlwZTogRmlsdGVyQ2hpcFR5cGUuT0ZGRVJJTkcsXHJcbiAgICAgICAgdGV4dDogb2ZmZXJpbmcsXHJcbiAgICAgICAgaWNvbjogbnVsbFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvcGVydHlUeXBlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2ZpbHRlci50eXBlICYmIHRoaXMuX2ZpbHRlci50eXBlICE9PSBQcm9wZXJ0eVR5cGVFbnVtLk5PTkUpIHtcclxuICAgICAgQ29uc3RhbnRzQ29tcG9uZW50cy5Qcm9wZXJ0eVR5cGVMaXN0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0udmFsdWUgPT09IHRoaXMuX2ZpbHRlci50eXBlKSB7XHJcbiAgICAgICAgICB0aGlzLmNoaXBzLnB1c2goe1xyXG4gICAgICAgICAgICB0eXBlOiBGaWx0ZXJDaGlwVHlwZS5QUk9QRVJUWV9UWVBFLFxyXG4gICAgICAgICAgICB0ZXh0OiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICAgIGljb246IFtpdGVtLmljb25OYW1lXVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJpY2UoKTogdm9pZCB7XHJcbiAgICBsZXQgbWluID0gJycsIG1heCA9ICcnLCBjdXJyZW5jeTtcclxuICAgIGlmICh0aGlzLl9maWx0ZXIuZG93bkxpbWl0UHJpY2UgIT09IDApIHtcclxuICAgICAgbWluICs9IHRoaXMuX2N1cnJlbmN5LnRyYW5zZm9ybSh0aGlzLl9maWx0ZXIuZG93bkxpbWl0UHJpY2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2ZpbHRlci51cExpbWl0UHJpY2UgIT09IDApIHtcclxuICAgICAgbWF4ICs9IHRoaXMuX2N1cnJlbmN5LnRyYW5zZm9ybSh0aGlzLl9maWx0ZXIudXBMaW1pdFByaWNlKTtcclxuICAgIH1cclxuICAgIGlmIChtaW4gIT09ICcnIHx8IG1heCAhPT0gJycpIHtcclxuICAgICAgY3VycmVuY3kgPSB0aGlzLl9maWx0ZXIuY3VycmVuY3kgPyB0aGlzLl9maWx0ZXIuY3VycmVuY3kgOiAnJztcclxuICAgICAgdGhpcy5jaGlwcy5wdXNoKHtcclxuICAgICAgICB0eXBlOiBGaWx0ZXJDaGlwVHlwZS5QUklDRSxcclxuICAgICAgICB0ZXh0OiBgJHttaW59JHttaW4gIT09ICcnICYmIG1heCAhPT0gJycgPyAnIC0gJyA6ICcnfSR7bWF4fSAke2N1cnJlbmN5fWAsXHJcbiAgICAgICAgaWNvbjogWydwcmljZSddXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdXJmYWNlKGZ0OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fZmlsdGVyLm1haW5BcmVhICE9PSAwKSB7XHJcbiAgICAgIHRoaXMuY2hpcHMucHVzaCh7XHJcbiAgICAgICAgdHlwZTogRmlsdGVyQ2hpcFR5cGUuU1VSRkFDRSxcclxuICAgICAgICB0ZXh0OiAoZnQgPyAodGhpcy5fZmlsdGVyLm1haW5BcmVhIC8gdGhpcy5NRVRFUlNfVE9fU1EpLnRvRml4ZWQoMCkudG9TdHJpbmcoKSA6IHRoaXMuX2ZpbHRlci5tYWluQXJlYS50b1N0cmluZygpKSArIChmdCA/ICcgc3EgZnQnIDogJyBtMicpLFxyXG4gICAgICAgIGljb246IFsnc3VyZmFjZSddXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBiZWRyb29tcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9maWx0ZXIuYmVkcm9vbXMgIT09IDApIHtcclxuICAgICAgdGhpcy5jaGlwcy5wdXNoKHtcclxuICAgICAgICB0eXBlOiBGaWx0ZXJDaGlwVHlwZS5CRURST09NUyxcclxuICAgICAgICB0ZXh0OiB0aGlzLl9maWx0ZXIuYmVkcm9vbXMudG9TdHJpbmcoKSxcclxuICAgICAgICBpY29uOiBbJ2JlZHJvb20nXVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYmF0aHJvb21zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2ZpbHRlci5iYXRocm9vbXMgIT09IDApIHtcclxuICAgICAgdGhpcy5jaGlwcy5wdXNoKHtcclxuICAgICAgICB0eXBlOiBGaWx0ZXJDaGlwVHlwZS5CQVRIUk9PTVMsXHJcbiAgICAgICAgdGV4dDogdGhpcy5fZmlsdGVyLmJhdGhyb29tcy50b1N0cmluZygpLFxyXG4gICAgICAgIGljb246IFsnYmF0aHJvb20nXVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFya2luZ1BsYWNlcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9maWx0ZXIucGFya2luZ1BsYWNlcyAhPT0gMCkge1xyXG4gICAgICB0aGlzLmNoaXBzLnB1c2goe1xyXG4gICAgICAgIHR5cGU6IEZpbHRlckNoaXBUeXBlLlBBUktJTkdfUExBQ0VTLFxyXG4gICAgICAgIHRleHQ6IHRoaXMuX2ZpbHRlci5wYXJraW5nUGxhY2VzLnRvU3RyaW5nKCksXHJcbiAgICAgICAgaWNvbjogWydwYXJraW5nJ11cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFtZW5pdGllcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9maWx0ZXIuZXh0cmFzICYmIHRoaXMuX2ZpbHRlci5leHRyYXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmNoaXBzLnB1c2goe1xyXG4gICAgICAgIHR5cGU6IEZpbHRlckNoaXBUeXBlLkFNRU5JVElFUyxcclxuICAgICAgICB0ZXh0OiB0aGlzLl9maWx0ZXIuZXh0cmFzLmxlbmd0aC50b1N0cmluZygpLFxyXG4gICAgICAgIGljb246IFt0aGlzLl9maWx0ZXIuZXh0cmFzWzBdXVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
299
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG1hcGxhbmRlci9jb21wb25lbnRzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZmFiLWZpbHRlcnMvZmFiLWZpbHRlcnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFTLGdCQUFnQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBRWhGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQVNsQyxNQUFNLE9BQU8sbUJBQW1COzs7Ozs7SUFTOUIsWUFDVSxTQUEwQixFQUMxQixhQUErQixFQUMvQixlQUErQjtRQUYvQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0Isb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBVHhCLGlCQUFZLEdBQUcsV0FBVyxDQUFDO1FBVzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDOzs7O0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FB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UUFDZixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsSUFBSSxFQUFFLGNBQWMsQ0FBQyxTQUFTO2dCQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtnQkFDM0MsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0IsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7WUE3S0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLHl6REFBMkM7O2FBRTVDOzs7O1lBZE8sZUFBZTtZQUNmLGdCQUFnQjtZQUloQixjQUFjOzs7b0JBV25CLEtBQUs7dUJBQ0wsS0FBSzs7OztJQUROLG9DQUF3Qjs7SUFDeEIsdUNBQTBCOzs7OztJQUMxQiwyQ0FBNEM7Ozs7O0lBQzVDLHNDQUF3Qjs7Ozs7SUFDeEIsdUNBQWlDOzs7OztJQUNqQyw0Q0FBb0M7O0lBQ3BDLG9DQUEyQjs7Ozs7SUFHekIsd0NBQWtDOzs7OztJQUNsQyw0Q0FBdUM7Ozs7O0lBQ3ZDLDhDQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0ZpbHRlciwgUHJvcGVydHlUeXBlRW51bX0gZnJvbSAnQG1hcGxhbmRlci90eXBlcyc7XHJcbmltcG9ydCB7TWFya2VyUHJpY2VQaXBlfSBmcm9tICcuLy4uLy4uL3BpcGVzL21hcmtlci1wcmljZS9tYXJrZXItcHJpY2UucGlwZSc7XHJcbmltcG9ydCB7T2ZmZXJpbmdUeXBlUGlwZX0gZnJvbSAnLi8uLi8uLi9waXBlcy9vZmZlcmluZy10eXBlL29mZmVyaW5nLXR5cGUucGlwZSc7XHJcbmltcG9ydCB7RmlsdGVyQ2hpcH0gZnJvbSAnLi8uLi8uLi91dGlscy9tb2RlbHMvZmlsdGVyLWNoaXAnO1xyXG5pbXBvcnQge0ZpbHRlckNoaXBUeXBlfSBmcm9tICcuLi8uLi91dGlscy9lbnVtcy9maWx0ZXItY2hpcC10eXBlJztcclxuaW1wb3J0IHtDb25zdGFudHNDb21wb25lbnRzfSBmcm9tICcuLi8uLi9jb25zdGFudHNDb21wb25lbnRzJztcclxuaW1wb3J0IHtGaWx0ZXJzU2VydmljZX0gZnJvbSAnLi8uLi9maWx0ZXJzL2ZpbHRlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtGaWx0ZXJzQ2hhbmdlfSBmcm9tICcuLy4vLi4vLi4vdXRpbHMvbW9kZWxzL2ZpbHRlcnMtY2hhbmdlJztcclxuaW1wb3J0IHtGaWx0ZXJzV3JhcHBlcn0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3Nlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mYWItZmlsdGVycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZhYi1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mYWItZmlsdGVycy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGYWJGaWx0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIGlzT1BJOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIG1sc0xhYmVsOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBNRVRFUlNfVE9fU1EgPSAxMC43NjM5MTA0MjtcclxuICBwcml2YXRlIF9maWx0ZXI6IEZpbHRlcjtcclxuICBwcml2YXRlIF93cmFwcGVyOiBGaWx0ZXJzV3JhcHBlcjtcclxuICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwdWJsaWMgY2hpcHM6IEZpbHRlckNoaXBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9jdXJyZW5jeTogTWFya2VyUHJpY2VQaXBlLFxyXG4gICAgcHJpdmF0ZSBfb2ZmZXJpbmdQaXBlOiBPZmZlcmluZ1R5cGVQaXBlLFxyXG4gICAgcHJpdmF0ZSBfZmlsdGVyc1NlcnZpY2U6IEZpbHRlcnNTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNoaXBzID0gW107XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMuX2ZpbHRlcnNTZXJ2aWNlLm9uU3RhcnRDb21wb25lbnQoKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIHRoaXMuX3dyYXBwZXIgPSByZXNwb25zZTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLl9maWx0ZXJzU2VydmljZS5nZXRDaGFuZ2VzKCkuc3Vic2NyaWJlKChyZXNwb25zZTogRmlsdGVyc0NoYW5nZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaW5pdChyZXNwb25zZS5maWx0ZXIsIHJlc3BvbnNlLmZ0LCByZXNwb25zZS5pc1NoYXJlZFByb3BlcnRpZXMpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuRmlsdGVycygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5fd3JhcHBlcikge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ1tGYWJGaWx0ZXJzQ29tcG9uZW50XSB3YWl0aW5nIG9uU3RhcnRDb21wb25lbnQnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fd3JhcHBlci5vcGVuKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrQ2hpcCh0eXBlOiBGaWx0ZXJDaGlwVHlwZSk6IHZvaWQge1xyXG4gICAgaWYgKHR5cGUgPT09IEZpbHRlckNoaXBUeXBlLlBST1BFUlRZX1RZUEUgfHwgdHlwZSA9PT0gRmlsdGVyQ2hpcFR5cGUuT0ZGRVJJTkcpIHtcclxuICAgICAgdGhpcy5vcGVuRmlsdGVycygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0KGZpbHRlcjogRmlsdGVyLCBmdDogYm9vbGVhbiwgc2hhcmVkUHJvcGVydGllcz86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuY2hpcHMgPSBbXTtcclxuICAgIHRoaXMuX2ZpbHRlciA9IGZpbHRlcjtcclxuICAgIHRoaXMubGlzdGluZ1R5cGUoc2hhcmVkUHJvcGVydGllcyk7XHJcbiAgICB0aGlzLm9mZmVyaW5nVHlwZSgpO1xyXG4gICAgdGhpcy5wcm9wZXJ0eVR5cGUoKTtcclxuICAgIHRoaXMucHJpY2UoKTtcclxuICAgIHRoaXMuc3VyZmFjZShmdCk7XHJcbiAgICB0aGlzLmJlZHJvb21zKCk7XHJcbiAgICB0aGlzLmJhdGhyb29tcygpO1xyXG4gICAgdGhpcy5wYXJraW5nUGxhY2VzKCk7XHJcbiAgICB0aGlzLmFtZW5pdGllcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0aW5nVHlwZShzaGFyZWRQcm9wZXJ0aWVzPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzT1BJKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuY2hpcHMucHVzaCh7XHJcbiAgICAgIHR5cGU6IEZpbHRlckNoaXBUeXBlLkxJU1RJTkcsXHJcbiAgICAgIHRleHQ6IHNoYXJlZFByb3BlcnRpZXMgPyAnQ29tcGFydGlkYXMnIDogKHRoaXMuX2ZpbHRlci5tbHMgPyB0aGlzLm1sc0xhYmVsIHx8ICdNTFMnIDogJ01pIGxpc3RhJyksXHJcbiAgICAgIGljb246IFt0aGlzLl9maWx0ZXIubWxzID8gJ21sbScgOiAnbGlzdCddXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb2ZmZXJpbmdUeXBlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2ZpbHRlci5vZmZlcmluZyAmJiB0aGlzLl9maWx0ZXIudHlwZSAhPT0gUHJvcGVydHlUeXBlRW51bS5OT05FKSB7XHJcbiAgICAgIGxldCBvZmZlcmluZyA9IHRoaXMuX29mZmVyaW5nUGlwZS50cmFuc2Zvcm0odGhpcy5fZmlsdGVyLm9mZmVyaW5nLCAnICcpLnJlcGxhY2UoLyAvZywgJycpO1xyXG4gICAgICBjb25zdCBmaXJzdExldHRlciA9IG9mZmVyaW5nLnN1YnN0cigwLCAxKTtcclxuICAgICAgb2ZmZXJpbmcgPSBvZmZlcmluZy5yZXBsYWNlKGZpcnN0TGV0dGVyLCAnJyk7XHJcbiAgICAgIG9mZmVyaW5nID0gYCR7Zmlyc3RMZXR0ZXIudG9Mb2NhbGVVcHBlckNhc2UoKX0ke29mZmVyaW5nfWA7XHJcbiAgICAgIHRoaXMuY2hpcHMucHVzaCh7XHJcbiAgICAgICAgdHlwZTogRmlsdGVyQ2hpcFR5cGUuT0ZGRVJJTkcsXHJcbiAgICAgICAgdGV4dDogb2ZmZXJpbmcsXHJcbiAgICAgICAgaWNvbjogbnVsbFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvcGVydHlUeXBlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2ZpbHRlci50eXBlICYmIHRoaXMuX2ZpbHRlci50eXBlICE9PSBQcm9wZXJ0eVR5cGVFbnVtLk5PTkUpIHtcclxuICAgICAgQ29uc3RhbnRzQ29tcG9uZW50cy5Qcm9wZXJ0eVR5cGVMaXN0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0udmFsdWUgPT09IHRoaXMuX2ZpbHRlci50eXBlKSB7XHJcbiAgICAgICAgICB0aGlzLmNoaXBzLnB1c2goe1xyXG4gICAgICAgICAgICB0eXBlOiBGaWx0ZXJDaGlwVHlwZS5QUk9QRVJUWV9UWVBFLFxyXG4gICAgICAgICAgICB0ZXh0OiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICAgIGljb246IFtpdGVtLmljb25OYW1lXVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJpY2UoKTogdm9pZCB7XHJcbiAgICBsZXQgbWluID0gJycsIG1heCA9ICcnLCBjdXJyZW5jeTtcclxuICAgIGlmICh0aGlzLl9maWx0ZXIuZG93bkxpbWl0UHJpY2UgIT09IDApIHtcclxuICAgICAgbWluICs9IHRoaXMuX2N1cnJlbmN5LnRyYW5zZm9ybSh0aGlzLl9maWx0ZXIuZG93bkxpbWl0UHJpY2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2ZpbHRlci51cExpbWl0UHJpY2UgIT09IDApIHtcclxuICAgICAgbWF4ICs9IHRoaXMuX2N1cnJlbmN5LnRyYW5zZm9ybSh0aGlzLl9maWx0ZXIudXBMaW1pdFByaWNlKTtcclxuICAgIH1cclxuICAgIGlmIChtaW4gIT09ICcnIHx8IG1heCAhPT0gJycpIHtcclxuICAgICAgY3VycmVuY3kgPSB0aGlzLl9maWx0ZXIuY3VycmVuY3kgPyB0aGlzLl9maWx0ZXIuY3VycmVuY3kgOiAnJztcclxuICAgICAgdGhpcy5jaGlwcy5wdXNoKHtcclxuICAgICAgICB0eXBlOiBGaWx0ZXJDaGlwVHlwZS5QUklDRSxcclxuICAgICAgICB0ZXh0OiBgJHttaW59JHttaW4gIT09ICcnICYmIG1heCAhPT0gJycgPyAnIC0gJyA6ICcnfSR7bWF4fSAke2N1cnJlbmN5fWAsXHJcbiAgICAgICAgaWNvbjogWydwcmljZSddXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdXJmYWNlKGZ0OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fZmlsdGVyLm1haW5BcmVhICE9PSAwKSB7XHJcbiAgICAgIHRoaXMuY2hpcHMucHVzaCh7XHJcbiAgICAgICAgdHlwZTogRmlsdGVyQ2hpcFR5cGUuU1VSRkFDRSxcclxuICAgICAgICB0ZXh0OiAoZnQgPyAodGhpcy5fZmlsdGVyLm1haW5BcmVhIC8gdGhpcy5NRVRFUlNfVE9fU1EpLnRvRml4ZWQoMCkudG9TdHJpbmcoKSA6IHRoaXMuX2ZpbHRlci5tYWluQXJlYS50b1N0cmluZygpKSArIChmdCA/ICcgc3EgZnQnIDogJyBtMicpLFxyXG4gICAgICAgIGljb246IFsnc3VyZmFjZSddXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBiZWRyb29tcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9maWx0ZXIuYmVkcm9vbXMgIT09IDApIHtcclxuICAgICAgdGhpcy5jaGlwcy5wdXNoKHtcclxuICAgICAgICB0eXBlOiBGaWx0ZXJDaGlwVHlwZS5CRURST09NUyxcclxuICAgICAgICB0ZXh0OiB0aGlzLl9maWx0ZXIuYmVkcm9vbXMudG9TdHJpbmcoKSxcclxuICAgICAgICBpY29uOiBbJ2JlZHJvb20nXVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYmF0aHJvb21zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2ZpbHRlci5iYXRocm9vbXMgIT09IDApIHtcclxuICAgICAgdGhpcy5jaGlwcy5wdXNoKHtcclxuICAgICAgICB0eXBlOiBGaWx0ZXJDaGlwVHlwZS5CQVRIUk9PTVMsXHJcbiAgICAgICAgdGV4dDogdGhpcy5fZmlsdGVyLmJhdGhyb29tcy50b1N0cmluZygpLFxyXG4gICAgICAgIGljb246IFsnYmF0aHJvb20nXVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFya2luZ1BsYWNlcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9maWx0ZXIucGFya2luZ1BsYWNlcyAhPT0gMCkge1xyXG4gICAgICB0aGlzLmNoaXBzLnB1c2goe1xyXG4gICAgICAgIHR5cGU6IEZpbHRlckNoaXBUeXBlLlBBUktJTkdfUExBQ0VTLFxyXG4gICAgICAgIHRleHQ6IHRoaXMuX2ZpbHRlci5wYXJraW5nUGxhY2VzLnRvU3RyaW5nKCksXHJcbiAgICAgICAgaWNvbjogWydwYXJraW5nJ11cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFtZW5pdGllcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9maWx0ZXIuZXh0cmFzICYmIHRoaXMuX2ZpbHRlci5leHRyYXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmNoaXBzLnB1c2goe1xyXG4gICAgICAgIHR5cGU6IEZpbHRlckNoaXBUeXBlLkFNRU5JVElFUyxcclxuICAgICAgICB0ZXh0OiB0aGlzLl9maWx0ZXIuZXh0cmFzLmxlbmd0aC50b1N0cmluZygpLFxyXG4gICAgICAgIGljb246IFt0aGlzLl9maWx0ZXIuZXh0cmFzWzBdXVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
4
|
*/
|
|
5
|
-
import { Component, ElementRef,
|
|
5
|
+
import { Component, ElementRef, Inject, Input, Optional, Renderer2 } from '@angular/core';
|
|
6
6
|
import { FormBuilder, Validators } from '@angular/forms';
|
|
7
7
|
import { Subscription } from 'rxjs';
|
|
8
8
|
import { Currency, OfferingTypeEnum, PropertyTypeEnum } from '@maplander/types';
|
|
@@ -32,8 +32,6 @@ export class FiltersComponent {
|
|
|
32
32
|
this._formBuilder = _formBuilder;
|
|
33
33
|
this._converter = _converter;
|
|
34
34
|
this.METERS_TO_SQ = 10.76391042;
|
|
35
|
-
this._lastState = null;
|
|
36
|
-
this.changeFilter = new EventEmitter();
|
|
37
35
|
this.isOPI = this._config || false;
|
|
38
36
|
this._subscription = new Subscription();
|
|
39
37
|
this.propertyTypeList = ConstantsComponents.PropertyTypeList.map((/**
|
|
@@ -76,20 +74,6 @@ export class FiltersComponent {
|
|
|
76
74
|
console.log('[FiltersComponent] utils ready');
|
|
77
75
|
this.initComponent();
|
|
78
76
|
}
|
|
79
|
-
if (changes['stateOptions'] && changes['stateOptions'].currentValue) {
|
|
80
|
-
if (this._lastState !== null) {
|
|
81
|
-
for (const stateOption of this.stateOptions) {
|
|
82
|
-
if (stateOption.name === this._lastState) {
|
|
83
|
-
this.propertyTotal = stateOption.total;
|
|
84
|
-
this.filter.state = this._lastState;
|
|
85
|
-
this.filtersForm.patchValue({
|
|
86
|
-
state: this._lastState
|
|
87
|
-
});
|
|
88
|
-
break;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
77
|
}
|
|
94
78
|
/**
|
|
95
79
|
* @return {?}
|
|
@@ -115,7 +99,6 @@ export class FiltersComponent {
|
|
|
115
99
|
* @return {?}
|
|
116
100
|
*/
|
|
117
101
|
changePropertyType(index) {
|
|
118
|
-
this._lastState = this.filter.state;
|
|
119
102
|
this.resetFilters(index);
|
|
120
103
|
this.applyAmenities();
|
|
121
104
|
this.filter.type = this.propertyTypeSelected.value;
|
|
@@ -127,24 +110,13 @@ export class FiltersComponent {
|
|
|
127
110
|
this.filtersForm.controls['offering'].setValue(OfferingTypeEnum.SALE);
|
|
128
111
|
break;
|
|
129
112
|
}
|
|
130
|
-
this.filter.locationType = 'STATE';
|
|
131
|
-
this.filter.state = null;
|
|
132
|
-
this.filter.municipality = null;
|
|
133
|
-
this.filter.colony = null;
|
|
134
|
-
this.changeFilter.emit({ type: 'propertyType', payload: { filter: this.filter, value: this.filtersForm.value } });
|
|
135
113
|
}
|
|
136
114
|
/**
|
|
137
115
|
* @param {?} ev
|
|
138
116
|
* @return {?}
|
|
139
117
|
*/
|
|
140
118
|
changeOffering(ev) {
|
|
141
|
-
this._lastState = this.filter.state;
|
|
142
|
-
this.filter.locationType = 'STATE';
|
|
143
|
-
this.filter.state = null;
|
|
144
|
-
this.filter.municipality = null;
|
|
145
|
-
this.filter.colony = null;
|
|
146
119
|
this.filter.offering = (/** @type {?} */ (ev));
|
|
147
|
-
this.changeFilter.emit({ type: 'offer', payload: { filter: this.filter, value: this.filtersForm.value } });
|
|
148
120
|
}
|
|
149
121
|
/**
|
|
150
122
|
* @param {?} ev
|
|
@@ -152,15 +124,6 @@ export class FiltersComponent {
|
|
|
152
124
|
*/
|
|
153
125
|
changeCurrency(ev) {
|
|
154
126
|
this.filter.currency = ev;
|
|
155
|
-
this.changeFilterStatus();
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* @param {?} ev
|
|
159
|
-
* @return {?}
|
|
160
|
-
*/
|
|
161
|
-
changeState(ev) {
|
|
162
|
-
this.filter.state = ev;
|
|
163
|
-
this.changeFilterStatus();
|
|
164
127
|
}
|
|
165
128
|
/**
|
|
166
129
|
* @param {?} amenity
|
|
@@ -178,7 +141,6 @@ export class FiltersComponent {
|
|
|
178
141
|
this.filter.extras.push(amenity.value);
|
|
179
142
|
}
|
|
180
143
|
amenity.checked = !amenity.checked;
|
|
181
|
-
this.changeFilterStatus();
|
|
182
144
|
}
|
|
183
145
|
/**
|
|
184
146
|
* @return {?}
|
|
@@ -217,7 +179,6 @@ export class FiltersComponent {
|
|
|
217
179
|
this.filter = propertyTypeItemIndex ? Utils.getFilterByPropertyType(this.filter) : Utils.getInitialFilter(this.isOPI, this.filter);
|
|
218
180
|
this.updateFormByFilters();
|
|
219
181
|
this.setPrices();
|
|
220
|
-
this.propertyTotal = 0;
|
|
221
182
|
}
|
|
222
183
|
/**
|
|
223
184
|
* @private
|
|
@@ -225,7 +186,6 @@ export class FiltersComponent {
|
|
|
225
186
|
*/
|
|
226
187
|
buildForm() {
|
|
227
188
|
this.filtersForm = this._formBuilder.group({
|
|
228
|
-
state: ['', [Validators.required]],
|
|
229
189
|
offering: [],
|
|
230
190
|
currency: [],
|
|
231
191
|
minPrice: ['', [Validators.required, Validators.pattern(new RegExp('(^[0-9]+)'))]],
|
|
@@ -240,37 +200,12 @@ export class FiltersComponent {
|
|
|
240
200
|
validator: CurrencyFilterValidator('minPrice', 'maxPrice')
|
|
241
201
|
});
|
|
242
202
|
}
|
|
243
|
-
/**
|
|
244
|
-
* @return {?}
|
|
245
|
-
*/
|
|
246
|
-
changeFilterStatus() {
|
|
247
|
-
this.getFilterByForm();
|
|
248
|
-
/** @type {?} */
|
|
249
|
-
const filterToSearch = Object.assign({}, this.filter);
|
|
250
|
-
if (this.surfaceUnitSelected === 1) {
|
|
251
|
-
filterToSearch.mainArea = filterToSearch.mainArea * this.METERS_TO_SQ;
|
|
252
|
-
}
|
|
253
|
-
if (!this.filtersForm.controls['minPrice'].value) {
|
|
254
|
-
this.filtersForm.controls['minPrice'].reset(0);
|
|
255
|
-
this.filtersForm.patchValue({
|
|
256
|
-
minPrice: 0
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
if (!this.filtersForm.controls['minPrice'].value) {
|
|
260
|
-
this.filtersForm.controls['minPrice'].reset(0);
|
|
261
|
-
this.filtersForm.patchValue({
|
|
262
|
-
maxPrice: 0
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
this.changeFilter.emit({ type: 'filter', payload: { filter: this.filter, value: filterToSearch } });
|
|
266
|
-
}
|
|
267
203
|
/**
|
|
268
204
|
* @private
|
|
269
205
|
* @return {?}
|
|
270
206
|
*/
|
|
271
207
|
updateFormByFilters() {
|
|
272
208
|
this.filtersForm.patchValue({
|
|
273
|
-
state: this.filter.state,
|
|
274
209
|
offering: this.filter.offering,
|
|
275
210
|
currency: this.filter.currency,
|
|
276
211
|
minPrice: this.filter.downLimitPrice,
|
|
@@ -290,7 +225,6 @@ export class FiltersComponent {
|
|
|
290
225
|
getFilterByForm() {
|
|
291
226
|
/** @type {?} */
|
|
292
227
|
const data = this.filtersForm.value;
|
|
293
|
-
this.filter.state = data.state;
|
|
294
228
|
this.filter.offering = data.offering;
|
|
295
229
|
this.filter.currency = data.currency;
|
|
296
230
|
this.filter.downLimitPrice = Number(data.minPrice);
|
|
@@ -451,7 +385,6 @@ export class FiltersComponent {
|
|
|
451
385
|
*/
|
|
452
386
|
openComponent(open) {
|
|
453
387
|
if (open) {
|
|
454
|
-
this.changeFilter.emit({ type: 'init', payload: { filter: null, value: null } });
|
|
455
388
|
this._render.setStyle(this._ref.nativeElement, 'visibility', 'visible');
|
|
456
389
|
this._render.setStyle(this._ref.nativeElement, 'opacity', '1');
|
|
457
390
|
}
|
|
@@ -518,7 +451,7 @@ export class FiltersComponent {
|
|
|
518
451
|
FiltersComponent.decorators = [
|
|
519
452
|
{ type: Component, args: [{
|
|
520
453
|
selector: 'lib-filters',
|
|
521
|
-
template: "<!-- Todo: [FiltersComponent] Refactor code -->\r\n<form class=\"filters\" [formGroup]=\"filtersForm\" [ngClass]=\"{'filters--opened': propertyTypeSelected.value !== 'NONE'}\">\r\n <ng-template [ngIf]=\"!isOPI\">\r\n <div class=\"float-button-close\">\r\n <button mat-icon-button type=\"button\" class=\"float-button-close__button\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <div class=\"body\">\r\n <div class=\"--padding\">\r\n <div class=\"header\">\r\n <mat-form-field class=\"currency\" appearance=\"outline\">\r\n <mat-label>Divisa</mat-label>\r\n <mat-select formControlName=\"currency\">\r\n <ng-container *ngFor=\"let currency of currencyList\">\r\n <mat-option [value]=\"currency.type\" (click)=\"changeCurrency(currency.type)\">\r\n {{currency.type}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group class=\"offering-type-list\" name=\"offering-type\" formControlName=\"offering\"\r\n aria-label=\"Offering type\">\r\n <mat-button-toggle (click)=\"changeOffering('SALE')\" [value]=\"'SALE'\"\r\n [disabled]=\"propertyTypeSelected.value === 'NONE' || propertyTypeSelected.value === 'ROOM'\">\r\n Venta\r\n </mat-button-toggle>\r\n <mat-button-toggle (click)=\"changeOffering('RENT')\" [value]=\"'RENT'\"\r\n [disabled]=\"propertyTypeSelected.value === 'NONE' || propertyTypeSelected.value === 'INVESTMENT'\">\r\n Renta\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n <div class=\"mat-elevation-z2\" [ngClass]=\"{'property-type-list': !newFilters, 'new-property-type-list': newFilters}\">\r\n <ng-container *ngFor=\"let type of propertyTypeList; let i = index\">\r\n <ng-template [ngIf]=\"type.value !== 'NONE' && (type.value !== 'ROOM' && newFilters)\">\r\n <div class=\"property-type-list__button\">\r\n <div\r\n class=\"property-type-list__border\"\r\n [ngClass]=\"{'property-type-list__border--active': (type.value === propertyTypeSelected.value) || (propertyTypeSelected.value === 'NONE') || ((type.value === 'HOUSE' || type.value === 'APARTMENT') && propertyTypeSelected.value === 'RESIDENTIAL')}\"\r\n [ngStyle]=\"{'border-color': 'var(--' + type.iconName + ')'}\">\r\n <button mat-mini-fab=\"\" type=\"button\" (click)=\"changePropertyType(i)\"\r\n [ngStyle]=\"{'background-color': 'var(--' + type.iconName + ')'}\">\r\n <span class=\"property-type-list__icon ic-property-{{type.iconName}}\"></span>\r\n </button>\r\n </div>\r\n <span class=\"property-type-list__label\">{{type.shortName}}</span>\r\n <ng-template [ngIf]=\"type.value === 'RESIDENTIAL' && propertyTypeSelected.value === 'RESIDENTIAL'\">\r\n <div class=\"property-type-list__divider property-type-list__divider--left\"></div>\r\n <div class=\"property-type-list__divider property-type-list__divider--right\"></div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n <ng-template [ngIf]=\"isOPI\">\r\n <div class=\"all\">\r\n <button mat-raised-button=\"\" type=\"button\" class=\"all__button\"\r\n [ngClass]=\"{'all__button--active': propertyTypeSelected.value === 'NONE'}\"\r\n (click)=\"changePropertyType(9)\">Todo\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <ng-template [ngIf]=\"newFilters && propertyTypeSelected.value !== 'NONE'\">\r\n <div class=\"--padding\">\r\n <h4 class=\"--title\">\r\n Estado\r\n </h4>\r\n <div class=\"budget\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Estado</mat-label>\r\n <mat-select formControlName=\"state\">\r\n <ng-container *ngFor=\"let state of stateOptions\">\r\n <mat-option [value]=\"state.name\" (click)=\"changeState(state.name)\">\r\n {{state.name}} ({{state.total}})\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n <mat-error *ngIf=\"filtersForm.controls['state'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'NONE'\">\r\n <mat-divider></mat-divider>\r\n <div class=\"--padding\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-price\"></span>\r\n Presupuesto\r\n </h4>\r\n <div class=\"budget\">\r\n <!-- Min price [START] -->\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>M\u00EDnimo</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" type=\"number\" title=\"Min price\" formControlName=\"minPrice\" min=\"1\" (focusout)=\"changeFilterStatus()\">\r\n <mat-error *ngIf=\"filtersForm.controls['minPrice'].hasError('pattern')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n <mat-error *ngIf=\"filtersForm.controls['minPrice'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Min price [END] -->\r\n <!-- Max price [START] -->\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>M\u00E1ximo</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" type=\"number\" title=\"max price\" formControlName=\"maxPrice\" (focusout)=\"changeFilterStatus()\">\r\n <mat-error *ngIf=\"filtersForm.controls['maxPrice'].hasError('pattern')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n <mat-error *ngIf=\"filtersForm.controls['maxPrice'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"filtersForm.controls['maxPrice'].hasError('currency')\">\r\n Valor m\u00EDnimo excedido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Max price [END] -->\r\n </div>\r\n <div class=\"features\">\r\n <ng-template\r\n [ngIf]=\"propertyTypeSelected.value === 'RESIDENTIAL' || propertyTypeSelected.value === 'HOUSE' || propertyTypeSelected.value === 'APARTMENT'\">\r\n <div class=\"features__bedrooms\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-bedroom\"></span>\r\n Habitaciones\r\n </h4>\r\n <mat-button-toggle-group name=\"bedrooms\" aria-label=\"Bedrooms\" formControlName=\"bedrooms\">\r\n <ng-container *ngFor=\"let bedroom of bedroomsList\">\r\n <ng-template [ngIf]=\"bedroom === 0\" [ngIfElse]=\"bedroomNumber\">\r\n <mat-button-toggle [value]=\"bedroom\" (click)=\"changeFilterStatus()\" class=\"features__bedrooms--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #bedroomNumber>\r\n <mat-button-toggle [value]=\"bedroom\" (click)=\"changeFilterStatus()\">{{bedroom}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n <div class=\"features__bathrooms\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-bathroom\"></span>\r\n Ba\u00F1os\r\n </h4>\r\n <mat-button-toggle-group name=\"bathrooms\" aria-label=\"Bathrooms\" formControlName=\"bathrooms\">\r\n <ng-container *ngFor=\"let bathroom of bathroomsList\">\r\n <ng-template [ngIf]=\"bathroom === 0\" [ngIfElse]=\"bathroomNumber\">\r\n <mat-button-toggle [value]=\"bathroom\" (click)=\"changeFilterStatus()\"\r\n class=\"features__bathrooms--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #bathroomNumber>\r\n <mat-button-toggle [value]=\"bathroom\" (click)=\"changeFilterStatus()\">{{bathroom}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'LAND' && propertyTypeSelected.value !== 'INVESTMENT'\">\r\n <div class=\"features__parking-places\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-parking\"></span>\r\n Estacionamientos\r\n </h4>\r\n <mat-button-toggle-group name=\"parking_places\" aria-label=\"Parking Places\"\r\n formControlName=\"parkingPlaces\">\r\n <ng-container *ngFor=\"let parking of parkingPlacesList\">\r\n <ng-template [ngIf]=\"parking === 0\" [ngIfElse]=\"parkingNumber\">\r\n <mat-button-toggle [value]=\"parking\" (click)=\"changeFilterStatus()\"\r\n class=\"features__parking-places--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #parkingNumber>\r\n <mat-button-toggle [value]=\"parking\" (click)=\"changeFilterStatus()\">{{parking}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'INVESTMENT'\">\r\n <div class=\"features__surface\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-surface\"></span>\r\n Superficie\r\n </h4>\r\n <div class=\"--row\">\r\n <mat-form-field appearance=\"outline\" class=\"--col\">\r\n <mat-label>\u00C1rea</mat-label>\r\n <mat-select formControlName=\"surface\" (selectionChange)=\"changeFilterStatus()\">\r\n <mat-option [value]=\"0\" (click)=\"changeFilterStatus()\">\r\n Sin l\u00EDmite\r\n </mat-option>\r\n <ng-container *ngFor=\"let surface of surfaceList\">\r\n <mat-option [value]=\"surface\" (click)=\"changeFilterStatus()\">\r\n {{surface}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group name=\"unit_surface\" aria-label=\"Unit surface\" formControlName=\"surfaceUnit\">\r\n <mat-button-toggle (click)=\"changeFilterStatus()\" [value]=\"0\">m2</mat-button-toggle>\r\n <mat-button-toggle (click)=\"changeFilterStatus()\" [value]=\"1\">sq ft</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value === 'INVESTMENT'\">\r\n <div class=\"feature investment\">\r\n <h4 class=\"--title\">Retorno de inversi\u00F3n</h4>\r\n <mat-form-field appearance=\"outline\" class=\"--col\">\r\n <mat-label>Porcentaje</mat-label>\r\n <mat-select formControlName=\"roi\">\r\n <mat-option [value]=\"0\" (click)=\"changeFilterStatus()\">\r\n Sin l\u00EDmite\r\n </mat-option>\r\n <ng-container *ngFor=\"let roi of roiList\">\r\n <mat-option [value]=\"roi\" (click)=\"changeFilterStatus()\">\r\n {{roi}}%\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n <div class=\"amenities-container\">\r\n <ng-template [ngIf]=\"propertyTypeSelected.amenities.length > 0\">\r\n <div class=\"amenities\">\r\n <h4 class=\"--title\">\r\n Amenidades\r\n </h4>\r\n <div class=\"amenities__list\">\r\n <ng-container *ngFor=\"let amenity of propertyTypeSelected.amenities\">\r\n <div class=\"amenities__amenity\" matRipple (click)=\"updateAmenity(amenity)\">\r\n <span class=\"amenity__icon ic-amenities-{{amenity.iconName}}\"\r\n [ngClass]=\"{'amenity--active': amenity.checked}\"></span>\r\n <span class=\"amenity__label\">{{amenity.name}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.features.length > 0\">\r\n <div class=\"amenities\">\r\n <h4 class=\"--title\">\r\n Caracteristicas de la ubicaci\u00F3n\r\n </h4>\r\n <div class=\"amenities__list\">\r\n <ng-container *ngFor=\"let feature of propertyTypeSelected.features\">\r\n <div class=\"amenities__amenity\" matRipple (click)=\"updateAmenity(feature)\">\r\n <span class=\"amenity__icon ic-amenities-{{feature.iconName}}\"\r\n [ngClass]=\"{'amenity--active': feature.checked}\"></span>\r\n <span class=\"amenity__label\">{{feature.name}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <button mat-flat-button type=\"submit\" class=\"apply-button\" color=\"primary\" [disabled]=\"(propertyTotal === 0 || filtersForm.invalid) && newFilters\"\r\n (click)=\"applyFilters()\">\r\n VER <span *ngIf=\"propertyTotal > 0 && newFilters\">{{propertyTotal}}</span> {{(propertyTotal === 1 ? 'PROPIEDAD' : 'PROPIEDADES')}}\r\n </button>\r\n </div>\r\n <!--div class=\"actions\">\r\n <ng-template [ngIf]=\"!isOPI\" [ngIfElse]=\"closeButtonTemplate\">\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\" (click)=\"saveSearchByFilters()\">\r\n GUARDAR\r\n </button>\r\n </ng-template>\r\n <ng-template #closeButtonTemplate>\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\" (click)=\"close()\">CERRAR</button>\r\n </ng-template>\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\"\r\n (click)=\"resetFilters()\">LIMPIAR\r\n </button>\r\n </div-->\r\n</form>\r\n",
|
|
454
|
+
template: "<!-- Todo: [FiltersComponent] Refactor code -->\r\n<form class=\"filters\" [formGroup]=\"filtersForm\" [ngClass]=\"{'filters--opened': propertyTypeSelected.value !== 'NONE'}\">\r\n <ng-template [ngIf]=\"!isOPI\">\r\n <div class=\"float-button-close\">\r\n <button mat-icon-button type=\"button\" class=\"float-button-close__button\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <div class=\"body\">\r\n <div class=\"--padding\">\r\n <div class=\"header\">\r\n <mat-form-field class=\"currency\" appearance=\"outline\">\r\n <mat-label>Divisa</mat-label>\r\n <mat-select formControlName=\"currency\">\r\n <ng-container *ngFor=\"let currency of currencyList\">\r\n <mat-option [value]=\"currency.type\" (click)=\"changeCurrency(currency.type)\">\r\n {{currency.type}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group class=\"offering-type-list\" name=\"offering-type\" formControlName=\"offering\"\r\n aria-label=\"Offering type\">\r\n <mat-button-toggle (click)=\"changeOffering('SALE')\" [value]=\"'SALE'\"\r\n [disabled]=\"propertyTypeSelected.value === 'NONE' || propertyTypeSelected.value === 'ROOM'\">\r\n Venta\r\n </mat-button-toggle>\r\n <mat-button-toggle (click)=\"changeOffering('RENT')\" [value]=\"'RENT'\"\r\n [disabled]=\"propertyTypeSelected.value === 'NONE' || propertyTypeSelected.value === 'INVESTMENT'\">\r\n Renta\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n <div class=\"mat-elevation-z2\" [ngClass]=\"{'property-type-list': !newFilters, 'new-property-type-list': newFilters}\">\r\n <ng-container *ngFor=\"let type of propertyTypeList; let i = index\">\r\n <ng-template [ngIf]=\"type.value !== 'NONE' && (type.value !== 'ROOM' && newFilters)\">\r\n <div class=\"property-type-list__button\">\r\n <div\r\n class=\"property-type-list__border\"\r\n [ngClass]=\"{'property-type-list__border--active': (type.value === propertyTypeSelected.value) || (propertyTypeSelected.value === 'NONE') || ((type.value === 'HOUSE' || type.value === 'APARTMENT') && propertyTypeSelected.value === 'RESIDENTIAL')}\"\r\n [ngStyle]=\"{'border-color': 'var(--' + type.iconName + ')'}\">\r\n <button mat-mini-fab=\"\" type=\"button\" (click)=\"changePropertyType(i)\"\r\n [ngStyle]=\"{'background-color': 'var(--' + type.iconName + ')'}\">\r\n <span class=\"property-type-list__icon ic-property-{{type.iconName}}\"></span>\r\n </button>\r\n </div>\r\n <span class=\"property-type-list__label\">{{type.shortName}}</span>\r\n <ng-template [ngIf]=\"type.value === 'RESIDENTIAL' && propertyTypeSelected.value === 'RESIDENTIAL'\">\r\n <div class=\"property-type-list__divider property-type-list__divider--left\"></div>\r\n <div class=\"property-type-list__divider property-type-list__divider--right\"></div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n <ng-template [ngIf]=\"isOPI\">\r\n <div class=\"all\">\r\n <button mat-raised-button=\"\" type=\"button\" class=\"all__button\"\r\n [ngClass]=\"{'all__button--active': propertyTypeSelected.value === 'NONE'}\"\r\n (click)=\"changePropertyType(9)\">Todo\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'NONE'\">\r\n <mat-divider></mat-divider>\r\n <div class=\"--padding\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-price\"></span>\r\n Presupuesto\r\n </h4>\r\n <div class=\"budget\">\r\n <!-- Min price [START] -->\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>M\u00EDnimo</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" type=\"number\" title=\"Min price\" formControlName=\"minPrice\" min=\"1\" >\r\n <mat-error *ngIf=\"filtersForm.controls['minPrice'].hasError('pattern')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n <mat-error *ngIf=\"filtersForm.controls['minPrice'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Min price [END] -->\r\n <!-- Max price [START] -->\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>M\u00E1ximo</mat-label>\r\n <input autocomplete=\"off\" matInput=\"\" type=\"number\" title=\"max price\" formControlName=\"maxPrice\">\r\n <mat-error *ngIf=\"filtersForm.controls['maxPrice'].hasError('pattern')\">\r\n Debe ingresar solo n\u00FAmeros\r\n </mat-error>\r\n <mat-error *ngIf=\"filtersForm.controls['maxPrice'].hasError('required')\">\r\n Este campo es requerido\r\n </mat-error>\r\n <mat-error *ngIf=\"filtersForm.controls['maxPrice'].hasError('currency')\">\r\n Valor m\u00EDnimo excedido\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Max price [END] -->\r\n </div>\r\n <div class=\"features\">\r\n <ng-template\r\n [ngIf]=\"propertyTypeSelected.value === 'RESIDENTIAL' || propertyTypeSelected.value === 'HOUSE' || propertyTypeSelected.value === 'APARTMENT'\">\r\n <div class=\"features__bedrooms\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-bedroom\"></span>\r\n Habitaciones\r\n </h4>\r\n <mat-button-toggle-group name=\"bedrooms\" aria-label=\"Bedrooms\" formControlName=\"bedrooms\">\r\n <ng-container *ngFor=\"let bedroom of bedroomsList\">\r\n <ng-template [ngIf]=\"bedroom === 0\" [ngIfElse]=\"bedroomNumber\">\r\n <mat-button-toggle [value]=\"bedroom\" class=\"features__bedrooms--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #bedroomNumber>\r\n <mat-button-toggle [value]=\"bedroom\">{{bedroom}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n <div class=\"features__bathrooms\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-bathroom\"></span>\r\n Ba\u00F1os\r\n </h4>\r\n <mat-button-toggle-group name=\"bathrooms\" aria-label=\"Bathrooms\" formControlName=\"bathrooms\">\r\n <ng-container *ngFor=\"let bathroom of bathroomsList\">\r\n <ng-template [ngIf]=\"bathroom === 0\" [ngIfElse]=\"bathroomNumber\">\r\n <mat-button-toggle [value]=\"bathroom\"\r\n class=\"features__bathrooms--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #bathroomNumber>\r\n <mat-button-toggle [value]=\"bathroom\">{{bathroom}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'LAND' && propertyTypeSelected.value !== 'INVESTMENT'\">\r\n <div class=\"features__parking-places\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-parking\"></span>\r\n Estacionamientos\r\n </h4>\r\n <mat-button-toggle-group name=\"parking_places\" aria-label=\"Parking Places\"\r\n formControlName=\"parkingPlaces\">\r\n <ng-container *ngFor=\"let parking of parkingPlacesList\">\r\n <ng-template [ngIf]=\"parking === 0\" [ngIfElse]=\"parkingNumber\">\r\n <mat-button-toggle [value]=\"parking\"\r\n class=\"features__parking-places--unlimited\">\r\n Sin <br> l\u00EDmite\r\n </mat-button-toggle>\r\n </ng-template>\r\n <ng-template #parkingNumber>\r\n <mat-button-toggle [value]=\"parking\">{{parking}}+\r\n </mat-button-toggle>\r\n </ng-template>\r\n </ng-container>\r\n </mat-button-toggle-group>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value !== 'INVESTMENT'\">\r\n <div class=\"features__surface\">\r\n <h4 class=\"--title\">\r\n <span class=\"ic-features-surface\"></span>\r\n Superficie\r\n </h4>\r\n <div class=\"--row\">\r\n <mat-form-field appearance=\"outline\" class=\"--col\">\r\n <mat-label>\u00C1rea</mat-label>\r\n <mat-select formControlName=\"surface\">\r\n <mat-option [value]=\"0\">\r\n Sin l\u00EDmite\r\n </mat-option>\r\n <ng-container *ngFor=\"let surface of surfaceList\">\r\n <mat-option [value]=\"surface\">\r\n {{surface}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-button-toggle-group name=\"unit_surface\" aria-label=\"Unit surface\" formControlName=\"surfaceUnit\">\r\n <mat-button-toggle [value]=\"0\">m2</mat-button-toggle>\r\n <mat-button-toggle [value]=\"1\">sq ft</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.value === 'INVESTMENT'\">\r\n <div class=\"feature investment\">\r\n <h4 class=\"--title\">Retorno de inversi\u00F3n</h4>\r\n <mat-form-field appearance=\"outline\" class=\"--col\">\r\n <mat-label>Porcentaje</mat-label>\r\n <mat-select formControlName=\"roi\">\r\n <mat-option [value]=\"0\">\r\n Sin l\u00EDmite\r\n </mat-option>\r\n <ng-container *ngFor=\"let roi of roiList\">\r\n <mat-option [value]=\"roi\">\r\n {{roi}}%\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </ng-template>\r\n <div class=\"amenities-container\">\r\n <ng-template [ngIf]=\"propertyTypeSelected.amenities.length > 0\">\r\n <div class=\"amenities\">\r\n <h4 class=\"--title\">\r\n Amenidades\r\n </h4>\r\n <div class=\"amenities__list\">\r\n <ng-container *ngFor=\"let amenity of propertyTypeSelected.amenities\">\r\n <div class=\"amenities__amenity\" matRipple (click)=\"updateAmenity(amenity)\">\r\n <span class=\"amenity__icon ic-amenities-{{amenity.iconName}}\"\r\n [ngClass]=\"{'amenity--active': amenity.checked}\"></span>\r\n <span class=\"amenity__label\">{{amenity.name}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template [ngIf]=\"propertyTypeSelected.features.length > 0\">\r\n <div class=\"amenities\">\r\n <h4 class=\"--title\">\r\n Caracteristicas de la ubicaci\u00F3n\r\n </h4>\r\n <div class=\"amenities__list\">\r\n <ng-container *ngFor=\"let feature of propertyTypeSelected.features\">\r\n <div class=\"amenities__amenity\" matRipple (click)=\"updateAmenity(feature)\">\r\n <span class=\"amenity__icon ic-amenities-{{feature.iconName}}\"\r\n [ngClass]=\"{'amenity--active': feature.checked}\"></span>\r\n <span class=\"amenity__label\">{{feature.name}}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <button mat-flat-button type=\"submit\" class=\"apply-button\" color=\"primary\" (click)=\"applyFilters()\">\r\n VER PROPIEDADES\r\n </button>\r\n </div>\r\n <!--div class=\"actions\">\r\n <ng-template [ngIf]=\"!isOPI\" [ngIfElse]=\"closeButtonTemplate\">\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\" (click)=\"saveSearchByFilters()\">\r\n GUARDAR\r\n </button>\r\n </ng-template>\r\n <ng-template #closeButtonTemplate>\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\" (click)=\"close()\">CERRAR</button>\r\n </ng-template>\r\n <button mat-flat-button=\"\" type=\"button\" class=\"action__button\" color=\"primary\"\r\n (click)=\"resetFilters()\">LIMPIAR\r\n </button>\r\n </div-->\r\n</form>\r\n",
|
|
522
455
|
styles: [":host{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;display:flex;background:var(--overlay);transition:250ms}.filters--opened{height:90%!important}@media screen and (max-width:600px){.filters--opened{width:100%!important;height:100%!important;top:0!important}}.filters{width:700px;height:auto;margin:auto;border-radius:16px;position:relative;overflow:hidden;transition:150ms}.filters .--padding{padding:16px 48px;box-sizing:border-box}.filters .--row{display:flex;justify-content:space-between;align-items:flex-start}.filters .--col{width:45%}.filters .--title{margin:16px 0;color:#707070}.filters .float-button-close{position:absolute;top:16px;right:16px;height:16px;border-radius:50%}.filters .apply-button{width:100%;position:absolute;bottom:0}.filters .body{height:calc(100% - 36px);overflow-x:hidden;overflow-y:auto}.filters .header{display:flex;align-items:center;justify-content:space-around;margin-bottom:8px}.filters .listing-types{width:100%;border-radius:16px}.filters .listing-types mat-button-toggle{width:50%;height:36px}.filters ::ng-deep .listing-types mat-button-toggle button{height:36px}.filters ::ng-deep .listing-types mat-button-toggle button .mat-button-toggle-label-content{line-height:36px}.filters .currency ::ng-deep .mat-form-field-wrapper{padding:0}@media screen and (max-width:600px){.filters{width:100%;position:absolute;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;top:initial;bottom:0;left:0}.filters .--padding{padding:16px 24px}.filters .header{flex-direction:column}.filters .currency{width:70%;margin-bottom:8px}}.filters .offering-type-list{width:40%;border-radius:16px}.filters .offering-type-list mat-button-toggle{width:50%;height:36px}.filters ::ng-deep .offering-type-list mat-button-toggle button{height:36px}.filters ::ng-deep .offering-type-list mat-button-toggle button .mat-button-toggle-label-content{line-height:36px}.filters .property-type-list{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 9))[9];grid-template-columns:repeat(9,calc(100% / 9));-ms-grid-rows:(80px)[1];grid-template-rows:repeat(1,80px);border-radius:40px;padding:8px;box-sizing:border-box}@media screen and (max-width:600px){.filters .offering-type-list{width:70%}.filters .property-type-list{-ms-grid-columns:(calc(100% / 3))[3];grid-template-columns:repeat(3,calc(100% / 3));-ms-grid-rows:(80px)[3];grid-template-rows:repeat(3,80px)}}.filters .new-property-type-list{display:-ms-grid;display:grid;-ms-grid-columns:(calc(100% / 8))[8];grid-template-columns:repeat(8,calc(100% / 8));-ms-grid-rows:(80px)[1];grid-template-rows:repeat(1,80px);border-radius:40px;padding:8px;box-sizing:border-box}.filters .property-type-list .property-type-list__button{margin:auto;position:relative}.filters .property-type-list .property-type-list__button button{box-shadow:none}.filters .property-type-list .property-type-list__icon{width:24px;height:24px;font-size:24px}.filters .property-type-list .property-type-list__border{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin:auto;opacity:.7;border-radius:50%;box-sizing:border-box}.filters .property-type-list .property-type-list__border--active{padding:4px;border:2px solid;opacity:1!important}.filters .property-type-list .property-type-list__label{font-size:12px;display:block;margin:8px 0;text-align:center}.filters .property-type-list .property-type-list__divider{width:14%;height:2px;background:#707070;top:30%;position:absolute}.filters .property-type-list .property-type-list__divider--left{left:-9px}.filters .property-type-list .property-type-list__divider--right{right:-9px}@media screen and (max-width:600px){.filters .new-property-type-list{-ms-grid-columns:(calc(100% / 3))[3];grid-template-columns:repeat(3,calc(100% / 3));-ms-grid-rows:(80px)[3];grid-template-rows:repeat(3,80px)}.filters .property-type-list .property-type-list__divider{width:60%}.filters .property-type-list .property-type-list__divider--left{left:-38px}.filters .property-type-list .property-type-list__divider--right{right:-38px}}.filters .new-property-type-list .property-type-list__button{margin:auto;position:relative}.filters .new-property-type-list .property-type-list__button button{box-shadow:none}.filters .new-property-type-list .property-type-list__icon{width:24px;height:24px;font-size:24px}.filters .new-property-type-list .property-type-list__border{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin:auto;opacity:.7;border-radius:50%;box-sizing:border-box}.filters .new-property-type-list .property-type-list__border--active{padding:4px;border:2px solid;opacity:1!important}.filters .new-property-type-list .property-type-list__label{font-size:12px;display:block;margin:8px 0;text-align:center}.filters .new-property-type-list .property-type-list__divider{width:14%;height:2px;background:#707070;top:30%;position:absolute}.filters .new-property-type-list .property-type-list__divider--left{left:-9px}.filters .new-property-type-list .property-type-list__divider--right{right:-9px}@media screen and (max-width:600px){.filters .new-property-type-list .property-type-list__divider{width:60%}.filters .new-property-type-list .property-type-list__divider--left{left:-38px}.filters .new-property-type-list .property-type-list__divider--right{right:-38px}}.filters .all{width:100%;margin:8px 0}.filters .all .all__button{margin:0 40%;width:20%;border-radius:16px;background:0 0}.filters .budget{display:flex}.filters .budget mat-form-field{margin-right:8px;width:calc(100% / 2 - 8px)}.filters .features{display:-ms-grid;display:grid;-ms-grid-columns:(50%)[2];grid-template-columns:repeat(2,50%);-ms-grid-rows:(auto)[2];grid-template-rows:repeat(2,auto)}@media screen and (max-width:600px){.filters .all .all__button{width:50%;margin:0 25%}.filters .features{display:block}.filters .amenities-container{flex-direction:column}}.filters .features .features__bathrooms mat-button-toggle-group,.filters .features .features__bedrooms mat-button-toggle-group,.filters .features .features__parking-places mat-button-toggle-group{width:calc(100% - 16px)}.filters .features .features__bathrooms mat-button-toggle-group mat-button-toggle,.filters .features .features__bedrooms mat-button-toggle-group mat-button-toggle,.filters .features .features__parking-places mat-button-toggle-group mat-button-toggle{width:calc(100% / 5)}.filters .features .features__bedrooms--unlimited ::ng-deep .mat-button-toggle-label-content{line-height:16px;padding:8px;font-size:12px}.filters .features .features__bathrooms--unlimited ::ng-deep .mat-button-toggle-label-content{line-height:16px;padding:8px;font-size:12px}.filters .features .features__parking-places--unlimited ::ng-deep .mat-button-toggle-label-content{line-height:16px;padding:8px;font-size:12px}.filters .features .features__surface mat-button-toggle-group{margin-top:6px;margin-right:16px}.filters .amenities-container{width:100%;-ms-grid-column:1;grid-column-start:1;-ms-grid-column-span:2;grid-column-end:3;display:flex}.filters .amenities{width:50%}@media screen and (max-width:600px){.filters .amenities{width:100%}}.filters .amenities__amenity{width:calc(100% / 3 - 24px);height:120px;border-radius:8px;padding:8px;display:inline-flex;flex-direction:column;align-items:center;box-sizing:border-box;margin:0 8px 8px 0;cursor:pointer}.filters .amenity__icon{display:block;width:24px;height:24px;margin:8px auto;font-size:24px;padding:8px;border-radius:50%}.filters .amenity__label{width:100%;display:block;text-align:center;font-size:12px;margin:auto}.filters .actions{display:flex}.filters .actions .action__button{width:50%;border-radius:0}"]
|
|
523
456
|
}] }
|
|
524
457
|
];
|
|
@@ -533,22 +466,13 @@ FiltersComponent.ctorParameters = () => [
|
|
|
533
466
|
];
|
|
534
467
|
FiltersComponent.propDecorators = {
|
|
535
468
|
utils: [{ type: Input }],
|
|
536
|
-
newFilters: [{ type: Input }]
|
|
537
|
-
stateOptions: [{ type: Input }],
|
|
538
|
-
propertyTotal: [{ type: Input }],
|
|
539
|
-
changeFilter: [{ type: Output }]
|
|
469
|
+
newFilters: [{ type: Input }]
|
|
540
470
|
};
|
|
541
471
|
if (false) {
|
|
542
472
|
/** @type {?} */
|
|
543
473
|
FiltersComponent.prototype.utils;
|
|
544
474
|
/** @type {?} */
|
|
545
475
|
FiltersComponent.prototype.newFilters;
|
|
546
|
-
/** @type {?} */
|
|
547
|
-
FiltersComponent.prototype.stateOptions;
|
|
548
|
-
/** @type {?} */
|
|
549
|
-
FiltersComponent.prototype.propertyTotal;
|
|
550
|
-
/** @type {?} */
|
|
551
|
-
FiltersComponent.prototype.changeFilter;
|
|
552
476
|
/**
|
|
553
477
|
* @type {?}
|
|
554
478
|
* @private
|
|
@@ -602,11 +526,6 @@ if (false) {
|
|
|
602
526
|
FiltersComponent.prototype.isOPI;
|
|
603
527
|
/** @type {?} */
|
|
604
528
|
FiltersComponent.prototype.surfaceUnitSelected;
|
|
605
|
-
/**
|
|
606
|
-
* @type {?}
|
|
607
|
-
* @private
|
|
608
|
-
*/
|
|
609
|
-
FiltersComponent.prototype._lastState;
|
|
610
529
|
/**
|
|
611
530
|
* @type {?}
|
|
612
531
|
* @private
|
|
@@ -638,4 +557,4 @@ if (false) {
|
|
|
638
557
|
*/
|
|
639
558
|
FiltersComponent.prototype._converter;
|
|
640
559
|
}
|
|
641
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWFwbGFuZGVyL2NvbXBvbmVudHMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9maWx0ZXJzL2ZpbHRlcnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFBRSxZQUFZLEVBQ3hCLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUFFLE1BQU0sRUFDaEIsU0FBUyxFQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQWEsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQWUsUUFBUSxFQUFzQixnQkFBZ0IsRUFBaUIsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvSCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRWxDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUVuRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUV4RyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUN0QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFbEQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFPekYsTUFBTSxPQUFPLGdCQUFnQjs7Ozs7Ozs7O0lBMEIzQixZQUM2QyxPQUFnQixFQUNuRCxPQUFrQixF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aUM7Ozs7O0lBQ2pDLHNDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCwgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7QXBwVXRpbCwgQ0VSLCBDdXJyZW5jeSwgRmlsdGVyLCBMaW1pdFByaWNlLCBPZmZlcmluZ1R5cGVFbnVtLCBQcm9wZXJ0eVJhbmdlLCBQcm9wZXJ0eVR5cGVFbnVtfSBmcm9tICdAbWFwbGFuZGVyL3R5cGVzJztcclxuaW1wb3J0IHtDb25zdGFudHNDb21wb25lbnRzfSBmcm9tICcuLi8uLi9jb25zdGFudHNDb21wb25lbnRzJztcclxuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vdXRpbHMnO1xyXG5pbXBvcnQge0ZpbHRlcnNDaGFuZ2V9IGZyb20gJy4vLi4vLi4vdXRpbHMvbW9kZWxzL2ZpbHRlcnMtY2hhbmdlJztcclxuaW1wb3J0IHtGaWx0ZXJzV3JhcHBlcn0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3Nlcy9maWx0ZXJzLXdyYXBwZXInO1xyXG5pbXBvcnQge1Byb3BlcnR5VHlwZUl0ZW19IGZyb20gJy4vLi4vLi4vdXRpbHMvbW9kZWxzL3Byb3BlcnR5LXR5cGUtaXRlbSc7XHJcbmltcG9ydCB7Q3VycmVuY3lDb252ZXJ0ZXJTZXJ2aWNlfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL2N1cnJlbmN5LWNvbnZlcnRlci9jdXJyZW5jeS1jb252ZXJ0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7RmlsdGVyc30gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJmYWNlcy9maWx0ZXJzJztcclxuaW1wb3J0IHtGaWx0ZXJzU2VydmljZX0gZnJvbSAnLi9maWx0ZXJzLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ZpbHRlcnNDaGFuZ2VUeXBlfSBmcm9tICcuLi8uLi91dGlscy9lbnVtcyc7XHJcbmltcG9ydCB7RklMVEVSU19UT0tFTn0gZnJvbSAnLi90b2tlbic7XHJcbmltcG9ydCB7TVV0aWxzfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc2VzL21VdGlscyc7XHJcbmltcG9ydCB7QW1lbml0eUl0ZW19IGZyb20gJy4uLy4uL3V0aWxzL21vZGVscyc7XHJcbmltcG9ydCB7Q3VycmVuY3lGaWx0ZXJWYWxpZGF0b3J9IGZyb20gJy4uL3Byb3BlcnR5L3ZhbGlkYXRvcnMvY3VycmVuY3ktZmlsdGVyLXZhbGlkYXRvcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1maWx0ZXJzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVycy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVycy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgRmlsdGVycyB7XHJcbiAgQElucHV0KCkgdXRpbHM6IEFwcFV0aWw7XHJcbiAgQElucHV0KCkgbmV3RmlsdGVyczogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzdGF0ZU9wdGlvbnM6IEFycmF5PHtuYW1lOiBzdHJpbmcsIHRvdGFsOiBudW1iZXJ9PjtcclxuICBASW5wdXQoKSBwcm9wZXJ0eVRvdGFsOiBudW1iZXI7XHJcbiAgQE91dHB1dCgpIGNoYW5nZUZpbHRlcjogRXZlbnRFbWl0dGVyPHt0eXBlOiAncHJvcGVydHlUeXBlJyB8ICdmaWx0ZXInIHwgJ29mZmVyJyB8ICdpbml0JywgcGF5bG9hZDoge2ZpbHRlcjogRmlsdGVyLCB2YWx1ZTogYW55fX0+O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgTUVURVJTX1RPX1NRID0gMTAuNzYzOTEwNDI7XHJcbiAgcHJpdmF0ZSBfdG1wTWluUHJpY2VMaXN0OiBudW1iZXJbXTtcclxuICBwcml2YXRlIF90bXBNYXhQcmljZUxpc3Q6IG51bWJlcltdO1xyXG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX2lzU2hhcmVkUHJvcGVydGllczogYm9vbGVhbjtcclxuICBwdWJsaWMgZmlsdGVyc0Zvcm06IEZvcm1Hcm91cDtcclxuICBwdWJsaWMgcHJvcGVydHlUeXBlTGlzdDogUHJvcGVydHlUeXBlSXRlbVtdO1xyXG4gIHB1YmxpYyBiZWRyb29tc0xpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBiYXRocm9vbXNMaXN0OiBudW1iZXJbXTtcclxuICBwdWJsaWMgcGFya2luZ1BsYWNlc0xpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBjdXJyZW5jeUxpc3Q6IENFUltdO1xyXG4gIHB1YmxpYyBtaW5QcmljZUxpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBtYXhQcmljZUxpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBzdXJmYWNlTGlzdDogbnVtYmVyW107XHJcbiAgcHVibGljIHJvaUxpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBwcm9wZXJ0eVR5cGVTZWxlY3RlZDogUHJvcGVydHlUeXBlSXRlbTtcclxuICBwdWJsaWMgZmlsdGVyOiBGaWx0ZXI7XHJcbiAgcHVibGljIGlzT1BJOiBib29sZWFuO1xyXG4gIHB1YmxpYyBzdXJmYWNlVW5pdFNlbGVjdGVkOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfbGFzdFN0YXRlOiBzdHJpbmc7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZJTFRFUlNfVE9LRU4pIHByaXZhdGUgX2NvbmZpZzogYm9vbGVhbixcclxuICAgIHByaXZhdGUgX3JlbmRlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBfcmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBfc2VydmljZTogRmlsdGVyc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9mb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIF9jb252ZXJ0ZXI6IEN1cnJlbmN5Q29udmVydGVyU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5fbGFzdFN0YXRlID0gbnVsbDtcclxuICAgIHRoaXMuY2hhbmdlRmlsdGVyID0gbmV3IEV2ZW50RW1pdHRlcjx7dHlwZTogJ3Byb3BlcnR5VHlwZScgfCAnZmlsdGVyJyB8ICdvZmZlcicgfCAnaW5pdCcsIHBheWxvYWQ6IHtmaWx0ZXI6IEZpbHRlciwgdmFsdWU6IGFueX19PigpO1xyXG4gICAgdGhpcy5pc09QSSA9IHRoaXMuX2NvbmZpZyB8fCBmYWxzZTtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAgIHRoaXMucHJvcGVydHlUeXBlTGlzdCA9IENvbnN0YW50c0NvbXBvbmVudHMuUHJvcGVydHlUeXBlTGlzdC5tYXAoaXRlbSA9PiAoey4uLml0ZW19KSk7XHJcbiAgICB0aGlzLmJlZHJvb21zTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIENvbnN0YW50c0NvbXBvbmVudHMuQmVkcm9vbUxpc3QpO1xyXG4gICAgdGhpcy5iYXRocm9vbXNMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgQ29uc3RhbnRzQ29tcG9uZW50cy5CYXRocm9vbUxpc3QpO1xyXG4gICAgdGhpcy5wYXJraW5nUGxhY2VzTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIENvbnN0YW50c0NvbXBvbmVudHMuUGFya2luZ1NwYWNlc0xpc3QpO1xyXG4gICAgdGhpcy5zdXJmYWNlTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIENvbnN0YW50c0NvbXBvbmVudHMuU3VyZmFjZUxpc3QpO1xyXG4gICAgdGhpcy5yb2lMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgQ29uc3RhbnRzQ29tcG9uZW50cy5ST0lMaXN0KTtcclxuICAgIHRoaXMuc3VyZmFjZVVuaXRTZWxlY3RlZCA9IDA7XHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgdGhpcy5pbml0Q29tcG9uZW50QnlQcm9wZXJ0eVR5cGUoKTtcclxuICAgIHRoaXMucmVzdG9yZUxhc3RGaWx0ZXJzU2F2ZWQodHJ1ZSk7XHJcbiAgICB0aGlzLmxpc3RlbkNoYW5nZXNPbkZvcm0oKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5vcGVuQ29tcG9uZW50KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy51dGlscykge1xyXG4gICAgICByZXR1cm4gY29uc29sZS53YXJuKCdbRmlsdGVyc0NvbXBvbmVudF0gdXRpbHMgcGFyYW0gaXMgcmVxdWlyZWQnKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdENvbXBvbmVudCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3V0aWxzJ10gJiYgY2hhbmdlc1sndXRpbHMnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgY29uc29sZS5sb2coJ1tGaWx0ZXJzQ29tcG9uZW50XSB1dGlscyByZWFkeScpO1xyXG4gICAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydzdGF0ZU9wdGlvbnMnXSAmJiBjaGFuZ2VzWydzdGF0ZU9wdGlvbnMnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMuX2xhc3RTdGF0ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAoY29uc3Qgc3RhdGVPcHRpb24gb2YgdGhpcy5zdGF0ZU9wdGlvbnMpIHtcclxuICAgICAgICAgIGlmIChzdGF0ZU9wdGlvbi5uYW1lID09PSB0aGlzLl9sYXN0U3RhdGUpIHtcclxuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eVRvdGFsID0gc3RhdGVPcHRpb24udG90YWw7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyLnN0YXRlID0gdGhpcy5fbGFzdFN0YXRlO1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcnNGb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgICAgIHN0YXRlOiB0aGlzLl9sYXN0U3RhdGVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG9wZW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlc3RvcmVMYXN0RmlsdGVyc1NhdmVkKCk7XHJcbiAgICB0aGlzLm9wZW5Db21wb25lbnQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMub3BlbkNvbXBvbmVudChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQcm9wZXJ0eVR5cGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fbGFzdFN0YXRlID0gdGhpcy5maWx0ZXIuc3RhdGU7XHJcbiAgICB0aGlzLnJlc2V0RmlsdGVycyhpbmRleCk7XHJcbiAgICB0aGlzLmFwcGx5QW1lbml0aWVzKCk7XHJcbiAgICB0aGlzLmZpbHRlci50eXBlID0gdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZC52YWx1ZTtcclxuICAgIHN3aXRjaCAodGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZC52YWx1ZSkge1xyXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZUVudW0uUk9PTTpcclxuICAgICAgICB0aGlzLmZpbHRlcnNGb3JtLmNvbnRyb2xzWydvZmZlcmluZyddLnNldFZhbHVlKE9mZmVyaW5nVHlwZUVudW0uUkVOVCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlRW51bS5JTlZFU1RNRU5UOlxyXG4gICAgICAgIHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ29mZmVyaW5nJ10uc2V0VmFsdWUoT2ZmZXJpbmdUeXBlRW51bS5TQUxFKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuZmlsdGVyLmxvY2F0aW9uVHlwZSA9ICdTVEFURSc7XHJcbiAgICB0aGlzLmZpbHRlci5zdGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLmZpbHRlci5tdW5pY2lwYWxpdHkgPSBudWxsO1xyXG4gICAgdGhpcy5maWx0ZXIuY29sb255ID0gbnVsbDtcclxuICAgIHRoaXMuY2hhbmdlRmlsdGVyLmVtaXQoe3R5cGU6ICdwcm9wZXJ0eVR5cGUnLCBwYXlsb2FkOiB7ZmlsdGVyOiB0aGlzLmZpbHRlciwgdmFsdWU6IHRoaXMuZmlsdGVyc0Zvcm0udmFsdWV9fSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VPZmZlcmluZyhldjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9sYXN0U3RhdGUgPSB0aGlzLmZpbHRlci5zdGF0ZTtcclxuICAgIHRoaXMuZmlsdGVyLmxvY2F0aW9uVHlwZSA9ICdTVEFURSc7XHJcbiAgICB0aGlzLmZpbHRlci5zdGF0ZSA9IG51bGw7XHJcbiAgICB0aGlzLmZpbHRlci5tdW5pY2lwYWxpdHkgPSBudWxsO1xyXG4gICAgdGhpcy5maWx0ZXIuY29sb255ID0gbnVsbDtcclxuICAgIHRoaXMuZmlsdGVyLm9mZmVyaW5nID0gZXYgYXMgT2ZmZXJpbmdUeXBlRW51bTtcclxuICAgIHRoaXMuY2hhbmdlRmlsdGVyLmVtaXQoe3R5cGU6ICdvZmZlcicsIHBheWxvYWQ6IHtmaWx0ZXI6IHRoaXMuZmlsdGVyLCB2YWx1ZTogdGhpcy5maWx0ZXJzRm9ybS52YWx1ZX19KTtcclxuICB9XHJcblxyXG4gIGNoYW5nZUN1cnJlbmN5KGV2OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVyLmN1cnJlbmN5ID0gZXY7XHJcbiAgICB0aGlzLmNoYW5nZUZpbHRlclN0YXR1cygpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlU3RhdGUoZXY6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXIuc3RhdGUgPSBldjtcclxuICAgIHRoaXMuY2hhbmdlRmlsdGVyU3RhdHVzKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVBbWVuaXR5KGFtZW5pdHk6IEFtZW5pdHlJdGVtKTogdm9pZCB7XHJcbiAgICBpZiAoYW1lbml0eS5jaGVja2VkKSB7XHJcbiAgICAgIGNvbnN0IGkgPSB0aGlzLmZpbHRlci5leHRyYXMuaW5kZXhPZihhbWVuaXR5LnZhbHVlKTtcclxuICAgICAgaWYgKGkgPiAtMSkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyLmV4dHJhcy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyLmV4dHJhcy5wdXNoKGFtZW5pdHkudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgYW1lbml0eS5jaGVja2VkID0gIWFtZW5pdHkuY2hlY2tlZDtcclxuICAgIHRoaXMuY2hhbmdlRmlsdGVyU3RhdHVzKCk7XHJcbiAgfVxyXG5cclxuICBzYXZlU2VhcmNoQnlGaWx0ZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hcHBseUZpbHRlcnMoRmlsdGVyc0NoYW5nZVR5cGUuU0FWRSk7XHJcbiAgfVxyXG5cclxuICBhcHBseUZpbHRlcnModHlwZT86IEZpbHRlcnNDaGFuZ2VUeXBlKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldEZpbHRlckJ5Rm9ybSgpO1xyXG4gICAgY29uc3QgZmlsdGVyVG9TZWFyY2ggPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmZpbHRlcik7XHJcbiAgICBpZiAodGhpcy5zdXJmYWNlVW5pdFNlbGVjdGVkID09PSAxKSB7XHJcbiAgICAgIGZpbHRlclRvU2VhcmNoLm1haW5BcmVhID0gZmlsdGVyVG9TZWFyY2gubWFpbkFyZWEgKiB0aGlzLk1FVEVSU19UT19TUTtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlRmlsdGVyc1NhdmVkKGZpbHRlclRvU2VhcmNoKTtcclxuICAgIHRoaXMuX3NlcnZpY2Uuc2V0Q2hhbmdlKHtcclxuICAgICAgdHlwZTogdHlwZSB8fCBGaWx0ZXJzQ2hhbmdlVHlwZS5BUFBMWSxcclxuICAgICAgZmlsdGVyOiBmaWx0ZXJUb1NlYXJjaCxcclxuICAgICAgZnQ6IHRoaXMuc3VyZmFjZVVuaXRTZWxlY3RlZCA9PT0gMSxcclxuICAgICAgaXNTaGFyZWRQcm9wZXJ0aWVzOiB0aGlzLl9pc1NoYXJlZFByb3BlcnRpZXNcclxuICAgIH0pO1xyXG4gICAgdGhpcy5vcGVuQ29tcG9uZW50KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHJlc2V0RmlsdGVycyhwcm9wZXJ0eVR5cGVJdGVtSW5kZXg/OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVyLmN1cnJlbmN5ID0gIXByb3BlcnR5VHlwZUl0ZW1JbmRleCA/ICdNWE4nIDogdGhpcy5maWx0ZXIuY3VycmVuY3k7XHJcbiAgICB0aGlzLmluaXRDb21wb25lbnRCeVByb3BlcnR5VHlwZShwcm9wZXJ0eVR5cGVJdGVtSW5kZXgpO1xyXG4gICAgdGhpcy5zdXJmYWNlVW5pdFNlbGVjdGVkID0gMDtcclxuICAgIHRoaXMuZmlsdGVyID0gcHJvcGVydHlUeXBlSXRlbUluZGV4ID8gVXRpbHMuZ2V0RmlsdGVyQnlQcm9wZXJ0eVR5cGUodGhpcy5maWx0ZXIpIDogVXRpbHMuZ2V0SW5pdGlhbEZpbHRlcih0aGlzLmlzT1BJLCB0aGlzLmZpbHRlcik7XHJcbiAgICB0aGlzLnVwZGF0ZUZvcm1CeUZpbHRlcnMoKTtcclxuICAgIHRoaXMuc2V0UHJpY2VzKCk7XHJcbiAgICB0aGlzLnByb3BlcnR5VG90YWwgPSAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlcnNGb3JtID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBzdGF0ZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBvZmZlcmluZzogW10sXHJcbiAgICAgIGN1cnJlbmN5OiBbXSxcclxuICAgICAgbWluUHJpY2U6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihuZXcgUmVnRXhwKCcoXlswLTldKyknKSldXSxcclxuICAgICAgbWF4UHJpY2U6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihuZXcgUmVnRXhwKCcoXlswLTldKyknKSldXSxcclxuICAgICAgYmVkcm9vbXM6IFtdLFxyXG4gICAgICBiYXRocm9vbXM6IFtdLFxyXG4gICAgICBwYXJraW5nUGxhY2VzOiBbXSxcclxuICAgICAgc3VyZmFjZTogW10sXHJcbiAgICAgIHN1cmZhY2VVbml0OiBbXSxcclxuICAgICAgcm9pOiBbXVxyXG4gICAgfSwge1xyXG4gICAgICB2YWxpZGF0b3I6IEN1cnJlbmN5RmlsdGVyVmFsaWRhdG9yKCdtaW5QcmljZScsICdtYXhQcmljZScpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNoYW5nZUZpbHRlclN0YXR1cygpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0RmlsdGVyQnlGb3JtKCk7XHJcbiAgICBjb25zdCBmaWx0ZXJUb1NlYXJjaCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZmlsdGVyKTtcclxuICAgIGlmICh0aGlzLnN1cmZhY2VVbml0U2VsZWN0ZWQgPT09IDEpIHtcclxuICAgICAgZmlsdGVyVG9TZWFyY2gubWFpbkFyZWEgPSBmaWx0ZXJUb1NlYXJjaC5tYWluQXJlYSAqIHRoaXMuTUVURVJTX1RPX1NRO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmZpbHRlcnNGb3JtLmNvbnRyb2xzWydtaW5QcmljZSddLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ21pblByaWNlJ10ucmVzZXQoMCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyc0Zvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgICAgbWluUHJpY2U6IDBcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ21pblByaWNlJ10udmFsdWUpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzRm9ybS5jb250cm9sc1snbWluUHJpY2UnXS5yZXNldCgwKTtcclxuICAgICAgdGhpcy5maWx0ZXJzRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICBtYXhQcmljZTogMFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlRmlsdGVyLmVtaXQoe3R5cGU6ICdmaWx0ZXInLCBwYXlsb2FkOiB7ZmlsdGVyOiB0aGlzLmZpbHRlciwgdmFsdWU6IGZpbHRlclRvU2VhcmNofX0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGb3JtQnlGaWx0ZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJzRm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgc3RhdGU6IHRoaXMuZmlsdGVyLnN0YXRlLFxyXG4gICAgICBvZmZlcmluZzogdGhpcy5maWx0ZXIub2ZmZXJpbmcsXHJcbiAgICAgIGN1cnJlbmN5OiB0aGlzLmZpbHRlci5jdXJyZW5jeSxcclxuICAgICAgbWluUHJpY2U6IHRoaXMuZmlsdGVyLmRvd25MaW1pdFByaWNlLFxyXG4gICAgICBtYXhQcmljZTogdGhpcy5maWx0ZXIudXBMaW1pdFByaWNlLFxyXG4gICAgICBiZWRyb29tczogdGhpcy5maWx0ZXIuYmVkcm9vbXMsXHJcbiAgICAgIGJhdGhyb29tczogdGhpcy5maWx0ZXIuYmF0aHJvb21zLFxyXG4gICAgICBwYXJraW5nUGxhY2VzOiB0aGlzLmZpbHRlci5wYXJraW5nUGxhY2VzLFxyXG4gICAgICBzdXJmYWNlOiB0aGlzLmZpbHRlci5tYWluQXJlYSxcclxuICAgICAgc3VyZmFjZVVuaXQ6IHRoaXMuc3VyZmFjZVVuaXRTZWxlY3RlZCxcclxuICAgICAgcm9pOiB0aGlzLmZpbHRlci5yb2lcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWx0ZXJCeUZvcm0oKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhID0gdGhpcy5maWx0ZXJzRm9ybS52YWx1ZTtcclxuICAgIHRoaXMuZmlsdGVyLnN0YXRlID0gZGF0YS5zdGF0ZTtcclxuICAgIHRoaXMuZmlsdGVyLm9mZmVyaW5nID0gZGF0YS5vZmZlcmluZztcclxuICAgIHRoaXMuZmlsdGVyLmN1cnJlbmN5ID0gZGF0YS5jdXJyZW5jeTtcclxuICAgIHRoaXMuZmlsdGVyLmRvd25MaW1pdFByaWNlID0gTnVtYmVyKGRhdGEubWluUHJpY2UpO1xyXG4gICAgdGhpcy5maWx0ZXIudXBMaW1pdFByaWNlID0gTnVtYmVyKGRhdGEubWF4UHJpY2UpO1xyXG4gICAgdGhpcy5maWx0ZXIuYmVkcm9vbXMgPSBOdW1iZXIoZGF0YS5iZWRyb29tcyk7XHJcbiAgICB0aGlzLmZpbHRlci5iYXRocm9vbXMgPSBOdW1iZXIoZGF0YS5iYXRocm9vbXMpO1xyXG4gICAgdGhpcy5maWx0ZXIucGFya2luZ1BsYWNlcyA9IE51bWJlcihkYXRhLnBhcmtpbmdQbGFjZXMpO1xyXG4gICAgdGhpcy5maWx0ZXIubWFpbkFyZWEgPSBOdW1iZXIoZGF0YS5zdXJmYWNlKTtcclxuICAgIHRoaXMuc3VyZmFjZVVuaXRTZWxlY3RlZCA9IE51bWJlcihkYXRhLnN1cmZhY2VVbml0KTtcclxuICAgIHRoaXMuZmlsdGVyLnJvaSA9IE51bWJlcihkYXRhLnJvaSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRDb21wb25lbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRVdGlscygpO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5fc2VydmljZS5nZXRDaGFuZ2VzKCkuc3Vic2NyaWJlKChyZXNwb25zZTogRmlsdGVyc0NoYW5nZSkgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAocmVzcG9uc2UudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBGaWx0ZXJzQ2hhbmdlVHlwZS5MSVNUX1RZUEU6XHJcbiAgICAgICAgICAgIHRoaXMuX2lzU2hhcmVkUHJvcGVydGllcyA9IHJlc3BvbnNlLmlzU2hhcmVkUHJvcGVydGllcztcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJzU2F2ZWQocmVzcG9uc2UuZmlsdGVyKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIEZpbHRlcnNDaGFuZ2VUeXBlLkFSRUE6XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmlsdGVyc1NhdmVkKHJlc3BvbnNlLmZpbHRlcik7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLnN0YXJ0Q29tcG9uZW50KG5ldyBGaWx0ZXJzV3JhcHBlcih0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRVdGlscygpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVuY3lMaXN0ID0gdGhpcy51dGlscy5jZXJzO1xyXG4gICAgdGhpcy5zZXRQcmljZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0UHJpY2VzKHRvPzogQ3VycmVuY3kpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ21pblByaWNlJ10ucmVzZXQoMCk7XHJcbiAgICB0aGlzLmZpbHRlcnNGb3JtLmNvbnRyb2xzWydtYXhQcmljZSddLnJlc2V0KDApO1xyXG4gICAgY29uc3Qgb2ZmZXJpbmcgPSB0aGlzLmZpbHRlcnNGb3JtLmNvbnRyb2xzWydvZmZlcmluZyddLnZhbHVlO1xyXG4gICAgdGhpcy5taW5QcmljZUxpc3QgPSB0aGlzLmNyZWF0ZVByaWNlcyh0aGlzLnV0aWxzLmxpbWl0UHJpY2UsIHRoaXMucHJvcGVydHlUeXBlU2VsZWN0ZWQudmFsdWUsIG9mZmVyaW5nKTtcclxuICAgIHRoaXMubWluUHJpY2VMaXN0ID0gdGhpcy5fY29udmVydGVyLmxpc3QodGhpcy5taW5QcmljZUxpc3QsIHRoaXMudXRpbHMuY2VycywgQ3VycmVuY3kuVVNELCB0byB8fCB0aGlzLmZpbHRlci5jdXJyZW5jeSBhcyBDdXJyZW5jeSk7XHJcbiAgICB0aGlzLm1heFByaWNlTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMubWluUHJpY2VMaXN0KTtcclxuICAgIHRoaXMuX3RtcE1pblByaWNlTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMubWluUHJpY2VMaXN0KTtcclxuICAgIHRoaXMuX3RtcE1heFByaWNlTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMubWF4UHJpY2VMaXN0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlBbWVuaXRpZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BlcnR5VHlwZVNlbGVjdGVkLmFtZW5pdGllcyA9IHRoaXMucHJvcGVydHlUeXBlU2VsZWN0ZWQuYW1lbml0aWVzLm1hcChhbWVuaXR5ID0+IHtcclxuICAgICAgY29uc3QgaSA9IHRoaXMuZmlsdGVyLmV4dHJhcy5pbmRleE9mKGFtZW5pdHkudmFsdWUpO1xyXG4gICAgICBhbWVuaXR5LmNoZWNrZWQgPSAoaSA+IC0xKTtcclxuICAgICAgcmV0dXJuIGFtZW5pdHk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucHJvcGVydHlUeXBlU2VsZWN0ZWQuZmVhdHVyZXMgPSB0aGlzLnByb3BlcnR5VHlwZVNlbGVjdGVkLmZlYXR1cmVzLm1hcChhbWVuaXR5ID0+IHtcclxuICAgICAgY29uc3QgaSA9IHRoaXMuZmlsdGVyLmV4dHJhcy5pbmRleE9mKGFtZW5pdHkudmFsdWUpO1xyXG4gICAgICBhbWVuaXR5LmNoZWNrZWQgPSAoaSA+IC0xKTtcclxuICAgICAgcmV0dXJuIGFtZW5pdHk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUHJpY2VzKGxpbWl0UHJpY2U6IExpbWl0UHJpY2UsIHByb3BlcnR5VHlwZTogUHJvcGVydHlUeXBlRW51bSwgb2ZmZXJpbmc6IE9mZmVyaW5nVHlwZUVudW0pOiBudW1iZXJbXSB7XHJcbiAgICBsZXQgbGlzdDogbnVtYmVyW10gPSBbXTtcclxuICAgIGxpbWl0UHJpY2UucHJvcGVydHlSYW5nZXMuZm9yRWFjaCgocmFuZ2U6IFByb3BlcnR5UmFuZ2UpID0+IHtcclxuICAgICAgaWYgKHJhbmdlLm9mZmVyaW5nID09PSBvZmZlcmluZyAmJiByYW5nZS50eXBlID09PSBwcm9wZXJ0eVR5cGUpIHtcclxuICAgICAgICBsaXN0ID0gTVV0aWxzLmxpblNwYWNlRXhwKHJhbmdlLm1pbiwgcmFuZ2UubWF4LCAyMCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRDb21wb25lbnRCeVByb3BlcnR5VHlwZShwcm9wZXJ0eVR5cGVJdGVtSW5kZXg6IG51bWJlciA9IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGVydHlUeXBlU2VsZWN0ZWQgPSBKU09OLnBhcnNlKFxyXG4gICAgICBKU09OLnN0cmluZ2lmeShDb25zdGFudHNDb21wb25lbnRzLlByb3BlcnR5VHlwZUxpc3RbcHJvcGVydHlUeXBlSXRlbUluZGV4ICE9PSBudWxsID8gcHJvcGVydHlUeXBlSXRlbUluZGV4IDogOV0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRmlsdGVyc1NhdmVkKGZpbHRlcnM6IEZpbHRlcik6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXIgPSBmaWx0ZXJzO1xyXG4gICAgRmlsdGVyc1NlcnZpY2Uuc2F2ZUZpbHRlcnMoe1xyXG4gICAgICBmaWx0ZXJzOiBmaWx0ZXJzLFxyXG4gICAgICBmdDogdGhpcy5zdXJmYWNlVW5pdFNlbGVjdGVkID09PSAxLFxyXG4gICAgICBpc1NoYXJlZFByb3BlcnRpZXM6IHRoaXMuX2lzU2hhcmVkUHJvcGVydGllcyB8fCBmYWxzZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc3RvcmVMYXN0RmlsdGVyc1NhdmVkKGluaXQ/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWx0ZXJzU2F2ZWQgPSBGaWx0ZXJzU2VydmljZS5nZXRGaWx0ZXJzU2F2ZWQoKSB8fCBudWxsO1xyXG4gICAgdGhpcy5maWx0ZXIgPSBmaWx0ZXJzU2F2ZWQgPyBmaWx0ZXJzU2F2ZWQuZmlsdGVycyA6IFV0aWxzLmdldEluaXRpYWxGaWx0ZXIodGhpcy5pc09QSSk7XHJcbiAgICBpZiAoZmlsdGVyc1NhdmVkKSB7XHJcbiAgICAgIGlmIChmaWx0ZXJzU2F2ZWQuZnQpIHtcclxuICAgICAgICB0aGlzLmZpbHRlci5tYWluQXJlYSA9IE51bWJlcigodGhpcy5maWx0ZXIubWFpbkFyZWEgLyB0aGlzLk1FVEVSU19UT19TUSkudG9GaXhlZCgwKSk7XHJcbiAgICAgICAgdGhpcy5zdXJmYWNlVW5pdFNlbGVjdGVkID0gZmlsdGVyc1NhdmVkLmZ0ID8gMSA6IDA7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5faXNTaGFyZWRQcm9wZXJ0aWVzID0gZmlsdGVyc1NhdmVkLmlzU2hhcmVkUHJvcGVydGllcyB8fCBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMucHJvcGVydHlUeXBlU2VsZWN0ZWQgPSBDb25zdGFudHNDb21wb25lbnRzLlByb3BlcnR5VHlwZUxpc3QuZmluZChpdGVtID0+IGl0ZW0udmFsdWUgPT09IHRoaXMuZmlsdGVyLnR5cGUpO1xyXG4gICAgdGhpcy5hcHBseUFtZW5pdGllcygpO1xyXG4gICAgdGhpcy51cGRhdGVGb3JtQnlGaWx0ZXJzKCk7XHJcbiAgICBpZiAoaW5pdCkge1xyXG4gICAgICB0aGlzLmFwcGx5RmlsdGVycyhGaWx0ZXJzQ2hhbmdlVHlwZS5JTklUKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb3BlbkNvbXBvbmVudChvcGVuOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAob3Blbikge1xyXG4gICAgICB0aGlzLmNoYW5nZUZpbHRlci5lbWl0KHt0eXBlOiAnaW5pdCcsIHBheWxvYWQ6IHtmaWx0ZXI6IG51bGwsIHZhbHVlOiBudWxsfX0pO1xyXG4gICAgICB0aGlzLl9yZW5kZXIuc2V0U3R5bGUodGhpcy5fcmVmLm5hdGl2ZUVsZW1lbnQsICd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKTtcclxuICAgICAgdGhpcy5fcmVuZGVyLnNldFN0eWxlKHRoaXMuX3JlZi5uYXRpdmVFbGVtZW50LCAnb3BhY2l0eScsICcxJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9yZW5kZXIuc2V0U3R5bGUodGhpcy5fcmVmLm5hdGl2ZUVsZW1lbnQsICdvcGFjaXR5JywgJzAnKTtcclxuICAgICAgdGhpcy5fcmVuZGVyLnNldFN0eWxlKHRoaXMuX3JlZi5uYXRpdmVFbGVtZW50LCAndmlzaWJpbGl0eScsICdjb2xsYXBzZScpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0ZW5DaGFuZ2VzT25Gb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5maWx0ZXJzRm9ybS5jb250cm9sc1snb2ZmZXJpbmcnXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNldFByaWNlcygpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ2N1cnJlbmN5J10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFByaWNlcyh2YWx1ZS50b1N0cmluZygpIGFzIEN1cnJlbmN5KTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLmZpbHRlcnNGb3JtLmNvbnRyb2xzWydtaW5QcmljZSddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1heFByaWNlTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMuX3RtcE1heFByaWNlTGlzdCk7XHJcbiAgICAgICAgY29uc3QgaSA9IHRoaXMubWluUHJpY2VMaXN0LmluZGV4T2YodmFsdWUpO1xyXG4gICAgICAgIGlmIChpID4gLTEpIHtcclxuICAgICAgICAgIHRoaXMubWF4UHJpY2VMaXN0LnNwbGljZSgwLCBpICsgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ21heFByaWNlJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1pblByaWNlTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMuX3RtcE1pblByaWNlTGlzdCk7XHJcbiAgICAgICAgY29uc3QgaSA9IHRoaXMubWF4UHJpY2VMaXN0LmluZGV4T2YodmFsdWUpO1xyXG4gICAgICAgIGlmIChpID4gLTEpIHtcclxuICAgICAgICAgIGNvbnN0IGRpZmZlcmVuY2UgPSB0aGlzLm1pblByaWNlTGlzdC5sZW5ndGggLSB0aGlzLm1heFByaWNlTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgICB0aGlzLm1pblByaWNlTGlzdC5zcGxpY2UoaSArIGRpZmZlcmVuY2UsIHRoaXMubWluUHJpY2VMaXN0Lmxlbmd0aCAtIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
560
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWFwbGFuZGVyL2NvbXBvbmVudHMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9maWx0ZXJzL2ZpbHRlcnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUlMLFFBQVEsRUFDUixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFdBQVcsRUFBYSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBZSxRQUFRLEVBQXNCLGdCQUFnQixFQUFpQixnQkFBZ0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9ILE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFbEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBRW5FLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBRXhHLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUVsRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQU96RixNQUFNLE9BQU8sZ0JBQWdCOzs7Ozs7Ozs7SUF1QjNCLFlBQzZDLE9BQWdCLEVBQ25ELE9BQWtCLEVBQ2xCLElBQWdCLEVBQ2hCLFFBQXdC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bml0LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlc1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0FwcFV0aWwsIENFUiwgQ3VycmVuY3ksIEZpbHRlciwgTGltaXRQcmljZSwgT2ZmZXJpbmdUeXBlRW51bSwgUHJvcGVydHlSYW5nZSwgUHJvcGVydHlUeXBlRW51bX0gZnJvbSAnQG1hcGxhbmRlci90eXBlcyc7XHJcbmltcG9ydCB7Q29uc3RhbnRzQ29tcG9uZW50c30gZnJvbSAnLi4vLi4vY29uc3RhbnRzQ29tcG9uZW50cyc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuaW1wb3J0IHtGaWx0ZXJzQ2hhbmdlfSBmcm9tICcuLy4uLy4uL3V0aWxzL21vZGVscy9maWx0ZXJzLWNoYW5nZSc7XHJcbmltcG9ydCB7RmlsdGVyc1dyYXBwZXJ9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzZXMvZmlsdGVycy13cmFwcGVyJztcclxuaW1wb3J0IHtQcm9wZXJ0eVR5cGVJdGVtfSBmcm9tICcuLy4uLy4uL3V0aWxzL21vZGVscy9wcm9wZXJ0eS10eXBlLWl0ZW0nO1xyXG5pbXBvcnQge0N1cnJlbmN5Q29udmVydGVyU2VydmljZX0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9jdXJyZW5jeS1jb252ZXJ0ZXIvY3VycmVuY3ktY29udmVydGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ZpbHRlcnN9IGZyb20gJy4uLy4uL3V0aWxzL2ludGVyZmFjZXMvZmlsdGVycyc7XHJcbmltcG9ydCB7RmlsdGVyc1NlcnZpY2V9IGZyb20gJy4vZmlsdGVycy5zZXJ2aWNlJztcclxuaW1wb3J0IHtGaWx0ZXJzQ2hhbmdlVHlwZX0gZnJvbSAnLi4vLi4vdXRpbHMvZW51bXMnO1xyXG5pbXBvcnQge0ZJTFRFUlNfVE9LRU59IGZyb20gJy4vdG9rZW4nO1xyXG5pbXBvcnQge01VdGlsc30gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3Nlcy9tVXRpbHMnO1xyXG5pbXBvcnQge0FtZW5pdHlJdGVtfSBmcm9tICcuLi8uLi91dGlscy9tb2RlbHMnO1xyXG5pbXBvcnQge0N1cnJlbmN5RmlsdGVyVmFsaWRhdG9yfSBmcm9tICcuLi9wcm9wZXJ0eS92YWxpZGF0b3JzL2N1cnJlbmN5LWZpbHRlci12YWxpZGF0b3InO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZmlsdGVycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZpbHRlcnMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIEZpbHRlcnMge1xyXG4gIEBJbnB1dCgpIHV0aWxzOiBBcHBVdGlsO1xyXG4gIEBJbnB1dCgpIG5ld0ZpbHRlcnM6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSByZWFkb25seSBNRVRFUlNfVE9fU1EgPSAxMC43NjM5MTA0MjtcclxuICBwcml2YXRlIF90bXBNaW5QcmljZUxpc3Q6IG51bWJlcltdO1xyXG4gIHByaXZhdGUgX3RtcE1heFByaWNlTGlzdDogbnVtYmVyW107XHJcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBfaXNTaGFyZWRQcm9wZXJ0aWVzOiBib29sZWFuO1xyXG4gIHB1YmxpYyBmaWx0ZXJzRm9ybTogRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBwcm9wZXJ0eVR5cGVMaXN0OiBQcm9wZXJ0eVR5cGVJdGVtW107XHJcbiAgcHVibGljIGJlZHJvb21zTGlzdDogbnVtYmVyW107XHJcbiAgcHVibGljIGJhdGhyb29tc0xpc3Q6IG51bWJlcltdO1xyXG4gIHB1YmxpYyBwYXJraW5nUGxhY2VzTGlzdDogbnVtYmVyW107XHJcbiAgcHVibGljIGN1cnJlbmN5TGlzdDogQ0VSW107XHJcbiAgcHVibGljIG1pblByaWNlTGlzdDogbnVtYmVyW107XHJcbiAgcHVibGljIG1heFByaWNlTGlzdDogbnVtYmVyW107XHJcbiAgcHVibGljIHN1cmZhY2VMaXN0OiBudW1iZXJbXTtcclxuICBwdWJsaWMgcm9pTGlzdDogbnVtYmVyW107XHJcbiAgcHVibGljIHByb3BlcnR5VHlwZVNlbGVjdGVkOiBQcm9wZXJ0eVR5cGVJdGVtO1xyXG4gIHB1YmxpYyBmaWx0ZXI6IEZpbHRlcjtcclxuICBwdWJsaWMgaXNPUEk6IGJvb2xlYW47XHJcbiAgcHVibGljIHN1cmZhY2VVbml0U2VsZWN0ZWQ6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZJTFRFUlNfVE9LRU4pIHByaXZhdGUgX2NvbmZpZzogYm9vbGVhbixcclxuICAgIHByaXZhdGUgX3JlbmRlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBfcmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBfc2VydmljZTogRmlsdGVyc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9mb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIF9jb252ZXJ0ZXI6IEN1cnJlbmN5Q29udmVydGVyU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5pc09QSSA9IHRoaXMuX2NvbmZpZyB8fCBmYWxzZTtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAgIHRoaXMucHJvcGVydHlUeXBlTGlzdCA9IENvbnN0YW50c0NvbXBvbmVudHMuUHJvcGVydHlUeXBlTGlzdC5tYXAoaXRlbSA9PiAoey4uLml0ZW19KSk7XHJcbiAgICB0aGlzLmJlZHJvb21zTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIENvbnN0YW50c0NvbXBvbmVudHMuQmVkcm9vbUxpc3QpO1xyXG4gICAgdGhpcy5iYXRocm9vbXNMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgQ29uc3RhbnRzQ29tcG9uZW50cy5CYXRocm9vbUxpc3QpO1xyXG4gICAgdGhpcy5wYXJraW5nUGxhY2VzTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIENvbnN0YW50c0NvbXBvbmVudHMuUGFya2luZ1NwYWNlc0xpc3QpO1xyXG4gICAgdGhpcy5zdXJmYWNlTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIENvbnN0YW50c0NvbXBvbmVudHMuU3VyZmFjZUxpc3QpO1xyXG4gICAgdGhpcy5yb2lMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgQ29uc3RhbnRzQ29tcG9uZW50cy5ST0lMaXN0KTtcclxuICAgIHRoaXMuc3VyZmFjZVVuaXRTZWxlY3RlZCA9IDA7XHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgdGhpcy5pbml0Q29tcG9uZW50QnlQcm9wZXJ0eVR5cGUoKTtcclxuICAgIHRoaXMucmVzdG9yZUxhc3RGaWx0ZXJzU2F2ZWQodHJ1ZSk7XHJcbiAgICB0aGlzLmxpc3RlbkNoYW5nZXNPbkZvcm0oKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5vcGVuQ29tcG9uZW50KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy51dGlscykge1xyXG4gICAgICByZXR1cm4gY29uc29sZS53YXJuKCdbRmlsdGVyc0NvbXBvbmVudF0gdXRpbHMgcGFyYW0gaXMgcmVxdWlyZWQnKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdENvbXBvbmVudCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3V0aWxzJ10gJiYgY2hhbmdlc1sndXRpbHMnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgY29uc29sZS5sb2coJ1tGaWx0ZXJzQ29tcG9uZW50XSB1dGlscyByZWFkeScpO1xyXG4gICAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXN0b3JlTGFzdEZpbHRlcnNTYXZlZCgpO1xyXG4gICAgdGhpcy5vcGVuQ29tcG9uZW50KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wZW5Db21wb25lbnQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUHJvcGVydHlUeXBlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMucmVzZXRGaWx0ZXJzKGluZGV4KTtcclxuICAgIHRoaXMuYXBwbHlBbWVuaXRpZXMoKTtcclxuICAgIHRoaXMuZmlsdGVyLnR5cGUgPSB0aGlzLnByb3BlcnR5VHlwZVNlbGVjdGVkLnZhbHVlO1xyXG4gICAgc3dpdGNoICh0aGlzLnByb3BlcnR5VHlwZVNlbGVjdGVkLnZhbHVlKSB7XHJcbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlRW51bS5ST09NOlxyXG4gICAgICAgIHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ29mZmVyaW5nJ10uc2V0VmFsdWUoT2ZmZXJpbmdUeXBlRW51bS5SRU5UKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGVFbnVtLklOVkVTVE1FTlQ6XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzRm9ybS5jb250cm9sc1snb2ZmZXJpbmcnXS5zZXRWYWx1ZShPZmZlcmluZ1R5cGVFbnVtLlNBTEUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlT2ZmZXJpbmcoZXY6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXIub2ZmZXJpbmcgPSBldiBhcyBPZmZlcmluZ1R5cGVFbnVtO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlQ3VycmVuY3koZXY6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXIuY3VycmVuY3kgPSBldjtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUFtZW5pdHkoYW1lbml0eTogQW1lbml0eUl0ZW0pOiB2b2lkIHtcclxuICAgIGlmIChhbWVuaXR5LmNoZWNrZWQpIHtcclxuICAgICAgY29uc3QgaSA9IHRoaXMuZmlsdGVyLmV4dHJhcy5pbmRleE9mKGFtZW5pdHkudmFsdWUpO1xyXG4gICAgICBpZiAoaSA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXIuZXh0cmFzLnNwbGljZShpLCAxKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXIuZXh0cmFzLnB1c2goYW1lbml0eS52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBhbWVuaXR5LmNoZWNrZWQgPSAhYW1lbml0eS5jaGVja2VkO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVNlYXJjaEJ5RmlsdGVycygpOiB2b2lkIHtcclxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzKEZpbHRlcnNDaGFuZ2VUeXBlLlNBVkUpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlGaWx0ZXJzKHR5cGU/OiBGaWx0ZXJzQ2hhbmdlVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRGaWx0ZXJCeUZvcm0oKTtcclxuICAgIGNvbnN0IGZpbHRlclRvU2VhcmNoID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5maWx0ZXIpO1xyXG4gICAgaWYgKHRoaXMuc3VyZmFjZVVuaXRTZWxlY3RlZCA9PT0gMSkge1xyXG4gICAgICBmaWx0ZXJUb1NlYXJjaC5tYWluQXJlYSA9IGZpbHRlclRvU2VhcmNoLm1haW5BcmVhICogdGhpcy5NRVRFUlNfVE9fU1E7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnNTYXZlZChmaWx0ZXJUb1NlYXJjaCk7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLnNldENoYW5nZSh7XHJcbiAgICAgIHR5cGU6IHR5cGUgfHwgRmlsdGVyc0NoYW5nZVR5cGUuQVBQTFksXHJcbiAgICAgIGZpbHRlcjogZmlsdGVyVG9TZWFyY2gsXHJcbiAgICAgIGZ0OiB0aGlzLnN1cmZhY2VVbml0U2VsZWN0ZWQgPT09IDEsXHJcbiAgICAgIGlzU2hhcmVkUHJvcGVydGllczogdGhpcy5faXNTaGFyZWRQcm9wZXJ0aWVzXHJcbiAgICB9KTtcclxuICAgIHRoaXMub3BlbkNvbXBvbmVudChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICByZXNldEZpbHRlcnMocHJvcGVydHlUeXBlSXRlbUluZGV4PzogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlci5jdXJyZW5jeSA9ICFwcm9wZXJ0eVR5cGVJdGVtSW5kZXggPyAnTVhOJyA6IHRoaXMuZmlsdGVyLmN1cnJlbmN5O1xyXG4gICAgdGhpcy5pbml0Q29tcG9uZW50QnlQcm9wZXJ0eVR5cGUocHJvcGVydHlUeXBlSXRlbUluZGV4KTtcclxuICAgIHRoaXMuc3VyZmFjZVVuaXRTZWxlY3RlZCA9IDA7XHJcbiAgICB0aGlzLmZpbHRlciA9IHByb3BlcnR5VHlwZUl0ZW1JbmRleCA/IFV0aWxzLmdldEZpbHRlckJ5UHJvcGVydHlUeXBlKHRoaXMuZmlsdGVyKSA6IFV0aWxzLmdldEluaXRpYWxGaWx0ZXIodGhpcy5pc09QSSwgdGhpcy5maWx0ZXIpO1xyXG4gICAgdGhpcy51cGRhdGVGb3JtQnlGaWx0ZXJzKCk7XHJcbiAgICB0aGlzLnNldFByaWNlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZEZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlcnNGb3JtID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBvZmZlcmluZzogW10sXHJcbiAgICAgIGN1cnJlbmN5OiBbXSxcclxuICAgICAgbWluUHJpY2U6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihuZXcgUmVnRXhwKCcoXlswLTldKyknKSldXSxcclxuICAgICAgbWF4UHJpY2U6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihuZXcgUmVnRXhwKCcoXlswLTldKyknKSldXSxcclxuICAgICAgYmVkcm9vbXM6IFtdLFxyXG4gICAgICBiYXRocm9vbXM6IFtdLFxyXG4gICAgICBwYXJraW5nUGxhY2VzOiBbXSxcclxuICAgICAgc3VyZmFjZTogW10sXHJcbiAgICAgIHN1cmZhY2VVbml0OiBbXSxcclxuICAgICAgcm9pOiBbXVxyXG4gICAgfSwge1xyXG4gICAgICB2YWxpZGF0b3I6IEN1cnJlbmN5RmlsdGVyVmFsaWRhdG9yKCdtaW5QcmljZScsICdtYXhQcmljZScpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRm9ybUJ5RmlsdGVycygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVyc0Zvcm0ucGF0Y2hWYWx1ZSh7XHJcbiAgICAgIG9mZmVyaW5nOiB0aGlzLmZpbHRlci5vZmZlcmluZyxcclxuICAgICAgY3VycmVuY3k6IHRoaXMuZmlsdGVyLmN1cnJlbmN5LFxyXG4gICAgICBtaW5QcmljZTogdGhpcy5maWx0ZXIuZG93bkxpbWl0UHJpY2UsXHJcbiAgICAgIG1heFByaWNlOiB0aGlzLmZpbHRlci51cExpbWl0UHJpY2UsXHJcbiAgICAgIGJlZHJvb21zOiB0aGlzLmZpbHRlci5iZWRyb29tcyxcclxuICAgICAgYmF0aHJvb21zOiB0aGlzLmZpbHRlci5iYXRocm9vbXMsXHJcbiAgICAgIHBhcmtpbmdQbGFjZXM6IHRoaXMuZmlsdGVyLnBhcmtpbmdQbGFjZXMsXHJcbiAgICAgIHN1cmZhY2U6IHRoaXMuZmlsdGVyLm1haW5BcmVhLFxyXG4gICAgICBzdXJmYWNlVW5pdDogdGhpcy5zdXJmYWNlVW5pdFNlbGVjdGVkLFxyXG4gICAgICByb2k6IHRoaXMuZmlsdGVyLnJvaVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbHRlckJ5Rm9ybSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmZpbHRlcnNGb3JtLnZhbHVlO1xyXG4gICAgdGhpcy5maWx0ZXIub2ZmZXJpbmcgPSBkYXRhLm9mZmVyaW5nO1xyXG4gICAgdGhpcy5maWx0ZXIuY3VycmVuY3kgPSBkYXRhLmN1cnJlbmN5O1xyXG4gICAgdGhpcy5maWx0ZXIuZG93bkxpbWl0UHJpY2UgPSBOdW1iZXIoZGF0YS5taW5QcmljZSk7XHJcbiAgICB0aGlzLmZpbHRlci51cExpbWl0UHJpY2UgPSBOdW1iZXIoZGF0YS5tYXhQcmljZSk7XHJcbiAgICB0aGlzLmZpbHRlci5iZWRyb29tcyA9IE51bWJlcihkYXRhLmJlZHJvb21zKTtcclxuICAgIHRoaXMuZmlsdGVyLmJhdGhyb29tcyA9IE51bWJlcihkYXRhLmJhdGhyb29tcyk7XHJcbiAgICB0aGlzLmZpbHRlci5wYXJraW5nUGxhY2VzID0gTnVtYmVyKGRhdGEucGFya2luZ1BsYWNlcyk7XHJcbiAgICB0aGlzLmZpbHRlci5tYWluQXJlYSA9IE51bWJlcihkYXRhLnN1cmZhY2UpO1xyXG4gICAgdGhpcy5zdXJmYWNlVW5pdFNlbGVjdGVkID0gTnVtYmVyKGRhdGEuc3VyZmFjZVVuaXQpO1xyXG4gICAgdGhpcy5maWx0ZXIucm9pID0gTnVtYmVyKGRhdGEucm9pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdENvbXBvbmVudCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFV0aWxzKCk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlLmdldENoYW5nZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBGaWx0ZXJzQ2hhbmdlKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChyZXNwb25zZS50eXBlKSB7XHJcbiAgICAgICAgICBjYXNlIEZpbHRlcnNDaGFuZ2VUeXBlLkxJU1RfVFlQRTpcclxuICAgICAgICAgICAgdGhpcy5faXNTaGFyZWRQcm9wZXJ0aWVzID0gcmVzcG9uc2UuaXNTaGFyZWRQcm9wZXJ0aWVzO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlcnNTYXZlZChyZXNwb25zZS5maWx0ZXIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgRmlsdGVyc0NoYW5nZVR5cGUuQVJFQTpcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJzU2F2ZWQocmVzcG9uc2UuZmlsdGVyKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuX3NlcnZpY2Uuc3RhcnRDb21wb25lbnQobmV3IEZpbHRlcnNXcmFwcGVyKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFV0aWxzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW5jeUxpc3QgPSB0aGlzLnV0aWxzLmNlcnM7XHJcbiAgICB0aGlzLnNldFByaWNlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRQcmljZXModG8/OiBDdXJyZW5jeSk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJzRm9ybS5jb250cm9sc1snbWluUHJpY2UnXS5yZXNldCgwKTtcclxuICAgIHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ21heFByaWNlJ10ucmVzZXQoMCk7XHJcbiAgICBjb25zdCBvZmZlcmluZyA9IHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ29mZmVyaW5nJ10udmFsdWU7XHJcbiAgICB0aGlzLm1pblByaWNlTGlzdCA9IHRoaXMuY3JlYXRlUHJpY2VzKHRoaXMudXRpbHMubGltaXRQcmljZSwgdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZC52YWx1ZSwgb2ZmZXJpbmcpO1xyXG4gICAgdGhpcy5taW5QcmljZUxpc3QgPSB0aGlzLl9jb252ZXJ0ZXIubGlzdCh0aGlzLm1pblByaWNlTGlzdCwgdGhpcy51dGlscy5jZXJzLCBDdXJyZW5jeS5VU0QsIHRvIHx8IHRoaXMuZmlsdGVyLmN1cnJlbmN5IGFzIEN1cnJlbmN5KTtcclxuICAgIHRoaXMubWF4UHJpY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5taW5QcmljZUxpc3QpO1xyXG4gICAgdGhpcy5fdG1wTWluUHJpY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5taW5QcmljZUxpc3QpO1xyXG4gICAgdGhpcy5fdG1wTWF4UHJpY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5tYXhQcmljZUxpc3QpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUFtZW5pdGllcygpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGVydHlUeXBlU2VsZWN0ZWQuYW1lbml0aWVzID0gdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZC5hbWVuaXRpZXMubWFwKGFtZW5pdHkgPT4ge1xyXG4gICAgICBjb25zdCBpID0gdGhpcy5maWx0ZXIuZXh0cmFzLmluZGV4T2YoYW1lbml0eS52YWx1ZSk7XHJcbiAgICAgIGFtZW5pdHkuY2hlY2tlZCA9IChpID4gLTEpO1xyXG4gICAgICByZXR1cm4gYW1lbml0eTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZC5mZWF0dXJlcyA9IHRoaXMucHJvcGVydHlUeXBlU2VsZWN0ZWQuZmVhdHVyZXMubWFwKGFtZW5pdHkgPT4ge1xyXG4gICAgICBjb25zdCBpID0gdGhpcy5maWx0ZXIuZXh0cmFzLmluZGV4T2YoYW1lbml0eS52YWx1ZSk7XHJcbiAgICAgIGFtZW5pdHkuY2hlY2tlZCA9IChpID4gLTEpO1xyXG4gICAgICByZXR1cm4gYW1lbml0eTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVQcmljZXMobGltaXRQcmljZTogTGltaXRQcmljZSwgcHJvcGVydHlUeXBlOiBQcm9wZXJ0eVR5cGVFbnVtLCBvZmZlcmluZzogT2ZmZXJpbmdUeXBlRW51bSk6IG51bWJlcltdIHtcclxuICAgIGxldCBsaXN0OiBudW1iZXJbXSA9IFtdO1xyXG4gICAgbGltaXRQcmljZS5wcm9wZXJ0eVJhbmdlcy5mb3JFYWNoKChyYW5nZTogUHJvcGVydHlSYW5nZSkgPT4ge1xyXG4gICAgICBpZiAocmFuZ2Uub2ZmZXJpbmcgPT09IG9mZmVyaW5nICYmIHJhbmdlLnR5cGUgPT09IHByb3BlcnR5VHlwZSkge1xyXG4gICAgICAgIGxpc3QgPSBNVXRpbHMubGluU3BhY2VFeHAocmFuZ2UubWluLCByYW5nZS5tYXgsIDIwKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdENvbXBvbmVudEJ5UHJvcGVydHlUeXBlKHByb3BlcnR5VHlwZUl0ZW1JbmRleDogbnVtYmVyID0gbnVsbCk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZCA9IEpTT04ucGFyc2UoXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KENvbnN0YW50c0NvbXBvbmVudHMuUHJvcGVydHlUeXBlTGlzdFtwcm9wZXJ0eVR5cGVJdGVtSW5kZXggIT09IG51bGwgPyBwcm9wZXJ0eVR5cGVJdGVtSW5kZXggOiA5XSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGaWx0ZXJzU2F2ZWQoZmlsdGVyczogRmlsdGVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlciA9IGZpbHRlcnM7XHJcbiAgICBGaWx0ZXJzU2VydmljZS5zYXZlRmlsdGVycyh7XHJcbiAgICAgIGZpbHRlcnM6IGZpbHRlcnMsXHJcbiAgICAgIGZ0OiB0aGlzLnN1cmZhY2VVbml0U2VsZWN0ZWQgPT09IDEsXHJcbiAgICAgIGlzU2hhcmVkUHJvcGVydGllczogdGhpcy5faXNTaGFyZWRQcm9wZXJ0aWVzIHx8IGZhbHNlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzdG9yZUxhc3RGaWx0ZXJzU2F2ZWQoaW5pdD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbHRlcnNTYXZlZCA9IEZpbHRlcnNTZXJ2aWNlLmdldEZpbHRlcnNTYXZlZCgpIHx8IG51bGw7XHJcbiAgICB0aGlzLmZpbHRlciA9IGZpbHRlcnNTYXZlZCA/IGZpbHRlcnNTYXZlZC5maWx0ZXJzIDogVXRpbHMuZ2V0SW5pdGlhbEZpbHRlcih0aGlzLmlzT1BJKTtcclxuICAgIGlmIChmaWx0ZXJzU2F2ZWQpIHtcclxuICAgICAgaWYgKGZpbHRlcnNTYXZlZC5mdCkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyLm1haW5BcmVhID0gTnVtYmVyKCh0aGlzLmZpbHRlci5tYWluQXJlYSAvIHRoaXMuTUVURVJTX1RPX1NRKS50b0ZpeGVkKDApKTtcclxuICAgICAgICB0aGlzLnN1cmZhY2VVbml0U2VsZWN0ZWQgPSBmaWx0ZXJzU2F2ZWQuZnQgPyAxIDogMDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9pc1NoYXJlZFByb3BlcnRpZXMgPSBmaWx0ZXJzU2F2ZWQuaXNTaGFyZWRQcm9wZXJ0aWVzIHx8IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcm9wZXJ0eVR5cGVTZWxlY3RlZCA9IENvbnN0YW50c0NvbXBvbmVudHMuUHJvcGVydHlUeXBlTGlzdC5maW5kKGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdGhpcy5maWx0ZXIudHlwZSk7XHJcbiAgICB0aGlzLmFwcGx5QW1lbml0aWVzKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUZvcm1CeUZpbHRlcnMoKTtcclxuICAgIGlmIChpbml0KSB7XHJcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKEZpbHRlcnNDaGFuZ2VUeXBlLklOSVQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcGVuQ29tcG9uZW50KG9wZW46IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChvcGVuKSB7XHJcbiAgICAgIHRoaXMuX3JlbmRlci5zZXRTdHlsZSh0aGlzLl9yZWYubmF0aXZlRWxlbWVudCwgJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpO1xyXG4gICAgICB0aGlzLl9yZW5kZXIuc2V0U3R5bGUodGhpcy5fcmVmLm5hdGl2ZUVsZW1lbnQsICdvcGFjaXR5JywgJzEnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3JlbmRlci5zZXRTdHlsZSh0aGlzLl9yZWYubmF0aXZlRWxlbWVudCwgJ29wYWNpdHknLCAnMCcpO1xyXG4gICAgICB0aGlzLl9yZW5kZXIuc2V0U3R5bGUodGhpcy5fcmVmLm5hdGl2ZUVsZW1lbnQsICd2aXNpYmlsaXR5JywgJ2NvbGxhcHNlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxpc3RlbkNoYW5nZXNPbkZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLmZpbHRlcnNGb3JtLmNvbnRyb2xzWydvZmZlcmluZyddLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0UHJpY2VzKCk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5maWx0ZXJzRm9ybS5jb250cm9sc1snY3VycmVuY3knXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0UHJpY2VzKHZhbHVlLnRvU3RyaW5nKCkgYXMgQ3VycmVuY3kpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRoaXMuZmlsdGVyc0Zvcm0uY29udHJvbHNbJ21pblByaWNlJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWF4UHJpY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5fdG1wTWF4UHJpY2VMaXN0KTtcclxuICAgICAgICBjb25zdCBpID0gdGhpcy5taW5QcmljZUxpc3QuaW5kZXhPZih2YWx1ZSk7XHJcbiAgICAgICAgaWYgKGkgPiAtMSkge1xyXG4gICAgICAgICAgdGhpcy5tYXhQcmljZUxpc3Quc3BsaWNlKDAsIGkgKyAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGhpcy5maWx0ZXJzRm9ybS5jb250cm9sc1snbWF4UHJpY2UnXS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWluUHJpY2VMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5fdG1wTWluUHJpY2VMaXN0KTtcclxuICAgICAgICBjb25zdCBpID0gdGhpcy5tYXhQcmljZUxpc3QuaW5kZXhPZih2YWx1ZSk7XHJcbiAgICAgICAgaWYgKGkgPiAtMSkge1xyXG4gICAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoaXMubWluUHJpY2VMaXN0Lmxlbmd0aCAtIHRoaXMubWF4UHJpY2VMaXN0Lmxlbmd0aDtcclxuICAgICAgICAgIHRoaXMubWluUHJpY2VMaXN0LnNwbGljZShpICsgZGlmZmVyZW5jZSwgdGhpcy5taW5QcmljZUxpc3QubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|