ngx-bimplus-components 0.0.157-28791-1 → 0.0.158-28791-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,13 +10,16 @@ import { BimplusObjectComplexPropertiesComponent } from '../../bimplus-object-co
10
10
  import { ObjectStructureNodeBuilder } from '../../bimplus-object-structure/bimplus-object-structure.interface';
11
11
  import { ComplexPropertiesNodeBuilder } from '../../bimplus-object-complex-properties/bimplus-object-complex-properties.interface';
12
12
  import { FormatValuePipe } from '../../../pipes/format-value.pipe';
13
+ import { DateTimePipe } from '../../../pipes/datetime.pipe';
13
14
  import * as i0 from "@angular/core";
14
15
  import * as i1 from "@ngx-translate/core";
15
16
  import * as i2 from "../../../pipes/format-value.pipe";
17
+ import * as i3 from "../../../pipes/datetime.pipe";
16
18
  export class CriteriaSelectObjectPropertiesComponent extends BimplusLocalizedWidgetComponent {
17
- constructor(translateService, formatValuePipe) {
19
+ constructor(translateService, formatValuePipe, datetimePipe) {
18
20
  super(translateService);
19
21
  this.formatValuePipe = formatValuePipe;
22
+ this.datetimePipe = datetimePipe;
20
23
  this.api = null;
21
24
  this.revision = undefined;
22
25
  this._currentObjectId$ = new BehaviorSubject("");
@@ -144,6 +147,10 @@ export class CriteriaSelectObjectPropertiesComponent extends BimplusLocalizedWid
144
147
  if (attribute?.control === "Checkbox") {
145
148
  return (attribute.value === 1) ? "True" : "False";
146
149
  }
150
+ // Handle datetime transformation
151
+ if (attribute?.type === "datetime" && typeof (attribute.value) === 'string') {
152
+ return this.datetimePipe.transform(attribute.value);
153
+ }
147
154
  return String(attribute.value);
148
155
  }
149
156
  handleFilterCriteriumAttributeStateChange(attrib) {
@@ -303,13 +310,13 @@ export class CriteriaSelectObjectPropertiesComponent extends BimplusLocalizedWid
303
310
  }
304
311
  });
305
312
  }
306
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CriteriaSelectObjectPropertiesComponent, deps: [{ token: i1.TranslateService }, { token: i2.FormatValuePipe }], target: i0.ɵɵFactoryTarget.Component }); }
307
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: CriteriaSelectObjectPropertiesComponent, isStandalone: true, selector: "lib-criteria-select-object-properties", inputs: { api: "api", rootObjectId: "rootObjectId", revision: "revision", filterCriteria: "filterCriteria" }, outputs: { filterCriteriaChange: "filterCriteriaChange" }, providers: [FormatValuePipe], usesInheritance: true, ngImport: i0, template: "<!-- Object structure-->\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object structure\" | translate }}</span\n >\n </lib-expansion-panel-header>\n @if(objectStructure){\n <lib-bimplus-object-structure\n [objectStructure]=\"objectStructure\"\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\n >\n </lib-bimplus-object-structure>\n }\n</lib-expansion-panel>\n<!-- End Object structure-->\n\n<!-- Complex properties-->\n@if(complexProperties){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object multiproperties tree\" | translate }}</span\n >\n </lib-expansion-panel-header>\n <lib-bimplus-object-complex-properties\n [complexProperties]=\"complexProperties\"\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\n >\n </lib-bimplus-object-complex-properties>\n</lib-expansion-panel>\n}\n<!-- End Complex properties-->\n\n<!-- Properties list-->\n@if(objectAttributeGroups.length > 0){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object properties\" | translate }}</span\n >\n </lib-expansion-panel-header>\n\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-group-header\">\n {{ attribGroup.name }}\n </span>\n </lib-expansion-panel-header>\n <div>\n @for (attrib of attribGroup.attributes; track attrib) {\n <div class=\"criteria-select-object-properties-attrib-row\">\n <div class=\"criteria-select-object-properties-attrib-row-content\">\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.checked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttribute(attrib)\"\n (keypress)=\"toggleAttribute(attrib)\"\n />\n <span></span>\n </label>\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">\n {{ attrib.name }}\n </div>\n </div>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.valueChecked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttributeValue(attrib)\"\n (keypress)=\"toggleAttributeValue(attrib)\"\n />\n <span></span>\n </label>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell-text\"\n title=\"{{ titleForAttribute(attrib) }}\"\n >\n {{ normalizedValue(attrib) }}\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </lib-expansion-panel>\n }\n</lib-expansion-panel>\n}\n<!-- End Properties list-->\n", styles: ["lib-bimplus-object-structure{--bimplus-object-structure-background-color: transparent}lib-bimplus-object-complex-properties{--bimplus-object-complex-properties-background-color: transparent}.criteria-select-object-properties-header{font-weight:700;text-transform:uppercase;font-size:1.4rem}.criteria-select-object-properties-group-header{line-height:2.4rem}.criteria-select-object-properties-attrib-row{display:flex;width:calc(100% - 2rem);flex-direction:row;flex-wrap:nowrap;overflow:hidden;padding-left:2rem}.criteria-select-object-properties-attrib-row:hover{background-color:var(--object-navigator-criteria-select-object-properties-attribute-row-background-color-hovered)}.criteria-select-object-properties-attrib-row-content{display:inline-flex;width:100%}.criteria-select-object-properties-attrib-row-cell{flex-basis:50%;display:flex;overflow:hidden;text-overflow:ellipsis}.criteria-select-object-properties-attrib-row-cell-label{display:inline-flex}.criteria-select-object-properties-attrib-row-cell-text{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.criteria-select-checkbox input{display:none}.criteria-select-checkbox input:checked+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked+span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0A</svg>%0A')}.criteria-select-checkbox span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0A</svg>%0A');width:1.8rem;height:1.8rem;margin-top:.1rem;vertical-align:middle;border:0;background-color:transparent;background-position:-.3rem center;background-size:100% 100%;background-repeat:no-repeat}.criteria-select-checkbox span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0A</svg>%0A')}lib-bimplus-object-structure{--flat-tree-container-background-color-enabled: transparent}\n"], dependencies: [{ kind: "component", type: ExpansionPanelHeaderComponent, selector: "lib-expansion-panel-header" }, { kind: "component", type: ExpansionPanelComponent, selector: "lib-expansion-panel", inputs: ["expanded"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: BimplusObjectStructureComponent, selector: "lib-bimplus-object-structure", inputs: ["objectStructure"], outputs: ["nodeSelected", "nodeVisible", "nodeOpaque"] }, { kind: "component", type: BimplusObjectComplexPropertiesComponent, selector: "lib-bimplus-object-complex-properties", inputs: ["complexProperties"], outputs: ["nodeSelected"] }] }); }
313
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CriteriaSelectObjectPropertiesComponent, deps: [{ token: i1.TranslateService }, { token: i2.FormatValuePipe }, { token: i3.DateTimePipe }], target: i0.ɵɵFactoryTarget.Component }); }
314
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: CriteriaSelectObjectPropertiesComponent, isStandalone: true, selector: "lib-criteria-select-object-properties", inputs: { api: "api", rootObjectId: "rootObjectId", revision: "revision", filterCriteria: "filterCriteria" }, outputs: { filterCriteriaChange: "filterCriteriaChange" }, providers: [FormatValuePipe, DateTimePipe], usesInheritance: true, ngImport: i0, template: "<!-- Object structure-->\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object structure\" | translate }}</span\n >\n </lib-expansion-panel-header>\n @if(objectStructure){\n <lib-bimplus-object-structure\n [objectStructure]=\"objectStructure\"\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\n >\n </lib-bimplus-object-structure>\n }\n</lib-expansion-panel>\n<!-- End Object structure-->\n\n<!-- Complex properties-->\n@if(complexProperties){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object multiproperties tree\" | translate }}</span\n >\n </lib-expansion-panel-header>\n <lib-bimplus-object-complex-properties\n [complexProperties]=\"complexProperties\"\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\n >\n </lib-bimplus-object-complex-properties>\n</lib-expansion-panel>\n}\n<!-- End Complex properties-->\n\n<!-- Properties list-->\n@if(objectAttributeGroups.length > 0){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object properties\" | translate }}</span\n >\n </lib-expansion-panel-header>\n\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-group-header\">\n {{ attribGroup.name }}\n </span>\n </lib-expansion-panel-header>\n <div>\n @for (attrib of attribGroup.attributes; track attrib) {\n <div class=\"criteria-select-object-properties-attrib-row\">\n <div class=\"criteria-select-object-properties-attrib-row-content\">\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.checked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttribute(attrib)\"\n (keypress)=\"toggleAttribute(attrib)\"\n />\n <span></span>\n </label>\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">\n {{ attrib.name }}\n </div>\n </div>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.valueChecked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttributeValue(attrib)\"\n (keypress)=\"toggleAttributeValue(attrib)\"\n />\n <span></span>\n </label>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell-text\"\n title=\"{{ titleForAttribute(attrib) }}\"\n >\n {{ normalizedValue(attrib) }}\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </lib-expansion-panel>\n }\n</lib-expansion-panel>\n}\n<!-- End Properties list-->\n", styles: ["lib-bimplus-object-structure{--bimplus-object-structure-background-color: transparent}lib-bimplus-object-complex-properties{--bimplus-object-complex-properties-background-color: transparent}.criteria-select-object-properties-header{font-weight:700;text-transform:uppercase;font-size:1.4rem}.criteria-select-object-properties-group-header{line-height:2.4rem}.criteria-select-object-properties-attrib-row{display:flex;width:calc(100% - 2rem);flex-direction:row;flex-wrap:nowrap;overflow:hidden;padding-left:2rem}.criteria-select-object-properties-attrib-row:hover{background-color:var(--object-navigator-criteria-select-object-properties-attribute-row-background-color-hovered)}.criteria-select-object-properties-attrib-row-content{display:inline-flex;width:100%}.criteria-select-object-properties-attrib-row-cell{flex-basis:50%;display:flex;overflow:hidden;text-overflow:ellipsis}.criteria-select-object-properties-attrib-row-cell-label{display:inline-flex}.criteria-select-object-properties-attrib-row-cell-text{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.criteria-select-checkbox input{display:none}.criteria-select-checkbox input:checked+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked+span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0A</svg>%0A')}.criteria-select-checkbox span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0A</svg>%0A');width:1.8rem;height:1.8rem;margin-top:.1rem;vertical-align:middle;border:0;background-color:transparent;background-position:-.3rem center;background-size:100% 100%;background-repeat:no-repeat}.criteria-select-checkbox span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0A</svg>%0A')}lib-bimplus-object-structure{--flat-tree-container-background-color-enabled: transparent}\n"], dependencies: [{ kind: "component", type: ExpansionPanelHeaderComponent, selector: "lib-expansion-panel-header" }, { kind: "component", type: ExpansionPanelComponent, selector: "lib-expansion-panel", inputs: ["expanded"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: BimplusObjectStructureComponent, selector: "lib-bimplus-object-structure", inputs: ["objectStructure"], outputs: ["nodeSelected", "nodeVisible", "nodeOpaque"] }, { kind: "component", type: BimplusObjectComplexPropertiesComponent, selector: "lib-bimplus-object-complex-properties", inputs: ["complexProperties"], outputs: ["nodeSelected"] }] }); }
308
315
  }
