@smarterplan/ngx-smarterplan-locations 0.2.19 → 0.2.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/zones/zones.component.mjs +4 -3
- package/esm2020/lib/ngx-smarterplan-locations.module.mjs +6 -3
- package/esm2020/lib/pipes/count-audio-sweeps.pipe.mjs +27 -0
- package/fesm2015/smarterplan-ngx-smarterplan-locations.mjs +33 -5
- package/fesm2015/smarterplan-ngx-smarterplan-locations.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-locations.mjs +31 -5
- package/fesm2020/smarterplan-ngx-smarterplan-locations.mjs.map +1 -1
- package/lib/ngx-smarterplan-locations.module.d.ts +11 -10
- package/lib/pipes/count-audio-sweeps.pipe.d.ts +10 -0
- package/package.json +2 -2
|
@@ -10,6 +10,7 @@ import * as i5 from "../chevron/chevron.component";
|
|
|
10
10
|
import * as i6 from "./add-zone/add-zone.component";
|
|
11
11
|
import * as i7 from "./add-audio-zone/add-audio-zone.component";
|
|
12
12
|
import * as i8 from "@angular/common";
|
|
13
|
+
import * as i9 from "../../pipes/count-audio-sweeps.pipe";
|
|
13
14
|
export class ZonesComponent {
|
|
14
15
|
constructor(route, zoneService, spaceService, visitService, navigationService, userService, planService, translate) {
|
|
15
16
|
this.route = route;
|
|
@@ -221,11 +222,11 @@ export class ZonesComponent {
|
|
|
221
222
|
}
|
|
222
223
|
}
|
|
223
224
|
ZonesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZonesComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.ZoneService }, { token: i2.SpaceService }, { token: i2.VisitService }, { token: i2.NavigationService }, { token: i2.BaseUserService }, { token: i2.PlanService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
224
|
-
ZonesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: ZonesComponent, selector: "lib-zones", outputs: { updatedZone: "updatedZone" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-fluid\" *ngIf=\"currentSpace\">\r\n <div class=\"m-3\">\r\n <lib-tab-navigation [menuItems]='menuItems' (onGoBack)=\"onGoBack()\"></lib-tab-navigation>\r\n </div>\r\n <div class=\"row\" *ngIf=\"!isEditingZone && !isAddingAudioTrack\">\r\n <div class=\"col-md-6\">\r\n <ul class=\"list-group list-group-flush\" >\r\n <li class=\"list-group-item default-zone-line-item\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\" *ngIf=\"defaultZone\">\r\n {{defaultZone.name}}\r\n <div class=\"default-zone-label\">{{ \"whole space\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"defaultShowing\" (click)=\"onToggleDefaultZone()\"></lib-chevron>\r\n </div>\r\n <div *ngIf=\"defaultShowing\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\">{{'Type of zone' | translate}}: \r\n {{defaultZone.layer ? defaultZone.layer.name : \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"defaultZone.surface\">\r\n {{'Surface' | translate}}, m<sup>2</sup>: {{defaultZone.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!defaultZone.virtual\">{{'Scan Points' | translate}}:\r\n {{defaultZone.sweepIDs ? defaultZone.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n </ul>\r\n <div *ngFor=\"let pair of zonesMap | keyvalue\">\r\n <div *ngIf=\"pair.key == defaultZone.id\">\r\n <h5 style=\"margin: 8px;\" *ngIf=\"pair.value.length > 0\">{{'Children zones'|translate}}</h5>\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item list-group-flush list-group-item-action\"\r\n *ngFor=\"let lot of pair.value; index as zoneIndex\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\">\r\n {{lot.name}}\r\n <div class=\"museum-label\" *ngIf=\"lot.isMuseumVisitZone\">{{ \"itinerary\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"zoneIndex==lotIndexDetails\" (click)=\"onToggleDetail(zoneIndex, lot)\"></lib-chevron>\r\n \r\n </div>\r\n <div *ngIf=\"zoneIndex==lotIndexDetails\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.isMuseumVisitZone\">{{'Type of zone' |\r\n translate}}: {{lot.layer ? lot.layer.name :\r\n \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.surface\">\r\n {{'Surface' | translate}},m<sup>2</sup>: {{lot.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.virtual\">{{'Scan Points' | translate}}:\r\n {{lot.sweepIDs ? lot.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.virtual\">\r\n {{'Zone not visible in 3D visit' | translate}}</li>\r\n </ul>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill me-2\"\r\n (click)=\"onEdit(lot)\">{{'Edit' | translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddAudioZone(lot)\"\r\n *ngIf=\"isMuseumModule\"> {{'add-audio.add' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill\"\r\n (click)=\"onDelete(lot)\">{{'Delete' | translate}}</button>\r\n </div>\r\n </li>\r\n </ul>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n \r\n <li class=\"list-group-item\" *ngFor=\"let floor of floorZones; index as index\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\">\r\n {{floor.name}}\r\n <!-- <small>({{ lot.metadata ? ('Calibrated' | translate) : ('Not calibrated' | translate)}})</small> -->\r\n <div class=\"museum-label\" *ngIf=\"floor.isMuseumVisitZone\">{{ \"itinerary\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"index==floorDetails\" (click)=\"onToggleDetailFloor(index, floor)\"></lib-chevron>\r\n </div>\r\n <div *ngIf=\"index==floorDetails\"> \r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\">{{'Type of zone' | translate}}: {{floor.layer ?\r\n floor.layer.name :\r\n \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"floor.surface\">{{'Surface' | translate}}, m<sup>2</sup>:\r\n {{floor.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!floor.virtual\">{{'Scan Points' | translate}}:\r\n {{floor.sweepIDs ? floor.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"floor.virtual\">{{'Zone not visible in 3D visit' |\r\n translate}}</li>\r\n </ul>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onEdit(floor)\">{{'Edit' |\r\n translate}}</button>\r\n \r\n <!-- List of children zones -->\r\n \r\n <div *ngFor=\"let pair of zonesMap | keyvalue\">\r\n <div *ngIf=\"pair.key == floor.id\">\r\n <h5 style=\"margin: 8px;\" *ngIf=\"pair.value.length > 0\">{{'Children zones'|translate}}</h5>\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item list-group-flush list-group-item-action\"\r\n *ngFor=\"let lot of pair.value; index as zoneIndex\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\">\r\n {{lot.name}}\r\n <div class=\"museum-label\" *ngIf=\"lot.isMuseumVisitZone\">{{ \"itinerary\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"zoneIndex==lotIndexDetails\" (click)=\"onToggleDetail(zoneIndex, lot)\"></lib-chevron>\r\n \r\n </div>\r\n <div *ngIf=\"zoneIndex==lotIndexDetails\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.isMuseumVisitZone\">{{'Type of zone' |\r\n translate}}: {{lot.layer ? lot.layer.name :\r\n \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.surface\">{{'Surface' | translate}},\r\n m<sup>2</sup>:\r\n {{lot.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.virtual\">{{'Scan Points' | translate}}:\r\n {{lot.sweepIDs ? lot.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.virtual\">{{'Zone not visible in 3D visit'\r\n |\r\n translate}}</li>\r\n </ul>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill me-2\"\r\n (click)=\"onEdit(lot)\">{{'Edit' | translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddAudioZone(lot)\"\r\n *ngIf=\"isMuseumModule\"> {{'add-audio.add' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill\"\r\n (click)=\"onDelete(lot)\">{{'Delete' | translate}}</button>\r\n </div>\r\n </li>\r\n </ul>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n \r\n <div>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddLot()\">{{'Add zone' |\r\n translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddMuseumZone()\"\r\n *ngIf=\"isMuseumModule\"> {{'Add museum itinerary' | translate}}</button>\r\n <!-- <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddAudioZone()\"\r\n *ngIf=\"isMuseumModule\"> {{'add-audio.add' | translate}}</button> -->\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"loadingPlan\">\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n </div>\r\n <div class=\"row\" style=\"overflow: hidden;\" *ngIf=\"currentZone\">\r\n <div class=\"mt-3 ms-3\" style=\"height: 500px; width: 100%;\" id=\"planDiv\" *ngIf=\"currentPlan\"></div>\r\n <div *ngIf=\"!currentPlan && plans && !loadingPlan\">\r\n <div class=\"mt-3 ms-3\" id=\"no-plan\" *ngIf=\"!currentZone.virtual && !currentZone.isMultipleFloorZone\">\r\n {{ 'Plan is not calibrated' | translate}}\r\n </div>\r\n <div class=\"mt-3 ms-3\" id=\"no-plan\" *ngIf=\"currentZone.virtual\">\r\n {{ 'No scan points chosen' | translate}}\r\n </div>\r\n <div class=\"mt-3 ms-3\" id=\"no-plan\" *ngIf=\"currentZone.isMultipleFloorZone\">\r\n {{ 'The zone is on several floors' | translate}}\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\" *ngIf=\"isEditingZone\">\r\n <lib-add-zone [zoneEdit]=\"zoneForEdit\" [spaceID]=\"spaceID\" [images360]=\"images360\" [navigationIDs]=\"navigations\"\r\n [zones]=\"allZones\" [defaultZone]=\"defaultZone\" (updatedZone)=\"editCompleted($event)\" [isMuseumVisit]=\"isMuseumVisit\"></lib-add-zone>\r\n </div>\r\n <div class=\"mb-3\" *ngIf=\"isAddingAudioTrack\">\r\n <lib-add-audio-zone [spaceID]=\"spaceID\" [defaultZone]=\"defaultZone\" [parentZone]=\"parentZoneForAudio\" [zones]=\"allZones\" [currentAudioZone]=\"zoneForEdit\"\r\n (updatedZone)=\"editCompleted($event)\"></lib-add-audio-zone>\r\n </div>\r\n </div>\r\n", styles: [".museum-label{background-color:#6f3974;font-size:.95rem;border-radius:10px;padding:5px 10px;color:#fff;text-transform:uppercase;margin-left:auto;margin-right:8px}.default-zone-line-item{border-bottom-width:3px}.default-zone-label{background-color:var(--smarterplan-primary);font-size:.95rem;border-radius:10px;padding:5px 10px;color:#fff;text-transform:uppercase;margin-left:auto;margin-right:8px}\n"], components: [{ type: i4.TabNavigationComponent, selector: "lib-tab-navigation", inputs: ["menuItems"], outputs: ["onGoBack"] }, { type: i5.ChevronComponent, selector: "lib-chevron", inputs: ["conditionShowing"] }, { type: i6.AddZoneComponent, selector: "lib-add-zone", inputs: ["zoneEdit", "spaceID", "images360", "navigationIDs", "zones", "newZoneDataFromEditor", "chosenPlan", "isMuseumVisit", "defaultZone"], outputs: ["updatedZone"] }, { type: i7.AddAudioZoneComponent, selector: "lib-add-audio-zone", inputs: ["spaceID", "defaultZone", "zones", "parentZone", "currentAudioZone"], outputs: ["updatedZone"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i3.TranslatePipe, "keyvalue": i8.KeyValuePipe } });
|
|
225
|
+
ZonesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: ZonesComponent, selector: "lib-zones", outputs: { updatedZone: "updatedZone" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-fluid\" *ngIf=\"currentSpace\">\r\n <div class=\"m-3\">\r\n <lib-tab-navigation [menuItems]='menuItems' (onGoBack)=\"onGoBack()\"></lib-tab-navigation>\r\n </div>\r\n <div class=\"row\" *ngIf=\"!isEditingZone && !isAddingAudioTrack\">\r\n <div class=\"col-md-6\">\r\n <ul class=\"list-group list-group-flush\" >\r\n <li class=\"list-group-item default-zone-line-item\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\" *ngIf=\"defaultZone\">\r\n {{defaultZone.name}}\r\n <div class=\"default-zone-label\">{{ \"whole space\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"defaultShowing\" (click)=\"onToggleDefaultZone()\"></lib-chevron>\r\n </div>\r\n <div *ngIf=\"defaultShowing\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\">{{'Type of zone' | translate}}: \r\n {{defaultZone.layer ? defaultZone.layer.name : \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"defaultZone.surface\">\r\n {{'Surface' | translate}}, m<sup>2</sup>: {{defaultZone.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!defaultZone.virtual\">{{'Scan Points' | translate}}:\r\n {{defaultZone.sweepIDs ? defaultZone.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n </ul>\r\n <div *ngFor=\"let pair of zonesMap | keyvalue\">\r\n <div *ngIf=\"pair.key == defaultZone.id\">\r\n <h5 style=\"margin: 8px;\" *ngIf=\"pair.value.length > 0\">{{'Children zones'|translate}}</h5>\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item list-group-flush list-group-item-action\"\r\n *ngFor=\"let lot of pair.value; index as zoneIndex\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\">\r\n {{lot.name}}\r\n <div class=\"museum-label\" *ngIf=\"lot.isMuseumVisitZone\">{{ \"itinerary\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"zoneIndex==lotIndexDetails\" (click)=\"onToggleDetail(zoneIndex, lot)\"></lib-chevron>\r\n \r\n </div>\r\n <div *ngIf=\"zoneIndex==lotIndexDetails\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.isMuseumVisitZone\">{{'Type of zone' |\r\n translate}}: {{lot.layer ? lot.layer.name :\r\n \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.surface\">\r\n {{'Surface' | translate}},m<sup>2</sup>: {{lot.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.virtual\">{{'Scan Points' | translate}}:\r\n {{lot.sweepIDs ? lot.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.virtual\">\r\n {{'Zone not visible in 3D visit' | translate}}</li>\r\n </ul>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill me-2\"\r\n (click)=\"onEdit(lot)\">{{'Edit' | translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddAudioZone(lot)\"\r\n *ngIf=\"isMuseumModule\"> {{'add-audio.add' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill\"\r\n (click)=\"onDelete(lot)\">{{'Delete' | translate}}</button>\r\n </div>\r\n </li>\r\n </ul>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n \r\n <li class=\"list-group-item\" *ngFor=\"let floor of floorZones; index as index\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\">\r\n {{floor.name}}\r\n <!-- <small>({{ lot.metadata ? ('Calibrated' | translate) : ('Not calibrated' | translate)}})</small> -->\r\n <div class=\"museum-label\" *ngIf=\"floor.isMuseumVisitZone\">{{ \"itinerary\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"index==floorDetails\" (click)=\"onToggleDetailFloor(index, floor)\"></lib-chevron>\r\n </div>\r\n <div *ngIf=\"index==floorDetails\"> \r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\">{{'Type of zone' | translate}}: {{floor.layer ?\r\n floor.layer.name :\r\n \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"floor.surface\">{{'Surface' | translate}}, m<sup>2</sup>:\r\n {{floor.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!floor.virtual\">{{'Scan Points' | translate}}:\r\n {{floor.sweepIDs ? floor.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"floor.virtual\">{{'Zone not visible in 3D visit' |\r\n translate}}</li>\r\n </ul>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onEdit(floor)\">{{'Edit' |\r\n translate}}</button>\r\n \r\n <!-- List of children zones -->\r\n \r\n <div *ngFor=\"let pair of zonesMap | keyvalue\">\r\n <div *ngIf=\"pair.key == floor.id\">\r\n <h5 style=\"margin: 8px;\" *ngIf=\"pair.value.length > 0\">{{'Children zones'|translate}}</h5>\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item list-group-flush list-group-item-action\"\r\n *ngFor=\"let lot of pair.value; index as zoneIndex\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\">\r\n {{lot.name}}\r\n <div class=\"museum-label\" *ngIf=\"lot.isMuseumVisitZone\">{{ \"itinerary\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"zoneIndex==lotIndexDetails\" (click)=\"onToggleDetail(zoneIndex, lot)\"></lib-chevron>\r\n \r\n </div>\r\n <div *ngIf=\"zoneIndex==lotIndexDetails\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.isMuseumVisitZone\">{{'Type of zone' |\r\n translate}}: {{lot.layer ? lot.layer.name :\r\n \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.surface\">{{'Surface' | translate}},\r\n m<sup>2</sup>:\r\n {{lot.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.virtual\">{{'Scan Points' | translate}}:\r\n {{lot.sweepIDs ? lot.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.virtual && lot.isMuseumVisitZone\">\r\n {{'Scan Points with audio' | translate}}: {{ lot | countAudioSweeps | async}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.virtual\">\r\n {{'Zone not visible in 3D visit' | translate}}</li>\r\n </ul>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill me-2\"\r\n (click)=\"onEdit(lot)\">{{'Edit' | translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddAudioZone(lot)\"\r\n *ngIf=\"isMuseumModule\"> {{'add-audio.add' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill\"\r\n (click)=\"onDelete(lot)\">{{'Delete' | translate}}</button>\r\n </div>\r\n </li>\r\n </ul>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n \r\n <div>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddLot()\">{{'Add zone' |\r\n translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddMuseumZone()\"\r\n *ngIf=\"isMuseumModule\"> {{'Add museum itinerary' | translate}}</button>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"loadingPlan\">\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n </div>\r\n <div class=\"row\" style=\"overflow: hidden;\" *ngIf=\"currentZone\">\r\n <div class=\"mt-3 ms-3\" style=\"height: 500px; width: 100%;\" id=\"planDiv\" *ngIf=\"currentPlan\"></div>\r\n <div *ngIf=\"!currentPlan && plans && !loadingPlan\">\r\n <div class=\"mt-3 ms-3\" id=\"no-plan\" *ngIf=\"!currentZone.virtual && !currentZone.isMultipleFloorZone\">\r\n {{ 'Plan is not calibrated' | translate}}\r\n </div>\r\n <div class=\"mt-3 ms-3\" id=\"no-plan\" *ngIf=\"currentZone.virtual\">\r\n {{ 'No scan points chosen' | translate}}\r\n </div>\r\n <div class=\"mt-3 ms-3\" id=\"no-plan\" *ngIf=\"currentZone.isMultipleFloorZone\">\r\n {{ 'The zone is on several floors' | translate}}\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\" *ngIf=\"isEditingZone\">\r\n <lib-add-zone [zoneEdit]=\"zoneForEdit\" [spaceID]=\"spaceID\" [images360]=\"images360\" [navigationIDs]=\"navigations\"\r\n [zones]=\"allZones\" [defaultZone]=\"defaultZone\" (updatedZone)=\"editCompleted($event)\" [isMuseumVisit]=\"isMuseumVisit\"></lib-add-zone>\r\n </div>\r\n <div class=\"mb-3\" *ngIf=\"isAddingAudioTrack\">\r\n <lib-add-audio-zone [spaceID]=\"spaceID\" [defaultZone]=\"defaultZone\" [parentZone]=\"parentZoneForAudio\" [zones]=\"allZones\" [currentAudioZone]=\"zoneForEdit\"\r\n (updatedZone)=\"editCompleted($event)\"></lib-add-audio-zone>\r\n </div>\r\n </div>\r\n", styles: [".museum-label{background-color:#6f3974;font-size:.95rem;border-radius:10px;padding:5px 10px;color:#fff;text-transform:uppercase;margin-left:auto;margin-right:8px}.default-zone-line-item{border-bottom-width:3px}.default-zone-label{background-color:var(--smarterplan-primary);font-size:.95rem;border-radius:10px;padding:5px 10px;color:#fff;text-transform:uppercase;margin-left:auto;margin-right:8px}\n"], components: [{ type: i4.TabNavigationComponent, selector: "lib-tab-navigation", inputs: ["menuItems"], outputs: ["onGoBack"] }, { type: i5.ChevronComponent, selector: "lib-chevron", inputs: ["conditionShowing"] }, { type: i6.AddZoneComponent, selector: "lib-add-zone", inputs: ["zoneEdit", "spaceID", "images360", "navigationIDs", "zones", "newZoneDataFromEditor", "chosenPlan", "isMuseumVisit", "defaultZone"], outputs: ["updatedZone"] }, { type: i7.AddAudioZoneComponent, selector: "lib-add-audio-zone", inputs: ["spaceID", "defaultZone", "zones", "parentZone", "currentAudioZone"], outputs: ["updatedZone"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i3.TranslatePipe, "keyvalue": i8.KeyValuePipe, "async": i8.AsyncPipe, "countAudioSweeps": i9.CountAudioSweepsPipe } });
|
|
225
226
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZonesComponent, decorators: [{
|
|
226
227
|
type: Component,
|
|
227
|
-
args: [{ selector: 'lib-zones', template: "<div class=\"container-fluid\" *ngIf=\"currentSpace\">\r\n <div class=\"m-3\">\r\n <lib-tab-navigation [menuItems]='menuItems' (onGoBack)=\"onGoBack()\"></lib-tab-navigation>\r\n </div>\r\n <div class=\"row\" *ngIf=\"!isEditingZone && !isAddingAudioTrack\">\r\n <div class=\"col-md-6\">\r\n <ul class=\"list-group list-group-flush\" >\r\n <li class=\"list-group-item default-zone-line-item\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\" *ngIf=\"defaultZone\">\r\n {{defaultZone.name}}\r\n <div class=\"default-zone-label\">{{ \"whole space\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"defaultShowing\" (click)=\"onToggleDefaultZone()\"></lib-chevron>\r\n </div>\r\n <div *ngIf=\"defaultShowing\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\">{{'Type of zone' | translate}}: \r\n {{defaultZone.layer ? defaultZone.layer.name : \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"defaultZone.surface\">\r\n {{'Surface' | translate}}, m<sup>2</sup>: {{defaultZone.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!defaultZone.virtual\">{{'Scan Points' | translate}}:\r\n {{defaultZone.sweepIDs ? defaultZone.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n </ul>\r\n <div *ngFor=\"let pair of zonesMap | keyvalue\">\r\n <div *ngIf=\"pair.key == defaultZone.id\">\r\n <h5 style=\"margin: 8px;\" *ngIf=\"pair.value.length > 0\">{{'Children zones'|translate}}</h5>\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item list-group-flush list-group-item-action\"\r\n *ngFor=\"let lot of pair.value; index as zoneIndex\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\">\r\n {{lot.name}}\r\n <div class=\"museum-label\" *ngIf=\"lot.isMuseumVisitZone\">{{ \"itinerary\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"zoneIndex==lotIndexDetails\" (click)=\"onToggleDetail(zoneIndex, lot)\"></lib-chevron>\r\n \r\n </div>\r\n <div *ngIf=\"zoneIndex==lotIndexDetails\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.isMuseumVisitZone\">{{'Type of zone' |\r\n translate}}: {{lot.layer ? lot.layer.name :\r\n \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.surface\">\r\n {{'Surface' | translate}},m<sup>2</sup>: {{lot.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.virtual\">{{'Scan Points' | translate}}:\r\n {{lot.sweepIDs ? lot.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.virtual\">\r\n {{'Zone not visible in 3D visit' | translate}}</li>\r\n </ul>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill me-2\"\r\n (click)=\"onEdit(lot)\">{{'Edit' | translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddAudioZone(lot)\"\r\n *ngIf=\"isMuseumModule\"> {{'add-audio.add' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill\"\r\n (click)=\"onDelete(lot)\">{{'Delete' | translate}}</button>\r\n </div>\r\n </li>\r\n </ul>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n \r\n <li class=\"list-group-item\" *ngFor=\"let floor of floorZones; index as index\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\">\r\n {{floor.name}}\r\n <!-- <small>({{ lot.metadata ? ('Calibrated' | translate) : ('Not calibrated' | translate)}})</small> -->\r\n <div class=\"museum-label\" *ngIf=\"floor.isMuseumVisitZone\">{{ \"itinerary\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"index==floorDetails\" (click)=\"onToggleDetailFloor(index, floor)\"></lib-chevron>\r\n </div>\r\n <div *ngIf=\"index==floorDetails\"> \r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\">{{'Type of zone' | translate}}: {{floor.layer ?\r\n floor.layer.name :\r\n \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"floor.surface\">{{'Surface' | translate}}, m<sup>2</sup>:\r\n {{floor.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!floor.virtual\">{{'Scan Points' | translate}}:\r\n {{floor.sweepIDs ? floor.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"floor.virtual\">{{'Zone not visible in 3D visit' |\r\n translate}}</li>\r\n </ul>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onEdit(floor)\">{{'Edit' |\r\n translate}}</button>\r\n \r\n <!-- List of children zones -->\r\n \r\n <div *ngFor=\"let pair of zonesMap | keyvalue\">\r\n <div *ngIf=\"pair.key == floor.id\">\r\n <h5 style=\"margin: 8px;\" *ngIf=\"pair.value.length > 0\">{{'Children zones'|translate}}</h5>\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item list-group-flush list-group-item-action\"\r\n *ngFor=\"let lot of pair.value; index as zoneIndex\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\">\r\n {{lot.name}}\r\n <div class=\"museum-label\" *ngIf=\"lot.isMuseumVisitZone\">{{ \"itinerary\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"zoneIndex==lotIndexDetails\" (click)=\"onToggleDetail(zoneIndex, lot)\"></lib-chevron>\r\n \r\n </div>\r\n <div *ngIf=\"zoneIndex==lotIndexDetails\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.isMuseumVisitZone\">{{'Type of zone' |\r\n translate}}: {{lot.layer ? lot.layer.name :\r\n \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.surface\">{{'Surface' | translate}},\r\n m<sup>2</sup>:\r\n {{lot.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.virtual\">{{'Scan Points' | translate}}:\r\n {{lot.sweepIDs ? lot.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.virtual\">{{'Zone not visible in 3D visit'\r\n |\r\n translate}}</li>\r\n </ul>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill me-2\"\r\n (click)=\"onEdit(lot)\">{{'Edit' | translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddAudioZone(lot)\"\r\n *ngIf=\"isMuseumModule\"> {{'add-audio.add' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill\"\r\n (click)=\"onDelete(lot)\">{{'Delete' | translate}}</button>\r\n </div>\r\n </li>\r\n </ul>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n \r\n <div>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddLot()\">{{'Add zone' |\r\n translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddMuseumZone()\"\r\n *ngIf=\"isMuseumModule\"> {{'Add museum itinerary' | translate}}</button>\r\n <!-- <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddAudioZone()\"\r\n *ngIf=\"isMuseumModule\"> {{'add-audio.add' | translate}}</button> -->\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"loadingPlan\">\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n </div>\r\n <div class=\"row\" style=\"overflow: hidden;\" *ngIf=\"currentZone\">\r\n <div class=\"mt-3 ms-3\" style=\"height: 500px; width: 100%;\" id=\"planDiv\" *ngIf=\"currentPlan\"></div>\r\n <div *ngIf=\"!currentPlan && plans && !loadingPlan\">\r\n <div class=\"mt-3 ms-3\" id=\"no-plan\" *ngIf=\"!currentZone.virtual && !currentZone.isMultipleFloorZone\">\r\n {{ 'Plan is not calibrated' | translate}}\r\n </div>\r\n <div class=\"mt-3 ms-3\" id=\"no-plan\" *ngIf=\"currentZone.virtual\">\r\n {{ 'No scan points chosen' | translate}}\r\n </div>\r\n <div class=\"mt-3 ms-3\" id=\"no-plan\" *ngIf=\"currentZone.isMultipleFloorZone\">\r\n {{ 'The zone is on several floors' | translate}}\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\" *ngIf=\"isEditingZone\">\r\n <lib-add-zone [zoneEdit]=\"zoneForEdit\" [spaceID]=\"spaceID\" [images360]=\"images360\" [navigationIDs]=\"navigations\"\r\n [zones]=\"allZones\" [defaultZone]=\"defaultZone\" (updatedZone)=\"editCompleted($event)\" [isMuseumVisit]=\"isMuseumVisit\"></lib-add-zone>\r\n </div>\r\n <div class=\"mb-3\" *ngIf=\"isAddingAudioTrack\">\r\n <lib-add-audio-zone [spaceID]=\"spaceID\" [defaultZone]=\"defaultZone\" [parentZone]=\"parentZoneForAudio\" [zones]=\"allZones\" [currentAudioZone]=\"zoneForEdit\"\r\n (updatedZone)=\"editCompleted($event)\"></lib-add-audio-zone>\r\n </div>\r\n </div>\r\n", styles: [".museum-label{background-color:#6f3974;font-size:.95rem;border-radius:10px;padding:5px 10px;color:#fff;text-transform:uppercase;margin-left:auto;margin-right:8px}.default-zone-line-item{border-bottom-width:3px}.default-zone-label{background-color:var(--smarterplan-primary);font-size:.95rem;border-radius:10px;padding:5px 10px;color:#fff;text-transform:uppercase;margin-left:auto;margin-right:8px}\n"] }]
|
|
228
|
+
args: [{ selector: 'lib-zones', template: "<div class=\"container-fluid\" *ngIf=\"currentSpace\">\r\n <div class=\"m-3\">\r\n <lib-tab-navigation [menuItems]='menuItems' (onGoBack)=\"onGoBack()\"></lib-tab-navigation>\r\n </div>\r\n <div class=\"row\" *ngIf=\"!isEditingZone && !isAddingAudioTrack\">\r\n <div class=\"col-md-6\">\r\n <ul class=\"list-group list-group-flush\" >\r\n <li class=\"list-group-item default-zone-line-item\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\" *ngIf=\"defaultZone\">\r\n {{defaultZone.name}}\r\n <div class=\"default-zone-label\">{{ \"whole space\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"defaultShowing\" (click)=\"onToggleDefaultZone()\"></lib-chevron>\r\n </div>\r\n <div *ngIf=\"defaultShowing\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\">{{'Type of zone' | translate}}: \r\n {{defaultZone.layer ? defaultZone.layer.name : \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"defaultZone.surface\">\r\n {{'Surface' | translate}}, m<sup>2</sup>: {{defaultZone.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!defaultZone.virtual\">{{'Scan Points' | translate}}:\r\n {{defaultZone.sweepIDs ? defaultZone.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n </ul>\r\n <div *ngFor=\"let pair of zonesMap | keyvalue\">\r\n <div *ngIf=\"pair.key == defaultZone.id\">\r\n <h5 style=\"margin: 8px;\" *ngIf=\"pair.value.length > 0\">{{'Children zones'|translate}}</h5>\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item list-group-flush list-group-item-action\"\r\n *ngFor=\"let lot of pair.value; index as zoneIndex\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\">\r\n {{lot.name}}\r\n <div class=\"museum-label\" *ngIf=\"lot.isMuseumVisitZone\">{{ \"itinerary\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"zoneIndex==lotIndexDetails\" (click)=\"onToggleDetail(zoneIndex, lot)\"></lib-chevron>\r\n \r\n </div>\r\n <div *ngIf=\"zoneIndex==lotIndexDetails\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.isMuseumVisitZone\">{{'Type of zone' |\r\n translate}}: {{lot.layer ? lot.layer.name :\r\n \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.surface\">\r\n {{'Surface' | translate}},m<sup>2</sup>: {{lot.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.virtual\">{{'Scan Points' | translate}}:\r\n {{lot.sweepIDs ? lot.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.virtual\">\r\n {{'Zone not visible in 3D visit' | translate}}</li>\r\n </ul>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill me-2\"\r\n (click)=\"onEdit(lot)\">{{'Edit' | translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddAudioZone(lot)\"\r\n *ngIf=\"isMuseumModule\"> {{'add-audio.add' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill\"\r\n (click)=\"onDelete(lot)\">{{'Delete' | translate}}</button>\r\n </div>\r\n </li>\r\n </ul>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n \r\n <li class=\"list-group-item\" *ngFor=\"let floor of floorZones; index as index\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\">\r\n {{floor.name}}\r\n <!-- <small>({{ lot.metadata ? ('Calibrated' | translate) : ('Not calibrated' | translate)}})</small> -->\r\n <div class=\"museum-label\" *ngIf=\"floor.isMuseumVisitZone\">{{ \"itinerary\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"index==floorDetails\" (click)=\"onToggleDetailFloor(index, floor)\"></lib-chevron>\r\n </div>\r\n <div *ngIf=\"index==floorDetails\"> \r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\">{{'Type of zone' | translate}}: {{floor.layer ?\r\n floor.layer.name :\r\n \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"floor.surface\">{{'Surface' | translate}}, m<sup>2</sup>:\r\n {{floor.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!floor.virtual\">{{'Scan Points' | translate}}:\r\n {{floor.sweepIDs ? floor.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"floor.virtual\">{{'Zone not visible in 3D visit' |\r\n translate}}</li>\r\n </ul>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onEdit(floor)\">{{'Edit' |\r\n translate}}</button>\r\n \r\n <!-- List of children zones -->\r\n \r\n <div *ngFor=\"let pair of zonesMap | keyvalue\">\r\n <div *ngIf=\"pair.key == floor.id\">\r\n <h5 style=\"margin: 8px;\" *ngIf=\"pair.value.length > 0\">{{'Children zones'|translate}}</h5>\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item list-group-flush list-group-item-action\"\r\n *ngFor=\"let lot of pair.value; index as zoneIndex\">\r\n <div class=\"d-flex justify-content-between align-items-center zone-name\">\r\n {{lot.name}}\r\n <div class=\"museum-label\" *ngIf=\"lot.isMuseumVisitZone\">{{ \"itinerary\" | translate }}</div>\r\n <lib-chevron [conditionShowing]=\"zoneIndex==lotIndexDetails\" (click)=\"onToggleDetail(zoneIndex, lot)\"></lib-chevron>\r\n \r\n </div>\r\n <div *ngIf=\"zoneIndex==lotIndexDetails\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.isMuseumVisitZone\">{{'Type of zone' |\r\n translate}}: {{lot.layer ? lot.layer.name :\r\n \"No type\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.surface\">{{'Surface' | translate}},\r\n m<sup>2</sup>:\r\n {{lot.surface }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.virtual\">{{'Scan Points' | translate}}:\r\n {{lot.sweepIDs ? lot.sweepIDs.length : \"No scan points\" | translate}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"!lot.virtual && lot.isMuseumVisitZone\">\r\n {{'Scan Points with audio' | translate}}: {{ lot | countAudioSweeps | async}} </li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"lot.virtual\">\r\n {{'Zone not visible in 3D visit' | translate}}</li>\r\n </ul>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill me-2\"\r\n (click)=\"onEdit(lot)\">{{'Edit' | translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddAudioZone(lot)\"\r\n *ngIf=\"isMuseumModule\"> {{'add-audio.add' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill\"\r\n (click)=\"onDelete(lot)\">{{'Delete' | translate}}</button>\r\n </div>\r\n </li>\r\n </ul>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n \r\n <div>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddLot()\">{{'Add zone' |\r\n translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill me-2\" (click)=\"onAddMuseumZone()\"\r\n *ngIf=\"isMuseumModule\"> {{'Add museum itinerary' | translate}}</button>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"loadingPlan\">\r\n <div class=\"spinner-border\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>\r\n </div>\r\n <div class=\"row\" style=\"overflow: hidden;\" *ngIf=\"currentZone\">\r\n <div class=\"mt-3 ms-3\" style=\"height: 500px; width: 100%;\" id=\"planDiv\" *ngIf=\"currentPlan\"></div>\r\n <div *ngIf=\"!currentPlan && plans && !loadingPlan\">\r\n <div class=\"mt-3 ms-3\" id=\"no-plan\" *ngIf=\"!currentZone.virtual && !currentZone.isMultipleFloorZone\">\r\n {{ 'Plan is not calibrated' | translate}}\r\n </div>\r\n <div class=\"mt-3 ms-3\" id=\"no-plan\" *ngIf=\"currentZone.virtual\">\r\n {{ 'No scan points chosen' | translate}}\r\n </div>\r\n <div class=\"mt-3 ms-3\" id=\"no-plan\" *ngIf=\"currentZone.isMultipleFloorZone\">\r\n {{ 'The zone is on several floors' | translate}}\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\" *ngIf=\"isEditingZone\">\r\n <lib-add-zone [zoneEdit]=\"zoneForEdit\" [spaceID]=\"spaceID\" [images360]=\"images360\" [navigationIDs]=\"navigations\"\r\n [zones]=\"allZones\" [defaultZone]=\"defaultZone\" (updatedZone)=\"editCompleted($event)\" [isMuseumVisit]=\"isMuseumVisit\"></lib-add-zone>\r\n </div>\r\n <div class=\"mb-3\" *ngIf=\"isAddingAudioTrack\">\r\n <lib-add-audio-zone [spaceID]=\"spaceID\" [defaultZone]=\"defaultZone\" [parentZone]=\"parentZoneForAudio\" [zones]=\"allZones\" [currentAudioZone]=\"zoneForEdit\"\r\n (updatedZone)=\"editCompleted($event)\"></lib-add-audio-zone>\r\n </div>\r\n </div>\r\n", styles: [".museum-label{background-color:#6f3974;font-size:.95rem;border-radius:10px;padding:5px 10px;color:#fff;text-transform:uppercase;margin-left:auto;margin-right:8px}.default-zone-line-item{border-bottom-width:3px}.default-zone-label{background-color:var(--smarterplan-primary);font-size:.95rem;border-radius:10px;padding:5px 10px;color:#fff;text-transform:uppercase;margin-left:auto;margin-right:8px}\n"] }]
|
|
228
229
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.ZoneService }, { type: i2.SpaceService }, { type: i2.VisitService }, { type: i2.NavigationService }, { type: i2.BaseUserService }, { type: i2.PlanService }, { type: i3.TranslateService }]; }, propDecorators: { updatedZone: [{
|
|
229
230
|
type: Output
|
|
230
231
|
}] } });
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvem9uZXMvem9uZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvem9uZXMvem9uZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hFLE9BQU8sRUFFOEMsSUFBSSxFQUFjLHlCQUF5QixFQUFxQixRQUFRLEVBQzVILE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDOzs7Ozs7Ozs7O0FBTTlCLE1BQU0sT0FBTyxjQUFjO0lBc0R2QixZQUNZLEtBQXFCLEVBQ3JCLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFlBQTBCLEVBQzFCLGlCQUFvQyxFQUNwQyxXQUE0QixFQUM1QixXQUF3QixFQUN4QixTQUEyQjtRQVAzQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQTVEdkMsb0JBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUlYLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQU1wRCxrQkFBYSxHQUFHLEtBQUssQ0FB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Q0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxXQUF5QjtRQUNoRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBZ0IsQ0FBQztRQUNsRSxNQUFNLHlCQUF5QixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDYixNQUFNLEVBQUUsSUFBSTtZQUNaLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxHQUFHO1NBQ2YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7MkdBM1JRLGNBQWM7K0ZBQWQsY0FBYywrR0NiM0Isa3VXQTRLQTsyRkQvSmEsY0FBYztrQkFMMUIsU0FBUzsrQkFDSSxXQUFXOzRTQVVYLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBNZW51SXRlbSwgWm9uZVNlcnZpY2UsIFNwYWNlU2VydmljZSwgVmlzaXRTZXJ2aWNlLFxyXG4gICAgTmF2aWdhdGlvblNlcnZpY2UsIEJhc2VVc2VyU2VydmljZSwgUGxhblNlcnZpY2UsIHdhaXQsIE5hdmlnYXRpb24sIHNob3dTY2FuUG9pbnRzT25QbGFuSW5EaXYsIFBsYW4sIFNwYWNlLCBab25lLCBTcE1vZHVsZVxyXG59IGZyb20gJ0BzbWFydGVycGxhbi9uZ3gtc21hcnRlcnBsYW4tY29yZSc7XHJcbmltcG9ydCBwYW56b29tIGZyb20gXCJwYW56b29tXCI7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItem9uZXMnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3pvbmVzLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3pvbmVzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFpvbmVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBsb3RJbmRleERldGFpbHMgPSAtMTtcclxuXHJcbiAgICBjdXJyZW50U3BhY2U6IFNwYWNlO1xyXG5cclxuICAgIEBPdXRwdXQoKSB1cGRhdGVkWm9uZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBwbGFuczogUGxhbltdO1xyXG5cclxuICAgIHpvbmVGb3JFZGl0OiBab25lO1xyXG5cclxuICAgIGlzRWRpdGluZ1pvbmUgPSBmYWxzZTtcclxuXHJcbiAgICBjYXB0dXJlRGF0ZTogbnVtYmVyO1xyXG5cclxuICAgIHNwYWNlSUQ6IHN0cmluZztcclxuXHJcbiAgICBuYXZpZ2F0aW9uczogc3RyaW5nW107XHJcblxyXG4gICAgaW1hZ2VzMzYwOiBhbnlbXTtcclxuXHJcbiAgICBjYXJvdXNlbElzVmlzaWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIHBsYW5Jc1Zpc2libGUgPSBmYWxzZTtcclxuXHJcbiAgICBjdXJyZW50UGxhbjogUGxhbjtcclxuXHJcbiAgICBjdXJyZW50Wm9uZTogWm9uZTtcclxuXHJcbiAgICBsb2FkaW5nUGxhbiA9IGZhbHNlO1xyXG5cclxuICAgIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIGlzTXVzZXVtVmlzaXQgPSBmYWxzZTtcclxuXHJcbiAgICBpc011c2V1bU1vZHVsZSA9IGZhbHNlO1xyXG5cclxuICAgIGFsbFpvbmVzOiBab25lW107XHJcblxyXG4gICAgZmxvb3Jab25lczogWm9uZVtdID0gW107XHJcblxyXG4gICAgem9uZXNNYXA6IE1hcDxzdHJpbmcsIFpvbmVbXT4gPSBuZXcgTWFwKCk7XHJcblxyXG4gICAgZmxvb3JEZXRhaWxzOiBudW1iZXIgPSAtMTtcclxuXHJcbiAgICBkZWZhdWx0Wm9uZTogWm9uZTtcclxuXHJcbiAgICBkZWZhdWx0U2hvd2luZyA9IGZhbHNlO1xyXG5cclxuICAgIGlzQWRkaW5nQXVkaW9UcmFjayA9IGZhbHNlO1xyXG5cclxuICAgIHBhcmVudFpvbmVGb3JBdWRpbzogWm9uZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICBwcml2YXRlIHpvbmVTZXJ2aWNlOiBab25lU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHNwYWNlU2VydmljZTogU3BhY2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdmlzaXRTZXJ2aWNlOiBWaXNpdFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcGxhblNlcnZpY2U6IFBsYW5TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnNwYWNlSUQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcImlkXCIpO1xyXG4gICAgICAgIHRoaXMuaXNNdXNldW1Nb2R1bGUgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldFNwTW9kdWxlKCkgPT09IFNwTW9kdWxlLk1VU0VVTTtcclxuICAgICAgICB0aGlzLnJlc2V0Wm9uZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXR1cE1lbnVJdGVtcygpIHtcclxuICAgICAgICB0aGlzLm1lbnVJdGVtcyA9IFtcclxuICAgICAgICAgICAgeyBsYWJlbDogXCJMb2NhdGlvbnNcIiwgdXJsOiBcIi9sb2NhbGlzYXRpb25cIiB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5jdXJyZW50U3BhY2UubmFtZSxcclxuICAgICAgICAgICAgICAgIHVybDogYC9sb2NhbGlzYXRpb24vJHt0aGlzLnNwYWNlSUR9YCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiWm9uZXNcIixcclxuICAgICAgICAgICAgICAgIHVybDogYC9sb2NhbGlzYXRpb24vJHt0aGlzLmN1cnJlbnRTcGFjZS5pZH0vem9uZXNgLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgb25Hb0JhY2soKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0Q29tcGxldGVkKG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgICAgIHRoaXMucmVzZXRab25lcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJlc2V0Wm9uZXMoKSB7XHJcbiAgICAgICAgdGhpcy5pc011c2V1bVZpc2l0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2UgPSBhd2FpdCB0aGlzLnNwYWNlU2VydmljZS5nZXRTcGFjZSh0aGlzLnNwYWNlSUQpO1xyXG4gICAgICAgIHRoaXMuc2V0dXBNZW51SXRlbXMoKTtcclxuXHJcbiAgICAgICAgdGhpcy5hbGxab25lcyA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0Wm9uZXNCeVNwYWNlKHRoaXMuc3BhY2VJRCk7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0Wm9uZSA9IHRoaXMuYWxsWm9uZXMuZmluZChcclxuICAgICAgICAgICAgKHpvbmUpID0+IHpvbmUubGF5ZXIgJiYgem9uZS5sYXllci5uYW1lID09PSBcIkJVSUxESU5HXCIgJiYgem9uZS5zd2VlcElEcyxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZsb29yWm9uZXMgPSB0aGlzLmFsbFpvbmVzLmZpbHRlcihcclxuICAgICAgICAgICAgKHpvbmUpID0+IHpvbmUubGF5ZXIgJiYgem9uZS5sYXllci5uYW1lID09PSBcIkZMT09SXCIsXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyB3ZSBhZGQgb25seSBjaGlsZHJlbiB6b25lcyB0aGF0IGFyZSBub3QgRmxvb3JzXHJcbiAgICAgICAgdGhpcy56b25lc01hcC5zZXQodGhpcy5kZWZhdWx0Wm9uZS5pZCwgdGhpcy5hbGxab25lcy5maWx0ZXIoKHpvbmUpID0+IHpvbmUucGFyZW50SUQgPT09IHRoaXMuZGVmYXVsdFpvbmUuaWQgJiYgIXRoaXMuZmxvb3Jab25lcy5pbmNsdWRlcyh6b25lKSkpO1xyXG4gICAgICAgIGZvciAoY29uc3QgZmxvb3Igb2YgdGhpcy5mbG9vclpvbmVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuem9uZXNNYXAuc2V0KFxyXG4gICAgICAgICAgICAgICAgZmxvb3IuaWQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbFpvbmVzLmZpbHRlcigoem9uZSkgPT4gem9uZS5wYXJlbnRJRCA9PT0gZmxvb3IuaWQpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0aGlzLnpvbmVzID0gc29ydEFscGhhYmV0aWNhbGx5T25OYW1lKHRoaXMuem9uZXMpO1xyXG4gICAgICAgIHRoaXMucmVzZXROYXZpZ2F0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuaW1hZ2VzMzYwID0gYXdhaXQgdGhpcy52aXNpdFNlcnZpY2UubG9hZEltYWdlc0ZvclNwYWNlKFxyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucGxhbnMgPSBhd2FpdCB0aGlzLnBsYW5TZXJ2aWNlLmdldFBsYW5zV2l0aFpvbmVzRm9yU3BhY2UoXHJcbiAgICAgICAgICAgIHRoaXMuc3BhY2VJRCxcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMucGxhbnMgPSB0aGlzLnBsYW5zLmZpbHRlcigocGxhbikgPT4gcGxhbi5pc0N1cnJlbnRGb3Jab25lKTtcclxuICAgICAgICB0aGlzLm9uUGxhbnNMb2FkZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldE5hdmlnYXRpb25zKCkge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGlvbnMgPSBbXTtcclxuICAgICAgICBjb25zdCB6b25lc1dpdGhTd2VlcHMgPSB0aGlzLmFsbFpvbmVzLmZpbHRlcigoem9uZSkgPT4gem9uZS5zd2VlcElEcyk7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9ucyA9IFtcclxuICAgICAgICAgICAgLi4ubmV3IFNldCh6b25lc1dpdGhTd2VlcHMuZmxhdE1hcCgoem9uZSkgPT4gem9uZS5zd2VlcElEcykpLFxyXG4gICAgICAgIF07XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25QbGFuc0xvYWRlZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5wbGFuSXNWaXNpYmxlICYmIHRoaXMuY3VycmVudFpvbmUpIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGxhbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIG9uVG9nZ2xlRGV0YWlsIGZvbGRzL3VuZm9sZHMgZGV0YWlscyBmb3IgYSB6b25lXHJcbiAgICAgKiBAcGFyYW0gaSBpbmRleCBvZiB0aGUgbG90IHRvIGJlIHRvZ2dsZWRcclxuICAgICAqL1xyXG4gICAgYXN5bmMgb25Ub2dnbGVEZXRhaWwoaW5kZXg6IG51bWJlciwgem9uZTogWm9uZSkge1xyXG4gICAgICAgIHRoaXMubG90SW5kZXhEZXRhaWxzID0gaW5kZXggPT09IHRoaXMubG90SW5kZXhEZXRhaWxzID8gLTEgOiBpbmRleDtcclxuICAgICAgICBpZiAodGhpcy5sb3RJbmRleERldGFpbHMgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUgPSBudWxsO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VycmVudFpvbmUgPSB6b25lO1xyXG4gICAgICAgIHRoaXMucGxhbklzVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgaWYgKCF0aGlzLnBsYW5zKSB7XHJcbiAgICAgICAgICAgIHJldHVybjsgLy8gd2FpdCB1bnRpbCB0aGUgcGxhbnMgYXJlIHNldFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5sb2FkaW5nUGxhbikge1xyXG4gICAgICAgICAgICAvLyBhbm90aGVyIHBsYW4gaXMgYWxyZWFkeSBsb2FkaW5nXHJcbiAgICAgICAgICAgIGF3YWl0IHdhaXQoMTAwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucHJlcGFyZVBsYW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBvblRvZ2dsZURldGFpbEZsb29yKGluZGV4OiBudW1iZXIsIGZsb29yOiBab25lKSB7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0U2hvd2luZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZmxvb3JEZXRhaWxzID0gaW5kZXggPT09IHRoaXMuZmxvb3JEZXRhaWxzID8gLTEgOiBpbmRleDtcclxuICAgICAgICBpZiAodGhpcy5mbG9vckRldGFpbHMgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUgPSBudWxsO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VycmVudFpvbmUgPSBmbG9vcjtcclxuICAgICAgICB0aGlzLnBsYW5Jc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIGlmICghdGhpcy5wbGFucykge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcInBsYW5zIG5vdCByZWFkeVwiKTtcclxuICAgICAgICAgICAgcmV0dXJuOyAvLyB3YWl0IHVudGlsIHRoZSBwbGFucyBhcmUgc2V0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucHJlcGFyZVBsYW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBvblRvZ2dsZURlZmF1bHRab25lKCkge1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdFNob3dpbmcgPSAhdGhpcy5kZWZhdWx0U2hvd2luZztcclxuICAgICAgICB0aGlzLmN1cnJlbnRab25lID0gdGhpcy5kZWZhdWx0U2hvd2luZyA/IHRoaXMuZGVmYXVsdFpvbmUgOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHByZXBhcmVQbGFuKCkge1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1BsYW4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBsYW4gPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRab25lLnZpcnR1YWwpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50UGxhbiA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1BsYW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJlbnRQbGFuID0gYXdhaXQgdGhpcy5wbGFuU2VydmljZS5nZXRDYWxpYnJhdGVkUGxhbkZvclpvbmUoXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50UGxhbikge1xyXG4gICAgICAgICAgICBjb25zdCBzY2FucyA9IGF3YWl0IHRoaXMubmF2aWdhdGlvblNlcnZpY2UuZ2V0TmF2aWdhdGlvbnNGb3Jab25lKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Wm9uZSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zaG93U2NhblBvaW50c09uUGxhbihzY2Fucyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubG9hZGluZ1BsYW4gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVDYXJvdXNlbCgpIHtcclxuICAgICAgICB0aGlzLmNhcm91c2VsSXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBvbkVkaXQoem9uZTogWm9uZSkge1xyXG4gICAgICAgIHRoaXMuem9uZUZvckVkaXQgPSB6b25lO1xyXG4gICAgICAgIGlmICh0aGlzLnpvbmVGb3JFZGl0LmxheWVyICYmIHRoaXMuem9uZUZvckVkaXQubGF5ZXIubmFtZSA9PT0gXCJBVURJT1wiKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNBZGRpbmdBdWRpb1RyYWNrID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmlzRWRpdGluZ1pvbmUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5tZW51SXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgIGxhYmVsOiBgJHt6b25lLm5hbWV9YCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkFkZExvdCgpIHtcclxuICAgICAgICB0aGlzLmlzTXVzZXVtVmlzaXQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzRWRpdGluZ1pvbmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICBsYWJlbDogXCJOZXdcIixcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkFkZE11c2V1bVpvbmUoKSB7XHJcbiAgICAgICAgdGhpcy5pc011c2V1bVZpc2l0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzRWRpdGluZ1pvbmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICBsYWJlbDogXCJOZXcgTXVzZXVtIEl0aW5lcmFyeVwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQWRkQXVkaW9ab25lKHBhcmVudFpvbmU6IFpvbmUpIHtcclxuICAgICAgICB0aGlzLnBhcmVudFpvbmVGb3JBdWRpbyA9IHBhcmVudFpvbmU7XHJcbiAgICAgICAgdGhpcy5pc0FkZGluZ0F1ZGlvVHJhY2sgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICBsYWJlbDogcGFyZW50Wm9uZS5uYW1lLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICBsYWJlbDogXCJhZGQtYXVkaW8uYWRkXCIsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25EZWxldGUoem9uZTogWm9uZSkge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiY29uZmlybS5kZWxldGVab25lXCIpO1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hbGVydFxyXG4gICAgICAgIGlmICh3aW5kb3cuY29uZmlybShtZXNzYWdlKSkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmRlbGV0ZVpvbmUoem9uZS5pZCk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxsWm9uZXMuc3BsaWNlKHRoaXMuYWxsWm9uZXMuaW5kZXhPZih6b25lKSwgMSk7XHJcbiAgICAgICAgICAgIGlmICh6b25lLnBhcmVudElEICYmIEFycmF5LmZyb20odGhpcy56b25lc01hcC5rZXlzKCkpLmluY2x1ZGVzKHpvbmUucGFyZW50SUQpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB6b25lc0ZvclBhcmVudCA9IHRoaXMuem9uZXNNYXAuZ2V0KHpvbmUucGFyZW50SUQpO1xyXG4gICAgICAgICAgICAgICAgem9uZXNGb3JQYXJlbnQuc3BsaWNlKHpvbmVzRm9yUGFyZW50LmluZGV4T2Yoem9uZSksIDEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy56b25lc01hcC5zZXQoem9uZS5wYXJlbnRJRCwgem9uZXNGb3JQYXJlbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGVkaXRDb21wbGV0ZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMubG90SW5kZXhEZXRhaWxzID0gLTE7XHJcbiAgICAgICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRab25lcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzRWRpdGluZ1pvbmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzQWRkaW5nQXVkaW9UcmFjayA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuem9uZUZvckVkaXQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucGxhbklzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2Fyb3VzZWxJc1Zpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNldHVwTWVudUl0ZW1zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2hvd1NjYW5Qb2ludHNPblBsYW4obmF2aWdhdGlvbnM6IE5hdmlnYXRpb25bXSkge1xyXG4gICAgICAgIGNvbnN0IGRpdlBsYW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3BsYW5EaXZcIikgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgYXdhaXQgc2hvd1NjYW5Qb2ludHNPblBsYW5JbkRpdih0aGlzLmN1cnJlbnRQbGFuLCBkaXZQbGFuLCBuYXZpZ2F0aW9ucyk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nUGxhbiA9IGZhbHNlO1xyXG4gICAgICAgIHBhbnpvb20oZGl2UGxhbiwge1xyXG4gICAgICAgICAgICBib3VuZHM6IHRydWUsXHJcbiAgICAgICAgICAgIGJvdW5kc1BhZGRpbmc6IDAsXHJcbiAgICAgICAgICAgIG1heFpvb206IDMuNSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiICpuZ0lmPVwiY3VycmVudFNwYWNlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibS0zXCI+XHJcbiAgICAgIDxsaWItdGFiLW5hdmlnYXRpb24gW21lbnVJdGVtc109J21lbnVJdGVtcycgKG9uR29CYWNrKT1cIm9uR29CYWNrKClcIj48L2xpYi10YWItbmF2aWdhdGlvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiIWlzRWRpdGluZ1pvbmUgJiYgIWlzQWRkaW5nQXVkaW9UcmFja1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIiA+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gZGVmYXVsdC16b25lLWxpbmUtaXRlbVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB6b25lLW5hbWVcIiAqbmdJZj1cImRlZmF1bHRab25lXCI+XHJcbiAgICAgICAgICAgICAge3tkZWZhdWx0Wm9uZS5uYW1lfX1cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC16b25lLWxhYmVsXCI+e3sgXCJ3aG9sZSBzcGFjZVwiIHwgdHJhbnNsYXRlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGxpYi1jaGV2cm9uIFtjb25kaXRpb25TaG93aW5nXT1cImRlZmF1bHRTaG93aW5nXCIgKGNsaWNrKT1cIm9uVG9nZ2xlRGVmYXVsdFpvbmUoKVwiPjwvbGliLWNoZXZyb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGVmYXVsdFNob3dpbmdcIj5cclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiPnt7J1R5cGUgb2Ygem9uZScgfCB0cmFuc2xhdGV9fTogXHJcbiAgICAgICAgICAgICAgICAgIHt7ZGVmYXVsdFpvbmUubGF5ZXIgPyBkZWZhdWx0Wm9uZS5sYXllci5uYW1lIDogXCJObyB0eXBlXCIgfCB0cmFuc2xhdGV9fSA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCJkZWZhdWx0Wm9uZS5zdXJmYWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7J1N1cmZhY2UnIHwgdHJhbnNsYXRlfX0sIG08c3VwPjI8L3N1cD46IHt7ZGVmYXVsdFpvbmUuc3VyZmFjZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiICpuZ0lmPVwiIWRlZmF1bHRab25lLnZpcnR1YWxcIj57eydTY2FuIFBvaW50cycgfCB0cmFuc2xhdGV9fTpcclxuICAgICAgICAgICAgICAgICAge3tkZWZhdWx0Wm9uZS5zd2VlcElEcyA/IGRlZmF1bHRab25lLnN3ZWVwSURzLmxlbmd0aCA6IFwiTm8gc2NhbiBwb2ludHNcIiB8IHRyYW5zbGF0ZX19IDwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwYWlyIG9mIHpvbmVzTWFwIHwga2V5dmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYWlyLmtleSA9PSBkZWZhdWx0Wm9uZS5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDUgc3R5bGU9XCJtYXJnaW46IDhweDtcIiAqbmdJZj1cInBhaXIudmFsdWUubGVuZ3RoID4gMFwiPnt7J0NoaWxkcmVuIHpvbmVzJ3x0cmFuc2xhdGV9fTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBsaXN0LWdyb3VwLWZsdXNoIGxpc3QtZ3JvdXAtaXRlbS1hY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxvdCBvZiBwYWlyLnZhbHVlOyBpbmRleCBhcyB6b25lSW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHpvbmUtbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xvdC5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11c2V1bS1sYWJlbFwiICpuZ0lmPVwibG90LmlzTXVzZXVtVmlzaXRab25lXCI+e3sgXCJpdGluZXJhcnlcIiB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWNoZXZyb24gW2NvbmRpdGlvblNob3dpbmddPVwiem9uZUluZGV4PT1sb3RJbmRleERldGFpbHNcIiAoY2xpY2spPVwib25Ub2dnbGVEZXRhaWwoem9uZUluZGV4LCBsb3QpXCI+PC9saWItY2hldnJvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ6b25lSW5kZXg9PWxvdEluZGV4RGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cIiFsb3QuaXNNdXNldW1WaXNpdFpvbmVcIj57eydUeXBlIG9mIHpvbmUnIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19OiB7e2xvdC5sYXllciA/IGxvdC5sYXllci5uYW1lIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTm8gdHlwZVwiIHwgdHJhbnNsYXRlfX0gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cImxvdC5zdXJmYWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydTdXJmYWNlJyB8IHRyYW5zbGF0ZX19LG08c3VwPjI8L3N1cD46IHt7bG90LnN1cmZhY2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiICpuZ0lmPVwiIWxvdC52aXJ0dWFsXCI+e3snU2NhbiBQb2ludHMnIHwgdHJhbnNsYXRlfX06XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xvdC5zd2VlcElEcyA/IGxvdC5zd2VlcElEcy5sZW5ndGggOiBcIk5vIHNjYW4gcG9pbnRzXCIgfCB0cmFuc2xhdGV9fSA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiICpuZ0lmPVwibG90LnZpcnR1YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J1pvbmUgbm90IHZpc2libGUgaW4gM0QgdmlzaXQnIHwgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbCBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FZGl0KGxvdClcIj57eydFZGl0JyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGwgbWUtMlwiIChjbGljayk9XCJvbkFkZEF1ZGlvWm9uZShsb3QpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzTXVzZXVtTW9kdWxlXCI+IHt7J2FkZC1hdWRpby5hZGQnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZShsb3QpXCI+e3snRGVsZXRlJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtXCIgKm5nRm9yPVwibGV0IGZsb29yIG9mIGZsb29yWm9uZXM7IGluZGV4IGFzIGluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHpvbmUtbmFtZVwiPlxyXG4gICAgICAgICAgICAgIHt7Zmxvb3IubmFtZX19XHJcbiAgICAgICAgICAgICAgPCEtLSA8c21hbGw+KHt7IGxvdC5tZXRhZGF0YSA/ICgnQ2FsaWJyYXRlZCcgfCB0cmFuc2xhdGUpIDogKCdOb3QgY2FsaWJyYXRlZCcgfCB0cmFuc2xhdGUpfX0pPC9zbWFsbD4gLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11c2V1bS1sYWJlbFwiICpuZ0lmPVwiZmxvb3IuaXNNdXNldW1WaXNpdFpvbmVcIj57eyBcIml0aW5lcmFyeVwiIHwgdHJhbnNsYXRlIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGxpYi1jaGV2cm9uIFtjb25kaXRpb25TaG93aW5nXT1cImluZGV4PT1mbG9vckRldGFpbHNcIiAoY2xpY2spPVwib25Ub2dnbGVEZXRhaWxGbG9vcihpbmRleCwgZmxvb3IpXCI+PC9saWItY2hldnJvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpbmRleD09Zmxvb3JEZXRhaWxzXCI+ICBcclxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiPnt7J1R5cGUgb2Ygem9uZScgfCB0cmFuc2xhdGV9fToge3tmbG9vci5sYXllciA/XHJcbiAgICAgICAgICAgICAgICAgIGZsb29yLmxheWVyLm5hbWUgOlxyXG4gICAgICAgICAgICAgICAgICBcIk5vIHR5cGVcIiB8IHRyYW5zbGF0ZX19IDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cImZsb29yLnN1cmZhY2VcIj57eydTdXJmYWNlJyB8IHRyYW5zbGF0ZX19LCBtPHN1cD4yPC9zdXA+OlxyXG4gICAgICAgICAgICAgICAgICB7e2Zsb29yLnN1cmZhY2UgfX1cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cIiFmbG9vci52aXJ0dWFsXCI+e3snU2NhbiBQb2ludHMnIHwgdHJhbnNsYXRlfX06XHJcbiAgICAgICAgICAgICAgICAgIHt7Zmxvb3Iuc3dlZXBJRHMgPyBmbG9vci5zd2VlcElEcy5sZW5ndGggOiBcIk5vIHNjYW4gcG9pbnRzXCIgfCB0cmFuc2xhdGV9fSA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCJmbG9vci52aXJ0dWFsXCI+e3snWm9uZSBub3QgdmlzaWJsZSBpbiAzRCB2aXNpdCcgfFxyXG4gICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvbGk+XHJcbiAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbCBtZS0yXCIgKGNsaWNrKT1cIm9uRWRpdChmbG9vcilcIj57eydFZGl0JyB8XHJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gIFxyXG4gICAgICAgICAgICAgIDwhLS0gTGlzdCBvZiBjaGlsZHJlbiB6b25lcyAtLT5cclxuICBcclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwYWlyIG9mIHpvbmVzTWFwIHwga2V5dmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYWlyLmtleSA9PSBmbG9vci5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDUgc3R5bGU9XCJtYXJnaW46IDhweDtcIiAqbmdJZj1cInBhaXIudmFsdWUubGVuZ3RoID4gMFwiPnt7J0NoaWxkcmVuIHpvbmVzJ3x0cmFuc2xhdGV9fTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBsaXN0LWdyb3VwLWZsdXNoIGxpc3QtZ3JvdXAtaXRlbS1hY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxvdCBvZiBwYWlyLnZhbHVlOyBpbmRleCBhcyB6b25lSW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHpvbmUtbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2xvdC5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11c2V1bS1sYWJlbFwiICpuZ0lmPVwibG90LmlzTXVzZXVtVmlzaXRab25lXCI+e3sgXCJpdGluZXJhcnlcIiB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWNoZXZyb24gW2NvbmRpdGlvblNob3dpbmddPVwiem9uZUluZGV4PT1sb3RJbmRleERldGFpbHNcIiAoY2xpY2spPVwib25Ub2dnbGVEZXRhaWwoem9uZUluZGV4LCBsb3QpXCI+PC9saWItY2hldnJvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ6b25lSW5kZXg9PWxvdEluZGV4RGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cIiFsb3QuaXNNdXNldW1WaXNpdFpvbmVcIj57eydUeXBlIG9mIHpvbmUnIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19OiB7e2xvdC5sYXllciA/IGxvdC5sYXllci5uYW1lIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTm8gdHlwZVwiIHwgdHJhbnNsYXRlfX0gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cImxvdC5zdXJmYWNlXCI+e3snU3VyZmFjZScgfCB0cmFuc2xhdGV9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG08c3VwPjI8L3N1cD46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xvdC5zdXJmYWNlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cIiFsb3QudmlydHVhbFwiPnt7J1NjYW4gUG9pbnRzJyB8IHRyYW5zbGF0ZX19OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsb3Quc3dlZXBJRHMgPyBsb3Quc3dlZXBJRHMubGVuZ3RoIDogXCJObyBzY2FuIHBvaW50c1wiIHwgdHJhbnNsYXRlfX0gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cImxvdC52aXJ0dWFsXCI+e3snWm9uZSBub3QgdmlzaWJsZSBpbiAzRCB2aXNpdCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGwgbWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRWRpdChsb3QpXCI+e3snRWRpdCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1lLTJcIiAoY2xpY2spPVwib25BZGRBdWRpb1pvbmUobG90KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc011c2V1bU1vZHVsZVwiPiB7eydhZGQtYXVkaW8uYWRkJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUobG90KVwiPnt7J0RlbGV0ZScgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgPC91bD5cclxuICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICBcclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbCBtZS0yXCIgKGNsaWNrKT1cIm9uQWRkTG90KClcIj57eydBZGQgem9uZScgfFxyXG4gICAgICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbCBtZS0yXCIgKGNsaWNrKT1cIm9uQWRkTXVzZXVtWm9uZSgpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJpc011c2V1bU1vZHVsZVwiPiB7eydBZGQgbXVzZXVtIGl0aW5lcmFyeScgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1lLTJcIiAoY2xpY2spPVwib25BZGRBdWRpb1pvbmUoKVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNNdXNldW1Nb2R1bGVcIj4ge3snYWRkLWF1ZGlvLmFkZCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiICpuZ0lmPVwibG9hZGluZ1BsYW5cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlclwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwib3ZlcmZsb3c6IGhpZGRlbjtcIiAqbmdJZj1cImN1cnJlbnRab25lXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBtcy0zXCIgc3R5bGU9XCJoZWlnaHQ6IDUwMHB4OyB3aWR0aDogMTAwJTtcIiBpZD1cInBsYW5EaXZcIiAqbmdJZj1cImN1cnJlbnRQbGFuXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWN1cnJlbnRQbGFuICYmIHBsYW5zICYmICFsb2FkaW5nUGxhblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBtcy0zXCIgaWQ9XCJuby1wbGFuXCIgKm5nSWY9XCIhY3VycmVudFpvbmUudmlydHVhbCAmJiAhY3VycmVudFpvbmUuaXNNdWx0aXBsZUZsb29yWm9uZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdQbGFuIGlzIG5vdCBjYWxpYnJhdGVkJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBtcy0zXCIgaWQ9XCJuby1wbGFuXCIgKm5nSWY9XCJjdXJyZW50Wm9uZS52aXJ0dWFsXCI+XHJcbiAgICAgICAgICAgICAge3sgJ05vIHNjYW4gcG9pbnRzIGNob3NlbicgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgbXMtM1wiIGlkPVwibm8tcGxhblwiICpuZ0lmPVwiY3VycmVudFpvbmUuaXNNdWx0aXBsZUZsb29yWm9uZVwiPlxyXG4gICAgICAgICAgICAgIHt7ICdUaGUgem9uZSBpcyBvbiBzZXZlcmFsIGZsb29ycycgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiICpuZ0lmPVwiaXNFZGl0aW5nWm9uZVwiPlxyXG4gICAgICA8bGliLWFkZC16b25lIFt6b25lRWRpdF09XCJ6b25lRm9yRWRpdFwiIFtzcGFjZUlEXT1cInNwYWNlSURcIiBbaW1hZ2VzMzYwXT1cImltYWdlczM2MFwiIFtuYXZpZ2F0aW9uSURzXT1cIm5hdmlnYXRpb25zXCJcclxuICAgICAgICBbem9uZXNdPVwiYWxsWm9uZXNcIiBbZGVmYXVsdFpvbmVdPVwiZGVmYXVsdFpvbmVcIiAodXBkYXRlZFpvbmUpPVwiZWRpdENvbXBsZXRlZCgkZXZlbnQpXCIgW2lzTXVzZXVtVmlzaXRdPVwiaXNNdXNldW1WaXNpdFwiPjwvbGliLWFkZC16b25lPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiICpuZ0lmPVwiaXNBZGRpbmdBdWRpb1RyYWNrXCI+XHJcbiAgICAgIDxsaWItYWRkLWF1ZGlvLXpvbmUgW3NwYWNlSURdPVwic3BhY2VJRFwiIFtkZWZhdWx0Wm9uZV09XCJkZWZhdWx0Wm9uZVwiIFtwYXJlbnRab25lXT1cInBhcmVudFpvbmVGb3JBdWRpb1wiIFt6b25lc109XCJhbGxab25lc1wiIFtjdXJyZW50QXVkaW9ab25lXT1cInpvbmVGb3JFZGl0XCJcclxuICAgICAgKHVwZGF0ZWRab25lKT1cImVkaXRDb21wbGV0ZWQoJGV2ZW50KVwiPjwvbGliLWFkZC1hdWRpby16b25lPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiJdfQ==
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvem9uZXMvem9uZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvem9uZXMvem9uZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hFLE9BQU8sRUFFOEMsSUFBSSxFQUFjLHlCQUF5QixFQUFxQixRQUFRLEVBQzVILE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDOzs7Ozs7Ozs7OztBQU05QixNQUFNLE9BQU8sY0FBYztJQXNEdkIsWUFDWSxLQUFxQixFQUNyQixXQUF3QixFQUN4QixZQUEwQixFQUMxQixZQUEwQixFQUMxQixpQkFBb0MsRUFDcEMsV0FBNEIsRUFDNUIsV0FBd0IsRUFDeEIsU0FBMkI7UUFQM0IsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUE1RHZDLG9CQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFJWCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFNcEQsa0JBQWEsR0FBRyxLQUFLLENB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LENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLLENBQUMsb0JBQW9CLENBQUMsV0FBeUI7UUFDaEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQWdCLENBQUM7UUFDbEUsTUFBTSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ2IsTUFBTSxFQUFFLElBQUk7WUFDWixhQUFhLEVBQUUsQ0FBQztZQUNoQixPQUFPLEVBQUUsR0FBRztTQUNmLENBQUMsQ0FBQztJQUNQLENBQUM7OzJHQTNSUSxjQUFjOytGQUFkLGNBQWMsK0dDYjNCLGl2V0EyS0E7MkZEOUphLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0ksV0FBVzs0U0FVWCxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgTWVudUl0ZW0sIFpvbmVTZXJ2aWNlLCBTcGFjZVNlcnZpY2UsIFZpc2l0U2VydmljZSxcclxuICAgIE5hdmlnYXRpb25TZXJ2aWNlLCBCYXNlVXNlclNlcnZpY2UsIFBsYW5TZXJ2aWNlLCB3YWl0LCBOYXZpZ2F0aW9uLCBzaG93U2NhblBvaW50c09uUGxhbkluRGl2LCBQbGFuLCBTcGFjZSwgWm9uZSwgU3BNb2R1bGVcclxufSBmcm9tICdAc21hcnRlcnBsYW4vbmd4LXNtYXJ0ZXJwbGFuLWNvcmUnO1xyXG5pbXBvcnQgcGFuem9vbSBmcm9tIFwicGFuem9vbVwiO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLXpvbmVzJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi96b25lcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi96b25lcy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBab25lc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gICAgbG90SW5kZXhEZXRhaWxzID0gLTE7XHJcblxyXG4gICAgY3VycmVudFNwYWNlOiBTcGFjZTtcclxuXHJcbiAgICBAT3V0cHV0KCkgdXBkYXRlZFpvbmUgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gICAgcGxhbnM6IFBsYW5bXTtcclxuXHJcbiAgICB6b25lRm9yRWRpdDogWm9uZTtcclxuXHJcbiAgICBpc0VkaXRpbmdab25lID0gZmFsc2U7XHJcblxyXG4gICAgY2FwdHVyZURhdGU6IG51bWJlcjtcclxuXHJcbiAgICBzcGFjZUlEOiBzdHJpbmc7XHJcblxyXG4gICAgbmF2aWdhdGlvbnM6IHN0cmluZ1tdO1xyXG5cclxuICAgIGltYWdlczM2MDogYW55W107XHJcblxyXG4gICAgY2Fyb3VzZWxJc1Zpc2libGUgPSBmYWxzZTtcclxuXHJcbiAgICBwbGFuSXNWaXNpYmxlID0gZmFsc2U7XHJcblxyXG4gICAgY3VycmVudFBsYW46IFBsYW47XHJcblxyXG4gICAgY3VycmVudFpvbmU6IFpvbmU7XHJcblxyXG4gICAgbG9hZGluZ1BsYW4gPSBmYWxzZTtcclxuXHJcbiAgICBtZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcclxuXHJcbiAgICBpc011c2V1bVZpc2l0ID0gZmFsc2U7XHJcblxyXG4gICAgaXNNdXNldW1Nb2R1bGUgPSBmYWxzZTtcclxuXHJcbiAgICBhbGxab25lczogWm9uZVtdO1xyXG5cclxuICAgIGZsb29yWm9uZXM6IFpvbmVbXSA9IFtdO1xyXG5cclxuICAgIHpvbmVzTWFwOiBNYXA8c3RyaW5nLCBab25lW10+ID0gbmV3IE1hcCgpO1xyXG5cclxuICAgIGZsb29yRGV0YWlsczogbnVtYmVyID0gLTE7XHJcblxyXG4gICAgZGVmYXVsdFpvbmU6IFpvbmU7XHJcblxyXG4gICAgZGVmYXVsdFNob3dpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBpc0FkZGluZ0F1ZGlvVHJhY2sgPSBmYWxzZTtcclxuXHJcbiAgICBwYXJlbnRab25lRm9yQXVkaW86IFpvbmU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgcHJpdmF0ZSB6b25lU2VydmljZTogWm9uZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBzcGFjZVNlcnZpY2U6IFNwYWNlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHZpc2l0U2VydmljZTogVmlzaXRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHBsYW5TZXJ2aWNlOiBQbGFuU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zcGFjZUlEID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJpZFwiKTtcclxuICAgICAgICB0aGlzLmlzTXVzZXVtTW9kdWxlID0gdGhpcy51c2VyU2VydmljZS5nZXRTcE1vZHVsZSgpID09PSBTcE1vZHVsZS5NVVNFVU07XHJcbiAgICAgICAgdGhpcy5yZXNldFpvbmVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBNZW51SXRlbXMoKSB7XHJcbiAgICAgICAgdGhpcy5tZW51SXRlbXMgPSBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiTG9jYXRpb25zXCIsIHVybDogXCIvbG9jYWxpc2F0aW9uXCIgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY3VycmVudFNwYWNlLm5hbWUsXHJcbiAgICAgICAgICAgICAgICB1cmw6IGAvbG9jYWxpc2F0aW9uLyR7dGhpcy5zcGFjZUlEfWAsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIlpvbmVzXCIsXHJcbiAgICAgICAgICAgICAgICB1cmw6IGAvbG9jYWxpc2F0aW9uLyR7dGhpcy5jdXJyZW50U3BhY2UuaWR9L3pvbmVzYCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIG9uR29CYWNrKCkge1xyXG4gICAgICAgIHRoaXMuZWRpdENvbXBsZXRlZChudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcygpIHtcclxuICAgICAgICB0aGlzLnJlc2V0Wm9uZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyByZXNldFpvbmVzKCkge1xyXG4gICAgICAgIHRoaXMuaXNNdXNldW1WaXNpdCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFNwYWNlID0gYXdhaXQgdGhpcy5zcGFjZVNlcnZpY2UuZ2V0U3BhY2UodGhpcy5zcGFjZUlEKTtcclxuICAgICAgICB0aGlzLnNldHVwTWVudUl0ZW1zKCk7XHJcblxyXG4gICAgICAgIHRoaXMuYWxsWm9uZXMgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzQnlTcGFjZSh0aGlzLnNwYWNlSUQpO1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdFpvbmUgPSB0aGlzLmFsbFpvbmVzLmZpbmQoXHJcbiAgICAgICAgICAgICh6b25lKSA9PiB6b25lLmxheWVyICYmIHpvbmUubGF5ZXIubmFtZSA9PT0gXCJCVUlMRElOR1wiICYmIHpvbmUuc3dlZXBJRHMsXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5mbG9vclpvbmVzID0gdGhpcy5hbGxab25lcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICh6b25lKSA9PiB6b25lLmxheWVyICYmIHpvbmUubGF5ZXIubmFtZSA9PT0gXCJGTE9PUlwiLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gd2UgYWRkIG9ubHkgY2hpbGRyZW4gem9uZXMgdGhhdCBhcmUgbm90IEZsb29yc1xyXG4gICAgICAgIHRoaXMuem9uZXNNYXAuc2V0KHRoaXMuZGVmYXVsdFpvbmUuaWQsIHRoaXMuYWxsWm9uZXMuZmlsdGVyKCh6b25lKSA9PiB6b25lLnBhcmVudElEID09PSB0aGlzLmRlZmF1bHRab25lLmlkICYmICF0aGlzLmZsb29yWm9uZXMuaW5jbHVkZXMoem9uZSkpKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGZsb29yIG9mIHRoaXMuZmxvb3Jab25lcykge1xyXG4gICAgICAgICAgICB0aGlzLnpvbmVzTWFwLnNldChcclxuICAgICAgICAgICAgICAgIGZsb29yLmlkLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxab25lcy5maWx0ZXIoKHpvbmUpID0+IHpvbmUucGFyZW50SUQgPT09IGZsb29yLmlkKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy56b25lcyA9IHNvcnRBbHBoYWJldGljYWxseU9uTmFtZSh0aGlzLnpvbmVzKTtcclxuICAgICAgICB0aGlzLnJlc2V0TmF2aWdhdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmltYWdlczM2MCA9IGF3YWl0IHRoaXMudmlzaXRTZXJ2aWNlLmxvYWRJbWFnZXNGb3JTcGFjZShcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2UsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnBsYW5zID0gYXdhaXQgdGhpcy5wbGFuU2VydmljZS5nZXRQbGFuc1dpdGhab25lc0ZvclNwYWNlKFxyXG4gICAgICAgICAgICB0aGlzLnNwYWNlSUQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnBsYW5zID0gdGhpcy5wbGFucy5maWx0ZXIoKHBsYW4pID0+IHBsYW4uaXNDdXJyZW50Rm9yWm9uZSk7XHJcbiAgICAgICAgdGhpcy5vblBsYW5zTG9hZGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXROYXZpZ2F0aW9ucygpIHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRpb25zID0gW107XHJcbiAgICAgICAgY29uc3Qgem9uZXNXaXRoU3dlZXBzID0gdGhpcy5hbGxab25lcy5maWx0ZXIoKHpvbmUpID0+IHpvbmUuc3dlZXBJRHMpO1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIC4uLm5ldyBTZXQoem9uZXNXaXRoU3dlZXBzLmZsYXRNYXAoKHpvbmUpID0+IHpvbmUuc3dlZXBJRHMpKSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uUGxhbnNMb2FkZWQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucGxhbklzVmlzaWJsZSAmJiB0aGlzLmN1cnJlbnRab25lKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBsYW4oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBvblRvZ2dsZURldGFpbCBmb2xkcy91bmZvbGRzIGRldGFpbHMgZm9yIGEgem9uZVxyXG4gICAgICogQHBhcmFtIGkgaW5kZXggb2YgdGhlIGxvdCB0byBiZSB0b2dnbGVkXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIG9uVG9nZ2xlRGV0YWlsKGluZGV4OiBudW1iZXIsIHpvbmU6IFpvbmUpIHtcclxuICAgICAgICB0aGlzLmxvdEluZGV4RGV0YWlscyA9IGluZGV4ID09PSB0aGlzLmxvdEluZGV4RGV0YWlscyA/IC0xIDogaW5kZXg7XHJcbiAgICAgICAgaWYgKHRoaXMubG90SW5kZXhEZXRhaWxzID09PSAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRab25lID0gbnVsbDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJlbnRab25lID0gem9uZTtcclxuICAgICAgICB0aGlzLnBsYW5Jc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIGlmICghdGhpcy5wbGFucykge1xyXG4gICAgICAgICAgICByZXR1cm47IC8vIHdhaXQgdW50aWwgdGhlIHBsYW5zIGFyZSBzZXRcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubG9hZGluZ1BsYW4pIHtcclxuICAgICAgICAgICAgLy8gYW5vdGhlciBwbGFuIGlzIGFscmVhZHkgbG9hZGluZ1xyXG4gICAgICAgICAgICBhd2FpdCB3YWl0KDEwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnByZXBhcmVQbGFuKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Ub2dnbGVEZXRhaWxGbG9vcihpbmRleDogbnVtYmVyLCBmbG9vcjogWm9uZSkge1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdFNob3dpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZsb29yRGV0YWlscyA9IGluZGV4ID09PSB0aGlzLmZsb29yRGV0YWlscyA/IC0xIDogaW5kZXg7XHJcbiAgICAgICAgaWYgKHRoaXMuZmxvb3JEZXRhaWxzID09PSAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRab25lID0gbnVsbDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmN1cnJlbnRab25lID0gZmxvb3I7XHJcbiAgICAgICAgdGhpcy5wbGFuSXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICBpZiAoIXRoaXMucGxhbnMpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJwbGFucyBub3QgcmVhZHlcIik7XHJcbiAgICAgICAgICAgIHJldHVybjsgLy8gd2FpdCB1bnRpbCB0aGUgcGxhbnMgYXJlIHNldFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnByZXBhcmVQbGFuKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Ub2dnbGVEZWZhdWx0Wm9uZSgpIHtcclxuICAgICAgICB0aGlzLmRlZmF1bHRTaG93aW5nID0gIXRoaXMuZGVmYXVsdFNob3dpbmc7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Wm9uZSA9IHRoaXMuZGVmYXVsdFNob3dpbmcgPyB0aGlzLmRlZmF1bHRab25lIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBwcmVwYXJlUGxhbigpIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmdQbGFuID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRQbGFuID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50Wm9uZS52aXJ0dWFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBsYW4gPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdQbGFuID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGxhbiA9IGF3YWl0IHRoaXMucGxhblNlcnZpY2UuZ2V0Q2FsaWJyYXRlZFBsYW5Gb3Jab25lKFxyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRab25lLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFBsYW4pIHtcclxuICAgICAgICAgICAgY29uc3Qgc2NhbnMgPSBhd2FpdCB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldE5hdmlnYXRpb25zRm9yWm9uZShcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2hvd1NjYW5Qb2ludHNPblBsYW4oc2NhbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxvYWRpbmdQbGFuID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlQ2Fyb3VzZWwoKSB7XHJcbiAgICAgICAgdGhpcy5jYXJvdXNlbElzVmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgb25FZGl0KHpvbmU6IFpvbmUpIHtcclxuICAgICAgICB0aGlzLnpvbmVGb3JFZGl0ID0gem9uZTtcclxuICAgICAgICBpZiAodGhpcy56b25lRm9yRWRpdC5sYXllciAmJiB0aGlzLnpvbmVGb3JFZGl0LmxheWVyLm5hbWUgPT09IFwiQVVESU9cIikge1xyXG4gICAgICAgICAgICB0aGlzLmlzQWRkaW5nQXVkaW9UcmFjayA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pc0VkaXRpbmdab25lID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICBsYWJlbDogYCR7em9uZS5uYW1lfWAsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25BZGRMb3QoKSB7XHJcbiAgICAgICAgdGhpcy5pc011c2V1bVZpc2l0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0VkaXRpbmdab25lID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1lbnVJdGVtcy5wdXNoKHtcclxuICAgICAgICAgICAgbGFiZWw6IFwiTmV3XCIsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25BZGRNdXNldW1ab25lKCkge1xyXG4gICAgICAgIHRoaXMuaXNNdXNldW1WaXNpdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc0VkaXRpbmdab25lID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1lbnVJdGVtcy5wdXNoKHtcclxuICAgICAgICAgICAgbGFiZWw6IFwiTmV3IE11c2V1bSBJdGluZXJhcnlcIixcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkFkZEF1ZGlvWm9uZShwYXJlbnRab25lOiBab25lKSB7XHJcbiAgICAgICAgdGhpcy5wYXJlbnRab25lRm9yQXVkaW8gPSBwYXJlbnRab25lO1xyXG4gICAgICAgIHRoaXMuaXNBZGRpbmdBdWRpb1RyYWNrID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1lbnVJdGVtcy5wdXNoKHtcclxuICAgICAgICAgICAgbGFiZWw6IHBhcmVudFpvbmUubmFtZSxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1lbnVJdGVtcy5wdXNoKHtcclxuICAgICAgICAgICAgbGFiZWw6IFwiYWRkLWF1ZGlvLmFkZFwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uRGVsZXRlKHpvbmU6IFpvbmUpIHtcclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcImNvbmZpcm0uZGVsZXRlWm9uZVwiKTtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYWxlcnRcclxuICAgICAgICBpZiAod2luZG93LmNvbmZpcm0obWVzc2FnZSkpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy56b25lU2VydmljZS5kZWxldGVab25lKHpvbmUuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLmFsbFpvbmVzLnNwbGljZSh0aGlzLmFsbFpvbmVzLmluZGV4T2Yoem9uZSksIDEpO1xyXG4gICAgICAgICAgICBpZiAoem9uZS5wYXJlbnRJRCAmJiBBcnJheS5mcm9tKHRoaXMuem9uZXNNYXAua2V5cygpKS5pbmNsdWRlcyh6b25lLnBhcmVudElEKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgem9uZXNGb3JQYXJlbnQgPSB0aGlzLnpvbmVzTWFwLmdldCh6b25lLnBhcmVudElEKTtcclxuICAgICAgICAgICAgICAgIHpvbmVzRm9yUGFyZW50LnNwbGljZSh6b25lc0ZvclBhcmVudC5pbmRleE9mKHpvbmUpLCAxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuem9uZXNNYXAuc2V0KHpvbmUucGFyZW50SUQsIHpvbmVzRm9yUGFyZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBlZGl0Q29tcGxldGVkKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLmxvdEluZGV4RGV0YWlscyA9IC0xO1xyXG4gICAgICAgIGlmIChldmVudCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0Wm9uZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc0VkaXRpbmdab25lID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0FkZGluZ0F1ZGlvVHJhY2sgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnpvbmVGb3JFZGl0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLnBsYW5Jc1Zpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhcm91c2VsSXNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZXR1cE1lbnVJdGVtcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNob3dTY2FuUG9pbnRzT25QbGFuKG5hdmlnYXRpb25zOiBOYXZpZ2F0aW9uW10pIHtcclxuICAgICAgICBjb25zdCBkaXZQbGFuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNwbGFuRGl2XCIpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGF3YWl0IHNob3dTY2FuUG9pbnRzT25QbGFuSW5EaXYodGhpcy5jdXJyZW50UGxhbiwgZGl2UGxhbiwgbmF2aWdhdGlvbnMpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZ1BsYW4gPSBmYWxzZTtcclxuICAgICAgICBwYW56b29tKGRpdlBsYW4sIHtcclxuICAgICAgICAgICAgYm91bmRzOiB0cnVlLFxyXG4gICAgICAgICAgICBib3VuZHNQYWRkaW5nOiAwLFxyXG4gICAgICAgICAgICBtYXhab29tOiAzLjUsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIiAqbmdJZj1cImN1cnJlbnRTcGFjZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm0tM1wiPlxyXG4gICAgICA8bGliLXRhYi1uYXZpZ2F0aW9uIFttZW51SXRlbXNdPSdtZW51SXRlbXMnIChvbkdvQmFjayk9XCJvbkdvQmFjaygpXCI+PC9saWItdGFiLW5hdmlnYXRpb24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIiFpc0VkaXRpbmdab25lICYmICFpc0FkZGluZ0F1ZGlvVHJhY2tcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCIgPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGRlZmF1bHQtem9uZS1saW5lLWl0ZW1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgem9uZS1uYW1lXCIgKm5nSWY9XCJkZWZhdWx0Wm9uZVwiPlxyXG4gICAgICAgICAgICAgIHt7ZGVmYXVsdFpvbmUubmFtZX19XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlZmF1bHQtem9uZS1sYWJlbFwiPnt7IFwid2hvbGUgc3BhY2VcIiB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxsaWItY2hldnJvbiBbY29uZGl0aW9uU2hvd2luZ109XCJkZWZhdWx0U2hvd2luZ1wiIChjbGljayk9XCJvblRvZ2dsZURlZmF1bHRab25lKClcIj48L2xpYi1jaGV2cm9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRlZmF1bHRTaG93aW5nXCI+XHJcbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIj57eydUeXBlIG9mIHpvbmUnIHwgdHJhbnNsYXRlfX06IFxyXG4gICAgICAgICAgICAgICAgICB7e2RlZmF1bHRab25lLmxheWVyID8gZGVmYXVsdFpvbmUubGF5ZXIubmFtZSA6IFwiTm8gdHlwZVwiIHwgdHJhbnNsYXRlfX0gPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiICpuZ0lmPVwiZGVmYXVsdFpvbmUuc3VyZmFjZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eydTdXJmYWNlJyB8IHRyYW5zbGF0ZX19LCBtPHN1cD4yPC9zdXA+OiB7e2RlZmF1bHRab25lLnN1cmZhY2UgfX1cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cIiFkZWZhdWx0Wm9uZS52aXJ0dWFsXCI+e3snU2NhbiBQb2ludHMnIHwgdHJhbnNsYXRlfX06XHJcbiAgICAgICAgICAgICAgICAgIHt7ZGVmYXVsdFpvbmUuc3dlZXBJRHMgPyBkZWZhdWx0Wm9uZS5zd2VlcElEcy5sZW5ndGggOiBcIk5vIHNjYW4gcG9pbnRzXCIgfCB0cmFuc2xhdGV9fSA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcGFpciBvZiB6b25lc01hcCB8IGtleXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGFpci5rZXkgPT0gZGVmYXVsdFpvbmUuaWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGg1IHN0eWxlPVwibWFyZ2luOiA4cHg7XCIgKm5nSWY9XCJwYWlyLnZhbHVlLmxlbmd0aCA+IDBcIj57eydDaGlsZHJlbiB6b25lcyd8dHJhbnNsYXRlfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gbGlzdC1ncm91cC1mbHVzaCBsaXN0LWdyb3VwLWl0ZW0tYWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsb3Qgb2YgcGFpci52YWx1ZTsgaW5kZXggYXMgem9uZUluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB6b25lLW5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tsb3QubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdXNldW0tbGFiZWxcIiAqbmdJZj1cImxvdC5pc011c2V1bVZpc2l0Wm9uZVwiPnt7IFwiaXRpbmVyYXJ5XCIgfCB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1jaGV2cm9uIFtjb25kaXRpb25TaG93aW5nXT1cInpvbmVJbmRleD09bG90SW5kZXhEZXRhaWxzXCIgKGNsaWNrKT1cIm9uVG9nZ2xlRGV0YWlsKHpvbmVJbmRleCwgbG90KVwiPjwvbGliLWNoZXZyb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiem9uZUluZGV4PT1sb3RJbmRleERldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCIhbG90LmlzTXVzZXVtVmlzaXRab25lXCI+e3snVHlwZSBvZiB6b25lJyB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fToge3tsb3QubGF5ZXIgPyBsb3QubGF5ZXIubmFtZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk5vIHR5cGVcIiB8IHRyYW5zbGF0ZX19IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCJsb3Quc3VyZmFjZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3snU3VyZmFjZScgfCB0cmFuc2xhdGV9fSxtPHN1cD4yPC9zdXA+OiB7e2xvdC5zdXJmYWNlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cIiFsb3QudmlydHVhbFwiPnt7J1NjYW4gUG9pbnRzJyB8IHRyYW5zbGF0ZX19OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsb3Quc3dlZXBJRHMgPyBsb3Quc3dlZXBJRHMubGVuZ3RoIDogXCJObyBzY2FuIHBvaW50c1wiIHwgdHJhbnNsYXRlfX0gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIiAqbmdJZj1cImxvdC52aXJ0dWFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydab25lIG5vdCB2aXNpYmxlIGluIDNEIHZpc2l0JyB8IHRyYW5zbGF0ZX19PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGwgbWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRWRpdChsb3QpXCI+e3snRWRpdCcgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1lLTJcIiAoY2xpY2spPVwib25BZGRBdWRpb1pvbmUobG90KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc011c2V1bU1vZHVsZVwiPiB7eydhZGQtYXVkaW8uYWRkJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUobG90KVwiPnt7J0RlbGV0ZScgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgPC91bD5cclxuICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbVwiICpuZ0Zvcj1cImxldCBmbG9vciBvZiBmbG9vclpvbmVzOyBpbmRleCBhcyBpbmRleFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB6b25lLW5hbWVcIj5cclxuICAgICAgICAgICAgICB7e2Zsb29yLm5hbWV9fVxyXG4gICAgICAgICAgICAgIDwhLS0gPHNtYWxsPih7eyBsb3QubWV0YWRhdGEgPyAoJ0NhbGlicmF0ZWQnIHwgdHJhbnNsYXRlKSA6ICgnTm90IGNhbGlicmF0ZWQnIHwgdHJhbnNsYXRlKX19KTwvc21hbGw+IC0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdXNldW0tbGFiZWxcIiAqbmdJZj1cImZsb29yLmlzTXVzZXVtVmlzaXRab25lXCI+e3sgXCJpdGluZXJhcnlcIiB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDxsaWItY2hldnJvbiBbY29uZGl0aW9uU2hvd2luZ109XCJpbmRleD09Zmxvb3JEZXRhaWxzXCIgKGNsaWNrKT1cIm9uVG9nZ2xlRGV0YWlsRmxvb3IoaW5kZXgsIGZsb29yKVwiPjwvbGliLWNoZXZyb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaW5kZXg9PWZsb29yRGV0YWlsc1wiPiAgXHJcbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctdHJhbnNwYXJlbnRcIj57eydUeXBlIG9mIHpvbmUnIHwgdHJhbnNsYXRlfX06IHt7Zmxvb3IubGF5ZXIgP1xyXG4gICAgICAgICAgICAgICAgICBmbG9vci5sYXllci5uYW1lIDpcclxuICAgICAgICAgICAgICAgICAgXCJObyB0eXBlXCIgfCB0cmFuc2xhdGV9fSA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCJmbG9vci5zdXJmYWNlXCI+e3snU3VyZmFjZScgfCB0cmFuc2xhdGV9fSwgbTxzdXA+Mjwvc3VwPjpcclxuICAgICAgICAgICAgICAgICAge3tmbG9vci5zdXJmYWNlIH19XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCIhZmxvb3IudmlydHVhbFwiPnt7J1NjYW4gUG9pbnRzJyB8IHRyYW5zbGF0ZX19OlxyXG4gICAgICAgICAgICAgICAgICB7e2Zsb29yLnN3ZWVwSURzID8gZmxvb3Iuc3dlZXBJRHMubGVuZ3RoIDogXCJObyBzY2FuIHBvaW50c1wiIHwgdHJhbnNsYXRlfX0gPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiICpuZ0lmPVwiZmxvb3IudmlydHVhbFwiPnt7J1pvbmUgbm90IHZpc2libGUgaW4gM0QgdmlzaXQnIHxcclxuICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGwgbWUtMlwiIChjbGljayk9XCJvbkVkaXQoZmxvb3IpXCI+e3snRWRpdCcgfFxyXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICBcclxuICAgICAgICAgICAgICA8IS0tIExpc3Qgb2YgY2hpbGRyZW4gem9uZXMgLS0+XHJcbiAgXHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcGFpciBvZiB6b25lc01hcCB8IGtleXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGFpci5rZXkgPT0gZmxvb3IuaWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGg1IHN0eWxlPVwibWFyZ2luOiA4cHg7XCIgKm5nSWY9XCJwYWlyLnZhbHVlLmxlbmd0aCA+IDBcIj57eydDaGlsZHJlbiB6b25lcyd8dHJhbnNsYXRlfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gbGlzdC1ncm91cC1mbHVzaCBsaXN0LWdyb3VwLWl0ZW0tYWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsb3Qgb2YgcGFpci52YWx1ZTsgaW5kZXggYXMgem9uZUluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB6b25lLW5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tsb3QubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdXNldW0tbGFiZWxcIiAqbmdJZj1cImxvdC5pc011c2V1bVZpc2l0Wm9uZVwiPnt7IFwiaXRpbmVyYXJ5XCIgfCB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1jaGV2cm9uIFtjb25kaXRpb25TaG93aW5nXT1cInpvbmVJbmRleD09bG90SW5kZXhEZXRhaWxzXCIgKGNsaWNrKT1cIm9uVG9nZ2xlRGV0YWlsKHpvbmVJbmRleCwgbG90KVwiPjwvbGliLWNoZXZyb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiem9uZUluZGV4PT1sb3RJbmRleERldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCIhbG90LmlzTXVzZXVtVmlzaXRab25lXCI+e3snVHlwZSBvZiB6b25lJyB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGV9fToge3tsb3QubGF5ZXIgPyBsb3QubGF5ZXIubmFtZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIk5vIHR5cGVcIiB8IHRyYW5zbGF0ZX19IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCJsb3Quc3VyZmFjZVwiPnt7J1N1cmZhY2UnIHwgdHJhbnNsYXRlfX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtPHN1cD4yPC9zdXA+OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsb3Quc3VyZmFjZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCIhbG90LnZpcnR1YWxcIj57eydTY2FuIFBvaW50cycgfCB0cmFuc2xhdGV9fTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bG90LnN3ZWVwSURzID8gbG90LnN3ZWVwSURzLmxlbmd0aCA6IFwiTm8gc2NhbiBwb2ludHNcIiB8IHRyYW5zbGF0ZX19IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXRyYW5zcGFyZW50XCIgKm5nSWY9XCIhbG90LnZpcnR1YWwgJiYgbG90LmlzTXVzZXVtVmlzaXRab25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydTY2FuIFBvaW50cyB3aXRoIGF1ZGlvJyB8IHRyYW5zbGF0ZX19OiB7eyBsb3QgfCBjb3VudEF1ZGlvU3dlZXBzIHwgYXN5bmN9fSA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy10cmFuc3BhcmVudFwiICpuZ0lmPVwibG90LnZpcnR1YWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J1pvbmUgbm90IHZpc2libGUgaW4gM0QgdmlzaXQnIHwgdHJhbnNsYXRlfX08L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbCBtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FZGl0KGxvdClcIj57eydFZGl0JyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGwgbWUtMlwiIChjbGljayk9XCJvbkFkZEF1ZGlvWm9uZShsb3QpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzTXVzZXVtTW9kdWxlXCI+IHt7J2FkZC1hdWRpby5hZGQnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLXBpbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZShsb3QpXCI+e3snRGVsZXRlJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gIFxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1lLTJcIiAoY2xpY2spPVwib25BZGRMb3QoKVwiPnt7J0FkZCB6b25lJyB8XHJcbiAgICAgICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1lLTJcIiAoY2xpY2spPVwib25BZGRNdXNldW1ab25lKClcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImlzTXVzZXVtTW9kdWxlXCI+IHt7J0FkZCBtdXNldW0gaXRpbmVyYXJ5JyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIiAqbmdJZj1cImxvYWRpbmdQbGFuXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXJcIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW47XCIgKm5nSWY9XCJjdXJyZW50Wm9uZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgbXMtM1wiIHN0eWxlPVwiaGVpZ2h0OiA1MDBweDsgd2lkdGg6IDEwMCU7XCIgaWQ9XCJwbGFuRGl2XCIgKm5nSWY9XCJjdXJyZW50UGxhblwiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFjdXJyZW50UGxhbiAmJiBwbGFucyAmJiAhbG9hZGluZ1BsYW5cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgbXMtM1wiIGlkPVwibm8tcGxhblwiICpuZ0lmPVwiIWN1cnJlbnRab25lLnZpcnR1YWwgJiYgIWN1cnJlbnRab25lLmlzTXVsdGlwbGVGbG9vclpvbmVcIj5cclxuICAgICAgICAgICAgICB7eyAnUGxhbiBpcyBub3QgY2FsaWJyYXRlZCcgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgbXMtM1wiIGlkPVwibm8tcGxhblwiICpuZ0lmPVwiY3VycmVudFpvbmUudmlydHVhbFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdObyBzY2FuIHBvaW50cyBjaG9zZW4nIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIG1zLTNcIiBpZD1cIm5vLXBsYW5cIiAqbmdJZj1cImN1cnJlbnRab25lLmlzTXVsdGlwbGVGbG9vclpvbmVcIj5cclxuICAgICAgICAgICAgICB7eyAnVGhlIHpvbmUgaXMgb24gc2V2ZXJhbCBmbG9vcnMnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIiAqbmdJZj1cImlzRWRpdGluZ1pvbmVcIj5cclxuICAgICAgPGxpYi1hZGQtem9uZSBbem9uZUVkaXRdPVwiem9uZUZvckVkaXRcIiBbc3BhY2VJRF09XCJzcGFjZUlEXCIgW2ltYWdlczM2MF09XCJpbWFnZXMzNjBcIiBbbmF2aWdhdGlvbklEc109XCJuYXZpZ2F0aW9uc1wiXHJcbiAgICAgICAgW3pvbmVzXT1cImFsbFpvbmVzXCIgW2RlZmF1bHRab25lXT1cImRlZmF1bHRab25lXCIgKHVwZGF0ZWRab25lKT1cImVkaXRDb21wbGV0ZWQoJGV2ZW50KVwiIFtpc011c2V1bVZpc2l0XT1cImlzTXVzZXVtVmlzaXRcIj48L2xpYi1hZGQtem9uZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIiAqbmdJZj1cImlzQWRkaW5nQXVkaW9UcmFja1wiPlxyXG4gICAgICA8bGliLWFkZC1hdWRpby16b25lIFtzcGFjZUlEXT1cInNwYWNlSURcIiBbZGVmYXVsdFpvbmVdPVwiZGVmYXVsdFpvbmVcIiBbcGFyZW50Wm9uZV09XCJwYXJlbnRab25lRm9yQXVkaW9cIiBbem9uZXNdPVwiYWxsWm9uZXNcIiBbY3VycmVudEF1ZGlvWm9uZV09XCJ6b25lRm9yRWRpdFwiXHJcbiAgICAgICh1cGRhdGVkWm9uZSk9XCJlZGl0Q29tcGxldGVkKCRldmVudClcIj48L2xpYi1hZGQtYXVkaW8tem9uZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4iXX0=
|
|
@@ -27,6 +27,7 @@ import { PdfViewerModule } from 'ng2-pdf-viewer';
|
|
|
27
27
|
import { SweepPlanSelectionComponent } from './components/zones/add-zone/sweep-plan-selection/sweep-plan-selection.component';
|
|
28
28
|
import { AddAudioZoneComponent } from './components/zones/add-audio-zone/add-audio-zone.component';
|
|
29
29
|
import { RadioButtonComponent } from './radio-button/radio-button.component';
|
|
30
|
+
import { CountAudioSweepsPipe } from './pipes/count-audio-sweeps.pipe';
|
|
30
31
|
import * as i0 from "@angular/core";
|
|
31
32
|
import * as i1 from "@ngx-translate/core";
|
|
32
33
|
export class NgxSmarterplanLocationsModule {
|
|
@@ -50,7 +51,8 @@ NgxSmarterplanLocationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12
|
|
|
50
51
|
CarouselComponent,
|
|
51
52
|
SweepPlanSelectionComponent,
|
|
52
53
|
AddAudioZoneComponent,
|
|
53
|
-
RadioButtonComponent
|
|
54
|
+
RadioButtonComponent,
|
|
55
|
+
CountAudioSweepsPipe], imports: [PdfViewerModule,
|
|
54
56
|
ClipboardModule,
|
|
55
57
|
NgbModule,
|
|
56
58
|
NgbAlertModule,
|
|
@@ -96,7 +98,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
96
98
|
CarouselComponent,
|
|
97
99
|
SweepPlanSelectionComponent,
|
|
98
100
|
AddAudioZoneComponent,
|
|
99
|
-
RadioButtonComponent
|
|
101
|
+
RadioButtonComponent,
|
|
102
|
+
CountAudioSweepsPipe,
|
|
100
103
|
],
|
|
101
104
|
imports: [
|
|
102
105
|
PdfViewerModule,
|
|
@@ -116,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
116
119
|
exports: [MapComponent, TabNavigationComponent]
|
|
117
120
|
}]
|
|
118
121
|
}] });
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tbG9jYXRpb25zL3NyYy9saWIvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDckYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFN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QUFFLENBQUMsWUFBWSxFQUFFLHNCQUFzQixDQUFDO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvY2F0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sb2NhdGlvbnMvbG9jYXRpb25zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERldGFpbExvY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RldGFpbC1sb2NhdGlvbi9kZXRhaWwtbG9jYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2FsaWJyYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGxhbnMvY2FsaWJyYXRpb24vY2FsaWJyYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGxhbnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGxhbnMvcGxhbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVmlzaXRzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Zpc2l0cy92aXNpdHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWm9uZXNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvem9uZXMvem9uZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW1hZ2VzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ltYWdlcy9pbWFnZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRWRpdFBsYW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGxhbnMvZWRpdC1wbGFuL2VkaXQtcGxhbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2NhdGlvbnNSb3V0aW5nTW9kdWxlIH0gZnJvbSAnLi9uZ3gtc21hcnRlcnBsYW4tbG9jYXRpb24tcm91dGluZy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVGFiTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWItbmF2aWdhdGlvbi90YWItbmF2aWdhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbG9jYXRpb25zL21hcC9tYXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGVhZmxldE1vZHVsZSB9IGZyb20gJ0Bhc3ltbWV0cmlrL25neC1sZWFmbGV0JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IE1hcFBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xvY2F0aW9ucy9tYXAvbWFwLXBvcHVwL21hcC1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3JtTG9jYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZm9ybS1sb2NhdGlvbi9mb3JtLWxvY2F0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nYkFsZXJ0TW9kdWxlLCBOZ2JNb2R1bGUgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgQ2xpcGJvYXJkTW9kdWxlIH0gZnJvbSBcIm5neC1jbGlwYm9hcmRcIjtcclxuaW1wb3J0IHsgQ2hldnJvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jaGV2cm9uL2NoZXZyb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWRkWm9uZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy96b25lcy9hZGQtem9uZS9hZGQtem9uZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvem9uZXMvYWRkLXpvbmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDYXJvdXNlbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYXJvdXNlbC9jYXJvdXNlbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ3hTbWFydGVycGxhbkNvcmVNb2R1bGUgfSBmcm9tICdAc21hcnRlcnBsYW4vbmd4LXNtYXJ0ZXJwbGFuLWNvcmUnO1xyXG5pbXBvcnQgeyBQZGZWaWV3ZXJNb2R1bGUgfSBmcm9tICduZzItcGRmLXZpZXdlcic7XHJcbmltcG9ydCB7IFN3ZWVwUGxhblNlbGVjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy96b25lcy9hZGQtem9uZS9zd2VlcC1wbGFuLXNlbGVjdGlvbi9zd2VlcC1wbGFuLXNlbGVjdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBZGRBdWRpb1pvbmVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvem9uZXMvYWRkLWF1ZGlvLXpvbmUvYWRkLWF1ZGlvLXpvbmUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmFkaW9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL3JhZGlvLWJ1dHRvbi9yYWRpby1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ291bnRBdWRpb1N3ZWVwc1BpcGUgfSBmcm9tICcuL3BpcGVzL2NvdW50LWF1ZGlvLXN3ZWVwcy5waXBlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBMb2NhdGlvbnNDb21wb25lbnQsXHJcbiAgICBEZXRhaWxMb2NhdGlvbkNvbXBvbmVudCxcclxuICAgIENhbGlicmF0aW9uQ29tcG9uZW50LFxyXG4gICAgUGxhbnNDb21wb25lbnQsXHJcbiAgICBWaXNpdHNDb21wb25lbnQsXHJcbiAgICBab25lc0NvbXBvbmVudCxcclxuICAgIEltYWdlc0NvbXBvbmVudCxcclxuICAgIEVkaXRQbGFuQ29tcG9uZW50LFxyXG4gICAgVGFiTmF2aWdhdGlvbkNvbXBvbmVudCxcclxuICAgIE1hcENvbXBvbmVudCxcclxuICAgIE1hcFBvcHVwQ29tcG9uZW50LFxyXG4gICAgRm9ybUxvY2F0aW9uQ29tcG9uZW50LFxyXG4gICAgQ2hldnJvbkNvbXBvbmVudCxcclxuICAgIEFkZFpvbmVDb21wb25lbnQsXHJcbiAgICBTZWxlY3Rpb25Db21wb25lbnQsXHJcbiAgICBDYXJvdXNlbENvbXBvbmVudCxcclxuICAgIFN3ZWVwUGxhblNlbGVjdGlvbkNvbXBvbmVudCxcclxuICAgIEFkZEF1ZGlvWm9uZUNvbXBvbmVudCxcclxuICAgIFJhZGlvQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgQ291bnRBdWRpb1N3ZWVwc1BpcGUsXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBQZGZWaWV3ZXJNb2R1bGUsXHJcbiAgICBDbGlwYm9hcmRNb2R1bGUsXHJcbiAgICBOZ2JNb2R1bGUsXHJcbiAgICBOZ2JBbGVydE1vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCh7XHJcbiAgICAgIGV4dGVuZDogdHJ1ZVxyXG4gICAgfSksXHJcbiAgICBMZWFmbGV0TW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTmd4U21hcnRlcnBsYW5Db3JlTW9kdWxlLFxyXG4gICAgTG9jYXRpb25zUm91dGluZ01vZHVsZSxcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtNYXBDb21wb25lbnQsIFRhYk5hdmlnYXRpb25Db21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hTbWFydGVycGxhbkxvY2F0aW9uc01vZHVsZSB7IH1cclxuIl19
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@smarterplan/ngx-smarterplan-core";
|
|
4
|
+
export class CountAudioSweepsPipe {
|
|
5
|
+
constructor(zoneService) {
|
|
6
|
+
this.zoneService = zoneService;
|
|
7
|
+
}
|
|
8
|
+
async transform(zone) {
|
|
9
|
+
let childrenAudioZones = await this.zoneService.getZonesByParentZone(zone.id);
|
|
10
|
+
if (childrenAudioZones.length > 0) {
|
|
11
|
+
childrenAudioZones = childrenAudioZones.filter((zone) => zone.audioID);
|
|
12
|
+
if (childrenAudioZones.length > 0) {
|
|
13
|
+
return childrenAudioZones.flatMap((z) => z.sweepIDs).length;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return 0;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
CountAudioSweepsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CountAudioSweepsPipe, deps: [{ token: i1.ZoneService }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
20
|
+
CountAudioSweepsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CountAudioSweepsPipe, name: "countAudioSweeps" });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CountAudioSweepsPipe, decorators: [{
|
|
22
|
+
type: Pipe,
|
|
23
|
+
args: [{
|
|
24
|
+
name: 'countAudioSweeps'
|
|
25
|
+
}]
|
|
26
|
+
}], ctorParameters: function () { return [{ type: i1.ZoneService }]; } });
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnQtYXVkaW8tc3dlZXBzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tbG9jYXRpb25zL3NyYy9saWIvcGlwZXMvY291bnQtYXVkaW8tc3dlZXBzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQU1wRCxNQUFNLE9BQU8sb0JBQW9CO0lBQzdCLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUksQ0FBQztJQUVqRCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQVU7UUFDdEIsSUFBSSxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLElBQUksa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMvQixrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2RSxJQUFJLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQy9CLE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDO2FBQy9EO1NBQ0o7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7O2lIQVpRLG9CQUFvQjsrR0FBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBSGhDLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLGtCQUFrQjtpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBab25lLCBab25lU2VydmljZSB9IGZyb20gJ0BzbWFydGVycGxhbi9uZ3gtc21hcnRlcnBsYW4tY29yZSc7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnY291bnRBdWRpb1N3ZWVwcydcbn0pXG5leHBvcnQgY2xhc3MgQ291bnRBdWRpb1N3ZWVwc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmVTZXJ2aWNlOiBab25lU2VydmljZSkgeyB9XG5cbiAgICBhc3luYyB0cmFuc2Zvcm0oem9uZTogWm9uZSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGxldCBjaGlsZHJlbkF1ZGlvWm9uZXMgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzQnlQYXJlbnRab25lKHpvbmUuaWQpO1xuICAgICAgICBpZiAoY2hpbGRyZW5BdWRpb1pvbmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNoaWxkcmVuQXVkaW9ab25lcyA9IGNoaWxkcmVuQXVkaW9ab25lcy5maWx0ZXIoKHpvbmUpID0+IHpvbmUuYXVkaW9JRCk7XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW5BdWRpb1pvbmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW5BdWRpb1pvbmVzLmZsYXRNYXAoKHopID0+IHouc3dlZXBJRHMpLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbn1cbiJdfQ==
|