ngx-bimplus-components 0.0.162 → 0.0.163

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.
@@ -311,11 +311,11 @@ export class CriteriaSelectObjectPropertiesComponent extends BimplusLocalizedWid
311
311
  });
312
312
  }
313
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-->\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\">\r\n {{ \"_Object structure\" | translate }}</span\r\n >\r\n </lib-expansion-panel-header>\r\n @if(objectStructure){\r\n <lib-bimplus-object-structure\r\n [objectStructure]=\"objectStructure\"\r\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-structure>\r\n }\r\n</lib-expansion-panel>\r\n<!-- End Object structure-->\r\n\r\n<!-- Complex properties-->\r\n@if(complexProperties){\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\">\r\n {{ \"_Object multiproperties tree\" | translate }}</span\r\n >\r\n </lib-expansion-panel-header>\r\n <lib-bimplus-object-complex-properties\r\n [complexProperties]=\"complexProperties\"\r\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-complex-properties>\r\n</lib-expansion-panel>\r\n}\r\n<!-- End Complex properties-->\r\n\r\n<!-- Properties list-->\r\n@if(objectAttributeGroups.length > 0){\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\">\r\n {{ \"_Object properties\" | translate }}</span\r\n >\r\n </lib-expansion-panel-header>\r\n\r\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\r\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-group-header\">\r\n {{ attribGroup.name }}\r\n </span>\r\n </lib-expansion-panel-header>\r\n <div>\r\n @for (attrib of attribGroup.attributes; track attrib) {\r\n <div class=\"criteria-select-object-properties-attrib-row\">\r\n <div class=\"criteria-select-object-properties-attrib-row-content\">\r\n <div\r\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\r\n >\r\n <label\r\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.checked\"\r\n [disabled]=\"\r\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\r\n \"\r\n (click)=\"toggleAttribute(attrib)\"\r\n (keypress)=\"toggleAttribute(attrib)\"\r\n />\r\n <span></span>\r\n </label>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">\r\n {{ attrib.name }}\r\n </div>\r\n </div>\r\n <div\r\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\r\n >\r\n <label\r\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.valueChecked\"\r\n [disabled]=\"\r\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\r\n \"\r\n (click)=\"toggleAttributeValue(attrib)\"\r\n (keypress)=\"toggleAttributeValue(attrib)\"\r\n />\r\n <span></span>\r\n </label>\r\n <div\r\n class=\"criteria-select-object-properties-attrib-row-cell-text\"\r\n title=\"{{ titleForAttribute(attrib) }}\"\r\n >\r\n {{ normalizedValue(attrib) }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </lib-expansion-panel>\r\n }\r\n</lib-expansion-panel>\r\n}\r\n<!-- End Properties list-->\r\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\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0D%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\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0D%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\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0D%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\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%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"] }] }); }
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-->\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\">\r\n {{ \"_Object structure\" | translate }}</span\r\n >\r\n </lib-expansion-panel-header>\r\n @if(objectStructure){\r\n <lib-bimplus-object-structure\r\n [objectStructure]=\"objectStructure\"\r\n [hasCheckBox1]=\"false\"\r\n [hasCheckBox2]=\"false\"\r\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-structure>\r\n }\r\n</lib-expansion-panel>\r\n<!-- End Object structure-->\r\n\r\n<!-- Complex properties-->\r\n@if(complexProperties){\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\">\r\n {{ \"_Object multiproperties tree\" | translate }}</span\r\n >\r\n </lib-expansion-panel-header>\r\n <lib-bimplus-object-complex-properties\r\n [complexProperties]=\"complexProperties\"\r\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-complex-properties>\r\n</lib-expansion-panel>\r\n}\r\n<!-- End Complex properties-->\r\n\r\n<!-- Properties list-->\r\n@if(objectAttributeGroups.length > 0){\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\">\r\n {{ \"_Object properties\" | translate }}</span\r\n >\r\n </lib-expansion-panel-header>\r\n\r\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\r\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-group-header\">\r\n {{ attribGroup.name }}\r\n </span>\r\n </lib-expansion-panel-header>\r\n <div>\r\n @for (attrib of attribGroup.attributes; track attrib) {\r\n <div class=\"criteria-select-object-properties-attrib-row\">\r\n <div class=\"criteria-select-object-properties-attrib-row-content\">\r\n <div\r\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\r\n >\r\n <label\r\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.checked\"\r\n [disabled]=\"\r\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\r\n \"\r\n (click)=\"toggleAttribute(attrib)\"\r\n (keypress)=\"toggleAttribute(attrib)\"\r\n />\r\n <span></span>\r\n </label>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">\r\n {{ attrib.name }}\r\n </div>\r\n </div>\r\n <div\r\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\r\n >\r\n <label\r\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.valueChecked\"\r\n [disabled]=\"\r\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\r\n \"\r\n (click)=\"toggleAttributeValue(attrib)\"\r\n (keypress)=\"toggleAttributeValue(attrib)\"\r\n />\r\n <span></span>\r\n </label>\r\n <div\r\n class=\"criteria-select-object-properties-attrib-row-cell-text\"\r\n title=\"{{ titleForAttribute(attrib) }}\"\r\n >\r\n {{ normalizedValue(attrib) }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </lib-expansion-panel>\r\n }\r\n</lib-expansion-panel>\r\n}\r\n<!-- End Properties list-->\r\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\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0D%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\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0D%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\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0D%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\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%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", "hasCheckBox1", "hasCheckBox2"], outputs: ["nodeSelected", "nodeVisible", "nodeOpaque"] }, { kind: "component", type: BimplusObjectComplexPropertiesComponent, selector: "lib-bimplus-object-complex-properties", inputs: ["complexProperties"], outputs: ["nodeSelected"] }] }); }
315
315
  }
316
316
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CriteriaSelectObjectPropertiesComponent, decorators: [{
317
317
  type: Component,
318
- args: [{ selector: 'lib-criteria-select-object-properties', standalone: true, imports: [ExpansionPanelHeaderComponent, ExpansionPanelComponent, TranslateModule, BimplusObjectStructureComponent, BimplusObjectComplexPropertiesComponent], providers: [FormatValuePipe, DateTimePipe], template: "<!-- Object structure-->\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\">\r\n {{ \"_Object structure\" | translate }}</span\r\n >\r\n </lib-expansion-panel-header>\r\n @if(objectStructure){\r\n <lib-bimplus-object-structure\r\n [objectStructure]=\"objectStructure\"\r\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-structure>\r\n }\r\n</lib-expansion-panel>\r\n<!-- End Object structure-->\r\n\r\n<!-- Complex properties-->\r\n@if(complexProperties){\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\">\r\n {{ \"_Object multiproperties tree\" | translate }}</span\r\n >\r\n </lib-expansion-panel-header>\r\n <lib-bimplus-object-complex-properties\r\n [complexProperties]=\"complexProperties\"\r\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-complex-properties>\r\n</lib-expansion-panel>\r\n}\r\n<!-- End Complex properties-->\r\n\r\n<!-- Properties list-->\r\n@if(objectAttributeGroups.length > 0){\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\">\r\n {{ \"_Object properties\" | translate }}</span\r\n >\r\n </lib-expansion-panel-header>\r\n\r\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\r\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-group-header\">\r\n {{ attribGroup.name }}\r\n </span>\r\n </lib-expansion-panel-header>\r\n <div>\r\n @for (attrib of attribGroup.attributes; track attrib) {\r\n <div class=\"criteria-select-object-properties-attrib-row\">\r\n <div class=\"criteria-select-object-properties-attrib-row-content\">\r\n <div\r\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\r\n >\r\n <label\r\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.checked\"\r\n [disabled]=\"\r\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\r\n \"\r\n (click)=\"toggleAttribute(attrib)\"\r\n (keypress)=\"toggleAttribute(attrib)\"\r\n />\r\n <span></span>\r\n </label>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">\r\n {{ attrib.name }}\r\n </div>\r\n </div>\r\n <div\r\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\r\n >\r\n <label\r\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.valueChecked\"\r\n [disabled]=\"\r\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\r\n \"\r\n (click)=\"toggleAttributeValue(attrib)\"\r\n (keypress)=\"toggleAttributeValue(attrib)\"\r\n />\r\n <span></span>\r\n </label>\r\n <div\r\n class=\"criteria-select-object-properties-attrib-row-cell-text\"\r\n title=\"{{ titleForAttribute(attrib) }}\"\r\n >\r\n {{ normalizedValue(attrib) }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </lib-expansion-panel>\r\n }\r\n</lib-expansion-panel>\r\n}\r\n<!-- End Properties list-->\r\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\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0D%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\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0D%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\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0D%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\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%0A')}lib-bimplus-object-structure{--flat-tree-container-background-color-enabled: transparent}\n"] }]
318
+ args: [{ selector: 'lib-criteria-select-object-properties', standalone: true, imports: [ExpansionPanelHeaderComponent, ExpansionPanelComponent, TranslateModule, BimplusObjectStructureComponent, BimplusObjectComplexPropertiesComponent], providers: [FormatValuePipe, DateTimePipe], template: "<!-- Object structure-->\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\">\r\n {{ \"_Object structure\" | translate }}</span\r\n >\r\n </lib-expansion-panel-header>\r\n @if(objectStructure){\r\n <lib-bimplus-object-structure\r\n [objectStructure]=\"objectStructure\"\r\n [hasCheckBox1]=\"false\"\r\n [hasCheckBox2]=\"false\"\r\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-structure>\r\n }\r\n</lib-expansion-panel>\r\n<!-- End Object structure-->\r\n\r\n<!-- Complex properties-->\r\n@if(complexProperties){\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\">\r\n {{ \"_Object multiproperties tree\" | translate }}</span\r\n >\r\n </lib-expansion-panel-header>\r\n <lib-bimplus-object-complex-properties\r\n [complexProperties]=\"complexProperties\"\r\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-complex-properties>\r\n</lib-expansion-panel>\r\n}\r\n<!-- End Complex properties-->\r\n\r\n<!-- Properties list-->\r\n@if(objectAttributeGroups.length > 0){\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\">\r\n {{ \"_Object properties\" | translate }}</span\r\n >\r\n </lib-expansion-panel-header>\r\n\r\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\r\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-group-header\">\r\n {{ attribGroup.name }}\r\n </span>\r\n </lib-expansion-panel-header>\r\n <div>\r\n @for (attrib of attribGroup.attributes; track attrib) {\r\n <div class=\"criteria-select-object-properties-attrib-row\">\r\n <div class=\"criteria-select-object-properties-attrib-row-content\">\r\n <div\r\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\r\n >\r\n <label\r\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.checked\"\r\n [disabled]=\"\r\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\r\n \"\r\n (click)=\"toggleAttribute(attrib)\"\r\n (keypress)=\"toggleAttribute(attrib)\"\r\n />\r\n <span></span>\r\n </label>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">\r\n {{ attrib.name }}\r\n </div>\r\n </div>\r\n <div\r\n class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\"\r\n >\r\n <label\r\n class=\"criteria-select-object-properties-attrib-row-cell-label\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.valueChecked\"\r\n [disabled]=\"\r\n filterCriteria.length === MaxFilterCriteria && !attrib.checked\r\n \"\r\n (click)=\"toggleAttributeValue(attrib)\"\r\n (keypress)=\"toggleAttributeValue(attrib)\"\r\n />\r\n <span></span>\r\n </label>\r\n <div\r\n class=\"criteria-select-object-properties-attrib-row-cell-text\"\r\n title=\"{{ titleForAttribute(attrib) }}\"\r\n >\r\n {{ normalizedValue(attrib) }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </lib-expansion-panel>\r\n }\r\n</lib-expansion-panel>\r\n}\r\n<!-- End Properties list-->\r\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\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0D%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\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0D%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\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0D%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\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%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\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%0A')}lib-bimplus-object-structure{--flat-tree-container-background-color-enabled: transparent}\n"] }]
319
319
  }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.FormatValuePipe }, { type: i3.DateTimePipe }], propDecorators: { api: [{
320
320
  type: Input
321
321
  }], rootObjectId: [{
@@ -327,4 +327,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
327
327
  }], filterCriteriaChange: [{
328
328
  type: Output
329
329
  }] } });