309
316
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CriteriaSelectObjectPropertiesComponent, decorators: [{
310
317
  type: Component,
311
- args: [{ selector: 'lib-criteria-select-object-properties', standalone: true, imports: [ExpansionPanelHeaderComponent, ExpansionPanelComponent, TranslateModule, BimplusObjectStructureComponent, BimplusObjectComplexPropertiesComponent], providers: [FormatValuePipe], template: "<!-- Object structure-->\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object structure\" | translate }}</span\n >\n </lib-expansion-panel-header>\n @if(objectStructure){\n <lib-bimplus-object-structure\n [objectStructure]=\"objectStructure\"\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\n >\n </lib-bimplus-object-structure>\n }\n</lib-expansion-panel>\n<!-- End Object structure-->\n\n<!-- Complex properties-->\n@if(complexProperties){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object multiproperties tree\" | translate }}</span\n >\n </lib-expansion-panel-header>\n <lib-bimplus-object-complex-properties\n [complexProperties]=\"complexProperties\"\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\n >\n </lib-bimplus-object-complex-properties>\n</lib-expansion-panel>\n}\n<!-- End Complex properties-->\n\n<!-- Properties list-->\n@if(objectAttributeGroups.length > 0){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object properties\" | translate }}</span\n >\n </lib-expansion-panel-header>\n\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-group-header\">\n {{ attribGroup.name }}\n </span>\n </lib-expansion-panel-header>\n <div>\n @for (attrib of attribGroup.attributes; track attrib) {\n <div class=\"criteria-select-object-properties-attrib-row\">\n <div class=\"criteria-select-object-properties-attrib-row-content\">\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.checked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttribute(attrib)\"\n (keypress)=\"toggleAttribute(attrib)\"\n />\n <span></span>\n </label>\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">\n {{ attrib.name }}\n </div>\n </div>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.valueChecked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttributeValue(attrib)\"\n (keypress)=\"toggleAttributeValue(attrib)\"\n />\n <span></span>\n </label>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell-text\"\n title=\"{{ titleForAttribute(attrib) }}\"\n >\n {{ normalizedValue(attrib) }}\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </lib-expansion-panel>\n }\n</lib-expansion-panel>\n}\n<!-- End Properties list-->\n", styles: ["lib-bimplus-object-structure{--bimplus-object-structure-background-color: transparent}lib-bimplus-object-complex-properties{--bimplus-object-complex-properties-background-color: transparent}.criteria-select-object-properties-header{font-weight:700;text-transform:uppercase;font-size:1.4rem}.criteria-select-object-properties-group-header{line-height:2.4rem}.criteria-select-object-properties-attrib-row{display:flex;width:calc(100% - 2rem);flex-direction:row;flex-wrap:nowrap;overflow:hidden;padding-left:2rem}.criteria-select-object-properties-attrib-row:hover{background-color:var(--object-navigator-criteria-select-object-properties-attribute-row-background-color-hovered)}.criteria-select-object-properties-attrib-row-content{display:inline-flex;width:100%}.criteria-select-object-properties-attrib-row-cell{flex-basis:50%;display:flex;overflow:hidden;text-overflow:ellipsis}.criteria-select-object-properties-attrib-row-cell-label{display:inline-flex}.criteria-select-object-properties-attrib-row-cell-text{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.criteria-select-checkbox input{display:none}.criteria-select-checkbox input:checked+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked+span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0A</svg>%0A')}.criteria-select-checkbox span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0A</svg>%0A');width:1.8rem;height:1.8rem;margin-top:.1rem;vertical-align:middle;border:0;background-color:transparent;background-position:-.3rem center;background-size:100% 100%;background-repeat:no-repeat}.criteria-select-checkbox span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0A</svg>%0A')}lib-bimplus-object-structure{--flat-tree-container-background-color-enabled: transparent}\n"] }]
312
- }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.FormatValuePipe }], propDecorators: { api: [{
318
+ args: [{ selector: 'lib-criteria-select-object-properties', standalone: true, imports: [ExpansionPanelHeaderComponent, ExpansionPanelComponent, TranslateModule, BimplusObjectStructureComponent, BimplusObjectComplexPropertiesComponent], providers: [FormatValuePipe, DateTimePipe], template: "<!-- Object structure-->\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object structure\" | translate }}</span\n >\n </lib-expansion-panel-header>\n @if(objectStructure){\n <lib-bimplus-object-structure\n [objectStructure]=\"objectStructure\"\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\n >\n </lib-bimplus-object-structure>\n }\n</lib-expansion-panel>\n<!-- End Object structure-->\n\n<!-- Complex properties-->\n@if(complexProperties){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object multiproperties tree\" | translate }}</span\n >\n </lib-expansion-panel-header>\n <lib-bimplus-object-complex-properties\n [complexProperties]=\"complexProperties\"\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\n >\n </lib-bimplus-object-complex-properties>\n</lib-expansion-panel>\n}\n<!-- End Complex properties-->\n\n<!-- Properties list-->\n@if(objectAttributeGroups.length > 0){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object properties\" | translate }}</span\n >\n </lib-expansion-panel-header>\n\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-group-header\">\n {{ attribGroup.name }}\n </span>\n </lib-expansion-panel-header>\n <div>\n @for (attrib of attribGroup.attributes; track attrib) {\n <div class=\"criteria-select-object-properties-attrib-row\">\n <div class=\"criteria-select-object-properties-attrib-row-content\">\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.checked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttribute(attrib)\"\n (keypress)=\"toggleAttribute(attrib)\"\n />\n <span></span>\n </label>\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">\n {{ attrib.name }}\n </div>\n </div>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.valueChecked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttributeValue(attrib)\"\n (keypress)=\"toggleAttributeValue(attrib)\"\n />\n <span></span>\n </label>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell-text\"\n title=\"{{ titleForAttribute(attrib) }}\"\n >\n {{ normalizedValue(attrib) }}\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </lib-expansion-panel>\n }\n</lib-expansion-panel>\n}\n<!-- End Properties list-->\n", styles: ["lib-bimplus-object-structure{--bimplus-object-structure-background-color: transparent}lib-bimplus-object-complex-properties{--bimplus-object-complex-properties-background-color: transparent}.criteria-select-object-properties-header{font-weight:700;text-transform:uppercase;font-size:1.4rem}.criteria-select-object-properties-group-header{line-height:2.4rem}.criteria-select-object-properties-attrib-row{display:flex;width:calc(100% - 2rem);flex-direction:row;flex-wrap:nowrap;overflow:hidden;padding-left:2rem}.criteria-select-object-properties-attrib-row:hover{background-color:var(--object-navigator-criteria-select-object-properties-attribute-row-background-color-hovered)}.criteria-select-object-properties-attrib-row-content{display:inline-flex;width:100%}.criteria-select-object-properties-attrib-row-cell{flex-basis:50%;display:flex;overflow:hidden;text-overflow:ellipsis}.criteria-select-object-properties-attrib-row-cell-label{display:inline-flex}.criteria-select-object-properties-attrib-row-cell-text{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.criteria-select-checkbox input{display:none}.criteria-select-checkbox input:checked+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked+span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0A</svg>%0A')}.criteria-select-checkbox span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0A</svg>%0A');width:1.8rem;height:1.8rem;margin-top:.1rem;vertical-align:middle;border:0;background-color:transparent;background-position:-.3rem center;background-size:100% 100%;background-repeat:no-repeat}.criteria-select-checkbox span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0A</svg>%0A')}lib-bimplus-object-structure{--flat-tree-container-background-color-enabled: transparent}\n"] }]
319
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.FormatValuePipe }, { type: i3.DateTimePipe }], propDecorators: { api: [{
313
320
  type: Input
314
321
  }], rootObjectId: [{
315
322
  type: Input
@@ -320,4 +327,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
320
327
  }], filterCriteriaChange: [{
321
328
  type: Output
322
329
  }] } });
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMvY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMvY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDcEgsT0FBTyxFQUFFLGVBQWUsRUFBb0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUM5RyxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0YsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDcEgsT0FBTyxFQUFFLHVDQUF1QyxFQUFF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QW9CO3NCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBXZWJTZGsgZnJvbSAnYmltcGx1cy13ZWJzZGsnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEV4cGFuc2lvblBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIvZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWx0ZXJDcml0ZXJpdW0sIE1heEZpbHRlckNyaXRlcmlhIH0gZnJvbSAnLi4vYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IEJpbXBsdXNPYmplY3RTdHJ1Y3R1cmVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmUvYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJpbXBsdXNPYmplY3RDb21wbGV4UHJvcGVydGllc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2JpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcy9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JqZWN0U3RydWN0dXJlTm9kZSwgT2JqZWN0U3RydWN0dXJlTm9kZUJ1aWxkZXIgfSBmcm9tICcuLi8uLi9iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmUvYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSwgQ29tcGxleFByb3BlcnRpZXNOb2RlQnVpbGRlciB9IGZyb20gJy4uLy4uL2JpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcy9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQ3JpdGVyaWFTZWxlY3RPYmplY3RBdHRyaWJ1dGUsIENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlR3JvdXAgfSBmcm9tICcuL2NyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBGb3JtYXRWYWx1ZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9mb3JtYXQtdmFsdWUucGlwZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0V4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50LCBFeHBhbnNpb25QYW5lbENvbXBvbmVudCwgVHJhbnNsYXRlTW9kdWxlLCBCaW1wbHVzT2JqZWN0U3RydWN0dXJlQ29tcG9uZW50LCBCaW1wbHVzT2JqZWN0Q29tcGxleFByb3BlcnRpZXNDb21wb25lbnRdLFxyXG4gIHByb3ZpZGVyczogW0Zvcm1hdFZhbHVlUGlwZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy5jb21wb25lbnQubGVzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIENyaXRlcmlhU2VsZWN0T2JqZWN0UHJvcGVydGllc0NvbXBvbmVudCBleHRlbmRzIEJpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZvcm1hdFZhbHVlUGlwZTogRm9ybWF0VmFsdWVQaXBlKSB7XHJcbiAgICBzdXBlcih0cmFuc2xhdGVTZXJ2aWNlKVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50UHJvcGVydGllc09iamVjdElkJC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoaWQpID0+IHtcclxuICAgICAgICBpZiAoaWQpIHtcclxuICAgICAgICAgIHRoaXMuX2NyZWF0ZU9iamVjdFByb3BlcnRpZXMoaWQsIHRoaXMucmV2aXNpb24pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9jdXJyZW50T2JqZWN0SWQkLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChpZCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkLm5leHQoaWQpO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZUNvbXBsZXhQcm9wZXJ0aWVzdHJ1Y3R1cmUoaWQsIHRoaXMucmV2aXNpb24pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGFwaTogV2ViU2RrLkFwaSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCByb290T2JqZWN0SWQoaWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5fY3VycmVudE9iamVjdElkJC5uZXh0KGlkKTtcclxuICAgIHRoaXMuX2NyZWF0ZU9iamVjdFN0cnVjdHVyZShpZCwgdGhpcy5yZXZpc2lvbik7XHJcblxyXG4gICAgdGhpcy5fcm9vdE9iamVjdElkID0gaWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgcm9vdE9iamVjdElkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcm9vdE9iamVjdElkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICByZXZpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50T2JqZWN0SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KFwiXCIpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50UHJvcGVydGllc09iamVjdElkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihcIlwiKTtcclxuXHJcbiAgb2JqZWN0QXR0cmlidXRlR3JvdXBzOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZUdyb3VwW10gPSBbXTtcclxuXHJcbiAgTWF4RmlsdGVyQ3JpdGVyaWEgPSBNYXhGaWx0ZXJDcml0ZXJpYTsgLy8gRm9yIGV4cG9zdXJlIHRvIHRlbXBsYXRlXHJcblxyXG4gIHByaXZhdGUgX3Jvb3RPYmplY3RJZDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgZmlsdGVyQ3JpdGVyaWEoY3JpdGVyaWE6IEZpbHRlckNyaXRlcml1bVtdKSB7XHJcbiAgICB0aGlzLl9maWx0ZXJDcml0ZXJpYSA9IGNyaXRlcmlhO1xyXG4gICAgdGhpcy5fc3luY0F0dHJpYnV0ZVN0YXRlc0Zyb21Dcml0ZXJpYSgpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIGZpbHRlckNyaXRlcmlhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJDcml0ZXJpdW1bXT4oKTtcclxuXHJcbiAgZ2V0IGZpbHRlckNyaXRlcmlhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckNyaXRlcmlhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmlsdGVyQ3JpdGVyaWE6IEZpbHRlckNyaXRlcml1bVtdID0gW107XHJcblxyXG4gIHByaXZhdGUgX29iamVjdFN0cnVjdHVyZTogT2JqZWN0U3RydWN0dXJlTm9kZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBnZXQgb2JqZWN0U3RydWN0dXJlKCk6IE9iamVjdFN0cnVjdHVyZU5vZGUgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9vYmplY3RTdHJ1Y3R1cmVcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbXBsZXhQcm9wZXJ0aWVzOiBDb21wbGV4UHJvcGVydGllc05vZGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZ2V0IGNvbXBsZXhQcm9wZXJ0aWVzKCk6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbXBsZXhQcm9wZXJ0aWVzO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQXR0cmlidXRlKGF0dHJpYjogQ3JpdGVyaWFTZWxlY3RPYmplY3RBdHRyaWJ1dGUpIHtcclxuICAgIGF0dHJpYi5jaGVja2VkID0gIWF0dHJpYi5jaGVja2VkO1xyXG4gICAgaWYgKGF0dHJpYi5jaGVja2VkID09PSBmYWxzZSkge1xyXG4gICAgICBhdHRyaWIudmFsdWVDaGVja2VkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVGaWx0ZXJDcml0ZXJpdW1BdHRyaWJ1dGVTdGF0ZUNoYW5nZShhdHRyaWIpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQXR0cmlidXRlVmFsdWUoYXR0cmliOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZSkge1xyXG4gICAgYXR0cmliLnZhbHVlQ2hlY2tlZCA9ICFhdHRyaWIudmFsdWVDaGVja2VkO1xyXG4gICAgYXR0cmliLmNoZWNrZWQgPSBhdHRyaWIudmFsdWVDaGVja2VkO1xyXG5cclxuICAgIHRoaXMuaGFuZGxlRmlsdGVyQ3JpdGVyaXVtQXR0cmlidXRlU3RhdGVDaGFuZ2UoYXR0cmliKTtcclxuICB9XHJcblxyXG4gIF9kZWZpbmVGaWx0ZXJTdHJpbmcoYXR0cmliOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZSkge1xyXG4gICAgbGV0IHN1YnN0cmluZyA9IGBbSV1bJHthdHRyaWIuaWR9XS5WYWx1ZWA7XHJcblxyXG4gICAgaWYgKGF0dHJpYi52YWx1ZUNoZWNrZWQpIHtcclxuICAgICAgc3Vic3RyaW5nICs9IGBbRl1bMF09JHt0aGlzLmZvcm1hdFZhbHVlUGlwZS50cmFuc2Zvcm0oYXR0cmliLnZhbHVlKX1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1YnN0cmluZztcclxuICB9XHJcblxyXG4gIF9hZGRGaWx0ZXJDcml0ZXJpYShhdHRyaWI6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlKSB7XHJcbiAgICAvLyBhZGQgYSBuZXcgZW50cnlcclxuICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWEucHVzaCh7XHJcbiAgICAgIG5hbWU6IGF0dHJpYi5uYW1lLFxyXG4gICAgICB2YWx1ZTogYXR0cmliLnZhbHVlQ2hlY2tlZCA/IGF0dHJpYi52YWx1ZSA6IHVuZGVmaW5lZCxcclxuICAgICAgbmFtZWRWYWx1ZTogYXR0cmliLnZhbHVlQ2hlY2tlZCA/IHRoaXMubm9ybWFsaXplZFZhbHVlKGF0dHJpYiwgdHJ1ZSkgOiB1bmRlZmluZWQsXHJcbiAgICAgIGlkOiBhdHRyaWIuaWQsXHJcbiAgICAgIHN1YlN0cmluZzogdGhpcy5fZGVmaW5lRmlsdGVyU3RyaW5nKGF0dHJpYiksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIF91cGRhdGVGaWx0ZXJDcml0ZXJpYShhdHRyaWI6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICAvLyB1cGRhdGUgYW4gZXhpc3RpbmcgZW50cnlcclxuICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWFbaW5kZXhdID0ge1xyXG4gICAgICAuLi50aGlzLmZpbHRlckNyaXRlcmlhW2luZGV4XSxcclxuICAgICAgbmFtZTogYXR0cmliLm5hbWUsXHJcbiAgICAgIHZhbHVlOiBhdHRyaWIudmFsdWVDaGVja2VkID8gYXR0cmliLnZhbHVlIDogdW5kZWZpbmVkLFxyXG4gICAgICBuYW1lZFZhbHVlOiBhdHRyaWIudmFsdWVDaGVja2VkID8gdGhpcy5ub3JtYWxpemVkVmFsdWUoYXR0cmliLCB0cnVlKSA6IHVuZGVmaW5lZCxcclxuICAgICAgc3ViU3RyaW5nOiB0aGlzLl9kZWZpbmVGaWx0ZXJTdHJpbmcoYXR0cmliKSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHJvdW5kaW5nIHRvIHNwZWNpZmllZCBkZWNpbWFsc1xyXG4gIHByaXZhdGUgcm91bmRUb0RlY2ltYWwodmFsdWU6IG51bWJlciwgZGVjaW1hbDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IG11bHRpcGxpZXIgPSBNYXRoLnBvdygxMCwgZGVjaW1hbCk7XHJcbiAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIG11bHRpcGxpZXIpIC8gbXVsdGlwbGllcjtcclxuICB9XHJcblxyXG4gIHRpdGxlRm9yQXR0cmlidXRlKGF0dHJpYnV0ZTogQ3JpdGVyaWFTZWxlY3RPYmplY3RBdHRyaWJ1dGUpOiBzdHJpbmcge1xyXG4gICAgLy8gVHJhbnNsYXRpb24gbW92ZWQgdG8gaW1wbGVtZW50YXRpb24gdG8gbm90IHJ1biB0aGUgdHJhbnNsYXRpb24gXHJcbiAgICAvLyBmb3IgbWFueSB2YWx1ZXMgd2hpY2ggZG9uJ3QgbmVlZCBpdFxyXG4gICAgaWYgKGF0dHJpYnV0ZS52YWx1ZSA9PT0gbnVsbCB8fCBhdHRyaWJ1dGUudmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ19Ob3RfZGVmaW5lZCcpO1xyXG4gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUudmFsdWUgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnX0VtcHR5X3ZhbHVlJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gU3RyaW5nKGF0dHJpYnV0ZS52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBub3JtYWxpemVkVmFsdWUoYXR0cmlidXRlOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZSwgZm9yRmlsdGVyQ3JpdGVyaWE6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZyB7XHJcbiAgICAvLyBUcmFuc2xhdGlvbiBtb3ZlZCB0byBpbXBsZW1lbnRhdGlvbiB0byBub3QgcnVuIHRoZSB0cmFuc2xhdGlvbiBcclxuICAgIC8vIGZvciBtYW55IHZhbHVlcyB3aGljaCBkb24ndCBuZWVkIGl0XHJcbiAgICBpZiAoYXR0cmlidXRlLnZhbHVlID09PSBudWxsIHx8IGF0dHJpYnV0ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiBmb3JGaWx0ZXJDcml0ZXJpYSA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiX05vdF9kZWZpbmVkXCIpIDogXCIuLi5cIjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYXR0cmlidXRlLnZhbHVlID09PSAnJykge1xyXG4gICAgICByZXR1cm4gZm9yRmlsdGVyQ3JpdGVyaWEgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcIl9FbXB0eV92YWx1ZVwiKSA6IFwiJydcIjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYXR0cmlidXRlPy5jb250cm9sID09PSBcIkVudW1lcmF0aW9uXCIgJiYgYXR0cmlidXRlLmVudW1WYWx1ZXMpIHtcclxuICAgICAgY29uc3QgcmVzdWx0OiBzdHJpbmcgPSBTdHJpbmcoYXR0cmlidXRlLmVudW1WYWx1ZXNbTnVtYmVyKGF0dHJpYnV0ZS52YWx1ZSldKTtcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGUgbnVtZXJpYyByb3VuZGluZ1xyXG4gICAgaWYgKCFmb3JGaWx0ZXJDcml0ZXJpYSAmJlxyXG4gICAgICBhdHRyaWJ1dGUudHlwZSA9PT0gJ2RvdWJsZScgJiZcclxuICAgICAgYXR0cmlidXRlLmRlY2ltYWwgJiZcclxuICAgICAgdHlwZW9mIChhdHRyaWJ1dGUudmFsdWUpID09PSAnbnVtYmVyJykge1xyXG4gICAgICBjb25zdCByb3VuZGVkVmFsdWUgPSB0aGlzLnJvdW5kVG9EZWNpbWFsKGF0dHJpYnV0ZS52YWx1ZSwgYXR0cmlidXRlLmRlY2ltYWwpO1xyXG4gICAgICByZXR1cm4gU3RyaW5nKHJvdW5kZWRWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGF0dHJpYnV0ZT8uY29udHJvbCA9PT0gXCJDaGVja2JveFwiKSB7XHJcbiAgICAgIHJldHVybiAoYXR0cmlidXRlLnZhbHVlID09PSAxKSA/IFwiVHJ1ZVwiIDogXCJGYWxzZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBTdHJpbmcoYXR0cmlidXRlLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbHRlckNyaXRlcml1bUF0dHJpYnV0ZVN0YXRlQ2hhbmdlKGF0dHJpYjogQ3JpdGVyaWFTZWxlY3RPYmplY3RBdHRyaWJ1dGUpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJDcml0ZXJpYS5maW5kSW5kZXgoeCA9PiB4LmlkID09PSBhdHRyaWIuaWQpO1xyXG4gICAgLy8gRklMVEVSIENSSVRFUklBIEFMUkVBRFkgRVhJU1RTXHJcbiAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICBpZiAoYXR0cmliLmNoZWNrZWQgPT09IGZhbHNlICYmIGF0dHJpYi52YWx1ZUNoZWNrZWQgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgLy8gUkVNT1ZFXHJcbiAgICAgICAgLy8gZmlsdGVyQ3JpdGVyaWEgbm8gbG9uZ2VyIHVzZWQgKGxlZnQgLyByaWdodCBjaGVja2JveGVzIG5vdCBjaGVja2VkKVxyXG4gICAgICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWEuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBVUERBVEVcclxuICAgICAgICAvLyBmaWx0ZXJDcml0ZXJpYSBzdGlsbCB1c2VkLCBidXQgdmFsdWUgc2hvdWxkIGJlIHVzZWQgKHJpZ2h0IGNoZWNrYm94IGNoZWNrZWQpXHJcbiAgICAgICAgdGhpcy5fdXBkYXRlRmlsdGVyQ3JpdGVyaWEoYXR0cmliLCBpbmRleCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5maWx0ZXJDcml0ZXJpYUNoYW5nZS5lbWl0KHRoaXMuZmlsdGVyQ3JpdGVyaWEpO1xyXG4gICAgfVxyXG4gICAgLy8gRklMVEVSIENSSVRFUklBIERPRVMgTk9UIEVYSVNUIGFuZCBNQVggQ1JJVEVSSUEgTk9UIFJFQUNIRURcclxuICAgIGVsc2UgaWYgKHRoaXMuZmlsdGVyQ3JpdGVyaWEubGVuZ3RoIDwgTWF4RmlsdGVyQ3JpdGVyaWEpIHtcclxuICAgICAgLy8gQUREXHJcbiAgICAgIHRoaXMuX2FkZEZpbHRlckNyaXRlcmlhKGF0dHJpYik7XHJcbiAgICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWFDaGFuZ2UuZW1pdCh0aGlzLmZpbHRlckNyaXRlcmlhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZU9iamVjdFN0cnVjdHVyZU5vZGVTZWxlY3RlZChub2RlOiBPYmplY3RTdHJ1Y3R1cmVOb2RlKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50T2JqZWN0SWQkLm5leHQobm9kZS5pZCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDb21wbGV4UHJvcGVydHlOb2RlU2VsZWN0ZWQobm9kZTogQ29tcGxleFByb3BlcnRpZXNOb2RlKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50UHJvcGVydGllc09iamVjdElkJC5uZXh0KG5vZGUuaWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlT2JqZWN0UHJvcGVydGllcyhvYmplY3RJZDogc3RyaW5nLCByZXZpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9sb2FkT2JqZWN0UHJvcGVydGllcyhvYmplY3RJZCwgcmV2aXNpb24pPy5zdWJzY3JpYmUoe1xyXG5cclxuICAgICAgLy8gcHJvcGVydGllcyByZXNwb25zZSBpcyBiYWRseSBzdHJ1Y3R1cmVkLCBuZWFybHkgaW1wb3NzaWJsZSB0byBjcmVhdGUgY2xhc3Mgc3RydWN0dXJlIGZyb20gaXQuIFRoZXJlZm9yZSB1c2luZyBzaG9ydGN1dFxyXG4gICAgICAvLyBhbnkgZm9yIGpzb24gcmVzcG9uc2VcclxuXHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICBuZXh0OiAocHJvcGVydGllc0RhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMub2JqZWN0QXR0cmlidXRlR3JvdXBzID0gdGhpcy5fY3JlYXRlQXR0cmlidXRlR3JvdXBzRnJvbVJlc3BvbnNlKHByb3BlcnRpZXNEYXRhKTtcclxuICAgICAgICB0aGlzLl9zeW5jQXR0cmlidXRlU3RhdGVzRnJvbUNyaXRlcmlhKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vYmplY3RBdHRyaWJ1dGVHcm91cHMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgKVxyXG5cclxuICB9XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHByaXZhdGUgX2NyZWF0ZUF0dHJpYnV0ZUdyb3Vwc0Zyb21SZXNwb25zZShwcm9wZXJ0aWVzRGF0YTogYW55KSB7XHJcblxyXG4gICAgY29uc3QgZ3JvdXBzOiBBcnJheTxDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZUdyb3VwPiA9IFtdO1xyXG4gICAgbGV0IGxvY2FsaXplZEF0dHJpYkdyb3VwcyA9IG51bGw7XHJcbiAgICBpZiAocHJvcGVydGllc0RhdGEubG9jYWxpemVkQXR0cmlidXRlR3JvdXBzKSB7XHJcbiAgICAgIGxvY2FsaXplZEF0dHJpYkdyb3VwcyA9IHByb3BlcnRpZXNEYXRhLmxvY2FsaXplZEF0dHJpYnV0ZUdyb3VwcztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXByb3BlcnRpZXNEYXRhLmF0dHJpYnV0ZXMpIHtcclxuICAgICAgcmV0dXJuIGdyb3VwcztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhdHRyaWJHcm91cHMgPSBwcm9wZXJ0aWVzRGF0YS5hdHRyaWJ1dGVzO1xyXG4gICAgZm9yIChjb25zdCBbZ3JvdXBOYW1lLCBhdHRyaWJzT2JqZWN0XSBvZiBPYmplY3QuZW50cmllcyhhdHRyaWJHcm91cHMpKSB7XHJcblxyXG4gICAgICBjb25zdCBuZXdHcm91cDogQ3JpdGVyaWFTZWxlY3RPYmplY3RBdHRyaWJ1dGVHcm91cCA9IHtcclxuICAgICAgICBuYW1lOiBncm91cE5hbWUsXHJcbiAgICAgICAgZXhwYW5kZWQ6IGZhbHNlLFxyXG4gICAgICAgIGF0dHJpYnV0ZXM6IFtdXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAobG9jYWxpemVkQXR0cmliR3JvdXBzPy5bZ3JvdXBOYW1lXSkge1xyXG4gICAgICAgIG5ld0dyb3VwLm5hbWUgPSBsb2NhbGl6ZWRBdHRyaWJHcm91cHNbZ3JvdXBOYW1lXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFhdHRyaWJzT2JqZWN0KSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZvciAoY29uc3QgYXR0cmliIG9mIE9iamVjdC52YWx1ZXMoYXR0cmlic09iamVjdCkpIHtcclxuXHJcbiAgICAgICAgY29uc3QgbmV3QXR0cmliOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZSA9IHtcclxuICAgICAgICAgIGlkOiBhdHRyaWIuaWQsXHJcbiAgICAgICAgICBuYW1lOiBhdHRyaWIubmFtZSxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBhdHRyaWIuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICB2YWx1ZTogYXR0cmliLnZhbHVlLFxyXG4gICAgICAgICAgaXNDaGFuZ2VhYmxlOiBhdHRyaWIuaXNDaGFuZ2VhYmxlLFxyXG4gICAgICAgICAgdHlwZTogYXR0cmliLnR5cGUsXHJcbiAgICAgICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgICAgIHZhbHVlQ2hlY2tlZDogZmFsc2UsXHJcbiAgICAgICAgICBncm91cDogYXR0cmliLmdyb3VwLFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQWRkIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbiB3aGljaCBpcyBub3QgYWx3YXlzIHByZXNlbnRcclxuICAgICAgICBpZiAoYXR0cmliLmNvbnRyb2wpIHtcclxuICAgICAgICAgIG5ld0F0dHJpYi5jb250cm9sID0gYXR0cmliLmNvbnRyb2w7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhdHRyaWIuZGVmYXVsdFZhbHVlKSB7XHJcbiAgICAgICAgICBuZXdBdHRyaWIuZGVmYXVsdFZhbHVlID0gYXR0cmliLmRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGF0dHJpYi51bml0KSB7XHJcbiAgICAgICAgICBuZXdBdHRyaWIudW5pdCA9IGF0dHJpYi51bml0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYXR0cmliLmRlY2ltYWwpIHtcclxuICAgICAgICAgIG5ld0F0dHJpYi5kZWNpbWFsID0gYXR0cmliLmRlY2ltYWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhdHRyaWIuZW51bWRlZmluaXRpb24pIHtcclxuICAgICAgICAgIG5ld0F0dHJpYi5lbnVtVmFsdWVzID0gYXR0cmliLmVudW1kZWZpbml0aW9uO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbmV3R3JvdXAuYXR0cmlidXRlcy5wdXNoKG5ld0F0dHJpYik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGdyb3Vwcy5wdXNoKG5ld0dyb3VwKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZ3JvdXBzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3luY0F0dHJpYnV0ZVN0YXRlc0Zyb21Dcml0ZXJpYSgpIHtcclxuICAgIHRoaXMub2JqZWN0QXR0cmlidXRlR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xyXG4gICAgICBncm91cC5hdHRyaWJ1dGVzLmZvckVhY2goYXR0cmliID0+IHtcclxuICAgICAgICBjb25zdCBjcml0ZXJpYSA9IHRoaXMuX2ZpbHRlckNyaXRlcmlhLmZpbmQoeCA9PiB4LmlkID09IGF0dHJpYi5pZClcclxuICAgICAgICBpZiAoY3JpdGVyaWEpIHtcclxuICAgICAgICAgIGF0dHJpYi5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICAgIGF0dHJpYi52YWx1ZUNoZWNrZWQgPSBjcml0ZXJpYS52YWx1ZSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhdHRyaWIuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgYXR0cmliLnZhbHVlQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkT2JqZWN0UHJvcGVydGllcyhvYmplY3RJZDogc3RyaW5nLCByZXZpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAoIXRoaXMuYXBpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmFwaS5vYmplY3RzLmdldChvYmplY3RJZCwgcmV2aXNpb24sIFwiOFwiLCB1bmRlZmluZWQsIGZhbHNlLCB1bmRlZmluZWQpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRPYmplY3RTdHJ1Y3R1cmUob2JqZWN0SWQ6IHN0cmluZywgcmV2aXNpb246IG51bWJlciB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKCF0aGlzLmFwaSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZyb20odGhpcy5hcGkub2JqZWN0cy5nZXRUb3BvbG9neShvYmplY3RJZCwgcmV2aXNpb24sIGZhbHNlLCBmYWxzZSwgdW5kZWZpbmVkKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkT2JqZWN0Q29tcGxleFByb3BlcnRpZXNTdHJ1Y3R1cmUob2JqZWN0SWQ6IHN0cmluZywgcmV2aXNpb246IG51bWJlciB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKCF0aGlzLmFwaSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZyb20odGhpcy5hcGkub2JqZWN0cy5nZXRDb21wbGV4UHJvcGVydGllc1RvcG9sb2d5KG9iamVjdElkLCByZXZpc2lvbikpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlQ29tcGxleFByb3BlcnRpZXN0cnVjdHVyZShvYmplY3RJZDogc3RyaW5nLCByZXZpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9sb2FkT2JqZWN0Q29tcGxleFByb3BlcnRpZXNTdHJ1Y3R1cmUob2JqZWN0SWQsIHJldmlzaW9uKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHN0cnVjdHVyZURhdGEpID0+IHtcclxuICAgICAgICBpZiAoc3RydWN0dXJlRGF0YSkge1xyXG4gICAgICAgICAgY29uc3QgY29tcGxleFByb3BzID0gQ29tcGxleFByb3BlcnRpZXNOb2RlQnVpbGRlci5jcmVhdGVGcm9tUmVzcG9uc2Uoc3RydWN0dXJlRGF0YSk7XHJcbiAgICAgICAgICBpZiAoY29tcGxleFByb3BzPy5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbXBsZXhQcm9wZXJ0aWVzID0gY29tcGxleFByb3BzO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fY29tcGxleFByb3BlcnRpZXMgPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZU9iamVjdFN0cnVjdHVyZShvYmplY3RJZDogc3RyaW5nLCByZXZpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9sb2FkT2JqZWN0U3RydWN0dXJlKG9iamVjdElkLCByZXZpc2lvbik/LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChzdHJ1Y3R1cmVEYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKHN0cnVjdHVyZURhdGEpIHtcclxuICAgICAgICAgIHRoaXMuX29iamVjdFN0cnVjdHVyZSA9IE9iamVjdFN0cnVjdHVyZU5vZGVCdWlsZGVyLmNyZWF0ZUZyb21SZXNwb25zZShzdHJ1Y3R1cmVEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiIsIjwhLS0gT2JqZWN0IHN0cnVjdHVyZS0tPlxuPGxpYi1leHBhbnNpb24tcGFuZWw+XG4gIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICA8c3BhbiBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1oZWFkZXJcIj5cbiAgICAgIHt7IFwiX09iamVjdCBzdHJ1Y3R1cmVcIiB8IHRyYW5zbGF0ZSB9fTwvc3BhblxuICAgID5cbiAgPC9saWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgQGlmKG9iamVjdFN0cnVjdHVyZSl7XG4gICAgPGxpYi1iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmVcbiAgICAgIFtvYmplY3RTdHJ1Y3R1cmVdPVwib2JqZWN0U3RydWN0dXJlXCJcbiAgICAgIChub2RlU2VsZWN0ZWQpPVwiaGFuZGxlT2JqZWN0U3RydWN0dXJlTm9kZVNlbGVjdGVkKCRldmVudClcIlxuICAgID5cbiAgICA8L2xpYi1iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmU+XG4gIH1cbjwvbGliLWV4cGFuc2lvbi1wYW5lbD5cbjwhLS0gRW5kIE9iamVjdCBzdHJ1Y3R1cmUtLT5cblxuPCEtLSBDb21wbGV4IHByb3BlcnRpZXMtLT5cbkBpZihjb21wbGV4UHJvcGVydGllcyl7XG48bGliLWV4cGFuc2lvbi1wYW5lbD5cbiAgPGxpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgIDxzcGFuIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWhlYWRlclwiPlxuICAgICAge3sgXCJfT2JqZWN0IG11bHRpcHJvcGVydGllcyB0cmVlXCIgfCB0cmFuc2xhdGUgfX08L3NwYW5cbiAgICA+XG4gIDwvbGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gIDxsaWItYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzXG4gICAgW2NvbXBsZXhQcm9wZXJ0aWVzXT1cImNvbXBsZXhQcm9wZXJ0aWVzXCJcbiAgICAobm9kZVNlbGVjdGVkKT1cImhhbmRsZUNvbXBsZXhQcm9wZXJ0eU5vZGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgPlxuICA8L2xpYi1iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXM+XG48L2xpYi1leHBhbnNpb24tcGFuZWw+XG59XG48IS0tIEVuZCBDb21wbGV4IHByb3BlcnRpZXMtLT5cblxuPCEtLSBQcm9wZXJ0aWVzIGxpc3QtLT5cbkBpZihvYmplY3RBdHRyaWJ1dGVHcm91cHMubGVuZ3RoID4gMCl7XG48bGliLWV4cGFuc2lvbi1wYW5lbD5cbiAgPGxpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgIDxzcGFuIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWhlYWRlclwiPlxuICAgICAge3sgXCJfT2JqZWN0IHByb3BlcnRpZXNcIiB8IHRyYW5zbGF0ZSB9fTwvc3BhblxuICAgID5cbiAgPC9saWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cblxuICBAZm9yIChhdHRyaWJHcm91cCBvZiBvYmplY3RBdHRyaWJ1dGVHcm91cHM7IHRyYWNrIGF0dHJpYkdyb3VwKSB7XG4gIDxsaWItZXhwYW5zaW9uLXBhbmVsIFtleHBhbmRlZF09XCJhdHRyaWJHcm91cC5leHBhbmRlZFwiPlxuICAgIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWdyb3VwLWhlYWRlclwiPlxuICAgICAgICB7eyBhdHRyaWJHcm91cC5uYW1lIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9saWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICA8ZGl2PlxuICAgICAgQGZvciAoYXR0cmliIG9mIGF0dHJpYkdyb3VwLmF0dHJpYnV0ZXM7IHRyYWNrIGF0dHJpYikge1xuICAgICAgPGRpdiBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtYXR0cmliLXJvdy1jb250ZW50XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtYXR0cmliLXJvdy1jZWxsIGNyaXRlcmlhLXNlbGVjdC1jaGVja2JveFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWF0dHJpYi1yb3ctY2VsbC1sYWJlbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYXR0cmliLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgIGZpbHRlckNyaXRlcmlhLmxlbmd0aCA9PT0gTWF4RmlsdGVyQ3JpdGVyaWEgJiYgIWF0dHJpYi5jaGVja2VkXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQXR0cmlidXRlKGF0dHJpYilcIlxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJ0b2dnbGVBdHRyaWJ1dGUoYXR0cmliKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWF0dHJpYi1yb3ctY2VsbC10ZXh0XCI+XG4gICAgICAgICAgICAgIHt7IGF0dHJpYi5uYW1lIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwgY3JpdGVyaWEtc2VsZWN0LWNoZWNrYm94XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtYXR0cmliLXJvdy1jZWxsLWxhYmVsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhdHRyaWIudmFsdWVDaGVja2VkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJDcml0ZXJpYS5sZW5ndGggPT09IE1heEZpbHRlckNyaXRlcmlhICYmICFhdHRyaWIuY2hlY2tlZFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUF0dHJpYnV0ZVZhbHVlKGF0dHJpYilcIlxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJ0b2dnbGVBdHRyaWJ1dGVWYWx1ZShhdHRyaWIpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtYXR0cmliLXJvdy1jZWxsLXRleHRcIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7IHRpdGxlRm9yQXR0cmlidXRlKGF0dHJpYikgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBub3JtYWxpemVkVmFsdWUoYXR0cmliKSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvbGliLWV4cGFuc2lvbi1wYW5lbD5cbiAgfVxuPC9saWItZXhwYW5zaW9uLXBhbmVsPlxufVxuPCEtLSBFbmQgUHJvcGVydGllcyBsaXN0LS0+XG4iXX0=
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMvY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMvY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDcEgsT0FBTyxFQUFFLGVBQWUsRUFBb0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUM5RyxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0YsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDcEgsT0FBTyxFQUFFLHVDQUF1QyxFQUFF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RSxlQUFlLDRGQUFFLCtCQUErQiw4SkFBRSx1Q0FBdUM7OzRGQUtoSix1Q0FBdUM7a0JBUm5ELFNBQVM7K0JBQ0UsdUNBQXVDLGNBQ3JDLElBQUksV0FDUCxDQUFDLDZCQUE2QixFQUFFLHVCQUF1QixFQUFFLGVBQWUsRUFBRSwrQkFBK0IsRUFBRSx1Q0FBdUMsQ0FBQyxhQUNqSixDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUM7OElBZ0MxQyxHQUFHO3NCQURGLEtBQUs7Z0JBSUYsWUFBWTtzQkFEZixLQUFLO2dCQWFOLFFBQVE7c0JBRFAsS0FBSztnQkFjRixjQUFjO3NCQURqQixLQUFLO2dCQU1JLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgV2ViU2RrIGZyb20gJ2JpbXBsdXMtd2Vic2RrJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQvYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBFeHBhbnNpb25QYW5lbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXhwYW5zaW9uUGFuZWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9leHBhbnNpb24tcGFuZWwtaGVhZGVyL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsdGVyQ3JpdGVyaXVtLCBNYXhGaWx0ZXJDcml0ZXJpYSB9IGZyb20gJy4uL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBCaW1wbHVzT2JqZWN0U3RydWN0dXJlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzT2JqZWN0Q29tcGxleFByb3BlcnRpZXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMvYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE9iamVjdFN0cnVjdHVyZU5vZGUsIE9iamVjdFN0cnVjdHVyZU5vZGVCdWlsZGVyIH0gZnJvbSAnLi4vLi4vYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBDb21wbGV4UHJvcGVydGllc05vZGUsIENvbXBsZXhQcm9wZXJ0aWVzTm9kZUJ1aWxkZXIgfSBmcm9tICcuLi8uLi9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMvYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlLCBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZUdyb3VwIH0gZnJvbSAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRm9ybWF0VmFsdWVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvZm9ybWF0LXZhbHVlLnBpcGUnO1xyXG5pbXBvcnQgeyBEYXRlVGltZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9kYXRldGltZS5waXBlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbRXhwYW5zaW9uUGFuZWxIZWFkZXJDb21wb25lbnQsIEV4cGFuc2lvblBhbmVsQ29tcG9uZW50LCBUcmFuc2xhdGVNb2R1bGUsIEJpbXBsdXNPYmplY3RTdHJ1Y3R1cmVDb21wb25lbnQsIEJpbXBsdXNPYmplY3RDb21wbGV4UHJvcGVydGllc0NvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbRm9ybWF0VmFsdWVQaXBlLCBEYXRlVGltZVBpcGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50Lmxlc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcml0ZXJpYVNlbGVjdE9iamVjdFByb3BlcnRpZXNDb21wb25lbnQgZXh0ZW5kcyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmb3JtYXRWYWx1ZVBpcGU6IEZvcm1hdFZhbHVlUGlwZSxcclxuICAgIHByaXZhdGUgZGF0ZXRpbWVQaXBlOiBEYXRlVGltZVBpcGUpIHtcclxuICAgIHN1cGVyKHRyYW5zbGF0ZVNlcnZpY2UpXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChpZCkgPT4ge1xyXG4gICAgICAgIGlmIChpZCkge1xyXG4gICAgICAgICAgdGhpcy5fY3JlYXRlT2JqZWN0UHJvcGVydGllcyhpZCwgdGhpcy5yZXZpc2lvbilcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX2N1cnJlbnRPYmplY3RJZCQuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGlkKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fY3VycmVudFByb3BlcnRpZXNPYmplY3RJZCQubmV4dChpZCk7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlQ29tcGxleFByb3BlcnRpZXN0cnVjdHVyZShpZCwgdGhpcy5yZXZpc2lvbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYXBpOiBXZWJTZGsuQXBpIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHJvb3RPYmplY3RJZChpZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50T2JqZWN0SWQkLm5leHQoaWQpO1xyXG4gICAgdGhpcy5fY3JlYXRlT2JqZWN0U3RydWN0dXJlKGlkLCB0aGlzLnJldmlzaW9uKTtcclxuXHJcbiAgICB0aGlzLl9yb290T2JqZWN0SWQgPSBpZDtcclxuICB9XHJcblxyXG4gIGdldCByb290T2JqZWN0SWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9yb290T2JqZWN0SWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHJldmlzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRPYmplY3RJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oXCJcIik7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KFwiXCIpO1xyXG5cclxuICBvYmplY3RBdHRyaWJ1dGVHcm91cHM6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlR3JvdXBbXSA9IFtdO1xyXG5cclxuICBNYXhGaWx0ZXJDcml0ZXJpYSA9IE1heEZpbHRlckNyaXRlcmlhOyAvLyBGb3IgZXhwb3N1cmUgdG8gdGVtcGxhdGVcclxuXHJcbiAgcHJpdmF0ZSBfcm9vdE9iamVjdElkOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBmaWx0ZXJDcml0ZXJpYShjcml0ZXJpYTogRmlsdGVyQ3JpdGVyaXVtW10pIHtcclxuICAgIHRoaXMuX2ZpbHRlckNyaXRlcmlhID0gY3JpdGVyaWE7XHJcbiAgICB0aGlzLl9zeW5jQXR0cmlidXRlU3RhdGVzRnJvbUNyaXRlcmlhKCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgZmlsdGVyQ3JpdGVyaWFDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckNyaXRlcml1bVtdPigpO1xyXG5cclxuICBnZXQgZmlsdGVyQ3JpdGVyaWEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyQ3JpdGVyaWE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maWx0ZXJDcml0ZXJpYTogRmlsdGVyQ3JpdGVyaXVtW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfb2JqZWN0U3RydWN0dXJlOiBPYmplY3RTdHJ1Y3R1cmVOb2RlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGdldCBvYmplY3RTdHJ1Y3R1cmUoKTogT2JqZWN0U3RydWN0dXJlTm9kZSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX29iamVjdFN0cnVjdHVyZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29tcGxleFByb3BlcnRpZXM6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBnZXQgY29tcGxleFByb3BlcnRpZXMoKTogQ29tcGxleFByb3BlcnRpZXNOb2RlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29tcGxleFByb3BlcnRpZXM7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBdHRyaWJ1dGUoYXR0cmliOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZSkge1xyXG4gICAgYXR0cmliLmNoZWNrZWQgPSAhYXR0cmliLmNoZWNrZWQ7XHJcbiAgICBpZiAoYXR0cmliLmNoZWNrZWQgPT09IGZhbHNlKSB7XHJcbiAgICAgIGF0dHJpYi52YWx1ZUNoZWNrZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhhbmRsZUZpbHRlckNyaXRlcml1bUF0dHJpYnV0ZVN0YXRlQ2hhbmdlKGF0dHJpYik7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBdHRyaWJ1dGVWYWx1ZShhdHRyaWI6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlKSB7XHJcbiAgICBhdHRyaWIudmFsdWVDaGVja2VkID0gIWF0dHJpYi52YWx1ZUNoZWNrZWQ7XHJcbiAgICBhdHRyaWIuY2hlY2tlZCA9IGF0dHJpYi52YWx1ZUNoZWNrZWQ7XHJcblxyXG4gICAgdGhpcy5oYW5kbGVGaWx0ZXJDcml0ZXJpdW1BdHRyaWJ1dGVTdGF0ZUNoYW5nZShhdHRyaWIpO1xyXG4gIH1cclxuXHJcbiAgX2RlZmluZUZpbHRlclN0cmluZyhhdHRyaWI6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlKSB7XHJcbiAgICBsZXQgc3Vic3RyaW5nID0gYFtJXVske2F0dHJpYi5pZH1dLlZhbHVlYDtcclxuXHJcbiAgICBpZiAoYXR0cmliLnZhbHVlQ2hlY2tlZCkge1xyXG4gICAgICBzdWJzdHJpbmcgKz0gYFtGXVswXT0ke3RoaXMuZm9ybWF0VmFsdWVQaXBlLnRyYW5zZm9ybShhdHRyaWIudmFsdWUpfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3Vic3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgX2FkZEZpbHRlckNyaXRlcmlhKGF0dHJpYjogQ3JpdGVyaWFTZWxlY3RPYmplY3RBdHRyaWJ1dGUpIHtcclxuICAgIC8vIGFkZCBhIG5ldyBlbnRyeVxyXG4gICAgdGhpcy5maWx0ZXJDcml0ZXJpYS5wdXNoKHtcclxuICAgICAgbmFtZTogYXR0cmliLm5hbWUsXHJcbiAgICAgIHZhbHVlOiBhdHRyaWIudmFsdWVDaGVja2VkID8gYXR0cmliLnZhbHVlIDogdW5kZWZpbmVkLFxyXG4gICAgICBuYW1lZFZhbHVlOiBhdHRyaWIudmFsdWVDaGVja2VkID8gdGhpcy5ub3JtYWxpemVkVmFsdWUoYXR0cmliLCB0cnVlKSA6IHVuZGVmaW5lZCxcclxuICAgICAgaWQ6IGF0dHJpYi5pZCxcclxuICAgICAgc3ViU3RyaW5nOiB0aGlzLl9kZWZpbmVGaWx0ZXJTdHJpbmcoYXR0cmliKSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgX3VwZGF0ZUZpbHRlckNyaXRlcmlhKGF0dHJpYjogQ3JpdGVyaWFTZWxlY3RPYmplY3RBdHRyaWJ1dGUsIGluZGV4OiBudW1iZXIpIHtcclxuICAgIC8vIHVwZGF0ZSBhbiBleGlzdGluZyBlbnRyeVxyXG4gICAgdGhpcy5maWx0ZXJDcml0ZXJpYVtpbmRleF0gPSB7XHJcbiAgICAgIC4uLnRoaXMuZmlsdGVyQ3JpdGVyaWFbaW5kZXhdLFxyXG4gICAgICBuYW1lOiBhdHRyaWIubmFtZSxcclxuICAgICAgdmFsdWU6IGF0dHJpYi52YWx1ZUNoZWNrZWQgPyBhdHRyaWIudmFsdWUgOiB1bmRlZmluZWQsXHJcbiAgICAgIG5hbWVkVmFsdWU6IGF0dHJpYi52YWx1ZUNoZWNrZWQgPyB0aGlzLm5vcm1hbGl6ZWRWYWx1ZShhdHRyaWIsIHRydWUpIDogdW5kZWZpbmVkLFxyXG4gICAgICBzdWJTdHJpbmc6IHRoaXMuX2RlZmluZUZpbHRlclN0cmluZyhhdHRyaWIpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vIEhlbHBlciBmdW5jdGlvbiBmb3Igcm91bmRpbmcgdG8gc3BlY2lmaWVkIGRlY2ltYWxzXHJcbiAgcHJpdmF0ZSByb3VuZFRvRGVjaW1hbCh2YWx1ZTogbnVtYmVyLCBkZWNpbWFsOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgY29uc3QgbXVsdGlwbGllciA9IE1hdGgucG93KDEwLCBkZWNpbWFsKTtcclxuICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogbXVsdGlwbGllcikgLyBtdWx0aXBsaWVyO1xyXG4gIH1cclxuXHJcbiAgdGl0bGVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZSk6IHN0cmluZyB7XHJcbiAgICAvLyBUcmFuc2xhdGlvbiBtb3ZlZCB0byBpbXBsZW1lbnRhdGlvbiB0byBub3QgcnVuIHRoZSB0cmFuc2xhdGlvbiBcclxuICAgIC8vIGZvciBtYW55IHZhbHVlcyB3aGljaCBkb24ndCBuZWVkIGl0XHJcbiAgICBpZiAoYXR0cmlidXRlLnZhbHVlID09PSBudWxsIHx8IGF0dHJpYnV0ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnX05vdF9kZWZpbmVkJyk7XHJcbiAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS52YWx1ZSA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfRW1wdHlfdmFsdWUnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBTdHJpbmcoYXR0cmlidXRlLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG5vcm1hbGl6ZWRWYWx1ZShhdHRyaWJ1dGU6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlLCBmb3JGaWx0ZXJDcml0ZXJpYTogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcclxuICAgIC8vIFRyYW5zbGF0aW9uIG1vdmVkIHRvIGltcGxlbWVudGF0aW9uIHRvIG5vdCBydW4gdGhlIHRyYW5zbGF0aW9uIFxyXG4gICAgLy8gZm9yIG1hbnkgdmFsdWVzIHdoaWNoIGRvbid0IG5lZWQgaXRcclxuICAgIGlmIChhdHRyaWJ1dGUudmFsdWUgPT09IG51bGwgfHwgYXR0cmlidXRlLnZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIGZvckZpbHRlckNyaXRlcmlhID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJfTm90X2RlZmluZWRcIikgOiBcIi4uLlwiO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhdHRyaWJ1dGUudmFsdWUgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiBmb3JGaWx0ZXJDcml0ZXJpYSA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiX0VtcHR5X3ZhbHVlXCIpIDogXCInJ1wiO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhdHRyaWJ1dGU/LmNvbnRyb2wgPT09IFwiRW51bWVyYXRpb25cIiAmJiBhdHRyaWJ1dGUuZW51bVZhbHVlcykge1xyXG4gICAgICBjb25zdCByZXN1bHQ6IHN0cmluZyA9IFN0cmluZyhhdHRyaWJ1dGUuZW51bVZhbHVlc1tOdW1iZXIoYXR0cmlidXRlLnZhbHVlKV0pO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhbmRsZSBudW1lcmljIHJvdW5kaW5nXHJcbiAgICBpZiAoIWZvckZpbHRlckNyaXRlcmlhICYmXHJcbiAgICAgIGF0dHJpYnV0ZS50eXBlID09PSAnZG91YmxlJyAmJlxyXG4gICAgICBhdHRyaWJ1dGUuZGVjaW1hbCAmJlxyXG4gICAgICB0eXBlb2YgKGF0dHJpYnV0ZS52YWx1ZSkgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIGNvbnN0IHJvdW5kZWRWYWx1ZSA9IHRoaXMucm91bmRUb0RlY2ltYWwoYXR0cmlidXRlLnZhbHVlLCBhdHRyaWJ1dGUuZGVjaW1hbCk7XHJcbiAgICAgIHJldHVybiBTdHJpbmcocm91bmRlZFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYXR0cmlidXRlPy5jb250cm9sID09PSBcIkNoZWNrYm94XCIpIHtcclxuICAgICAgcmV0dXJuIChhdHRyaWJ1dGUudmFsdWUgPT09IDEpID8gXCJUcnVlXCIgOiBcIkZhbHNlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlIGRhdGV0aW1lIHRyYW5zZm9ybWF0aW9uXHJcbiAgICBpZiAoYXR0cmlidXRlPy50eXBlID09PSBcImRhdGV0aW1lXCIgJiYgdHlwZW9mIChhdHRyaWJ1dGUudmFsdWUpID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5kYXRldGltZVBpcGUudHJhbnNmb3JtKGF0dHJpYnV0ZS52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFN0cmluZyhhdHRyaWJ1dGUudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmlsdGVyQ3JpdGVyaXVtQXR0cmlidXRlU3RhdGVDaGFuZ2UoYXR0cmliOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZSkge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbHRlckNyaXRlcmlhLmZpbmRJbmRleCh4ID0+IHguaWQgPT09IGF0dHJpYi5pZCk7XHJcbiAgICAvLyBGSUxURVIgQ1JJVEVSSUEgQUxSRUFEWSBFWElTVFNcclxuICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgIGlmIChhdHRyaWIuY2hlY2tlZCA9PT0gZmFsc2UgJiYgYXR0cmliLnZhbHVlQ2hlY2tlZCA9PT0gZmFsc2UpIHtcclxuICAgICAgICAvLyBSRU1PVkVcclxuICAgICAgICAvLyBmaWx0ZXJDcml0ZXJpYSBubyBsb25nZXIgdXNlZCAobGVmdCAvIHJpZ2h0IGNoZWNrYm94ZXMgbm90IGNoZWNrZWQpXHJcbiAgICAgICAgdGhpcy5maWx0ZXJDcml0ZXJpYS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIFVQREFURVxyXG4gICAgICAgIC8vIGZpbHRlckNyaXRlcmlhIHN0aWxsIHVzZWQsIGJ1dCB2YWx1ZSBzaG91bGQgYmUgdXNlZCAocmlnaHQgY2hlY2tib3ggY2hlY2tlZClcclxuICAgICAgICB0aGlzLl91cGRhdGVGaWx0ZXJDcml0ZXJpYShhdHRyaWIsIGluZGV4KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZpbHRlckNyaXRlcmlhQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJDcml0ZXJpYSk7XHJcbiAgICB9XHJcbiAgICAvLyBGSUxURVIgQ1JJVEVSSUEgRE9FUyBOT1QgRVhJU1QgYW5kIE1BWCBDUklURVJJQSBOT1QgUkVBQ0hFRFxyXG4gICAgZWxzZSBpZiAodGhpcy5maWx0ZXJDcml0ZXJpYS5sZW5ndGggPCBNYXhGaWx0ZXJDcml0ZXJpYSkge1xyXG4gICAgICAvLyBBRERcclxuICAgICAgdGhpcy5fYWRkRmlsdGVyQ3JpdGVyaWEoYXR0cmliKTtcclxuICAgICAgdGhpcy5maWx0ZXJDcml0ZXJpYUNoYW5nZS5lbWl0KHRoaXMuZmlsdGVyQ3JpdGVyaWEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlT2JqZWN0U3RydWN0dXJlTm9kZVNlbGVjdGVkKG5vZGU6IE9iamVjdFN0cnVjdHVyZU5vZGUpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRPYmplY3RJZCQubmV4dChub2RlLmlkKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNvbXBsZXhQcm9wZXJ0eU5vZGVTZWxlY3RlZChub2RlOiBDb21wbGV4UHJvcGVydGllc05vZGUpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkLm5leHQobm9kZS5pZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVPYmplY3RQcm9wZXJ0aWVzKG9iamVjdElkOiBzdHJpbmcsIHJldmlzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RQcm9wZXJ0aWVzKG9iamVjdElkLCByZXZpc2lvbik/LnN1YnNjcmliZSh7XHJcblxyXG4gICAgICAvLyBwcm9wZXJ0aWVzIHJlc3BvbnNlIGlzIGJhZGx5IHN0cnVjdHVyZWQsIG5lYXJseSBpbXBvc3NpYmxlIHRvIGNyZWF0ZSBjbGFzcyBzdHJ1Y3R1cmUgZnJvbSBpdC4gVGhlcmVmb3JlIHVzaW5nIHNob3J0Y3V0XHJcbiAgICAgIC8vIGFueSBmb3IganNvbiByZXNwb25zZVxyXG5cclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgIG5leHQ6IChwcm9wZXJ0aWVzRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vYmplY3RBdHRyaWJ1dGVHcm91cHMgPSB0aGlzLl9jcmVhdGVBdHRyaWJ1dGVHcm91cHNGcm9tUmVzcG9uc2UocHJvcGVydGllc0RhdGEpO1xyXG4gICAgICAgIHRoaXMuX3N5bmNBdHRyaWJ1dGVTdGF0ZXNGcm9tQ3JpdGVyaWEoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLm9iamVjdEF0dHJpYnV0ZUdyb3VwcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICApXHJcblxyXG4gIH1cclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgcHJpdmF0ZSBfY3JlYXRlQXR0cmlidXRlR3JvdXBzRnJvbVJlc3BvbnNlKHByb3BlcnRpZXNEYXRhOiBhbnkpIHtcclxuXHJcbiAgICBjb25zdCBncm91cHM6IEFycmF5PENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlR3JvdXA+ID0gW107XHJcbiAgICBsZXQgbG9jYWxpemVkQXR0cmliR3JvdXBzID0gbnVsbDtcclxuICAgIGlmIChwcm9wZXJ0aWVzRGF0YS5sb2NhbGl6ZWRBdHRyaWJ1dGVHcm91cHMpIHtcclxuICAgICAgbG9jYWxpemVkQXR0cmliR3JvdXBzID0gcHJvcGVydGllc0RhdGEubG9jYWxpemVkQXR0cmlidXRlR3JvdXBzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghcHJvcGVydGllc0RhdGEuYXR0cmlidXRlcykge1xyXG4gICAgICByZXR1cm4gZ3JvdXBzO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGF0dHJpYkdyb3VwcyA9IHByb3BlcnRpZXNEYXRhLmF0dHJpYnV0ZXM7XHJcbiAgICBmb3IgKGNvbnN0IFtncm91cE5hbWUsIGF0dHJpYnNPYmplY3RdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYkdyb3VwcykpIHtcclxuXHJcbiAgICAgIGNvbnN0IG5ld0dyb3VwOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZUdyb3VwID0ge1xyXG4gICAgICAgIG5hbWU6IGdyb3VwTmFtZSxcclxuICAgICAgICBleHBhbmRlZDogZmFsc2UsXHJcbiAgICAgICAgYXR0cmlidXRlczogW11cclxuICAgICAgfTtcclxuXHJcbiAgICAgIGlmIChsb2NhbGl6ZWRBdHRyaWJHcm91cHM/Lltncm91cE5hbWVdKSB7XHJcbiAgICAgICAgbmV3R3JvdXAubmFtZSA9IGxvY2FsaXplZEF0dHJpYkdyb3Vwc1tncm91cE5hbWVdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWF0dHJpYnNPYmplY3QpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChjb25zdCBhdHRyaWIgb2YgT2JqZWN0LnZhbHVlcyhhdHRyaWJzT2JqZWN0KSkge1xyXG5cclxuICAgICAgICBjb25zdCBuZXdBdHRyaWI6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlID0ge1xyXG4gICAgICAgICAgaWQ6IGF0dHJpYi5pZCxcclxuICAgICAgICAgIG5hbWU6IGF0dHJpYi5uYW1lLFxyXG4gICAgICAgICAgZGVzY3JpcHRpb246IGF0dHJpYi5kZXNjcmlwdGlvbixcclxuICAgICAgICAgIHZhbHVlOiBhdHRyaWIudmFsdWUsXHJcbiAgICAgICAgICBpc0NoYW5nZWFibGU6IGF0dHJpYi5pc0NoYW5nZWFibGUsXHJcbiAgICAgICAgICB0eXBlOiBhdHRyaWIudHlwZSxcclxuICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgdmFsdWVDaGVja2VkOiBmYWxzZSxcclxuICAgICAgICAgIGdyb3VwOiBhdHRyaWIuZ3JvdXAsXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBBZGQgYXR0cmlidXRlIGluZm9ybWF0aW9uIHdoaWNoIGlzIG5vdCBhbHdheXMgcHJlc2VudFxyXG4gICAgICAgIGlmIChhdHRyaWIuY29udHJvbCkge1xyXG4gICAgICAgICAgbmV3QXR0cmliLmNvbnRyb2wgPSBhdHRyaWIuY29udHJvbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGF0dHJpYi5kZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICAgIG5ld0F0dHJpYi5kZWZhdWx0VmFsdWUgPSBhdHRyaWIuZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYXR0cmliLnVuaXQpIHtcclxuICAgICAgICAgIG5ld0F0dHJpYi51bml0ID0gYXR0cmliLnVuaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhdHRyaWIuZGVjaW1hbCkge1xyXG4gICAgICAgICAgbmV3QXR0cmliLmRlY2ltYWwgPSBhdHRyaWIuZGVjaW1hbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGF0dHJpYi5lbnVtZGVmaW5pdGlvbikge1xyXG4gICAgICAgICAgbmV3QXR0cmliLmVudW1WYWx1ZXMgPSBhdHRyaWIuZW51bWRlZmluaXRpb247XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBuZXdHcm91cC5hdHRyaWJ1dGVzLnB1c2gobmV3QXR0cmliKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZ3JvdXBzLnB1c2gobmV3R3JvdXApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBncm91cHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zeW5jQXR0cmlidXRlU3RhdGVzRnJvbUNyaXRlcmlhKCkge1xyXG4gICAgdGhpcy5vYmplY3RBdHRyaWJ1dGVHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGdyb3VwLmF0dHJpYnV0ZXMuZm9yRWFjaChhdHRyaWIgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNyaXRlcmlhID0gdGhpcy5fZmlsdGVyQ3JpdGVyaWEuZmluZCh4ID0+IHguaWQgPT0gYXR0cmliLmlkKVxyXG4gICAgICAgIGlmIChjcml0ZXJpYSkge1xyXG4gICAgICAgICAgYXR0cmliLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgYXR0cmliLnZhbHVlQ2hlY2tlZCA9IGNyaXRlcmlhLnZhbHVlICE9PSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGF0dHJpYi5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICBhdHRyaWIudmFsdWVDaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRPYmplY3RQcm9wZXJ0aWVzKG9iamVjdElkOiBzdHJpbmcsIHJldmlzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICghdGhpcy5hcGkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpLm9iamVjdHMuZ2V0KG9iamVjdElkLCByZXZpc2lvbiwgXCI4XCIsIHVuZGVmaW5lZCwgZmFsc2UsIHVuZGVmaW5lZCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9hZE9iamVjdFN0cnVjdHVyZShvYmplY3RJZDogc3RyaW5nLCByZXZpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAoIXRoaXMuYXBpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmFwaS5vYmplY3RzLmdldFRvcG9sb2d5KG9iamVjdElkLCByZXZpc2lvbiwgZmFsc2UsIGZhbHNlLCB1bmRlZmluZWQpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRPYmplY3RDb21wbGV4UHJvcGVydGllc1N0cnVjdHVyZShvYmplY3RJZDogc3RyaW5nLCByZXZpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAoIXRoaXMuYXBpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmFwaS5vYmplY3RzLmdldENvbXBsZXhQcm9wZXJ0aWVzVG9wb2xvZ3kob2JqZWN0SWQsIHJldmlzaW9uKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVDb21wbGV4UHJvcGVydGllc3RydWN0dXJlKG9iamVjdElkOiBzdHJpbmcsIHJldmlzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RDb21wbGV4UHJvcGVydGllc1N0cnVjdHVyZShvYmplY3RJZCwgcmV2aXNpb24pPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoc3RydWN0dXJlRGF0YSkgPT4ge1xyXG4gICAgICAgIGlmIChzdHJ1Y3R1cmVEYXRhKSB7XHJcbiAgICAgICAgICBjb25zdCBjb21wbGV4UHJvcHMgPSBDb21wbGV4UHJvcGVydGllc05vZGVCdWlsZGVyLmNyZWF0ZUZyb21SZXNwb25zZShzdHJ1Y3R1cmVEYXRhKTtcclxuICAgICAgICAgIGlmIChjb21wbGV4UHJvcHM/LmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29tcGxleFByb3BlcnRpZXMgPSBjb21wbGV4UHJvcHM7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wbGV4UHJvcGVydGllcyA9IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlT2JqZWN0U3RydWN0dXJlKG9iamVjdElkOiBzdHJpbmcsIHJldmlzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RTdHJ1Y3R1cmUob2JqZWN0SWQsIHJldmlzaW9uKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHN0cnVjdHVyZURhdGEpID0+IHtcclxuICAgICAgICBpZiAoc3RydWN0dXJlRGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5fb2JqZWN0U3RydWN0dXJlID0gT2JqZWN0U3RydWN0dXJlTm9kZUJ1aWxkZXIuY3JlYXRlRnJvbVJlc3BvbnNlKHN0cnVjdHVyZURhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPCEtLSBPYmplY3Qgc3RydWN0dXJlLS0+XG48bGliLWV4cGFuc2lvbi1wYW5lbD5cbiAgPGxpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgIDxzcGFuIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWhlYWRlclwiPlxuICAgICAge3sgXCJfT2JqZWN0IHN0cnVjdHVyZVwiIHwgdHJhbnNsYXRlIH19PC9zcGFuXG4gICAgPlxuICA8L2xpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICBAaWYob2JqZWN0U3RydWN0dXJlKXtcbiAgICA8bGliLWJpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZVxuICAgICAgW29iamVjdFN0cnVjdHVyZV09XCJvYmplY3RTdHJ1Y3R1cmVcIlxuICAgICAgKG5vZGVTZWxlY3RlZCk9XCJoYW5kbGVPYmplY3RTdHJ1Y3R1cmVOb2RlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvbGliLWJpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZT5cbiAgfVxuPC9saWItZXhwYW5zaW9uLXBhbmVsPlxuPCEtLSBFbmQgT2JqZWN0IHN0cnVjdHVyZS0tPlxuXG48IS0tIENvbXBsZXggcHJvcGVydGllcy0tPlxuQGlmKGNvbXBsZXhQcm9wZXJ0aWVzKXtcbjxsaWItZXhwYW5zaW9uLXBhbmVsPlxuICA8bGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgPHNwYW4gY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtaGVhZGVyXCI+XG4gICAgICB7eyBcIl9PYmplY3QgbXVsdGlwcm9wZXJ0aWVzIHRyZWVcIiB8IHRyYW5zbGF0ZSB9fTwvc3BhblxuICAgID5cbiAgPC9saWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgPGxpYi1iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXNcbiAgICBbY29tcGxleFByb3BlcnRpZXNdPVwiY29tcGxleFByb3BlcnRpZXNcIlxuICAgIChub2RlU2VsZWN0ZWQpPVwiaGFuZGxlQ29tcGxleFByb3BlcnR5Tm9kZVNlbGVjdGVkKCRldmVudClcIlxuICA+XG4gIDwvbGliLWJpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcz5cbjwvbGliLWV4cGFuc2lvbi1wYW5lbD5cbn1cbjwhLS0gRW5kIENvbXBsZXggcHJvcGVydGllcy0tPlxuXG48IS0tIFByb3BlcnRpZXMgbGlzdC0tPlxuQGlmKG9iamVjdEF0dHJpYnV0ZUdyb3Vwcy5sZW5ndGggPiAwKXtcbjxsaWItZXhwYW5zaW9uLXBhbmVsPlxuICA8bGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgPHNwYW4gY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtaGVhZGVyXCI+XG4gICAgICB7eyBcIl9PYmplY3QgcHJvcGVydGllc1wiIHwgdHJhbnNsYXRlIH19PC9zcGFuXG4gICAgPlxuICA8L2xpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuXG4gIEBmb3IgKGF0dHJpYkdyb3VwIG9mIG9iamVjdEF0dHJpYnV0ZUdyb3VwczsgdHJhY2sgYXR0cmliR3JvdXApIHtcbiAgPGxpYi1leHBhbnNpb24tcGFuZWwgW2V4cGFuZGVkXT1cImF0dHJpYkdyb3VwLmV4cGFuZGVkXCI+XG4gICAgPGxpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtZ3JvdXAtaGVhZGVyXCI+XG4gICAgICAgIHt7IGF0dHJpYkdyb3VwLm5hbWUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgIDxkaXY+XG4gICAgICBAZm9yIChhdHRyaWIgb2YgYXR0cmliR3JvdXAuYXR0cmlidXRlczsgdHJhY2sgYXR0cmliKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWF0dHJpYi1yb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwgY3JpdGVyaWEtc2VsZWN0LWNoZWNrYm94XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtYXR0cmliLXJvdy1jZWxsLWxhYmVsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhdHRyaWIuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgZmlsdGVyQ3JpdGVyaWEubGVuZ3RoID09PSBNYXhGaWx0ZXJDcml0ZXJpYSAmJiAhYXR0cmliLmNoZWNrZWRcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBdHRyaWJ1dGUoYXR0cmliKVwiXG4gICAgICAgICAgICAgICAgKGtleXByZXNzKT1cInRvZ2dsZUF0dHJpYnV0ZShhdHRyaWIpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtYXR0cmliLXJvdy1jZWxsLXRleHRcIj5cbiAgICAgICAgICAgICAge3sgYXR0cmliLm5hbWUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWF0dHJpYi1yb3ctY2VsbCBjcml0ZXJpYS1zZWxlY3QtY2hlY2tib3hcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwtbGFiZWxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImF0dHJpYi52YWx1ZUNoZWNrZWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgIGZpbHRlckNyaXRlcmlhLmxlbmd0aCA9PT0gTWF4RmlsdGVyQ3JpdGVyaWEgJiYgIWF0dHJpYi5jaGVja2VkXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQXR0cmlidXRlVmFsdWUoYXR0cmliKVwiXG4gICAgICAgICAgICAgICAgKGtleXByZXNzKT1cInRvZ2dsZUF0dHJpYnV0ZVZhbHVlKGF0dHJpYilcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwtdGV4dFwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgdGl0bGVGb3JBdHRyaWJ1dGUoYXR0cmliKSB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IG5vcm1hbGl6ZWRWYWx1ZShhdHRyaWIpIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9saWItZXhwYW5zaW9uLXBhbmVsPlxuICB9XG48L2xpYi1leHBhbnNpb24tcGFuZWw+XG59XG48IS0tIEVuZCBQcm9wZXJ0aWVzIGxpc3QtLT5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMvY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBPYmplY3RBdHRyaWJ1dGUge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgZ3JvdXA6IHN0cmluZztcclxuICB2YWx1ZTogc3RyaW5nO1xyXG4gIGNoZWNrZWQ6IGJvb2xlYW47XHJcbiAgdmFsdWVDaGVja2VkOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdEF0dHJpYnV0ZUdyb3VwIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgYXR0cmlidXRlczogT2JqZWN0QXR0cmlidXRlW107XHJcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3JpdGVyaWFTZWxlY3RPYmplY3RBdHRyaWJ1dGV7XHJcbiAgaWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICBncm91cDogc3RyaW5nO1xyXG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICBjaGVja2VkOiBib29sZWFuO1xyXG4gIHZhbHVlQ2hlY2tlZDogYm9vbGVhbjtcclxuICBpc0NoYW5nZWFibGU6IGJvb2xlYW47XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIGNvbnRyb2w/OiBzdHJpbmc7XHJcbiAgdW5pdD86IHN0cmluZztcclxuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XHJcbiAgZGVjaW1hbD86IG51bWJlcjtcclxuICBlbnVtVmFsdWVzPzogUmVjb3JkPG51bWJlciwgc3RyaW5nPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZUdyb3Vwe1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBhdHRyaWJ1dGVzOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZVtdO1xyXG4gIGV4cGFuZGVkOiBib29sZWFuO1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMvY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZXtcclxuICBpZDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIGdyb3VwOiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkO1xyXG4gIGNoZWNrZWQ6IGJvb2xlYW47XHJcbiAgdmFsdWVDaGVja2VkOiBib29sZWFuO1xyXG4gIGlzQ2hhbmdlYWJsZTogYm9vbGVhbjtcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgY29udHJvbD86IHN0cmluZztcclxuICB1bml0Pzogc3RyaW5nO1xyXG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcclxuICBkZWNpbWFsPzogbnVtYmVyO1xyXG4gIGVudW1WYWx1ZXM/OiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlR3JvdXB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGF0dHJpYnV0ZXM6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlW107XHJcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XHJcbn1cclxuIl19
@@ -0,0 +1,25 @@
1
+ import { Pipe } from '@angular/core';
2
+ import moment from 'moment';
3
+ import * as i0 from "@angular/core";
4
+ export class DateTimePipe {
5
+ transform(value, format = "L") {
6
+ // This UTC date/time 2024-12-11T23:00:00+00:00
7
+ // gets transformed in Germany with timezone shift of +1 by
8
+ // moment(value).format(format) ==> 12/12/2024
9
+ // and by
10
+ // moment.utc(value).format(format) ==> 12/11/2024
11
+ //
12
+ const date = moment(value).format(format);
13
+ return date;
14
+ }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
16
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: DateTimePipe, isStandalone: true, name: "DateTime" }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DateTimePipe, decorators: [{
19
+ type: Pipe,
20
+ args: [{
21
+ name: 'DateTime',
22
+ standalone: true,
23
+ }]
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9waXBlcy9kYXRldGltZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7QUFNNUIsTUFBTSxPQUFPLFlBQVk7SUFDdkIsU0FBUyxDQUFDLEtBQWEsRUFBRSxTQUFpQixHQUFHO1FBQzNDLCtDQUErQztRQUMvQywyREFBMkQ7UUFDM0Qsc0RBQXNEO1FBQ3RELFNBQVM7UUFDVCxzREFBc0Q7UUFDdEQsRUFBRTtRQUNGLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOytHQVZVLFlBQVk7NkdBQVosWUFBWTs7NEZBQVosWUFBWTtrQkFKeEIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdEYXRlVGltZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIERhdGVUaW1lUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcgPSBcIkxcIik6IHN0cmluZyB7XG4gICAgLy8gVGhpcyBVVEMgZGF0ZS90aW1lIDIwMjQtMTItMTFUMjM6MDA6MDArMDA6MDBcbiAgICAvLyBnZXRzIHRyYW5zZm9ybWVkIGluIEdlcm1hbnkgd2l0aCB0aW1lem9uZSBzaGlmdCBvZiArMSBieVxuICAgIC8vICAgICBtb21lbnQodmFsdWUpLmZvcm1hdChmb3JtYXQpICAgICA9PT4gMTIvMTIvMjAyNFxuICAgIC8vIGFuZCBieVxuICAgIC8vICAgICBtb21lbnQudXRjKHZhbHVlKS5mb3JtYXQoZm9ybWF0KSA9PT4gMTIvMTEvMjAyNFxuICAgIC8vXG4gICAgY29uc3QgZGF0ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KGZvcm1hdCk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cbn0iXX0=
@@ -20,8 +20,8 @@ import { MatTreeFlattener, MatTreeFlatDataSource, MatTreeModule } from '@angular
20
20
  import { SelectionModel } from '@angular/cdk/collections';
21
21
  import * as i3$1 from '@angular/cdk/tree';
22
22
  import { FlatTreeControl, CdkTreeModule } from '@angular/cdk/tree';
23
- import { BehaviorSubject as BehaviorSubject$1 } from 'rxjs/internal/BehaviorSubject';
24
23
  import moment from 'moment';
24
+ import { BehaviorSubject as BehaviorSubject$1 } from 'rxjs/internal/BehaviorSubject';
25
25
  import 'moment/min/locales';
26
26
  import isURL from 'validator/lib/isURL';
27
27
  import * as Renderer from 'bimplus-renderer';
@@ -4937,10 +4937,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
4937
4937
  }]