330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMvY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMvY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDcEgsT0FBTyxFQUFFLGVBQWUsRUFBb0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUM5RyxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0YsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDcEgsT0FBTyxFQUFFLHVDQUF1QyxFQUFF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RSxlQUFlLDRGQUFFLCtCQUErQiw4SkFBRSx1Q0FBdUM7OzRGQUtoSix1Q0FBdUM7a0JBUm5ELFNBQVM7K0JBQ0UsdUNBQXVDLGNBQ3JDLElBQUksV0FDUCxDQUFDLDZCQUE2QixFQUFFLHVCQUF1QixFQUFFLGVBQWUsRUFBRSwrQkFBK0IsRUFBRSx1Q0FBdUMsQ0FBQyxhQUNqSixDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUM7OElBZ0MxQyxHQUFHO3NCQURGLEtBQUs7Z0JBSUYsWUFBWTtzQkFEZixLQUFLO2dCQWFOLFFBQVE7c0JBRFAsS0FBSztnQkFjRixjQUFjO3NCQURqQixLQUFLO2dCQU1JLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgV2ViU2RrIGZyb20gJ2JpbXBsdXMtd2Vic2RrJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQvYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBFeHBhbnNpb25QYW5lbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXhwYW5zaW9uUGFuZWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9leHBhbnNpb24tcGFuZWwtaGVhZGVyL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsdGVyQ3JpdGVyaXVtLCBNYXhGaWx0ZXJDcml0ZXJpYSB9IGZyb20gJy4uL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBCaW1wbHVzT2JqZWN0U3RydWN0dXJlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzT2JqZWN0Q29tcGxleFByb3BlcnRpZXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMvYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE9iamVjdFN0cnVjdHVyZU5vZGUsIE9iamVjdFN0cnVjdHVyZU5vZGVCdWlsZGVyIH0gZnJvbSAnLi4vLi4vYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBDb21wbGV4UHJvcGVydGllc05vZGUsIENvbXBsZXhQcm9wZXJ0aWVzTm9kZUJ1aWxkZXIgfSBmcm9tICcuLi8uLi9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMvYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlLCBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZUdyb3VwIH0gZnJvbSAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRm9ybWF0VmFsdWVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvZm9ybWF0LXZhbHVlLnBpcGUnO1xyXG5pbXBvcnQgeyBEYXRlVGltZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9kYXRldGltZS5waXBlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbRXhwYW5zaW9uUGFuZWxIZWFkZXJDb21wb25lbnQsIEV4cGFuc2lvblBhbmVsQ29tcG9uZW50LCBUcmFuc2xhdGVNb2R1bGUsIEJpbXBsdXNPYmplY3RTdHJ1Y3R1cmVDb21wb25lbnQsIEJpbXBsdXNPYmplY3RDb21wbGV4UHJvcGVydGllc0NvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbRm9ybWF0VmFsdWVQaXBlLCBEYXRlVGltZVBpcGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50Lmxlc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcml0ZXJpYVNlbGVjdE9iamVjdFByb3BlcnRpZXNDb21wb25lbnQgZXh0ZW5kcyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmb3JtYXRWYWx1ZVBpcGU6IEZvcm1hdFZhbHVlUGlwZSxcclxuICAgIHByaXZhdGUgZGF0ZXRpbWVQaXBlOiBEYXRlVGltZVBpcGUpIHtcclxuICAgIHN1cGVyKHRyYW5zbGF0ZVNlcnZpY2UpXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChpZCkgPT4ge1xyXG4gICAgICAgIGlmIChpZCkge1xyXG4gICAgICAgICAgdGhpcy5fY3JlYXRlT2JqZWN0UHJvcGVydGllcyhpZCwgdGhpcy5yZXZpc2lvbilcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX2N1cnJlbnRPYmplY3RJZCQuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGlkKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fY3VycmVudFByb3BlcnRpZXNPYmplY3RJZCQubmV4dChpZCk7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlQ29tcGxleFByb3BlcnRpZXN0cnVjdHVyZShpZCwgdGhpcy5yZXZpc2lvbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYXBpOiBXZWJTZGsuQXBpIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHJvb3RPYmplY3RJZChpZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50T2JqZWN0SWQkLm5leHQoaWQpO1xyXG4gICAgdGhpcy5fY3JlYXRlT2JqZWN0U3RydWN0dXJlKGlkLCB0aGlzLnJldmlzaW9uKTtcclxuXHJcbiAgICB0aGlzLl9yb290T2JqZWN0SWQgPSBpZDtcclxuICB9XHJcblxyXG4gIGdldCByb290T2JqZWN0SWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9yb290T2JqZWN0SWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHJldmlzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRPYmplY3RJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oXCJcIik7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KFwiXCIpO1xyXG5cclxuICBvYmplY3RBdHRyaWJ1dGVHcm91cHM6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlR3JvdXBbXSA9IFtdO1xyXG5cclxuICBNYXhGaWx0ZXJDcml0ZXJpYSA9IE1heEZpbHRlckNyaXRlcmlhOyAvLyBGb3IgZXhwb3N1cmUgdG8gdGVtcGxhdGVcclxuXHJcbiAgcHJpdmF0ZSBfcm9vdE9iamVjdElkOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBmaWx0ZXJDcml0ZXJpYShjcml0ZXJpYTogRmlsdGVyQ3JpdGVyaXVtW10pIHtcclxuICAgIHRoaXMuX2ZpbHRlckNyaXRlcmlhID0gY3JpdGVyaWE7XHJcbiAgICB0aGlzLl9zeW5jQXR0cmlidXRlU3RhdGVzRnJvbUNyaXRlcmlhKCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgZmlsdGVyQ3JpdGVyaWFDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckNyaXRlcml1bVtdPigpO1xyXG5cclxuICBnZXQgZmlsdGVyQ3JpdGVyaWEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyQ3JpdGVyaWE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maWx0ZXJDcml0ZXJpYTogRmlsdGVyQ3JpdGVyaXVtW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfb2JqZWN0U3RydWN0dXJlOiBPYmplY3RTdHJ1Y3R1cmVOb2RlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGdldCBvYmplY3RTdHJ1Y3R1cmUoKTogT2JqZWN0U3RydWN0dXJlTm9kZSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX29iamVjdFN0cnVjdHVyZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29tcGxleFByb3BlcnRpZXM6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBnZXQgY29tcGxleFByb3BlcnRpZXMoKTogQ29tcGxleFByb3BlcnRpZXNOb2RlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29tcGxleFByb3BlcnRpZXM7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBdHRyaWJ1dGUoYXR0cmliOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZSkge1xyXG4gICAgYXR0cmliLmNoZWNrZWQgPSAhYXR0cmliLmNoZWNrZWQ7XHJcbiAgICBpZiAoYXR0cmliLmNoZWNrZWQgPT09IGZhbHNlKSB7XHJcbiAgICAgIGF0dHJpYi52YWx1ZUNoZWNrZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhhbmRsZUZpbHRlckNyaXRlcml1bUF0dHJpYnV0ZVN0YXRlQ2hhbmdlKGF0dHJpYik7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBdHRyaWJ1dGVWYWx1ZShhdHRyaWI6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlKSB7XHJcbiAgICBhdHRyaWIudmFsdWVDaGVja2VkID0gIWF0dHJpYi52YWx1ZUNoZWNrZWQ7XHJcbiAgICBhdHRyaWIuY2hlY2tlZCA9IGF0dHJpYi52YWx1ZUNoZWNrZWQ7XHJcblxyXG4gICAgdGhpcy5oYW5kbGVGaWx0ZXJDcml0ZXJpdW1BdHRyaWJ1dGVTdGF0ZUNoYW5nZShhdHRyaWIpO1xyXG4gIH1cclxuXHJcbiAgX2RlZmluZUZpbHRlclN0cmluZyhhdHRyaWI6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlKSB7XHJcbiAgICBsZXQgc3Vic3RyaW5nID0gYFtJXVske2F0dHJpYi5pZH1dLlZhbHVlYDtcclxuXHJcbiAgICBpZiAoYXR0cmliLnZhbHVlQ2hlY2tlZCkge1xyXG4gICAgICBzdWJzdHJpbmcgKz0gYFtGXVswXT0ke3RoaXMuZm9ybWF0VmFsdWVQaXBlLnRyYW5zZm9ybShhdHRyaWIudmFsdWUpfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3Vic3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgX2FkZEZpbHRlckNyaXRlcmlhKGF0dHJpYjogQ3JpdGVyaWFTZWxlY3RPYmplY3RBdHRyaWJ1dGUpIHtcclxuICAgIC8vIGFkZCBhIG5ldyBlbnRyeVxyXG4gICAgdGhpcy5maWx0ZXJDcml0ZXJpYS5wdXNoKHtcclxuICAgICAgbmFtZTogYXR0cmliLm5hbWUsXHJcbiAgICAgIHZhbHVlOiBhdHRyaWIudmFsdWVDaGVja2VkID8gYXR0cmliLnZhbHVlIDogdW5kZWZpbmVkLFxyXG4gICAgICBuYW1lZFZhbHVlOiBhdHRyaWIudmFsdWVDaGVja2VkID8gdGhpcy5ub3JtYWxpemVkVmFsdWUoYXR0cmliLCB0cnVlKSA6IHVuZGVmaW5lZCxcclxuICAgICAgaWQ6IGF0dHJpYi5pZCxcclxuICAgICAgc3ViU3RyaW5nOiB0aGlzLl9kZWZpbmVGaWx0ZXJTdHJpbmcoYXR0cmliKSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgX3VwZGF0ZUZpbHRlckNyaXRlcmlhKGF0dHJpYjogQ3JpdGVyaWFTZWxlY3RPYmplY3RBdHRyaWJ1dGUsIGluZGV4OiBudW1iZXIpIHtcclxuICAgIC8vIHVwZGF0ZSBhbiBleGlzdGluZyBlbnRyeVxyXG4gICAgdGhpcy5maWx0ZXJDcml0ZXJpYVtpbmRleF0gPSB7XHJcbiAgICAgIC4uLnRoaXMuZmlsdGVyQ3JpdGVyaWFbaW5kZXhdLFxyXG4gICAgICBuYW1lOiBhdHRyaWIubmFtZSxcclxuICAgICAgdmFsdWU6IGF0dHJpYi52YWx1ZUNoZWNrZWQgPyBhdHRyaWIudmFsdWUgOiB1bmRlZmluZWQsXHJcbiAgICAgIG5hbWVkVmFsdWU6IGF0dHJpYi52YWx1ZUNoZWNrZWQgPyB0aGlzLm5vcm1hbGl6ZWRWYWx1ZShhdHRyaWIsIHRydWUpIDogdW5kZWZpbmVkLFxyXG4gICAgICBzdWJTdHJpbmc6IHRoaXMuX2RlZmluZUZpbHRlclN0cmluZyhhdHRyaWIpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vIEhlbHBlciBmdW5jdGlvbiBmb3Igcm91bmRpbmcgdG8gc3BlY2lmaWVkIGRlY2ltYWxzXHJcbiAgcHJpdmF0ZSByb3VuZFRvRGVjaW1hbCh2YWx1ZTogbnVtYmVyLCBkZWNpbWFsOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgY29uc3QgbXVsdGlwbGllciA9IE1hdGgucG93KDEwLCBkZWNpbWFsKTtcclxuICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogbXVsdGlwbGllcikgLyBtdWx0aXBsaWVyO1xyXG4gIH1cclxuXHJcbiAgdGl0bGVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZSk6IHN0cmluZyB7XHJcbiAgICAvLyBUcmFuc2xhdGlvbiBtb3ZlZCB0byBpbXBsZW1lbnRhdGlvbiB0byBub3QgcnVuIHRoZSB0cmFuc2xhdGlvbiBcclxuICAgIC8vIGZvciBtYW55IHZhbHVlcyB3aGljaCBkb24ndCBuZWVkIGl0XHJcbiAgICBpZiAoYXR0cmlidXRlLnZhbHVlID09PSBudWxsIHx8IGF0dHJpYnV0ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnX05vdF9kZWZpbmVkJyk7XHJcbiAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS52YWx1ZSA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfRW1wdHlfdmFsdWUnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBTdHJpbmcoYXR0cmlidXRlLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG5vcm1hbGl6ZWRWYWx1ZShhdHRyaWJ1dGU6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlLCBmb3JGaWx0ZXJDcml0ZXJpYTogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcclxuICAgIC8vIFRyYW5zbGF0aW9uIG1vdmVkIHRvIGltcGxlbWVudGF0aW9uIHRvIG5vdCBydW4gdGhlIHRyYW5zbGF0aW9uIFxyXG4gICAgLy8gZm9yIG1hbnkgdmFsdWVzIHdoaWNoIGRvbid0IG5lZWQgaXRcclxuICAgIGlmIChhdHRyaWJ1dGUudmFsdWUgPT09IG51bGwgfHwgYXR0cmlidXRlLnZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIGZvckZpbHRlckNyaXRlcmlhID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJfTm90X2RlZmluZWRcIikgOiBcIi4uLlwiO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhdHRyaWJ1dGUudmFsdWUgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiBmb3JGaWx0ZXJDcml0ZXJpYSA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiX0VtcHR5X3ZhbHVlXCIpIDogXCInJ1wiO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhdHRyaWJ1dGU/LmNvbnRyb2wgPT09IFwiRW51bWVyYXRpb25cIiAmJiBhdHRyaWJ1dGUuZW51bVZhbHVlcykge1xyXG4gICAgICBjb25zdCByZXN1bHQ6IHN0cmluZyA9IFN0cmluZyhhdHRyaWJ1dGUuZW51bVZhbHVlc1tOdW1iZXIoYXR0cmlidXRlLnZhbHVlKV0pO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhbmRsZSBudW1lcmljIHJvdW5kaW5nXHJcbiAgICBpZiAoIWZvckZpbHRlckNyaXRlcmlhICYmXHJcbiAgICAgIGF0dHJpYnV0ZS50eXBlID09PSAnZG91YmxlJyAmJlxyXG4gICAgICBhdHRyaWJ1dGUuZGVjaW1hbCAmJlxyXG4gICAgICB0eXBlb2YgKGF0dHJpYnV0ZS52YWx1ZSkgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIGNvbnN0IHJvdW5kZWRWYWx1ZSA9IHRoaXMucm91bmRUb0RlY2ltYWwoYXR0cmlidXRlLnZhbHVlLCBhdHRyaWJ1dGUuZGVjaW1hbCk7XHJcbiAgICAgIHJldHVybiBTdHJpbmcocm91bmRlZFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYXR0cmlidXRlPy5jb250cm9sID09PSBcIkNoZWNrYm94XCIpIHtcclxuICAgICAgcmV0dXJuIChhdHRyaWJ1dGUudmFsdWUgPT09IDEpID8gXCJUcnVlXCIgOiBcIkZhbHNlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlIGRhdGV0aW1lIHRyYW5zZm9ybWF0aW9uXHJcbiAgICBpZiAoYXR0cmlidXRlPy50eXBlID09PSBcImRhdGV0aW1lXCIgJiYgdHlwZW9mIChhdHRyaWJ1dGUudmFsdWUpID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5kYXRldGltZVBpcGUudHJhbnNmb3JtKGF0dHJpYnV0ZS52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFN0cmluZyhhdHRyaWJ1dGUudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmlsdGVyQ3JpdGVyaXVtQXR0cmlidXRlU3RhdGVDaGFuZ2UoYXR0cmliOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZSkge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbHRlckNyaXRlcmlhLmZpbmRJbmRleCh4ID0+IHguaWQgPT09IGF0dHJpYi5pZCk7XHJcbiAgICAvLyBGSUxURVIgQ1JJVEVSSUEgQUxSRUFEWSBFWElTVFNcclxuICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgIGlmIChhdHRyaWIuY2hlY2tlZCA9PT0gZmFsc2UgJiYgYXR0cmliLnZhbHVlQ2hlY2tlZCA9PT0gZmFsc2UpIHtcclxuICAgICAgICAvLyBSRU1PVkVcclxuICAgICAgICAvLyBmaWx0ZXJDcml0ZXJpYSBubyBsb25nZXIgdXNlZCAobGVmdCAvIHJpZ2h0IGNoZWNrYm94ZXMgbm90IGNoZWNrZWQpXHJcbiAgICAgICAgdGhpcy5maWx0ZXJDcml0ZXJpYS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIFVQREFURVxyXG4gICAgICAgIC8vIGZpbHRlckNyaXRlcmlhIHN0aWxsIHVzZWQsIGJ1dCB2YWx1ZSBzaG91bGQgYmUgdXNlZCAocmlnaHQgY2hlY2tib3ggY2hlY2tlZClcclxuICAgICAgICB0aGlzLl91cGRhdGVGaWx0ZXJDcml0ZXJpYShhdHRyaWIsIGluZGV4KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZpbHRlckNyaXRlcmlhQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJDcml0ZXJpYSk7XHJcbiAgICB9XHJcbiAgICAvLyBGSUxURVIgQ1JJVEVSSUEgRE9FUyBOT1QgRVhJU1QgYW5kIE1BWCBDUklURVJJQSBOT1QgUkVBQ0hFRFxyXG4gICAgZWxzZSBpZiAodGhpcy5maWx0ZXJDcml0ZXJpYS5sZW5ndGggPCBNYXhGaWx0ZXJDcml0ZXJpYSkge1xyXG4gICAgICAvLyBBRERcclxuICAgICAgdGhpcy5fYWRkRmlsdGVyQ3JpdGVyaWEoYXR0cmliKTtcclxuICAgICAgdGhpcy5maWx0ZXJDcml0ZXJpYUNoYW5nZS5lbWl0KHRoaXMuZmlsdGVyQ3JpdGVyaWEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlT2JqZWN0U3RydWN0dXJlTm9kZVNlbGVjdGVkKG5vZGU6IE9iamVjdFN0cnVjdHVyZU5vZGUpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRPYmplY3RJZCQubmV4dChub2RlLmlkKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNvbXBsZXhQcm9wZXJ0eU5vZGVTZWxlY3RlZChub2RlOiBDb21wbGV4UHJvcGVydGllc05vZGUpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkLm5leHQobm9kZS5pZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVPYmplY3RQcm9wZXJ0aWVzKG9iamVjdElkOiBzdHJpbmcsIHJldmlzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RQcm9wZXJ0aWVzKG9iamVjdElkLCByZXZpc2lvbik/LnN1YnNjcmliZSh7XHJcblxyXG4gICAgICAvLyBwcm9wZXJ0aWVzIHJlc3BvbnNlIGlzIGJhZGx5IHN0cnVjdHVyZWQsIG5lYXJseSBpbXBvc3NpYmxlIHRvIGNyZWF0ZSBjbGFzcyBzdHJ1Y3R1cmUgZnJvbSBpdC4gVGhlcmVmb3JlIHVzaW5nIHNob3J0Y3V0XHJcbiAgICAgIC8vIGFueSBmb3IganNvbiByZXNwb25zZVxyXG5cclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgIG5leHQ6IChwcm9wZXJ0aWVzRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5vYmplY3RBdHRyaWJ1dGVHcm91cHMgPSB0aGlzLl9jcmVhdGVBdHRyaWJ1dGVHcm91cHNGcm9tUmVzcG9uc2UocHJvcGVydGllc0RhdGEpO1xyXG4gICAgICAgIHRoaXMuX3N5bmNBdHRyaWJ1dGVTdGF0ZXNGcm9tQ3JpdGVyaWEoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLm9iamVjdEF0dHJpYnV0ZUdyb3VwcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICApXHJcblxyXG4gIH1cclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgcHJpdmF0ZSBfY3JlYXRlQXR0cmlidXRlR3JvdXBzRnJvbVJlc3BvbnNlKHByb3BlcnRpZXNEYXRhOiBhbnkpIHtcclxuXHJcbiAgICBjb25zdCBncm91cHM6IEFycmF5PENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlR3JvdXA+ID0gW107XHJcbiAgICBsZXQgbG9jYWxpemVkQXR0cmliR3JvdXBzID0gbnVsbDtcclxuICAgIGlmIChwcm9wZXJ0aWVzRGF0YS5sb2NhbGl6ZWRBdHRyaWJ1dGVHcm91cHMpIHtcclxuICAgICAgbG9jYWxpemVkQXR0cmliR3JvdXBzID0gcHJvcGVydGllc0RhdGEubG9jYWxpemVkQXR0cmlidXRlR3JvdXBzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghcHJvcGVydGllc0RhdGEuYXR0cmlidXRlcykge1xyXG4gICAgICByZXR1cm4gZ3JvdXBzO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGF0dHJpYkdyb3VwcyA9IHByb3BlcnRpZXNEYXRhLmF0dHJpYnV0ZXM7XHJcbiAgICBmb3IgKGNvbnN0IFtncm91cE5hbWUsIGF0dHJpYnNPYmplY3RdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYkdyb3VwcykpIHtcclxuXHJcbiAgICAgIGNvbnN0IG5ld0dyb3VwOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZUdyb3VwID0ge1xyXG4gICAgICAgIG5hbWU6IGdyb3VwTmFtZSxcclxuICAgICAgICBleHBhbmRlZDogZmFsc2UsXHJcbiAgICAgICAgYXR0cmlidXRlczogW11cclxuICAgICAgfTtcclxuXHJcbiAgICAgIGlmIChsb2NhbGl6ZWRBdHRyaWJHcm91cHM/Lltncm91cE5hbWVdKSB7XHJcbiAgICAgICAgbmV3R3JvdXAubmFtZSA9IGxvY2FsaXplZEF0dHJpYkdyb3Vwc1tncm91cE5hbWVdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWF0dHJpYnNPYmplY3QpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChjb25zdCBhdHRyaWIgb2YgT2JqZWN0LnZhbHVlcyhhdHRyaWJzT2JqZWN0KSkge1xyXG5cclxuICAgICAgICBjb25zdCBuZXdBdHRyaWI6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlID0ge1xyXG4gICAgICAgICAgaWQ6IGF0dHJpYi5pZCxcclxuICAgICAgICAgIG5hbWU6IGF0dHJpYi5uYW1lLFxyXG4gICAgICAgICAgZGVzY3JpcHRpb246IGF0dHJpYi5kZXNjcmlwdGlvbixcclxuICAgICAgICAgIHZhbHVlOiBhdHRyaWIudmFsdWUsXHJcbiAgICAgICAgICBpc0NoYW5nZWFibGU6IGF0dHJpYi5pc0NoYW5nZWFibGUsXHJcbiAgICAgICAgICB0eXBlOiBhdHRyaWIudHlwZSxcclxuICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgdmFsdWVDaGVja2VkOiBmYWxzZSxcclxuICAgICAgICAgIGdyb3VwOiBhdHRyaWIuZ3JvdXAsXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBBZGQgYXR0cmlidXRlIGluZm9ybWF0aW9uIHdoaWNoIGlzIG5vdCBhbHdheXMgcHJlc2VudFxyXG4gICAgICAgIGlmIChhdHRyaWIuY29udHJvbCkge1xyXG4gICAgICAgICAgbmV3QXR0cmliLmNvbnRyb2wgPSBhdHRyaWIuY29udHJvbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGF0dHJpYi5kZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICAgIG5ld0F0dHJpYi5kZWZhdWx0VmFsdWUgPSBhdHRyaWIuZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYXR0cmliLnVuaXQpIHtcclxuICAgICAgICAgIG5ld0F0dHJpYi51bml0ID0gYXR0cmliLnVuaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhdHRyaWIuZGVjaW1hbCkge1xyXG4gICAgICAgICAgbmV3QXR0cmliLmRlY2ltYWwgPSBhdHRyaWIuZGVjaW1hbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGF0dHJpYi5lbnVtZGVmaW5pdGlvbikge1xyXG4gICAgICAgICAgbmV3QXR0cmliLmVudW1WYWx1ZXMgPSBhdHRyaWIuZW51bWRlZmluaXRpb247XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBuZXdHcm91cC5hdHRyaWJ1dGVzLnB1c2gobmV3QXR0cmliKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZ3JvdXBzLnB1c2gobmV3R3JvdXApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBncm91cHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zeW5jQXR0cmlidXRlU3RhdGVzRnJvbUNyaXRlcmlhKCkge1xyXG4gICAgdGhpcy5vYmplY3RBdHRyaWJ1dGVHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGdyb3VwLmF0dHJpYnV0ZXMuZm9yRWFjaChhdHRyaWIgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNyaXRlcmlhID0gdGhpcy5fZmlsdGVyQ3JpdGVyaWEuZmluZCh4ID0+IHguaWQgPT0gYXR0cmliLmlkKVxyXG4gICAgICAgIGlmIChjcml0ZXJpYSkge1xyXG4gICAgICAgICAgYXR0cmliLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgYXR0cmliLnZhbHVlQ2hlY2tlZCA9IGNyaXRlcmlhLnZhbHVlICE9PSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGF0dHJpYi5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICBhdHRyaWIudmFsdWVDaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRPYmplY3RQcm9wZXJ0aWVzKG9iamVjdElkOiBzdHJpbmcsIHJldmlzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICghdGhpcy5hcGkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpLm9iamVjdHMuZ2V0KG9iamVjdElkLCByZXZpc2lvbiwgXCI4XCIsIHVuZGVmaW5lZCwgZmFsc2UsIHVuZGVmaW5lZCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9hZE9iamVjdFN0cnVjdHVyZShvYmplY3RJZDogc3RyaW5nLCByZXZpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAoIXRoaXMuYXBpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmFwaS5vYmplY3RzLmdldFRvcG9sb2d5KG9iamVjdElkLCByZXZpc2lvbiwgZmFsc2UsIGZhbHNlLCB1bmRlZmluZWQpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRPYmplY3RDb21wbGV4UHJvcGVydGllc1N0cnVjdHVyZShvYmplY3RJZDogc3RyaW5nLCByZXZpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAoIXRoaXMuYXBpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmFwaS5vYmplY3RzLmdldENvbXBsZXhQcm9wZXJ0aWVzVG9wb2xvZ3kob2JqZWN0SWQsIHJldmlzaW9uKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVDb21wbGV4UHJvcGVydGllc3RydWN0dXJlKG9iamVjdElkOiBzdHJpbmcsIHJldmlzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RDb21wbGV4UHJvcGVydGllc1N0cnVjdHVyZShvYmplY3RJZCwgcmV2aXNpb24pPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoc3RydWN0dXJlRGF0YSkgPT4ge1xyXG4gICAgICAgIGlmIChzdHJ1Y3R1cmVEYXRhKSB7XHJcbiAgICAgICAgICBjb25zdCBjb21wbGV4UHJvcHMgPSBDb21wbGV4UHJvcGVydGllc05vZGVCdWlsZGVyLmNyZWF0ZUZyb21SZXNwb25zZShzdHJ1Y3R1cmVEYXRhKTtcclxuICAgICAgICAgIGlmIChjb21wbGV4UHJvcHM/LmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29tcGxleFByb3BlcnRpZXMgPSBjb21wbGV4UHJvcHM7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wbGV4UHJvcGVydGllcyA9IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlT2JqZWN0U3RydWN0dXJlKG9iamVjdElkOiBzdHJpbmcsIHJldmlzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RTdHJ1Y3R1cmUob2JqZWN0SWQsIHJldmlzaW9uKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHN0cnVjdHVyZURhdGEpID0+IHtcclxuICAgICAgICBpZiAoc3RydWN0dXJlRGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5fb2JqZWN0U3RydWN0dXJlID0gT2JqZWN0U3RydWN0dXJlTm9kZUJ1aWxkZXIuY3JlYXRlRnJvbVJlc3BvbnNlKHN0cnVjdHVyZURhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPCEtLSBPYmplY3Qgc3RydWN0dXJlLS0+XHJcbjxsaWItZXhwYW5zaW9uLXBhbmVsPlxyXG4gIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWhlYWRlclwiPlxyXG4gICAgICB7eyBcIl9PYmplY3Qgc3RydWN0dXJlXCIgfCB0cmFuc2xhdGUgfX08L3NwYW5cclxuICAgID5cclxuICA8L2xpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gIEBpZihvYmplY3RTdHJ1Y3R1cmUpe1xyXG4gICAgPGxpYi1iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmVcclxuICAgICAgW29iamVjdFN0cnVjdHVyZV09XCJvYmplY3RTdHJ1Y3R1cmVcIlxyXG4gICAgICAobm9kZVNlbGVjdGVkKT1cImhhbmRsZU9iamVjdFN0cnVjdHVyZU5vZGVTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvbGliLWJpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZT5cclxuICB9XHJcbjwvbGliLWV4cGFuc2lvbi1wYW5lbD5cclxuPCEtLSBFbmQgT2JqZWN0IHN0cnVjdHVyZS0tPlxyXG5cclxuPCEtLSBDb21wbGV4IHByb3BlcnRpZXMtLT5cclxuQGlmKGNvbXBsZXhQcm9wZXJ0aWVzKXtcclxuPGxpYi1leHBhbnNpb24tcGFuZWw+XHJcbiAgPGxpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtaGVhZGVyXCI+XHJcbiAgICAgIHt7IFwiX09iamVjdCBtdWx0aXByb3BlcnRpZXMgdHJlZVwiIHwgdHJhbnNsYXRlIH19PC9zcGFuXHJcbiAgICA+XHJcbiAgPC9saWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICA8bGliLWJpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllc1xyXG4gICAgW2NvbXBsZXhQcm9wZXJ0aWVzXT1cImNvbXBsZXhQcm9wZXJ0aWVzXCJcclxuICAgIChub2RlU2VsZWN0ZWQpPVwiaGFuZGxlQ29tcGxleFByb3BlcnR5Tm9kZVNlbGVjdGVkKCRldmVudClcIlxyXG4gID5cclxuICA8L2xpYi1iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXM+XHJcbjwvbGliLWV4cGFuc2lvbi1wYW5lbD5cclxufVxyXG48IS0tIEVuZCBDb21wbGV4IHByb3BlcnRpZXMtLT5cclxuXHJcbjwhLS0gUHJvcGVydGllcyBsaXN0LS0+XHJcbkBpZihvYmplY3RBdHRyaWJ1dGVHcm91cHMubGVuZ3RoID4gMCl7XHJcbjxsaWItZXhwYW5zaW9uLXBhbmVsPlxyXG4gIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWhlYWRlclwiPlxyXG4gICAgICB7eyBcIl9PYmplY3QgcHJvcGVydGllc1wiIHwgdHJhbnNsYXRlIH19PC9zcGFuXHJcbiAgICA+XHJcbiAgPC9saWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHJcbiAgQGZvciAoYXR0cmliR3JvdXAgb2Ygb2JqZWN0QXR0cmlidXRlR3JvdXBzOyB0cmFjayBhdHRyaWJHcm91cCkge1xyXG4gIDxsaWItZXhwYW5zaW9uLXBhbmVsIFtleHBhbmRlZF09XCJhdHRyaWJHcm91cC5leHBhbmRlZFwiPlxyXG4gICAgPGxpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1ncm91cC1oZWFkZXJcIj5cclxuICAgICAgICB7eyBhdHRyaWJHcm91cC5uYW1lIH19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICA8ZGl2PlxyXG4gICAgICBAZm9yIChhdHRyaWIgb2YgYXR0cmliR3JvdXAuYXR0cmlidXRlczsgdHJhY2sgYXR0cmliKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtYXR0cmliLXJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtYXR0cmliLXJvdy1jb250ZW50XCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWF0dHJpYi1yb3ctY2VsbCBjcml0ZXJpYS1zZWxlY3QtY2hlY2tib3hcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwtbGFiZWxcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYXR0cmliLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJDcml0ZXJpYS5sZW5ndGggPT09IE1heEZpbHRlckNyaXRlcmlhICYmICFhdHRyaWIuY2hlY2tlZFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBdHRyaWJ1dGUoYXR0cmliKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwidG9nZ2xlQXR0cmlidXRlKGF0dHJpYilcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWF0dHJpYi1yb3ctY2VsbC10ZXh0XCI+XHJcbiAgICAgICAgICAgICAge3sgYXR0cmliLm5hbWUgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtYXR0cmliLXJvdy1jZWxsIGNyaXRlcmlhLXNlbGVjdC1jaGVja2JveFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWF0dHJpYi1yb3ctY2VsbC1sYWJlbFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhdHRyaWIudmFsdWVDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICAgICAgZmlsdGVyQ3JpdGVyaWEubGVuZ3RoID09PSBNYXhGaWx0ZXJDcml0ZXJpYSAmJiAhYXR0cmliLmNoZWNrZWRcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQXR0cmlidXRlVmFsdWUoYXR0cmliKVwiXHJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwidG9nZ2xlQXR0cmlidXRlVmFsdWUoYXR0cmliKVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwtdGV4dFwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyB0aXRsZUZvckF0dHJpYnV0ZShhdHRyaWIpIH19XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IG5vcm1hbGl6ZWRWYWx1ZShhdHRyaWIpIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICA8L2xpYi1leHBhbnNpb24tcGFuZWw+XHJcbiAgfVxyXG48L2xpYi1leHBhbnNpb24tcGFuZWw+XHJcbn1cclxuPCEtLSBFbmQgUHJvcGVydGllcyBsaXN0LS0+XHJcbiJdfQ==
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMvY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMvY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDcEgsT0FBTyxFQUFFLGVBQWUsRUFBb0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUM5RyxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0YsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDcEgsT0FBTyxFQUFFLHVDQUF1QyxFQUFF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RSxlQUFlLDRGQUFFLCtCQUErQiw4TEFBRSx1Q0FBdUM7OzRGQUtoSix1Q0FBdUM7a0JBUm5ELFNBQVM7K0JBQ0UsdUNBQXVDLGNBQ3JDLElBQUksV0FDUCxDQUFDLDZCQUE2QixFQUFFLHVCQUF1QixFQUFFLGVBQWUsRUFBRSwrQkFBK0IsRUFBRSx1Q0FBdUMsQ0FBQyxhQUNqSixDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUM7OElBZ0MxQyxHQUFHO3NCQURGLEtBQUs7Z0JBSUYsWUFBWTtzQkFEZixLQUFLO2dCQWFOLFFBQVE7c0JBRFAsS0FBSztnQkFjRixjQUFjO3NCQURqQixLQUFLO2dCQU1JLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgV2ViU2RrIGZyb20gJ2JpbXBsdXMtd2Vic2RrJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQvYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBFeHBhbnNpb25QYW5lbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXhwYW5zaW9uUGFuZWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9leHBhbnNpb24tcGFuZWwtaGVhZGVyL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsdGVyQ3JpdGVyaXVtLCBNYXhGaWx0ZXJDcml0ZXJpYSB9IGZyb20gJy4uL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBCaW1wbHVzT2JqZWN0U3RydWN0dXJlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzT2JqZWN0Q29tcGxleFByb3BlcnRpZXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMvYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE9iamVjdFN0cnVjdHVyZU5vZGUsIE9iamVjdFN0cnVjdHVyZU5vZGVCdWlsZGVyIH0gZnJvbSAnLi4vLi4vYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBDb21wbGV4UHJvcGVydGllc05vZGUsIENvbXBsZXhQcm9wZXJ0aWVzTm9kZUJ1aWxkZXIgfSBmcm9tICcuLi8uLi9iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXMvYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlLCBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZUdyb3VwIH0gZnJvbSAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRm9ybWF0VmFsdWVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvZm9ybWF0LXZhbHVlLnBpcGUnO1xyXG5pbXBvcnQgeyBEYXRlVGltZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9kYXRldGltZS5waXBlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbRXhwYW5zaW9uUGFuZWxIZWFkZXJDb21wb25lbnQsIEV4cGFuc2lvblBhbmVsQ29tcG9uZW50LCBUcmFuc2xhdGVNb2R1bGUsIEJpbXBsdXNPYmplY3RTdHJ1Y3R1cmVDb21wb25lbnQsIEJpbXBsdXNPYmplY3RDb21wbGV4UHJvcGVydGllc0NvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbRm9ybWF0VmFsdWVQaXBlLCBEYXRlVGltZVBpcGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50Lmxlc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcml0ZXJpYVNlbGVjdE9iamVjdFByb3BlcnRpZXNDb21wb25lbnQgZXh0ZW5kcyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmb3JtYXRWYWx1ZVBpcGU6IEZvcm1hdFZhbHVlUGlwZSxcclxuICAgIHByaXZhdGUgZGF0ZXRpbWVQaXBlOiBEYXRlVGltZVBpcGUpIHtcclxuICAgIHN1cGVyKHRyYW5zbGF0ZVNlcnZpY2UpXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChpZCkgPT4ge1xyXG4gICAgICAgIGlmIChpZCkge1xyXG4gICAgICAgICAgdGhpcy5fY3JlYXRlT2JqZWN0UHJvcGVydGllcyhpZCwgdGhpcy5yZXZpc2lvbilcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX2N1cnJlbnRPYmplY3RJZCQuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGlkKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fY3VycmVudFByb3BlcnRpZXNPYmplY3RJZCQubmV4dChpZCk7XHJcbiAgICAgICAgdGhpcy5fY3JlYXRlQ29tcGxleFByb3BlcnRpZXN0cnVjdHVyZShpZCwgdGhpcy5yZXZpc2lvbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYXBpOiBXZWJTZGsuQXBpIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHJvb3RPYmplY3RJZChpZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50T2JqZWN0SWQkLm5leHQoaWQpO1xyXG4gICAgdGhpcy5fY3JlYXRlT2JqZWN0U3RydWN0dXJlKGlkLCB0aGlzLnJldmlzaW9uKTtcclxuXHJcbiAgICB0aGlzLl9yb290T2JqZWN0SWQgPSBpZDtcclxuICB9XHJcblxyXG4gIGdldCByb290T2JqZWN0SWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9yb290T2JqZWN0SWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHJldmlzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRPYmplY3RJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oXCJcIik7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KFwiXCIpO1xyXG5cclxuICBvYmplY3RBdHRyaWJ1dGVHcm91cHM6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlR3JvdXBbXSA9IFtdO1xyXG5cclxuICBNYXhGaWx0ZXJDcml0ZXJpYSA9IE1heEZpbHRlckNyaXRlcmlhOyAvLyBGb3IgZXhwb3N1cmUgdG8gdGVtcGxhdGVcclxuXHJcbiAgcHJpdmF0ZSBfcm9vdE9iamVjdElkOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBmaWx0ZXJDcml0ZXJpYShjcml0ZXJpYTogRmlsdGVyQ3JpdGVyaXVtW10pIHtcclxuICAgIHRoaXMuX2ZpbHRlckNyaXRlcmlhID0gY3JpdGVyaWE7XHJcbiAgICB0aGlzLl9zeW5jQXR0cmlidXRlU3RhdGVzRnJvbUNyaXRlcmlhKCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgZmlsdGVyQ3JpdGVyaWFDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckNyaXRlcml1bVtdPigpO1xyXG5cclxuICBnZXQgZmlsdGVyQ3JpdGVyaWEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyQ3JpdGVyaWE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maWx0ZXJDcml0ZXJpYTogRmlsdGVyQ3JpdGVyaXVtW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfb2JqZWN0U3RydWN0dXJlOiBPYmplY3RTdHJ1Y3R1cmVOb2RlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGdldCBvYmplY3RTdHJ1Y3R1cmUoKTogT2JqZWN0U3RydWN0dXJlTm9kZSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX29iamVjdFN0cnVjdHVyZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29tcGxleFByb3BlcnRpZXM6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBnZXQgY29tcGxleFByb3BlcnRpZXMoKTogQ29tcGxleFByb3BlcnRpZXNOb2RlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29tcGxleFByb3BlcnRpZXM7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBdHRyaWJ1dGUoYXR0cmliOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZSkge1xyXG4gICAgYXR0cmliLmNoZWNrZWQgPSAhYXR0cmliLmNoZWNrZWQ7XHJcbiAgICBpZiAoYXR0cmliLmNoZWNrZWQgPT09IGZhbHNlKSB7XHJcbiAgICAgIGF0dHJpYi52YWx1ZUNoZWNrZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhhbmRsZUZpbHRlckNyaXRlcml1bUF0dHJpYnV0ZVN0YXRlQ2hhbmdlKGF0dHJpYik7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBdHRyaWJ1dGVWYWx1ZShhdHRyaWI6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlKSB7XHJcbiAgICBhdHRyaWIudmFsdWVDaGVja2VkID0gIWF0dHJpYi52YWx1ZUNoZWNrZWQ7XHJcbiAgICBhdHRyaWIuY2hlY2tlZCA9IGF0dHJpYi52YWx1ZUNoZWNrZWQ7XHJcblxyXG4gICAgdGhpcy5oYW5kbGVGaWx0ZXJDcml0ZXJpdW1BdHRyaWJ1dGVTdGF0ZUNoYW5nZShhdHRyaWIpO1xyXG4gIH1cclxuXHJcbiAgX2RlZmluZUZpbHRlclN0cmluZyhhdHRyaWI6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlKSB7XHJcbiAgICBsZXQgc3Vic3RyaW5nID0gYFtJXVske2F0dHJpYi5pZH1dLlZhbHVlYDtcclxuXHJcbiAgICBpZiAoYXR0cmliLnZhbHVlQ2hlY2tlZCkge1xyXG4gICAgICBzdWJzdHJpbmcgKz0gYFtGXVswXT0ke3RoaXMuZm9ybWF0VmFsdWVQaXBlLnRyYW5zZm9ybShhdHRyaWIudmFsdWUpfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3Vic3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgX2FkZEZpbHRlckNyaXRlcmlhKGF0dHJpYjogQ3JpdGVyaWFTZWxlY3RPYmplY3RBdHRyaWJ1dGUpIHtcclxuICAgIC8vIGFkZCBhIG5ldyBlbnRyeVxyXG4gICAgdGhpcy5maWx0ZXJDcml0ZXJpYS5wdXNoKHtcclxuICAgICAgbmFtZTogYXR0cmliLm5hbWUsXHJcbiAgICAgIHZhbHVlOiBhdHRyaWIudmFsdWVDaGVja2VkID8gYXR0cmliLnZhbHVlIDogdW5kZWZpbmVkLFxyXG4gICAgICBuYW1lZFZhbHVlOiBhdHRyaWIudmFsdWVDaGVja2VkID8gdGhpcy5ub3JtYWxpemVkVmFsdWUoYXR0cmliLCB0cnVlKSA6IHVuZGVmaW5lZCxcclxuICAgICAgaWQ6IGF0dHJpYi5pZCxcclxuICAgICAgc3ViU3RyaW5nOiB0aGlzLl9kZWZpbmVGaWx0ZXJTdHJpbmcoYXR0cmliKSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgX3VwZGF0ZUZpbHRlckNyaXRlcmlhKGF0dHJpYjogQ3JpdGVyaWFTZWxlY3RPYmplY3RBdHRyaWJ1dGUsIGluZGV4OiBudW1iZXIpIHtcclxuICAgIC8vIHVwZGF0ZSBhbiBleGlzdGluZyBlbnRyeVxyXG4gICAgdGhpcy5maWx0ZXJDcml0ZXJpYVtpbmRleF0gPSB7XHJcbiAgICAgIC4uLnRoaXMuZmlsdGVyQ3JpdGVyaWFbaW5kZXhdLFxyXG4gICAgICBuYW1lOiBhdHRyaWIubmFtZSxcclxuICAgICAgdmFsdWU6IGF0dHJpYi52YWx1ZUNoZWNrZWQgPyBhdHRyaWIudmFsdWUgOiB1bmRlZmluZWQsXHJcbiAgICAgIG5hbWVkVmFsdWU6IGF0dHJpYi52YWx1ZUNoZWNrZWQgPyB0aGlzLm5vcm1hbGl6ZWRWYWx1ZShhdHRyaWIsIHRydWUpIDogdW5kZWZpbmVkLFxyXG4gICAgICBzdWJTdHJpbmc6IHRoaXMuX2RlZmluZUZpbHRlclN0cmluZyhhdHRyaWIpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vIEhlbHBlciBmdW5jdGlvbiBmb3Igcm91bmRpbmcgdG8gc3BlY2lmaWVkIGRlY2ltYWxzXHJcbiAgcHJpdmF0ZSByb3VuZFRvRGVjaW1hbCh2YWx1ZTogbnVtYmVyLCBkZWNpbWFsOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgY29uc3QgbXVsdGlwbGllciA9IE1hdGgucG93KDEwLCBkZWNpbWFsKTtcclxuICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogbXVsdGlwbGllcikgLyBtdWx0aXBsaWVyO1xyXG4gIH1cclxuXHJcbiAgdGl0bGVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZSk6IHN0cmluZyB7XHJcbiAgICAvLyBUcmFuc2xhdGlvbiBtb3ZlZCB0byBpbXBsZW1lbnRhdGlvbiB0byBub3QgcnVuIHRoZSB0cmFuc2xhdGlvbiBcclxuICAgIC8vIGZvciBtYW55IHZhbHVlcyB3aGljaCBkb24ndCBuZWVkIGl0XHJcbiAgICBpZiAoYXR0cmlidXRlLnZhbHVlID09PSBudWxsIHx8IGF0dHJpYnV0ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnX05vdF9kZWZpbmVkJyk7XHJcbiAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS52YWx1ZSA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdfRW1wdHlfdmFsdWUnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBTdHJpbmcoYXR0cmlidXRlLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG5vcm1hbGl6ZWRWYWx1ZShhdHRyaWJ1dGU6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlLCBmb3JGaWx0ZXJDcml0ZXJpYTogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcclxuICAgIC8vIFRyYW5zbGF0aW9uIG1vdmVkIHRvIGltcGxlbWVudGF0aW9uIHRvIG5vdCBydW4gdGhlIHRyYW5zbGF0aW9uIFxyXG4gICAgLy8gZm9yIG1hbnkgdmFsdWVzIHdoaWNoIGRvbid0IG5lZWQgaXRcclxuICAgIGlmIChhdHRyaWJ1dGUudmFsdWUgPT09IG51bGwgfHwgYXR0cmlidXRlLnZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIGZvckZpbHRlckNyaXRlcmlhID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJfTm90X2RlZmluZWRcIikgOiBcIi4uLlwiO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhdHRyaWJ1dGUudmFsdWUgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiBmb3JGaWx0ZXJDcml0ZXJpYSA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiX0VtcHR5X3ZhbHVlXCIpIDogXCInJ1wiO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhdHRyaWJ1dGU/LmNvbnRyb2wgPT09IFwiRW51bWVyYXRpb25cIiAmJiBhdHRyaWJ1dGUuZW51bVZhbHVlcykge1xyXG4gICAgICBjb25zdCByZXN1bHQ6IHN0cmluZyA9IFN0cmluZyhhdHRyaWJ1dGUuZW51bVZhbHVlc1tOdW1iZXIoYXR0cmlidXRlLnZhbHVlKV0pO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhbmRsZSBudW1lcmljIHJvdW5kaW5nXHJcbiAgICBpZiAoIWZvckZpbHRlckNyaXRlcmlhICYmXHJcbiAgICAgIGF0dHJpYnV0ZS50eXBlID09PSAnZG91YmxlJyAmJlxyXG4gICAgICBhdHRyaWJ1dGUuZGVjaW1hbCAmJlxyXG4gICAgICB0eXBlb2YgKGF0dHJpYnV0ZS52YWx1ZSkgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIGNvbnN0IHJvdW5kZWRWYWx1ZSA9IHRoaXMucm91bmRUb0RlY2ltYWwoYXR0cmlidXRlLnZhbHVlLCBhdHRyaWJ1dGUuZGVjaW1hbCk7XHJcbiAgICAgIHJldHVybiBTdHJpbmcocm91bmRlZFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYXR0cmlidXRlPy5jb250cm9sID09PSBcIkNoZWNrYm94XCIpIHtcclxuICAgICAgcmV0dXJuIChhdHRyaWJ1dGUudmFsdWUgPT09IDEpID8gXCJUcnVlXCIgOiBcIkZhbHNlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlIGRhdGV0aW1lIHRyYW5zZm9ybWF0aW9uXHJcbiAgICBpZiAoYXR0cmlidXRlPy50eXBlID09PSBcImRhdGV0aW1lXCIgJiYgdHlwZW9mIChhdHRyaWJ1dGUudmFsdWUpID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5kYXRldGltZVBpcGUudHJhbnNmb3JtKGF0dHJpYnV0ZS52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFN0cmluZyhhdHRyaWJ1dGUudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmlsdGVyQ3JpdGVyaXVtQXR0cmlidXRlU3RhdGVDaGFuZ2UoYXR0cmliOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZSkge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbHRlckNyaXRlcmlhLmZpbmRJbmRleCh4ID0+IHguaWQgPT09IGF0dHJpYi5pZCk7XHJcbiAgICAvLyBGSUxURVIgQ1JJVEVSSUEgQUxSRUFEWSBFWElTVFNcclxuICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgIGlmIChhdHRyaWIuY2hlY2tlZCA9PT0gZmFsc2UgJiYgYXR0cmliLnZhbHVlQ2hlY2tlZCA9PT0gZmFsc2UpIHtcclxuICAgICAgICAvLyBSRU1PVkVcclxuICAgICAgICAvLyBmaWx0ZXJDcml0ZXJpYSBubyBsb25nZXIgdXNlZCAobGVmdCAvIHJpZ2h0IGNoZWNrYm94ZXMgbm90IGNoZWNrZWQpXHJcbiAgICAgICAgdGhpcy5maWx0ZXJDcml0ZXJpYS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIFVQREFURVxyXG4gICAgICAgIC8vIGZpbHRlckNyaXRlcmlhIHN0aWxsIHVzZWQsIGJ1dCB2YWx1ZSBzaG91bGQgYmUgdXNlZCAocmlnaHQgY2hlY2tib3ggY2hlY2tlZClcclxuICAgICAgICB0aGlzLl91cGRhdGVGaWx0ZXJDcml0ZXJpYShhdHRyaWIsIGluZGV4KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZpbHRlckNyaXRlcmlhQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJDcml0ZXJpYSk7XHJcbiAgICB9XHJcbiAgICAvLyBGSUxURVIgQ1JJVEVSSUEgRE9FUyBOT1QgRVhJU1QgYW5kIE1BWCBDUklURVJJQSBOT1QgUkVBQ0hFRFxyXG4gICAgZWxzZSBpZiAodGhpcy5maWx0ZXJDcml0ZXJpYS5sZW5ndGggPCBNYXhGaWx0ZXJDcml0ZXJpYSkge1xyXG4gICAgICAvLyBBRERcclxuICAgICAgdGhpcy5fYWRkRmlsdGVyQ3JpdGVyaWEoYXR0cmliKTtcclxuICAgICAgdGhpcy5maWx0ZXJDcml0ZXJpYUNoYW5nZS5lbWl0KHRoaXMuZmlsdGVyQ3JpdGVyaWEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlT2JqZWN0U3RydWN0dXJlTm9kZVNlbGVjdGVkKG5vZGU6IE9iamVjdFN0cnVjdHVyZU5vZGUpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRPYmplY3RJZCQubmV4dChub2RlLmlkKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNvbXBsZXhQcm9wZXJ0eU5vZGVTZWxlY3RlZChub2RlOiBDb21wbGV4UHJvcGVydGllc05vZGUpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkLm5leHQobm9kZS5pZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVPYmplY3RQcm9wZXJ0aWVzKG9iamVjdElkOiBzdHJpbmcsIHJldmlzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RQcm9wZXJ0aWVzKG9iamVjdElkLCByZXZpc2lvbik/LnN1YnNjcmliZSh7XHJcblxyXG4gICAgICAvLyBwcm9wZXJ0aWVzIHJlc3BvbnNlIGlzIGJhZGx5IHN0cnVjdHVyZWQsIG5lYXJseSBpbXBvc3NpYmxlIHRvIGNyZWF0ZSBjbGFzcyBzdHJ1Y3R1cmUgZnJvbSBpdC4gVGhlcmVmb3JlIHVzaW5nIHNob3J0Y3V0XHJcbiAgICAgIC8vIGFueSBmb3IganNvbiByZXNwb25zZVxyXG5cclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgIG5leHQ6IChwcm9wZXJ0aWVzRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5vYmplY3RBdHRyaWJ1dGVHcm91cHMgPSB0aGlzLl9jcmVhdGVBdHRyaWJ1dGVHcm91cHNGcm9tUmVzcG9uc2UocHJvcGVydGllc0RhdGEpO1xyXG4gICAgICAgIHRoaXMuX3N5bmNBdHRyaWJ1dGVTdGF0ZXNGcm9tQ3JpdGVyaWEoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLm9iamVjdEF0dHJpYnV0ZUdyb3VwcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICApXHJcblxyXG4gIH1cclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgcHJpdmF0ZSBfY3JlYXRlQXR0cmlidXRlR3JvdXBzRnJvbVJlc3BvbnNlKHByb3BlcnRpZXNEYXRhOiBhbnkpIHtcclxuXHJcbiAgICBjb25zdCBncm91cHM6IEFycmF5PENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlR3JvdXA+ID0gW107XHJcbiAgICBsZXQgbG9jYWxpemVkQXR0cmliR3JvdXBzID0gbnVsbDtcclxuICAgIGlmIChwcm9wZXJ0aWVzRGF0YS5sb2NhbGl6ZWRBdHRyaWJ1dGVHcm91cHMpIHtcclxuICAgICAgbG9jYWxpemVkQXR0cmliR3JvdXBzID0gcHJvcGVydGllc0RhdGEubG9jYWxpemVkQXR0cmlidXRlR3JvdXBzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghcHJvcGVydGllc0RhdGEuYXR0cmlidXRlcykge1xyXG4gICAgICByZXR1cm4gZ3JvdXBzO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGF0dHJpYkdyb3VwcyA9IHByb3BlcnRpZXNEYXRhLmF0dHJpYnV0ZXM7XHJcbiAgICBmb3IgKGNvbnN0IFtncm91cE5hbWUsIGF0dHJpYnNPYmplY3RdIG9mIE9iamVjdC5lbnRyaWVzKGF0dHJpYkdyb3VwcykpIHtcclxuXHJcbiAgICAgIGNvbnN0IG5ld0dyb3VwOiBDcml0ZXJpYVNlbGVjdE9iamVjdEF0dHJpYnV0ZUdyb3VwID0ge1xyXG4gICAgICAgIG5hbWU6IGdyb3VwTmFtZSxcclxuICAgICAgICBleHBhbmRlZDogZmFsc2UsXHJcbiAgICAgICAgYXR0cmlidXRlczogW11cclxuICAgICAgfTtcclxuXHJcbiAgICAgIGlmIChsb2NhbGl6ZWRBdHRyaWJHcm91cHM/Lltncm91cE5hbWVdKSB7XHJcbiAgICAgICAgbmV3R3JvdXAubmFtZSA9IGxvY2FsaXplZEF0dHJpYkdyb3Vwc1tncm91cE5hbWVdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWF0dHJpYnNPYmplY3QpIHtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yIChjb25zdCBhdHRyaWIgb2YgT2JqZWN0LnZhbHVlcyhhdHRyaWJzT2JqZWN0KSkge1xyXG5cclxuICAgICAgICBjb25zdCBuZXdBdHRyaWI6IENyaXRlcmlhU2VsZWN0T2JqZWN0QXR0cmlidXRlID0ge1xyXG4gICAgICAgICAgaWQ6IGF0dHJpYi5pZCxcclxuICAgICAgICAgIG5hbWU6IGF0dHJpYi5uYW1lLFxyXG4gICAgICAgICAgZGVzY3JpcHRpb246IGF0dHJpYi5kZXNjcmlwdGlvbixcclxuICAgICAgICAgIHZhbHVlOiBhdHRyaWIudmFsdWUsXHJcbiAgICAgICAgICBpc0NoYW5nZWFibGU6IGF0dHJpYi5pc0NoYW5nZWFibGUsXHJcbiAgICAgICAgICB0eXBlOiBhdHRyaWIudHlwZSxcclxuICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgdmFsdWVDaGVja2VkOiBmYWxzZSxcclxuICAgICAgICAgIGdyb3VwOiBhdHRyaWIuZ3JvdXAsXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBBZGQgYXR0cmlidXRlIGluZm9ybWF0aW9uIHdoaWNoIGlzIG5vdCBhbHdheXMgcHJlc2VudFxyXG4gICAgICAgIGlmIChhdHRyaWIuY29udHJvbCkge1xyXG4gICAgICAgICAgbmV3QXR0cmliLmNvbnRyb2wgPSBhdHRyaWIuY29udHJvbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGF0dHJpYi5kZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICAgIG5ld0F0dHJpYi5kZWZhdWx0VmFsdWUgPSBhdHRyaWIuZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYXR0cmliLnVuaXQpIHtcclxuICAgICAgICAgIG5ld0F0dHJpYi51bml0ID0gYXR0cmliLnVuaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhdHRyaWIuZGVjaW1hbCkge1xyXG4gICAgICAgICAgbmV3QXR0cmliLmRlY2ltYWwgPSBhdHRyaWIuZGVjaW1hbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGF0dHJpYi5lbnVtZGVmaW5pdGlvbikge1xyXG4gICAgICAgICAgbmV3QXR0cmliLmVudW1WYWx1ZXMgPSBhdHRyaWIuZW51bWRlZmluaXRpb247XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBuZXdHcm91cC5hdHRyaWJ1dGVzLnB1c2gobmV3QXR0cmliKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZ3JvdXBzLnB1c2gobmV3R3JvdXApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBncm91cHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zeW5jQXR0cmlidXRlU3RhdGVzRnJvbUNyaXRlcmlhKCkge1xyXG4gICAgdGhpcy5vYmplY3RBdHRyaWJ1dGVHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGdyb3VwLmF0dHJpYnV0ZXMuZm9yRWFjaChhdHRyaWIgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNyaXRlcmlhID0gdGhpcy5fZmlsdGVyQ3JpdGVyaWEuZmluZCh4ID0+IHguaWQgPT0gYXR0cmliLmlkKVxyXG4gICAgICAgIGlmIChjcml0ZXJpYSkge1xyXG4gICAgICAgICAgYXR0cmliLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgYXR0cmliLnZhbHVlQ2hlY2tlZCA9IGNyaXRlcmlhLnZhbHVlICE9PSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGF0dHJpYi5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICBhdHRyaWIudmFsdWVDaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRPYmplY3RQcm9wZXJ0aWVzKG9iamVjdElkOiBzdHJpbmcsIHJldmlzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICghdGhpcy5hcGkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpLm9iamVjdHMuZ2V0KG9iamVjdElkLCByZXZpc2lvbiwgXCI4XCIsIHVuZGVmaW5lZCwgZmFsc2UsIHVuZGVmaW5lZCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbG9hZE9iamVjdFN0cnVjdHVyZShvYmplY3RJZDogc3RyaW5nLCByZXZpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAoIXRoaXMuYXBpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmFwaS5vYmplY3RzLmdldFRvcG9sb2d5KG9iamVjdElkLCByZXZpc2lvbiwgZmFsc2UsIGZhbHNlLCB1bmRlZmluZWQpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRPYmplY3RDb21wbGV4UHJvcGVydGllc1N0cnVjdHVyZShvYmplY3RJZDogc3RyaW5nLCByZXZpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAoIXRoaXMuYXBpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmFwaS5vYmplY3RzLmdldENvbXBsZXhQcm9wZXJ0aWVzVG9wb2xvZ3kob2JqZWN0SWQsIHJldmlzaW9uKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVDb21wbGV4UHJvcGVydGllc3RydWN0dXJlKG9iamVjdElkOiBzdHJpbmcsIHJldmlzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RDb21wbGV4UHJvcGVydGllc1N0cnVjdHVyZShvYmplY3RJZCwgcmV2aXNpb24pPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoc3RydWN0dXJlRGF0YSkgPT4ge1xyXG4gICAgICAgIGlmIChzdHJ1Y3R1cmVEYXRhKSB7XHJcbiAgICAgICAgICBjb25zdCBjb21wbGV4UHJvcHMgPSBDb21wbGV4UHJvcGVydGllc05vZGVCdWlsZGVyLmNyZWF0ZUZyb21SZXNwb25zZShzdHJ1Y3R1cmVEYXRhKTtcclxuICAgICAgICAgIGlmIChjb21wbGV4UHJvcHM/LmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29tcGxleFByb3BlcnRpZXMgPSBjb21wbGV4UHJvcHM7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wbGV4UHJvcGVydGllcyA9IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlT2JqZWN0U3RydWN0dXJlKG9iamVjdElkOiBzdHJpbmcsIHJldmlzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RTdHJ1Y3R1cmUob2JqZWN0SWQsIHJldmlzaW9uKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHN0cnVjdHVyZURhdGEpID0+IHtcclxuICAgICAgICBpZiAoc3RydWN0dXJlRGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5fb2JqZWN0U3RydWN0dXJlID0gT2JqZWN0U3RydWN0dXJlTm9kZUJ1aWxkZXIuY3JlYXRlRnJvbVJlc3BvbnNlKHN0cnVjdHVyZURhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPCEtLSBPYmplY3Qgc3RydWN0dXJlLS0+XHJcbjxsaWItZXhwYW5zaW9uLXBhbmVsPlxyXG4gIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWhlYWRlclwiPlxyXG4gICAgICB7eyBcIl9PYmplY3Qgc3RydWN0dXJlXCIgfCB0cmFuc2xhdGUgfX08L3NwYW5cclxuICAgID5cclxuICA8L2xpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gIEBpZihvYmplY3RTdHJ1Y3R1cmUpe1xyXG4gICAgPGxpYi1iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmVcclxuICAgICAgW29iamVjdFN0cnVjdHVyZV09XCJvYmplY3RTdHJ1Y3R1cmVcIlxyXG4gICAgICBbaGFzQ2hlY2tCb3gxXT1cImZhbHNlXCJcclxuICAgICAgW2hhc0NoZWNrQm94Ml09XCJmYWxzZVwiXHJcbiAgICAgIChub2RlU2VsZWN0ZWQpPVwiaGFuZGxlT2JqZWN0U3RydWN0dXJlTm9kZVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgPC9saWItYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlPlxyXG4gIH1cclxuPC9saWItZXhwYW5zaW9uLXBhbmVsPlxyXG48IS0tIEVuZCBPYmplY3Qgc3RydWN0dXJlLS0+XHJcblxyXG48IS0tIENvbXBsZXggcHJvcGVydGllcy0tPlxyXG5AaWYoY29tcGxleFByb3BlcnRpZXMpe1xyXG48bGliLWV4cGFuc2lvbi1wYW5lbD5cclxuICA8bGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1oZWFkZXJcIj5cclxuICAgICAge3sgXCJfT2JqZWN0IG11bHRpcHJvcGVydGllcyB0cmVlXCIgfCB0cmFuc2xhdGUgfX08L3NwYW5cclxuICAgID5cclxuICA8L2xpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gIDxsaWItYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzXHJcbiAgICBbY29tcGxleFByb3BlcnRpZXNdPVwiY29tcGxleFByb3BlcnRpZXNcIlxyXG4gICAgKG5vZGVTZWxlY3RlZCk9XCJoYW5kbGVDb21wbGV4UHJvcGVydHlOb2RlU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgPlxyXG4gIDwvbGliLWJpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcz5cclxuPC9saWItZXhwYW5zaW9uLXBhbmVsPlxyXG59XHJcbjwhLS0gRW5kIENvbXBsZXggcHJvcGVydGllcy0tPlxyXG5cclxuPCEtLSBQcm9wZXJ0aWVzIGxpc3QtLT5cclxuQGlmKG9iamVjdEF0dHJpYnV0ZUdyb3Vwcy5sZW5ndGggPiAwKXtcclxuPGxpYi1leHBhbnNpb24tcGFuZWw+XHJcbiAgPGxpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtaGVhZGVyXCI+XHJcbiAgICAgIHt7IFwiX09iamVjdCBwcm9wZXJ0aWVzXCIgfCB0cmFuc2xhdGUgfX08L3NwYW5cclxuICAgID5cclxuICA8L2xpYi1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cclxuICBAZm9yIChhdHRyaWJHcm91cCBvZiBvYmplY3RBdHRyaWJ1dGVHcm91cHM7IHRyYWNrIGF0dHJpYkdyb3VwKSB7XHJcbiAgPGxpYi1leHBhbnNpb24tcGFuZWwgW2V4cGFuZGVkXT1cImF0dHJpYkdyb3VwLmV4cGFuZGVkXCI+XHJcbiAgICA8bGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWdyb3VwLWhlYWRlclwiPlxyXG4gICAgICAgIHt7IGF0dHJpYkdyb3VwLm5hbWUgfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9saWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgIDxkaXY+XHJcbiAgICAgIEBmb3IgKGF0dHJpYiBvZiBhdHRyaWJHcm91cC5hdHRyaWJ1dGVzOyB0cmFjayBhdHRyaWIpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtYXR0cmliLXJvdy1jZWxsIGNyaXRlcmlhLXNlbGVjdC1jaGVja2JveFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWF0dHJpYi1yb3ctY2VsbC1sYWJlbFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhdHRyaWIuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAgICAgICAgIGZpbHRlckNyaXRlcmlhLmxlbmd0aCA9PT0gTWF4RmlsdGVyQ3JpdGVyaWEgJiYgIWF0dHJpYi5jaGVja2VkXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUF0dHJpYnV0ZShhdHRyaWIpXCJcclxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJ0b2dnbGVBdHRyaWJ1dGUoYXR0cmliKVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtYXR0cmliLXJvdy1jZWxsLXRleHRcIj5cclxuICAgICAgICAgICAgICB7eyBhdHRyaWIubmFtZSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwgY3JpdGVyaWEtc2VsZWN0LWNoZWNrYm94XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtYXR0cmliLXJvdy1jZWxsLWxhYmVsXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImF0dHJpYi52YWx1ZUNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJDcml0ZXJpYS5sZW5ndGggPT09IE1heEZpbHRlckNyaXRlcmlhICYmICFhdHRyaWIuY2hlY2tlZFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBdHRyaWJ1dGVWYWx1ZShhdHRyaWIpXCJcclxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJ0b2dnbGVBdHRyaWJ1dGVWYWx1ZShhdHRyaWIpXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWF0dHJpYi1yb3ctY2VsbC10ZXh0XCJcclxuICAgICAgICAgICAgICB0aXRsZT1cInt7IHRpdGxlRm9yQXR0cmlidXRlKGF0dHJpYikgfX1cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgbm9ybWFsaXplZFZhbHVlKGF0dHJpYikgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIDwvbGliLWV4cGFuc2lvbi1wYW5lbD5cclxuICB9XHJcbjwvbGliLWV4cGFuc2lvbi1wYW5lbD5cclxufVxyXG48IS0tIEVuZCBQcm9wZXJ0aWVzIGxpc3QtLT5cclxuIl19
@@ -3,6 +3,8 @@ import { BimplusFlatTreeComponent } from '../bimplus-flat-tree/bimplus-flat-tree
3
3
  import * as i0 from "@angular/core";