4938
4938
  }] });
4939
4939
 
4940
+ class DateTimePipe {
4941
+ transform(value, format = "L") {
4942
+ // This UTC date/time 2024-12-11T23:00:00+00:00
4943
+ // gets transformed in Germany with timezone shift of +1 by
4944
+ // moment(value).format(format) ==> 12/12/2024
4945
+ // and by
4946
+ // moment.utc(value).format(format) ==> 12/11/2024
4947
+ //
4948
+ const date = moment(value).format(format);
4949
+ return date;
4950
+ }
4951
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
4952
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: DateTimePipe, isStandalone: true, name: "DateTime" }); }
4953
+ }
4954
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DateTimePipe, decorators: [{
4955
+ type: Pipe,
4956
+ args: [{
4957
+ name: 'DateTime',
4958
+ standalone: true,
4959
+ }]
4960
+ }] });
4961
+
4940
4962
  class CriteriaSelectObjectPropertiesComponent extends BimplusLocalizedWidgetComponent {
4941
- constructor(translateService, formatValuePipe) {
4963
+ constructor(translateService, formatValuePipe, datetimePipe) {
4942
4964
  super(translateService);
4943
4965
  this.formatValuePipe = formatValuePipe;
4966
+ this.datetimePipe = datetimePipe;
4944
4967
  this.api = null;
4945
4968
  this.revision = undefined;
4946
4969
  this._currentObjectId$ = new BehaviorSubject("");
@@ -5068,6 +5091,10 @@ class CriteriaSelectObjectPropertiesComponent extends BimplusLocalizedWidgetComp
5068
5091
  if (attribute?.control === "Checkbox") {
5069
5092
  return (attribute.value === 1) ? "True" : "False";
5070
5093
  }
5094
+ // Handle datetime transformation
5095
+ if (attribute?.type === "datetime" && typeof (attribute.value) === 'string') {
5096
+ return this.datetimePipe.transform(attribute.value);
5097
+ }
5071
5098
  return String(attribute.value);
5072
5099
  }
5073
5100
  handleFilterCriteriumAttributeStateChange(attrib) {
@@ -5227,13 +5254,13 @@ class CriteriaSelectObjectPropertiesComponent extends BimplusLocalizedWidgetComp
5227
5254
  }
5228
5255
  });