4
4
  export class BimplusObjectStructureComponent {
5
5
  constructor() {
6
+ this.hasCheckBox1 = false;
7
+ this.hasCheckBox2 = false;
6
8
  this._objectStructure = signal({
7
9
  id: "",
8
10
  name: "",
@@ -102,14 +104,18 @@ export class BimplusObjectStructureComponent {
102
104
  this.treeComponent?.expandTree();
103
105
  }
104
106
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusObjectStructureComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
105
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: BimplusObjectStructureComponent, isStandalone: true, selector: "lib-bimplus-object-structure", inputs: { objectStructureValue: ["objectStructure", "objectStructureValue"] }, outputs: { nodeSelected: "nodeSelected", nodeVisible: "nodeVisible", nodeOpaque: "nodeOpaque" }, viewQueries: [{ propertyName: "treeComponent", first: true, predicate: BimplusFlatTreeComponent, descendants: true }], ngImport: i0, template: "<lib-bimplus-flat-tree\r\n paddingIndent=\"1.4rem\"\r\n [treeData]=\"treeData()\"\r\n enableParentHighlighting=\"false\"\r\n (selectedNodes) = \"handleSelectedNodes($event)\"\r\n (checked2Nodes) = \"handleVisibleNodes($event)\"\r\n (checked1Nodes) = \"handleOpaqueNodes($event)\"\r\n dataTestPrefix=\"object-structure-tree-\"\r\n [hasCheckBox1]=\"true\"\r\n [hasCheckBox2]=\"true\"\r\n></lib-bimplus-flat-tree>\r\n", styles: ["lib-bimplus-flat-tree{--flat-tree-node-indent: 0;--flat-tree-folder-font-weight: 400;--flat-tree-background-color: var(--bimplus-object-structure-background-color, var(--flat-tree-container-background-color-enabled))}\n"], dependencies: [{ kind: "component", type: BimplusFlatTreeComponent, selector: "lib-bimplus-flat-tree", inputs: ["treeDataStringified", "treeTitle", "paddingIndent", "multiSelect", "oneLevelMultiSelect", "showFoldersIcons", "showObjectsIcons", "enableSelect", "enableParentHighlighting", "enableDragAndDrop", "dataTestPrefix", "contextMenus", "hasCheckBox1", "hasCheckBox2", "treeData", "customNodeTemplate"], outputs: ["selectedNodes", "checked1Nodes", "checked2Nodes"] }] }); }
107
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: BimplusObjectStructureComponent, isStandalone: true, selector: "lib-bimplus-object-structure", inputs: { objectStructureValue: ["objectStructure", "objectStructureValue"], hasCheckBox1: "hasCheckBox1", hasCheckBox2: "hasCheckBox2" }, outputs: { nodeSelected: "nodeSelected", nodeVisible: "nodeVisible", nodeOpaque: "nodeOpaque" }, viewQueries: [{ propertyName: "treeComponent", first: true, predicate: BimplusFlatTreeComponent, descendants: true }], ngImport: i0, template: "<lib-bimplus-flat-tree\r\n paddingIndent=\"1.4rem\"\r\n [treeData]=\"treeData()\"\r\n enableParentHighlighting=\"false\"\r\n (selectedNodes) = \"handleSelectedNodes($event)\"\r\n (checked2Nodes) = \"handleVisibleNodes($event)\"\r\n (checked1Nodes) = \"handleOpaqueNodes($event)\"\r\n dataTestPrefix=\"object-structure-tree-\"\r\n [hasCheckBox1]=\"hasCheckBox1\"\r\n [hasCheckBox2]=\"hasCheckBox2\"\r\n></lib-bimplus-flat-tree>\r\n", styles: ["lib-bimplus-flat-tree{--flat-tree-node-indent: 0;--flat-tree-folder-font-weight: 400;--flat-tree-background-color: var(--bimplus-object-structure-background-color, var(--flat-tree-container-background-color-enabled))}\n"], dependencies: [{ kind: "component", type: BimplusFlatTreeComponent, selector: "lib-bimplus-flat-tree", inputs: ["treeDataStringified", "treeTitle", "paddingIndent", "multiSelect", "oneLevelMultiSelect", "showFoldersIcons", "showObjectsIcons", "enableSelect", "enableParentHighlighting", "enableDragAndDrop", "dataTestPrefix", "contextMenus", "hasCheckBox1", "hasCheckBox2", "treeData", "customNodeTemplate"], outputs: ["selectedNodes", "checked1Nodes", "checked2Nodes"] }] }); }
106
108
  }