5229
5256
  }
5230
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CriteriaSelectObjectPropertiesComponent, deps: [{ token: i1.TranslateService }, { token: FormatValuePipe }], target: i0.ɵɵFactoryTarget.Component }); }
5231
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: CriteriaSelectObjectPropertiesComponent, isStandalone: true, selector: "lib-criteria-select-object-properties", inputs: { api: "api", rootObjectId: "rootObjectId", revision: "revision", filterCriteria: "filterCriteria" }, outputs: { filterCriteriaChange: "filterCriteriaChange" }, providers: [FormatValuePipe], usesInheritance: true, ngImport: i0, template: "<!-- Object structure-->\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object structure\" | translate }}</span\n >\n </lib-expansion-panel-header>\n @if(objectStructure){\n <lib-bimplus-object-structure\n [objectStructure]=\"objectStructure\"\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\n >\n </lib-bimplus-object-structure>\n }\n</lib-expansion-panel>\n<!-- End Object structure-->\n\n<!-- Complex properties-->\n@if(complexProperties){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object multiproperties tree\" | translate }}</span\n >\n </lib-expansion-panel-header>\n <lib-bimplus-object-complex-properties\n [complexProperties]=\"complexProperties\"\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\n >\n </lib-bimplus-object-complex-properties>\n</lib-expansion-panel>\n}\n<!-- End Complex properties-->\n\n<!-- Properties list-->\n@if(objectAttributeGroups.length > 0){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object properties\" | translate }}</span\n >\n </lib-expansion-panel-header>\n\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-group-header\">\n {{ attribGroup.name }}\n </span>\n </lib-expansion-panel-header>\n <div>\n @for (attrib of attribGroup.attributes; track attrib) {\n <div class=\"criteria-select-object-properties-attrib-row\">\n <div class=\"criteria-select-object-properties-attrib-row-content\">\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.checked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttribute(attrib)\"\n (keypress)=\"toggleAttribute(attrib)\"\n />\n <span></span>\n </label>\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">\n {{ attrib.name }}\n </div>\n </div>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.valueChecked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttributeValue(attrib)\"\n (keypress)=\"toggleAttributeValue(attrib)\"\n />\n <span></span>\n </label>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell-text\"\n title=\"{{ titleForAttribute(attrib) }}\"\n >\n {{ normalizedValue(attrib) }}\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </lib-expansion-panel>\n }\n</lib-expansion-panel>\n}\n<!-- End Properties list-->\n", styles: ["lib-bimplus-object-structure{--bimplus-object-structure-background-color: transparent}lib-bimplus-object-complex-properties{--bimplus-object-complex-properties-background-color: transparent}.criteria-select-object-properties-header{font-weight:700;text-transform:uppercase;font-size:1.4rem}.criteria-select-object-properties-group-header{line-height:2.4rem}.criteria-select-object-properties-attrib-row{display:flex;width:calc(100% - 2rem);flex-direction:row;flex-wrap:nowrap;overflow:hidden;padding-left:2rem}.criteria-select-object-properties-attrib-row:hover{background-color:var(--object-navigator-criteria-select-object-properties-attribute-row-background-color-hovered)}.criteria-select-object-properties-attrib-row-content{display:inline-flex;width:100%}.criteria-select-object-properties-attrib-row-cell{flex-basis:50%;display:flex;overflow:hidden;text-overflow:ellipsis}.criteria-select-object-properties-attrib-row-cell-label{display:inline-flex}.criteria-select-object-properties-attrib-row-cell-text{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.criteria-select-checkbox input{display:none}.criteria-select-checkbox input:checked+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked+span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0A</svg>%0A')}.criteria-select-checkbox span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0A</svg>%0A');width:1.8rem;height:1.8rem;margin-top:.1rem;vertical-align:middle;border:0;background-color:transparent;background-position:-.3rem center;background-size:100% 100%;background-repeat:no-repeat}.criteria-select-checkbox span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0A</svg>%0A')}lib-bimplus-object-structure{--flat-tree-container-background-color-enabled: transparent}\n"], dependencies: [{ kind: "component", type: ExpansionPanelHeaderComponent, selector: "lib-expansion-panel-header" }, { kind: "component", type: ExpansionPanelComponent, selector: "lib-expansion-panel", inputs: ["expanded"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: BimplusObjectStructureComponent, selector: "lib-bimplus-object-structure", inputs: ["objectStructure"], outputs: ["nodeSelected", "nodeVisible", "nodeOpaque"] }, { kind: "component", type: BimplusObjectComplexPropertiesComponent, selector: "lib-bimplus-object-complex-properties", inputs: ["complexProperties"], outputs: ["nodeSelected"] }] }); }
5257
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CriteriaSelectObjectPropertiesComponent, deps: [{ token: i1.TranslateService }, { token: FormatValuePipe }, { token: DateTimePipe }], target: i0.ɵɵFactoryTarget.Component }); }
5258
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: CriteriaSelectObjectPropertiesComponent, isStandalone: true, selector: "lib-criteria-select-object-properties", inputs: { api: "api", rootObjectId: "rootObjectId", revision: "revision", filterCriteria: "filterCriteria" }, outputs: { filterCriteriaChange: "filterCriteriaChange" }, providers: [FormatValuePipe, DateTimePipe], usesInheritance: true, ngImport: i0, template: "<!-- Object structure-->\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object structure\" | translate }}</span\n >\n </lib-expansion-panel-header>\n @if(objectStructure){\n <lib-bimplus-object-structure\n [objectStructure]=\"objectStructure\"\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\n >\n </lib-bimplus-object-structure>\n }\n</lib-expansion-panel>\n<!-- End Object structure-->\n\n<!-- Complex properties-->\n@if(complexProperties){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object multiproperties tree\" | translate }}</span\n >\n </lib-expansion-panel-header>\n <lib-bimplus-object-complex-properties\n [complexProperties]=\"complexProperties\"\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\n >\n </lib-bimplus-object-complex-properties>\n</lib-expansion-panel>\n}\n<!-- End Complex properties-->\n\n<!-- Properties list-->\n@if(objectAttributeGroups.length > 0){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object properties\" | translate }}</span\n >\n </lib-expansion-panel-header>\n\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-group-header\">\n {{ attribGroup.name }}\n </span>\n </lib-expansion-panel-header>\n <div>\n @for (attrib of attribGroup.attributes; track attrib) {\n <div class=\"criteria-select-object-properties-attrib-row\">\n <div class=\"criteria-select-object-properties-attrib-row-content\">\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.checked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttribute(attrib)\"\n (keypress)=\"toggleAttribute(attrib)\"\n />\n <span></span>\n </label>\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">\n {{ attrib.name }}\n </div>\n </div>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.valueChecked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttributeValue(attrib)\"\n (keypress)=\"toggleAttributeValue(attrib)\"\n />\n <span></span>\n </label>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell-text\"\n title=\"{{ titleForAttribute(attrib) }}\"\n >\n {{ normalizedValue(attrib) }}\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </lib-expansion-panel>\n }\n</lib-expansion-panel>\n}\n<!-- End Properties list-->\n", styles: ["lib-bimplus-object-structure{--bimplus-object-structure-background-color: transparent}lib-bimplus-object-complex-properties{--bimplus-object-complex-properties-background-color: transparent}.criteria-select-object-properties-header{font-weight:700;text-transform:uppercase;font-size:1.4rem}.criteria-select-object-properties-group-header{line-height:2.4rem}.criteria-select-object-properties-attrib-row{display:flex;width:calc(100% - 2rem);flex-direction:row;flex-wrap:nowrap;overflow:hidden;padding-left:2rem}.criteria-select-object-properties-attrib-row:hover{background-color:var(--object-navigator-criteria-select-object-properties-attribute-row-background-color-hovered)}.criteria-select-object-properties-attrib-row-content{display:inline-flex;width:100%}.criteria-select-object-properties-attrib-row-cell{flex-basis:50%;display:flex;overflow:hidden;text-overflow:ellipsis}.criteria-select-object-properties-attrib-row-cell-label{display:inline-flex}.criteria-select-object-properties-attrib-row-cell-text{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.criteria-select-checkbox input{display:none}.criteria-select-checkbox input:checked+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked+span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0A</svg>%0A')}.criteria-select-checkbox span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0A</svg>%0A');width:1.8rem;height:1.8rem;margin-top:.1rem;vertical-align:middle;border:0;background-color:transparent;background-position:-.3rem center;background-size:100% 100%;background-repeat:no-repeat}.criteria-select-checkbox span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0A</svg>%0A')}lib-bimplus-object-structure{--flat-tree-container-background-color-enabled: transparent}\n"], dependencies: [{ kind: "component", type: ExpansionPanelHeaderComponent, selector: "lib-expansion-panel-header" }, { kind: "component", type: ExpansionPanelComponent, selector: "lib-expansion-panel", inputs: ["expanded"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: BimplusObjectStructureComponent, selector: "lib-bimplus-object-structure", inputs: ["objectStructure"], outputs: ["nodeSelected", "nodeVisible", "nodeOpaque"] }, { kind: "component", type: BimplusObjectComplexPropertiesComponent, selector: "lib-bimplus-object-complex-properties", inputs: ["complexProperties"], outputs: ["nodeSelected"] }] }); }
5232
5259
  }