107
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BimplusObjectStructureComponent, decorators: [{
108
110
  type: Component,
109
- args: [{ selector: 'lib-bimplus-object-structure', standalone: true, imports: [BimplusFlatTreeComponent], template: "<lib-bimplus-flat-tree\r\n paddingIndent=\"1.4rem\"\r\n [treeData]=\"treeData()\"\r\n enableParentHighlighting=\"false\"\r\n (selectedNodes) = \"handleSelectedNodes($event)\"\r\n (checked2Nodes) = \"handleVisibleNodes($event)\"\r\n (checked1Nodes) = \"handleOpaqueNodes($event)\"\r\n dataTestPrefix=\"object-structure-tree-\"\r\n [hasCheckBox1]=\"true\"\r\n [hasCheckBox2]=\"true\"\r\n></lib-bimplus-flat-tree>\r\n", styles: ["lib-bimplus-flat-tree{--flat-tree-node-indent: 0;--flat-tree-folder-font-weight: 400;--flat-tree-background-color: var(--bimplus-object-structure-background-color, var(--flat-tree-container-background-color-enabled))}\n"] }]
111
+ args: [{ selector: 'lib-bimplus-object-structure', standalone: true, imports: [BimplusFlatTreeComponent], template: "<lib-bimplus-flat-tree\r\n paddingIndent=\"1.4rem\"\r\n [treeData]=\"treeData()\"\r\n enableParentHighlighting=\"false\"\r\n (selectedNodes) = \"handleSelectedNodes($event)\"\r\n (checked2Nodes) = \"handleVisibleNodes($event)\"\r\n (checked1Nodes) = \"handleOpaqueNodes($event)\"\r\n dataTestPrefix=\"object-structure-tree-\"\r\n [hasCheckBox1]=\"hasCheckBox1\"\r\n [hasCheckBox2]=\"hasCheckBox2\"\r\n></lib-bimplus-flat-tree>\r\n", styles: ["lib-bimplus-flat-tree{--flat-tree-node-indent: 0;--flat-tree-folder-font-weight: 400;--flat-tree-background-color: var(--bimplus-object-structure-background-color, var(--flat-tree-container-background-color-enabled))}\n"] }]
110
112
  }], propDecorators: { objectStructureValue: [{
111
113
  type: Input,
112
114
  args: [{ alias: 'objectStructure' }]
115
+ }], hasCheckBox1: [{
116
+ type: Input
117
+ }], hasCheckBox2: [{
118
+ type: Input
113
119
  }], treeComponent: [{
114
120
  type: ViewChild,
115
121
  args: [BimplusFlatTreeComponent]
@@ -120,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
120
126
  }], nodeOpaque: [{
121
127
  type: Output
122
128
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS9iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOztBQVc1RixNQUFNLE9BQU8sK0JBQStCO0lBUDVDO1FBZW1CLHFCQUFnQixHQUFHLE1BQU0sQ0FBc0I7WUFDOUQsRUFBRSxFQUFHLEVBQUU7WUFDUCxJQUFJLEVBQUcsRUFBRTtZQUNULE1BQU0sRUFBRSxFQUFFO1lBQ1YsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUMsQ0FBQztRQUVrQyxrQkFBYSxHQUFvQyxJQUFJLENBQUM7UUFxQmxGLGFBQVEsR0FBRyxRQUFRLENBQWEsR0FBRyxFQUFFO1lBQzVDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2hELElBQUcsQ0FBQyxlQUFlLEVBQUMsQ0FBQztnQkFDbkIsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1lBRUQsTUFBTSxJQUFJLEdBQUcsSUFB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LG9CQUFvQjtzQkFEdkIsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRTtnQkFhRSxhQUFhO3NCQUFqRCxTQUFTO3VCQUFDLHdCQUF3QjtnQkFrR3pCLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBzaWduYWwsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCaW1wbHVzRmxhdFRyZWVDb21wb25lbnQgfSBmcm9tICcuLi9iaW1wbHVzLWZsYXQtdHJlZS9iaW1wbHVzLWZsYXQtdHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGbGF0Tm9kZSwgVHJlZU5vZGUgfSBmcm9tICcuLi9iaW1wbHVzLWZsYXQtdHJlZS9iaW1wbHVzLWZsYXQtdHJlZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBPYmplY3RTdHJ1Y3R1cmVOb2RlIH0gZnJvbSAnLi9iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmUuaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQmltcGx1c0ZsYXRUcmVlQ29tcG9uZW50XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlLmNvbXBvbmVudC5sZXNzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQmltcGx1c09iamVjdFN0cnVjdHVyZUNvbXBvbmVudHtcclxuICAvKiogVE9ETyByZW1vdmUgQElucHV0IG9uY2Ugc2lnbmFsIGlucHV0cyByZWxlYXNlIGZyb20gZGV2ZWxvcGVyIHByZXZpZXcuICovXHJcbiAgLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZSAqL1xyXG4gIEBJbnB1dCh7IGFsaWFzOiAnb2JqZWN0U3RydWN0dXJlJyB9KVxyXG4gIHNldCBvYmplY3RTdHJ1Y3R1cmVWYWx1ZShub2RlIDogT2JqZWN0U3RydWN0dXJlTm9kZSl7XHJcbiAgICB0aGlzLl9vYmplY3RTdHJ1Y3R1cmUuc2V0KG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfb2JqZWN0U3RydWN0dXJlID0gc2lnbmFsPE9iamVjdFN0cnVjdHVyZU5vZGU+KHtcclxuICAgIGlkIDogXCJcIixcclxuICAgIG5hbWUgOiBcIlwiLFxyXG4gICAgcGFyZW50OiBcIlwiLFxyXG4gICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgIG9wYXF1ZTogdHJ1ZVxyXG4gIH0pO1xyXG5cclxuICBAVmlld0NoaWxkKEJpbXBsdXNGbGF0VHJlZUNvbXBvbmVudCkgdHJlZUNvbXBvbmVudDogQmltcGx1c0ZsYXRUcmVlQ29tcG9uZW50IHwgbnVsbCA9IG51bGw7XHJcbiAgXHJcbiAgcHJpdmF0ZSBfY29udmVydE9iamVjdFN0cnVjdHVyZU5vZGVUb1RyZWVOb2RlKG5vZGUgOiBPYmplY3RTdHJ1Y3R1cmVOb2RlKSA6IFRyZWVOb2Rle1xyXG5cclxuICAgIGNvbnN0IHRyZWVOb2RlIDogVHJlZU5vZGUgPSB7XHJcbiAgICAgIG5hbWU6IG5vZGUubmFtZSxcclxuICAgICAgaWQ6IG5vZGUuaWQsXHJcbiAgICAgIHBhcmVudDogbm9kZS5wYXJlbnQgXHJcbiAgICB9O1xyXG5cclxuICAgIGlmKG5vZGUuY2hpbGRyZW4pe1xyXG4gICAgICB0cmVlTm9kZS5jaGlsZHJlbiA9IFtdO1xyXG4gICAgICBmb3IoY29uc3QgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbil7XHJcbiAgICAgICAgY29uc3QgY2hpbGRUcmVlTm9kZSA9IHRoaXMuX2NvbnZlcnRPYmplY3RTdHJ1Y3R1cmVOb2RlVG9UcmVlTm9kZShjaGlsZCk7XHJcbiAgICAgICAgdHJlZU5vZGUuY2hpbGRyZW4ucHVzaChjaGlsZFRyZWVOb2RlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cmVlTm9kZTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHRyZWVEYXRhID0gY29tcHV0ZWQ8VHJlZU5vZGVbXT4oKCkgPT4ge1xyXG4gICAgY29uc3Qgb2JqZWN0U3RydWN0dXJlID0gdGhpcy5fb2JqZWN0U3RydWN0dXJlKCk7XHJcbiAgICBpZighb2JqZWN0U3RydWN0dXJlKXtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLl9jb252ZXJ0T2JqZWN0U3RydWN0dXJlTm9kZVRvVHJlZU5vZGUob2JqZWN0U3RydWN0dXJlKTtcclxuICAgIGlmKCFyb290KXtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbcm9vdF07XHJcbiAgfSlcclxuXHJcblxyXG4gIHByaXZhdGUgX2ZpbmROb2RlKGlkOnN0cmluZywgbm9kZSA6IE9iamVjdFN0cnVjdHVyZU5vZGUpIDogT2JqZWN0U3RydWN0dXJlTm9kZSB8IG51bGx7XHJcbiAgICBpZihub2RlLmlkID09IGlkKXtcclxuICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYobm9kZS5jaGlsZHJlbil7XHJcbiAgICAgIGZvcihjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKXtcclxuICAgICAgICBjb25zdCByZXMgPSB0aGlzLl9maW5kTm9kZShpZCwgY2hpbGQpO1xyXG4gICAgICAgIGlmKHJlcyl7XHJcbiAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlU2VsZWN0ZWROb2Rlcyhub2RlcyA6IEZsYXROb2RlW10pe1xyXG4gICAgaWYobm9kZXMubGVuZ3RoID09PSAxKXtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gdGhpcy5fZmluZE5vZGUobm9kZXNbMF0uaWQsIHRoaXMuX29iamVjdFN0cnVjdHVyZSgpKTtcclxuICAgICAgaWYoc2VsZWN0ZWROb2RlKXtcclxuICAgICAgICB0aGlzLm5vZGVTZWxlY3RlZC5lbWl0KHNlbGVjdGVkTm9kZSk7XHJcbiAgICAgIH1cclxuICAgIH0gICAgXHJcbiAgfVxyXG4gIFxyXG4gIGhhbmRsZVZpc2libGVOb2Rlcyhub2RlcyA6IEZsYXROb2RlW10pe1xyXG4gICAgaWYobm9kZXMubGVuZ3RoID09PSAxKXtcclxuICAgICAgY29uc3QgdmlzaWJsZU5vZGUgPSB0aGlzLl9maW5kTm9kZShub2Rlc1swXS5pZCwgdGhpcy5fb2JqZWN0U3RydWN0dXJlKCkpO1xyXG4gICAgICBpZih2aXNpYmxlTm9kZSl7XHJcbiAgICAgICAgY29uc3Qgb3V0cHVEYXRhOk9iamVjdFN0cnVjdHVyZU5vZGUgPXtcclxuICAgICAgICAgIG5hbWU6dmlzaWJsZU5vZGUubmFtZSxcclxuICAgICAgICAgIHBhcmVudDogdmlzaWJsZU5vZGUucGFyZW50LCAgICAgICAgICBcclxuICAgICAgICAgIGlkOiB2aXNpYmxlTm9kZS5pZCxcclxuICAgICAgICAgIHZpc2libGU6IG5vZGVzWzBdLmlzQ2hlY2tlZDIsXHJcbiAgICAgICAgICBvcGFxdWU6ICBub2Rlc1swXS5pc0NoZWNrZWQxLFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vZGVWaXNpYmxlLmVtaXQob3V0cHVEYXRhKTtcclxuICAgICAgfVxyXG4gICAgfSAgICBcclxuICB9XHJcbiAgXHJcbiAgaGFuZGxlT3BhcXVlTm9kZXMobm9kZXMgOiBGbGF0Tm9kZVtdKXtcclxuICAgIGlmKG5vZGVzLmxlbmd0aCA9PT0gMSl7XHJcbiAgICAgIGNvbnN0IG9wYXF1ZU5vZGUgPSB0aGlzLl9maW5kTm9kZShub2Rlc1swXS5pZCwgdGhpcy5fb2JqZWN0U3RydWN0dXJlKCkpO1xyXG4gICAgICBpZihvcGFxdWVOb2RlKXtcclxuICAgICAgICBjb25zdCBvdXRwdURhdGE6T2JqZWN0U3RydWN0dXJlTm9kZSA9e1xyXG4gICAgICAgICAgbmFtZTpvcGFxdWVOb2RlLm5hbWUsXHJcbiAgICAgICAgICBwYXJlbnQ6IG9wYXF1ZU5vZGUucGFyZW50LCAgICAgICAgICBcclxuICAgICAgICAgIGlkOiBvcGFxdWVOb2RlLmlkLFxyXG4gICAgICAgICAgdmlzaWJsZTogbm9kZXNbMF0uaXNDaGVja2VkMixcclxuICAgICAgICAgIG9wYXF1ZTogIG5vZGVzWzBdLmlzQ2hlY2tlZDEsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZU9wYXF1ZS5lbWl0KG91dHB1RGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH0gICAgXHJcbiAgfVxyXG5cclxuICBleHBhbmRUcmVlKCl7XHJcbiAgICB0aGlzLnRyZWVDb21wb25lbnQ/LmV4cGFuZFRyZWUoKTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBub2RlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE9iamVjdFN0cnVjdHVyZU5vZGU+KCk7XHJcbiAgQE91dHB1dCgpIG5vZGVWaXNpYmxlICA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0U3RydWN0dXJlTm9kZT4oKTtcclxuICBAT3V0cHV0KCkgbm9kZU9wYXF1ZSAgID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3RTdHJ1Y3R1cmVOb2RlPigpO1xyXG59XHJcbiIsIjxsaWItYmltcGx1cy1mbGF0LXRyZWVcclxuICBwYWRkaW5nSW5kZW50PVwiMS40cmVtXCJcclxuICBbdHJlZURhdGFdPVwidHJlZURhdGEoKVwiXHJcbiAgZW5hYmxlUGFyZW50SGlnaGxpZ2h0aW5nPVwiZmFsc2VcIlxyXG4gIChzZWxlY3RlZE5vZGVzKSA9IFwiaGFuZGxlU2VsZWN0ZWROb2RlcygkZXZlbnQpXCJcclxuICAoY2hlY2tlZDJOb2RlcykgPSBcImhhbmRsZVZpc2libGVOb2RlcygkZXZlbnQpXCJcclxuICAoY2hlY2tlZDFOb2RlcykgPSBcImhhbmRsZU9wYXF1ZU5vZGVzKCRldmVudClcIlxyXG4gIGRhdGFUZXN0UHJlZml4PVwib2JqZWN0LXN0cnVjdHVyZS10cmVlLVwiXHJcbiAgW2hhc0NoZWNrQm94MV09XCJ0cnVlXCJcclxuICBbaGFzQ2hlY2tCb3gyXT1cInRydWVcIlxyXG4+PC9saWItYmltcGx1cy1mbGF0LXRyZWU+XHJcbiJdfQ==
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS9iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOztBQVc1RixNQUFNLE9BQU8sK0JBQStCO0lBUDVDO1FBZVcsaUJBQVksR0FBVyxLQUFLLENBQUM7UUFDN0IsaUJBQVksR0FBVyxLQUFLLENBQUM7UUFFckIscUJBQWdCLEdBQUcsTUFBTSxDQUFzQjtZQUM5RCxFQUFFLEVBQUcsRUFBRTtZQUNQLElBQUksRUFBRyxFQUFFO1lBQ1QsTUFBTSxFQUFFLEVBQUU7WUFDVixPQUFPLEVBQUUsSUFBSTtZQUNiLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQyxDQUFDO1FBRWtDLGtCQUFhLEdBQW9DLElBQUksQ0FBQztRQXFCbEYsYUFBUSxHQUFHLFFBQVEsQ0FBYSxHQUFHLEVBQUU7WUFDNUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDaEQsSUFBRyxDQUFDLGVBQWUsRUFBQyxDQUFDO2dC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OytCQUNFLDhCQUE4QixjQUM1QixJQUFJLFdBQ1AsQ0FBQyx3QkFBd0IsQ0FBQzs4QkFRL0Isb0JBQW9CO3NCQUR2QixLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO2dCQUsxQixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBVStCLGFBQWE7c0JBQWpELFNBQVM7dUJBQUMsd0JBQXdCO2dCQWtHekIsWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIHNpZ25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJpbXBsdXNGbGF0VHJlZUNvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtZmxhdC10cmVlL2JpbXBsdXMtZmxhdC10cmVlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZsYXROb2RlLCBUcmVlTm9kZSB9IGZyb20gJy4uL2JpbXBsdXMtZmxhdC10cmVlL2JpbXBsdXMtZmxhdC10cmVlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IE9iamVjdFN0cnVjdHVyZU5vZGUgfSBmcm9tICcuL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtCaW1wbHVzRmxhdFRyZWVDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmUuY29tcG9uZW50Lmxlc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCaW1wbHVzT2JqZWN0U3RydWN0dXJlQ29tcG9uZW50e1xyXG4gIC8qKiBUT0RPIHJlbW92ZSBASW5wdXQgb25jZSBzaWduYWwgaW5wdXRzIHJlbGVhc2UgZnJvbSBkZXZlbG9wZXIgcHJldmlldy4gKi9cclxuICAvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lICovXHJcbiAgQElucHV0KHsgYWxpYXM6ICdvYmplY3RTdHJ1Y3R1cmUnIH0pXHJcbiAgc2V0IG9iamVjdFN0cnVjdHVyZVZhbHVlKG5vZGUgOiBPYmplY3RTdHJ1Y3R1cmVOb2RlKXtcclxuICAgIHRoaXMuX29iamVjdFN0cnVjdHVyZS5zZXQobm9kZSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBoYXNDaGVja0JveDE6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGhhc0NoZWNrQm94Mjpib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfb2JqZWN0U3RydWN0dXJlID0gc2lnbmFsPE9iamVjdFN0cnVjdHVyZU5vZGU+KHtcclxuICAgIGlkIDogXCJcIixcclxuICAgIG5hbWUgOiBcIlwiLFxyXG4gICAgcGFyZW50OiBcIlwiLFxyXG4gICAgdmlzaWJsZTogdHJ1ZSxcclxuICAgIG9wYXF1ZTogdHJ1ZVxyXG4gIH0pO1xyXG5cclxuICBAVmlld0NoaWxkKEJpbXBsdXNGbGF0VHJlZUNvbXBvbmVudCkgdHJlZUNvbXBvbmVudDogQmltcGx1c0ZsYXRUcmVlQ29tcG9uZW50IHwgbnVsbCA9IG51bGw7XHJcbiAgXHJcbiAgcHJpdmF0ZSBfY29udmVydE9iamVjdFN0cnVjdHVyZU5vZGVUb1RyZWVOb2RlKG5vZGUgOiBPYmplY3RTdHJ1Y3R1cmVOb2RlKSA6IFRyZWVOb2Rle1xyXG5cclxuICAgIGNvbnN0IHRyZWVOb2RlIDogVHJlZU5vZGUgPSB7XHJcbiAgICAgIG5hbWU6IG5vZGUubmFtZSxcclxuICAgICAgaWQ6IG5vZGUuaWQsXHJcbiAgICAgIHBhcmVudDogbm9kZS5wYXJlbnQgXHJcbiAgICB9O1xyXG5cclxuICAgIGlmKG5vZGUuY2hpbGRyZW4pe1xyXG4gICAgICB0cmVlTm9kZS5jaGlsZHJlbiA9IFtdO1xyXG4gICAgICBmb3IoY29uc3QgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbil7XHJcbiAgICAgICAgY29uc3QgY2hpbGRUcmVlTm9kZSA9IHRoaXMuX2NvbnZlcnRPYmplY3RTdHJ1Y3R1cmVOb2RlVG9UcmVlTm9kZShjaGlsZCk7XHJcbiAgICAgICAgdHJlZU5vZGUuY2hpbGRyZW4ucHVzaChjaGlsZFRyZWVOb2RlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cmVlTm9kZTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHRyZWVEYXRhID0gY29tcHV0ZWQ8VHJlZU5vZGVbXT4oKCkgPT4ge1xyXG4gICAgY29uc3Qgb2JqZWN0U3RydWN0dXJlID0gdGhpcy5fb2JqZWN0U3RydWN0dXJlKCk7XHJcbiAgICBpZighb2JqZWN0U3RydWN0dXJlKXtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLl9jb252ZXJ0T2JqZWN0U3RydWN0dXJlTm9kZVRvVHJlZU5vZGUob2JqZWN0U3RydWN0dXJlKTtcclxuICAgIGlmKCFyb290KXtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbcm9vdF07XHJcbiAgfSlcclxuXHJcblxyXG4gIHByaXZhdGUgX2ZpbmROb2RlKGlkOnN0cmluZywgbm9kZSA6IE9iamVjdFN0cnVjdHVyZU5vZGUpIDogT2JqZWN0U3RydWN0dXJlTm9kZSB8IG51bGx7XHJcbiAgICBpZihub2RlLmlkID09IGlkKXtcclxuICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYobm9kZS5jaGlsZHJlbil7XHJcbiAgICAgIGZvcihjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKXtcclxuICAgICAgICBjb25zdCByZXMgPSB0aGlzLl9maW5kTm9kZShpZCwgY2hpbGQpO1xyXG4gICAgICAgIGlmKHJlcyl7XHJcbiAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlU2VsZWN0ZWROb2Rlcyhub2RlcyA6IEZsYXROb2RlW10pe1xyXG4gICAgaWYobm9kZXMubGVuZ3RoID09PSAxKXtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gdGhpcy5fZmluZE5vZGUobm9kZXNbMF0uaWQsIHRoaXMuX29iamVjdFN0cnVjdHVyZSgpKTtcclxuICAgICAgaWYoc2VsZWN0ZWROb2RlKXtcclxuICAgICAgICB0aGlzLm5vZGVTZWxlY3RlZC5lbWl0KHNlbGVjdGVkTm9kZSk7XHJcbiAgICAgIH1cclxuICAgIH0gICAgXHJcbiAgfVxyXG4gIFxyXG4gIGhhbmRsZVZpc2libGVOb2Rlcyhub2RlcyA6IEZsYXROb2RlW10pe1xyXG4gICAgaWYobm9kZXMubGVuZ3RoID09PSAxKXtcclxuICAgICAgY29uc3QgdmlzaWJsZU5vZGUgPSB0aGlzLl9maW5kTm9kZShub2Rlc1swXS5pZCwgdGhpcy5fb2JqZWN0U3RydWN0dXJlKCkpO1xyXG4gICAgICBpZih2aXNpYmxlTm9kZSl7XHJcbiAgICAgICAgY29uc3Qgb3V0cHVEYXRhOk9iamVjdFN0cnVjdHVyZU5vZGUgPXtcclxuICAgICAgICAgIG5hbWU6dmlzaWJsZU5vZGUubmFtZSxcclxuICAgICAgICAgIHBhcmVudDogdmlzaWJsZU5vZGUucGFyZW50LCAgICAgICAgICBcclxuICAgICAgICAgIGlkOiB2aXNpYmxlTm9kZS5pZCxcclxuICAgICAgICAgIHZpc2libGU6IG5vZGVzWzBdLmlzQ2hlY2tlZDIsXHJcbiAgICAgICAgICBvcGFxdWU6ICBub2Rlc1swXS5pc0NoZWNrZWQxLFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vZGVWaXNpYmxlLmVtaXQob3V0cHVEYXRhKTtcclxuICAgICAgfVxyXG4gICAgfSAgICBcclxuICB9XHJcbiAgXHJcbiAgaGFuZGxlT3BhcXVlTm9kZXMobm9kZXMgOiBGbGF0Tm9kZVtdKXtcclxuICAgIGlmKG5vZGVzLmxlbmd0aCA9PT0gMSl7XHJcbiAgICAgIGNvbnN0IG9wYXF1ZU5vZGUgPSB0aGlzLl9maW5kTm9kZShub2Rlc1swXS5pZCwgdGhpcy5fb2JqZWN0U3RydWN0dXJlKCkpO1xyXG4gICAgICBpZihvcGFxdWVOb2RlKXtcclxuICAgICAgICBjb25zdCBvdXRwdURhdGE6T2JqZWN0U3RydWN0dXJlTm9kZSA9e1xyXG4gICAgICAgICAgbmFtZTpvcGFxdWVOb2RlLm5hbWUsXHJcbiAgICAgICAgICBwYXJlbnQ6IG9wYXF1ZU5vZGUucGFyZW50LCAgICAgICAgICBcclxuICAgICAgICAgIGlkOiBvcGFxdWVOb2RlLmlkLFxyXG4gICAgICAgICAgdmlzaWJsZTogbm9kZXNbMF0uaXNDaGVja2VkMixcclxuICAgICAgICAgIG9wYXF1ZTogIG5vZGVzWzBdLmlzQ2hlY2tlZDEsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZU9wYXF1ZS5lbWl0KG91dHB1RGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH0gICAgXHJcbiAgfVxyXG5cclxuICBleHBhbmRUcmVlKCl7XHJcbiAgICB0aGlzLnRyZWVDb21wb25lbnQ/LmV4cGFuZFRyZWUoKTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBub2RlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE9iamVjdFN0cnVjdHVyZU5vZGU+KCk7XHJcbiAgQE91dHB1dCgpIG5vZGVWaXNpYmxlICA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0U3RydWN0dXJlTm9kZT4oKTtcclxuICBAT3V0cHV0KCkgbm9kZU9wYXF1ZSAgID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3RTdHJ1Y3R1cmVOb2RlPigpO1xyXG59XHJcbiIsIjxsaWItYmltcGx1cy1mbGF0LXRyZWVcclxuICBwYWRkaW5nSW5kZW50PVwiMS40cmVtXCJcclxuICBbdHJlZURhdGFdPVwidHJlZURhdGEoKVwiXHJcbiAgZW5hYmxlUGFyZW50SGlnaGxpZ2h0aW5nPVwiZmFsc2VcIlxyXG4gIChzZWxlY3RlZE5vZGVzKSA9IFwiaGFuZGxlU2VsZWN0ZWROb2RlcygkZXZlbnQpXCJcclxuICAoY2hlY2tlZDJOb2RlcykgPSBcImhhbmRsZVZpc2libGVOb2RlcygkZXZlbnQpXCJcclxuICAoY2hlY2tlZDFOb2RlcykgPSBcImhhbmRsZU9wYXF1ZU5vZGVzKCRldmVudClcIlxyXG4gIGRhdGFUZXN0UHJlZml4PVwib2JqZWN0LXN0cnVjdHVyZS10cmVlLVwiXHJcbiAgW2hhc0NoZWNrQm94MV09XCJoYXNDaGVja0JveDFcIlxyXG4gIFtoYXNDaGVja0JveDJdPVwiaGFzQ2hlY2tCb3gyXCJcclxuPjwvbGliLWJpbXBsdXMtZmxhdC10cmVlPlxyXG4iXX0=