5233
5260
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CriteriaSelectObjectPropertiesComponent, decorators: [{
5234
5261
  type: Component,
5235
- args: [{ selector: 'lib-criteria-select-object-properties', standalone: true, imports: [ExpansionPanelHeaderComponent, ExpansionPanelComponent, TranslateModule, BimplusObjectStructureComponent, BimplusObjectComplexPropertiesComponent], providers: [FormatValuePipe], template: "<!-- Object structure-->\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object structure\" | translate }}</span\n >\n </lib-expansion-panel-header>\n @if(objectStructure){\n <lib-bimplus-object-structure\n [objectStructure]=\"objectStructure\"\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\n >\n </lib-bimplus-object-structure>\n }\n</lib-expansion-panel>\n<!-- End Object structure-->\n\n<!-- Complex properties-->\n@if(complexProperties){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object multiproperties tree\" | translate }}</span\n >\n </lib-expansion-panel-header>\n <lib-bimplus-object-complex-properties\n [complexProperties]=\"complexProperties\"\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\n >\n </lib-bimplus-object-complex-properties>\n</lib-expansion-panel>\n}\n<!-- End Complex properties-->\n\n<!-- Properties list-->\n@if(objectAttributeGroups.length > 0){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object properties\" | translate }}</span\n >\n </lib-expansion-panel-header>\n\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-group-header\">\n {{ attribGroup.name }}\n </span>\n </lib-expansion-panel-header>\n <div>\n @for (attrib of attribGroup.attributes; track attrib) {\n <div class=\"criteria-select-object-properties-attrib-row\">\n <div class=\"criteria-select-object-properties-attrib-row-content\">\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.checked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttribute(attrib)\"\n (keypress)=\"toggleAttribute(attrib)\"\n />\n <span></span>\n </label>\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">\n {{ attrib.name }}\n </div>\n </div>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.valueChecked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttributeValue(attrib)\"\n (keypress)=\"toggleAttributeValue(attrib)\"\n />\n <span></span>\n </label>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell-text\"\n title=\"{{ titleForAttribute(attrib) }}\"\n >\n {{ normalizedValue(attrib) }}\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </lib-expansion-panel>\n }\n</lib-expansion-panel>\n}\n<!-- End Properties list-->\n", styles: ["lib-bimplus-object-structure{--bimplus-object-structure-background-color: transparent}lib-bimplus-object-complex-properties{--bimplus-object-complex-properties-background-color: transparent}.criteria-select-object-properties-header{font-weight:700;text-transform:uppercase;font-size:1.4rem}.criteria-select-object-properties-group-header{line-height:2.4rem}.criteria-select-object-properties-attrib-row{display:flex;width:calc(100% - 2rem);flex-direction:row;flex-wrap:nowrap;overflow:hidden;padding-left:2rem}.criteria-select-object-properties-attrib-row:hover{background-color:var(--object-navigator-criteria-select-object-properties-attribute-row-background-color-hovered)}.criteria-select-object-properties-attrib-row-content{display:inline-flex;width:100%}.criteria-select-object-properties-attrib-row-cell{flex-basis:50%;display:flex;overflow:hidden;text-overflow:ellipsis}.criteria-select-object-properties-attrib-row-cell-label{display:inline-flex}.criteria-select-object-properties-attrib-row-cell-text{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.criteria-select-checkbox input{display:none}.criteria-select-checkbox input:checked+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked+span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0A</svg>%0A')}.criteria-select-checkbox span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0A</svg>%0A');width:1.8rem;height:1.8rem;margin-top:.1rem;vertical-align:middle;border:0;background-color:transparent;background-position:-.3rem center;background-size:100% 100%;background-repeat:no-repeat}.criteria-select-checkbox span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0A</svg>%0A')}lib-bimplus-object-structure{--flat-tree-container-background-color-enabled: transparent}\n"] }]
5236
- }], ctorParameters: () => [{ type: i1.TranslateService }, { type: FormatValuePipe }], propDecorators: { api: [{
5262
+ args: [{ selector: 'lib-criteria-select-object-properties', standalone: true, imports: [ExpansionPanelHeaderComponent, ExpansionPanelComponent, TranslateModule, BimplusObjectStructureComponent, BimplusObjectComplexPropertiesComponent], providers: [FormatValuePipe, DateTimePipe], template: "<!-- Object structure-->\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object structure\" | translate }}</span\n >\n </lib-expansion-panel-header>\n @if(objectStructure){\n <lib-bimplus-object-structure\n [objectStructure]=\"objectStructure\"\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\n >\n </lib-bimplus-object-structure>\n }\n</lib-expansion-panel>\n<!-- End Object structure-->\n\n<!-- Complex properties-->\n@if(complexProperties){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object multiproperties tree\" | translate }}</span\n >\n </lib-expansion-panel-header>\n <lib-bimplus-object-complex-properties\n [complexProperties]=\"complexProperties\"\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\n >\n </lib-bimplus-object-complex-properties>\n</lib-expansion-panel>\n}\n<!-- End Complex properties-->\n\n<!-- Properties list-->\n@if(objectAttributeGroups.length > 0){\n<lib-expansion-panel>\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-header\">\n {{ \"_Object properties\" | translate }}</span\n >\n </lib-expansion-panel-header>\n\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\n <lib-expansion-panel-header>\n <span class=\"criteria-select-object-properties-group-header\">\n {{ attribGroup.name }}\n </span>\n </lib-expansion-panel-header>\n <div>\n @for (attrib of attribGroup.attributes; track attrib) {\n <div class=\"criteria-select-object-properties-attrib-row\">\n <div class=\"criteria-select-object-properties-attrib-row-content\">\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.checked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttribute(attrib)\"\n (keypress)=\"toggleAttribute(attrib)\"\n />\n <span></span>\n </label>\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">\n {{ attrib.name }}\n </div>\n </div>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\n >\n <label\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"attrib.valueChecked\"\n [disabled]=\"\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\n \"\n (click)=\"toggleAttributeValue(attrib)\"\n (keypress)=\"toggleAttributeValue(attrib)\"\n />\n <span></span>\n </label>\n <div\n class=\"criteria-select-object-properties-attrib-row-cell-text\"\n title=\"{{ titleForAttribute(attrib) }}\"\n >\n {{ normalizedValue(attrib) }}\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </lib-expansion-panel>\n }\n</lib-expansion-panel>\n}\n<!-- End Properties list-->\n", styles: ["lib-bimplus-object-structure{--bimplus-object-structure-background-color: transparent}lib-bimplus-object-complex-properties{--bimplus-object-complex-properties-background-color: transparent}.criteria-select-object-properties-header{font-weight:700;text-transform:uppercase;font-size:1.4rem}.criteria-select-object-properties-group-header{line-height:2.4rem}.criteria-select-object-properties-attrib-row{display:flex;width:calc(100% - 2rem);flex-direction:row;flex-wrap:nowrap;overflow:hidden;padding-left:2rem}.criteria-select-object-properties-attrib-row:hover{background-color:var(--object-navigator-criteria-select-object-properties-attribute-row-background-color-hovered)}.criteria-select-object-properties-attrib-row-content{display:inline-flex;width:100%}.criteria-select-object-properties-attrib-row-cell{flex-basis:50%;display:flex;overflow:hidden;text-overflow:ellipsis}.criteria-select-object-properties-attrib-row-cell-label{display:inline-flex}.criteria-select-object-properties-attrib-row-cell-text{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.criteria-select-checkbox input{display:none}.criteria-select-checkbox input:checked+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked+span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:checked:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0A</svg>%0A')}.criteria-select-checkbox input:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0A</svg>%0A')}.criteria-select-checkbox span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0A</svg>%0A');width:1.8rem;height:1.8rem;margin-top:.1rem;vertical-align:middle;border:0;background-color:transparent;background-position:-.3rem center;background-size:100% 100%;background-repeat:no-repeat}.criteria-select-checkbox span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0A</svg>%0A')}lib-bimplus-object-structure{--flat-tree-container-background-color-enabled: transparent}\n"] }]
5263
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: FormatValuePipe }, { type: DateTimePipe }], propDecorators: { api: [{
5237
5264
  type: Input
5238
5265
  }], rootObjectId: [{
5239
5266
  type: Input