UNPKG

survey-creator-angular

Version:

Use SurveyJS Creator to create or edit JSON for SurveyJS Form Library.

63 lines 18.4 kB
import { Component, Input } from "@angular/core"; import { AngularComponentFactory, EmbeddedViewContentComponent } from "survey-angular-ui"; import { QuestionDropdownAdornerViewModel } from "survey-creator-core"; import { QuestionDesignerComponent } from "../question.component"; import * as i0 from "@angular/core"; import * as i1 from "survey-angular-ui"; import * as i2 from "../question-banner.component"; import * as i3 from "@angular/common"; import * as i4 from "../components/action-button.component"; export class QuestionDropdownDesignerComponent extends QuestionDesignerComponent { constructor() { super(...arguments); this.adornerComponent = "svc-dropdown-question-adorner"; } createModel() { if (this.componentData) { this.adorner = new QuestionDropdownAdornerViewModel(this.creator, this.model, null); } } } QuestionDropdownDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionDropdownDesignerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); QuestionDropdownDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: QuestionDropdownDesignerComponent, selector: "svc-dropdown-question", usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div *ngIf=\"adorner\" class=\"svc-question__adorner\" [class]=\"adorner.rootCss()\" (dblclick)=\"adorner.dblclick($event)\"\n (mouseover)=\"adorner.hover($event, $event.currentTarget)\" (mouseleave)=\"adorner.hover($event, $event.currentTarget)\"\n [attr.data-sv-drop-target-survey-element]=\"adorner.element.name || null\" #container>\n <div *ngIf=\"adorner.showHiddenTitle\" [class]=\"adorner.cssCollapsedHiddenHeader\">\n <sv-ng-element-title *ngIf=\"!!model.hasTitle\" [element]=\"model\"></sv-ng-element-title>\n <div *ngIf=\"!model.hasTitle\" [class]=\"adorner.cssCollapsedHiddenTitle\">\n <span class=\"svc-fake-title\">{{model.name}}</span>\n </div>\n </div>\n <div [class]=\"adorner.css()\" [key2click]=\"{ disableTabStop: true }\" (click)=\"adorner.select(adorner, $event)\">\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--left\"></div>\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--right\"></div>\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--top\"></div>\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--bottom\"></div>\n <div *ngIf=\"adorner.allowDragging\" class=\"svc-question__drag-area\" (pointerdown)=\"adorner.onPointerDown($event)\">\n <svg class=\"svc-question__drag-element\" [iconName]=\"'icon-drag-area-indicator_24x16'\" [size]=\"'auto'\"\n sv-ng-svg-icon></svg>\n <div class=\"svc-question__top-actions\">\n <sv-action-bar [model]=\"adorner.topActionContainer\" [handleClick]=\"false\"></sv-action-bar>\n </div>\n </div>\n <ng-container *ngIf=\"adorner.needToRenderContent\">\n <ng-template [component]=\"{ name: componentName, data: componentData }\"></ng-template>\n <div *ngIf=\"adorner.isEmptyElement && !showPlaceholderComponent\" class=\"svc-panel__placeholder_frame-wrapper\">\n <div class=\"svc-panel__placeholder_frame\">\n <div class=\"svc-panel__placeholder\">{{ adorner.placeholderText }}</div>\n </div>\n </div>\n <ng-template *ngIf=\"adorner.isEmptyElement && !!showPlaceholderComponent\"\n [component]=\"{ name: placeholderComponent, data: placeholderComponentData }\">\n </ng-template>\n <ng-template *ngIf=\"adornerComponent\"\n [component]=\"{ name: adornerComponent, data: { adorner: adorner, question: model } }\">\n </ng-template>\n <svc-question-banner *ngIf=\"adorner.isBannerShowing\" [model]=\"adorner.createBannerParams()\">\n </svc-question-banner>\n <div class=\"svc-question__content-actions\" (focusin)=\"adorner.select(adorner, $event)\">\n <sv-action-bar [model]=\"adorner.actionContainer\" [handleClick]=\"false\"></sv-action-bar>\n </div>\n </ng-container>\n </div>\n </div>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: i1.ElementTitleComponent, selector: "sv-ng-element-title", inputs: ["element"] }, { type: i1.SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: i1.ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: i2.QuestionBannerComponent, selector: "svc-question-banner", inputs: ["model"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.Key2ClickDirective, selector: "[key2click]", inputs: ["key2click"] }, { type: i1.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionDropdownDesignerComponent, decorators: [{ type: Component, args: [{ selector: "svc-dropdown-question", templateUrl: "../question.component.html", styles: [":host { display: none; }"] }] }] }); AngularComponentFactory.Instance.registerComponent("svc-dropdown-question", QuestionDropdownDesignerComponent); export class QuestionDropdownAdornerDesignerComponent extends EmbeddedViewContentComponent { getItemValueComponentName(item) { return this.question.getItemValueWrapperComponentName(item) || "sv-ng-selectbase-item"; } getItemValueComponentData(item) { return { componentName: "sv-ng-selectbase-item", componentData: { question: this.question, model: item, inputType: "radio", data: this.question.getItemValueWrapperComponentData(item) } }; } } QuestionDropdownAdornerDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionDropdownAdornerDesignerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); QuestionDropdownAdornerDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: QuestionDropdownAdornerDesignerComponent, selector: "svc-dropdown-question-adorner", inputs: { adorner: "adorner", question: "question" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div class=\"svc-question__dropdown-choices--wrapper\">\n <div>\n <div class=\"svc-question__dropdown-choices\">\n <div *ngFor=\"let item of adorner.getRenderedItems()\" [class]=\"adorner.getChoiceCss()\"\n data-bind=\"css: $parent.getChoiceCss()\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\">\n </ng-template>\n </div>\n </div>\n <svc-action-button *ngIf=\"adorner.needToCollapse\" [text]=\"adorner.getButtonText()\"\n [click]=\"adorner.switchCollapse.bind(adorner)\" [allowBubble]=\"true\">\n </svc-action-button>\n </div>\n </div>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: i4.ActionButtonComponent, selector: "svc-action-button", inputs: ["classes", "click", "selected", "disabled", "text", "title", "iconName", "allowBubble"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionDropdownAdornerDesignerComponent, decorators: [{ type: Component, args: [{ selector: "svc-dropdown-question-adorner", templateUrl: "./question-dropdown.component.html", styles: [":host { display: none; }"] }] }], propDecorators: { adorner: [{ type: Input }], question: [{ type: Input }] } }); AngularComponentFactory.Instance.registerComponent("svc-dropdown-question-adorner", QuestionDropdownAdornerDesignerComponent); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Fkb3JuZXJzL3F1ZXN0aW9uLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9xdWVzdGlvbi5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uL3NyYy9hZG9ybmVycy9xdWVzdGlvbi1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSx1QkFBdUIsRUFBZSw0QkFBNEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZHLE9BQU8sRUFBZ0QsZ0NBQWdDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVySCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBT2xFLE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSx5QkFBeUI7SUFMaEY7O1FBV2tCLHFCQUFnQixHQUFHLCtCQUErQixDQUFDO0tBQ3BFO0lBTm9CLFdBQVc7UUFDNUIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQU8sSUFBSSxDQUFDLENBQUM7U0FDMUY7SUFDSCxDQUFDOzsrSEFMVSxpQ0FBaUM7bUhBQWpDLGlDQUFpQyxvRkNaOUMsKzFGQTJDYzs0RkQvQkQsaUNBQWlDO2tCQUw3QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFdBQVcsRUFBRSw0QkFBNEI7b0JBQ3pDLE1BQU0sRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUNyQzs7QUFVRCx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLEVBQUUsaUNBQWlDLENBQUMsQ0FBQztBQU8vRyxNQUFNLE9BQU8sd0NBQXlDLFNBQVEsNEJBQTRCO0lBR2pGLHlCQUF5QixDQUFDLElBQWU7UUFDOUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxJQUFJLHVCQUF1QixDQUFDO0lBQ3pGLENBQUM7SUFDTSx5QkFBeUIsQ0FBQyxJQUFlO1FBQzlDLE9BQU87WUFDTCxhQUFhLEVBQUUsdUJBQXVCO1lBQ3RDLGFBQWEsRUFBRTtnQkFDYixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLEtBQUssRUFBRSxJQUFJO2dCQUNYLFNBQVMsRUFBRSxPQUFPO2dCQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUM7YUFDM0Q7U0FDRixDQUFDO0lBQ0osQ0FBQzs7c0lBaEJVLHdDQUF3QzswSEFBeEMsd0NBQXdDLGtKRTVCckQsa3RCQWVjOzRGRmFELHdDQUF3QztrQkFMcEQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsK0JBQStCO29CQUN6QyxXQUFXLEVBQUUsb0NBQW9DO29CQUNqRCxNQUFNLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztpQkFDckM7OEJBRVUsT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7O0FBa0JSLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQywrQkFBK0IsRUFBRSx3Q0FBd0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudEZhY3RvcnksIEJhc2VBbmd1bGFyLCBFbWJlZGRlZFZpZXdDb250ZW50Q29tcG9uZW50IH0gZnJvbSBcInN1cnZleS1hbmd1bGFyLXVpXCI7XG5pbXBvcnQgeyBJdGVtVmFsdWUsIFBhZ2VNb2RlbCwgUXVlc3Rpb24sIFN1cnZleU1vZGVsIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgeyBTdXJ2ZXlDcmVhdG9yTW9kZWwsIFF1ZXN0aW9uQWRvcm5lclZpZXdNb2RlbCwgUXVlc3Rpb25Ecm9wZG93bkFkb3JuZXJWaWV3TW9kZWwgfSBmcm9tIFwic3VydmV5LWNyZWF0b3ItY29yZVwiO1xuaW1wb3J0IHsgQ3JlYXRvck1vZGVsQ29tcG9uZW50IH0gZnJvbSBcIi4uL2NyZWF0b3ItbW9kZWwuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBRdWVzdGlvbkRlc2lnbmVyQ29tcG9uZW50IH0gZnJvbSBcIi4uL3F1ZXN0aW9uLmNvbXBvbmVudFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3ZjLWRyb3Bkb3duLXF1ZXN0aW9uXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4uL3F1ZXN0aW9uLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlczogW1wiOmhvc3QgeyBkaXNwbGF5OiBub25lOyB9XCJdXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uRHJvcGRvd25EZXNpZ25lckNvbXBvbmVudCBleHRlbmRzIFF1ZXN0aW9uRGVzaWduZXJDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY3JlYXRlTW9kZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50RGF0YSkge1xuICAgICAgdGhpcy5hZG9ybmVyID0gbmV3IFF1ZXN0aW9uRHJvcGRvd25BZG9ybmVyVmlld01vZGVsKHRoaXMuY3JlYXRvciwgdGhpcy5tb2RlbCwgPGFueT5udWxsKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIG92ZXJyaWRlIGFkb3JuZXJDb21wb25lbnQgPSBcInN2Yy1kcm9wZG93bi1xdWVzdGlvbi1hZG9ybmVyXCI7XG59XG5cbkFuZ3VsYXJDb21wb25lbnRGYWN0b3J5Lkluc3RhbmNlLnJlZ2lzdGVyQ29tcG9uZW50KFwic3ZjLWRyb3Bkb3duLXF1ZXN0aW9uXCIsIFF1ZXN0aW9uRHJvcGRvd25EZXNpZ25lckNvbXBvbmVudCk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzdmMtZHJvcGRvd24tcXVlc3Rpb24tYWRvcm5lclwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3F1ZXN0aW9uLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlczogW1wiOmhvc3QgeyBkaXNwbGF5OiBub25lOyB9XCJdXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uRHJvcGRvd25BZG9ybmVyRGVzaWduZXJDb21wb25lbnQgZXh0ZW5kcyBFbWJlZGRlZFZpZXdDb250ZW50Q29tcG9uZW50IHtcbiAgQElucHV0KCkgYWRvcm5lciE6IGFueTtcbiAgQElucHV0KCkgcXVlc3Rpb24hOiBhbnk7XG4gIHB1YmxpYyBnZXRJdGVtVmFsdWVDb21wb25lbnROYW1lKGl0ZW06IEl0ZW1WYWx1ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucXVlc3Rpb24uZ2V0SXRlbVZhbHVlV3JhcHBlckNvbXBvbmVudE5hbWUoaXRlbSkgfHwgXCJzdi1uZy1zZWxlY3RiYXNlLWl0ZW1cIjtcbiAgfVxuICBwdWJsaWMgZ2V0SXRlbVZhbHVlQ29tcG9uZW50RGF0YShpdGVtOiBJdGVtVmFsdWUpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBjb21wb25lbnROYW1lOiBcInN2LW5nLXNlbGVjdGJhc2UtaXRlbVwiLFxuICAgICAgY29tcG9uZW50RGF0YToge1xuICAgICAgICBxdWVzdGlvbjogdGhpcy5xdWVzdGlvbixcbiAgICAgICAgbW9kZWw6IGl0ZW0sXG4gICAgICAgIGlucHV0VHlwZTogXCJyYWRpb1wiLFxuICAgICAgICBkYXRhOiB0aGlzLnF1ZXN0aW9uLmdldEl0ZW1WYWx1ZVdyYXBwZXJDb21wb25lbnREYXRhKGl0ZW0pXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG59XG5cbkFuZ3VsYXJDb21wb25lbnRGYWN0b3J5Lkluc3RhbmNlLnJlZ2lzdGVyQ29tcG9uZW50KFwic3ZjLWRyb3Bkb3duLXF1ZXN0aW9uLWFkb3JuZXJcIiwgUXVlc3Rpb25Ecm9wZG93bkFkb3JuZXJEZXNpZ25lckNvbXBvbmVudCk7XG4iLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICA8ZGl2ICpuZ0lmPVwiYWRvcm5lclwiIGNsYXNzPVwic3ZjLXF1ZXN0aW9uX19hZG9ybmVyXCIgW2NsYXNzXT1cImFkb3JuZXIucm9vdENzcygpXCIgKGRibGNsaWNrKT1cImFkb3JuZXIuZGJsY2xpY2soJGV2ZW50KVwiXG4gICAgKG1vdXNlb3Zlcik9XCJhZG9ybmVyLmhvdmVyKCRldmVudCwgJGV2ZW50LmN1cnJlbnRUYXJnZXQpXCIgKG1vdXNlbGVhdmUpPVwiYWRvcm5lci5ob3ZlcigkZXZlbnQsICRldmVudC5jdXJyZW50VGFyZ2V0KVwiXG4gICAgW2F0dHIuZGF0YS1zdi1kcm9wLXRhcmdldC1zdXJ2ZXktZWxlbWVudF09XCJhZG9ybmVyLmVsZW1lbnQubmFtZSB8fCBudWxsXCIgI2NvbnRhaW5lcj5cbiAgICA8ZGl2ICpuZ0lmPVwiYWRvcm5lci5zaG93SGlkZGVuVGl0bGVcIiBbY2xhc3NdPVwiYWRvcm5lci5jc3NDb2xsYXBzZWRIaWRkZW5IZWFkZXJcIj5cbiAgICAgIDxzdi1uZy1lbGVtZW50LXRpdGxlICpuZ0lmPVwiISFtb2RlbC5oYXNUaXRsZVwiIFtlbGVtZW50XT1cIm1vZGVsXCI+PC9zdi1uZy1lbGVtZW50LXRpdGxlPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIW1vZGVsLmhhc1RpdGxlXCIgW2NsYXNzXT1cImFkb3JuZXIuY3NzQ29sbGFwc2VkSGlkZGVuVGl0bGVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Yy1mYWtlLXRpdGxlXCI+e3ttb2RlbC5uYW1lfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IFtjbGFzc109XCJhZG9ybmVyLmNzcygpXCIgW2tleTJjbGlja109XCJ7IGRpc2FibGVUYWJTdG9wOiB0cnVlIH1cIiAoY2xpY2spPVwiYWRvcm5lci5zZWxlY3QoYWRvcm5lciwgJGV2ZW50KVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN2Yy1xdWVzdGlvbl9fZHJvcC1pbmRpY2F0b3Igc3ZjLXF1ZXN0aW9uX19kcm9wLWluZGljYXRvci0tbGVmdFwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN2Yy1xdWVzdGlvbl9fZHJvcC1pbmRpY2F0b3Igc3ZjLXF1ZXN0aW9uX19kcm9wLWluZGljYXRvci0tcmlnaHRcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdmMtcXVlc3Rpb25fX2Ryb3AtaW5kaWNhdG9yIHN2Yy1xdWVzdGlvbl9fZHJvcC1pbmRpY2F0b3ItLXRvcFwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN2Yy1xdWVzdGlvbl9fZHJvcC1pbmRpY2F0b3Igc3ZjLXF1ZXN0aW9uX19kcm9wLWluZGljYXRvci0tYm90dG9tXCI+PC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiYWRvcm5lci5hbGxvd0RyYWdnaW5nXCIgY2xhc3M9XCJzdmMtcXVlc3Rpb25fX2RyYWctYXJlYVwiIChwb2ludGVyZG93bik9XCJhZG9ybmVyLm9uUG9pbnRlckRvd24oJGV2ZW50KVwiPlxuICAgICAgICA8c3ZnIGNsYXNzPVwic3ZjLXF1ZXN0aW9uX19kcmFnLWVsZW1lbnRcIiBbaWNvbk5hbWVdPVwiJ2ljb24tZHJhZy1hcmVhLWluZGljYXRvcl8yNHgxNidcIiBbc2l6ZV09XCInYXV0bydcIlxuICAgICAgICAgIHN2LW5nLXN2Zy1pY29uPjwvc3ZnPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3ZjLXF1ZXN0aW9uX190b3AtYWN0aW9uc1wiPlxuICAgICAgICAgIDxzdi1hY3Rpb24tYmFyIFttb2RlbF09XCJhZG9ybmVyLnRvcEFjdGlvbkNvbnRhaW5lclwiIFtoYW5kbGVDbGlja109XCJmYWxzZVwiPjwvc3YtYWN0aW9uLWJhcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZG9ybmVyLm5lZWRUb1JlbmRlckNvbnRlbnRcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT1cInsgbmFtZTogY29tcG9uZW50TmFtZSwgZGF0YTogY29tcG9uZW50RGF0YSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxkaXYgKm5nSWY9XCJhZG9ybmVyLmlzRW1wdHlFbGVtZW50ICYmICFzaG93UGxhY2Vob2xkZXJDb21wb25lbnRcIiBjbGFzcz1cInN2Yy1wYW5lbF9fcGxhY2Vob2xkZXJfZnJhbWUtd3JhcHBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3ZjLXBhbmVsX19wbGFjZWhvbGRlcl9mcmFtZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdmMtcGFuZWxfX3BsYWNlaG9sZGVyXCI+e3sgYWRvcm5lci5wbGFjZWhvbGRlclRleHQgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImFkb3JuZXIuaXNFbXB0eUVsZW1lbnQgJiYgISFzaG93UGxhY2Vob2xkZXJDb21wb25lbnRcIlxuICAgICAgICBbY29tcG9uZW50XT1cInsgbmFtZTogcGxhY2Vob2xkZXJDb21wb25lbnQsIGRhdGE6IHBsYWNlaG9sZGVyQ29tcG9uZW50RGF0YSB9XCI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiYWRvcm5lckNvbXBvbmVudFwiXG4gICAgICAgIFtjb21wb25lbnRdPVwieyBuYW1lOiBhZG9ybmVyQ29tcG9uZW50LCBkYXRhOiB7IGFkb3JuZXI6IGFkb3JuZXIsIHF1ZXN0aW9uOiBtb2RlbCB9IH1cIj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8c3ZjLXF1ZXN0aW9uLWJhbm5lciAqbmdJZj1cImFkb3JuZXIuaXNCYW5uZXJTaG93aW5nXCIgW21vZGVsXT1cImFkb3JuZXIuY3JlYXRlQmFubmVyUGFyYW1zKClcIj5cbiAgICAgIDwvc3ZjLXF1ZXN0aW9uLWJhbm5lcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdmMtcXVlc3Rpb25fX2NvbnRlbnQtYWN0aW9uc1wiIChmb2N1c2luKT1cImFkb3JuZXIuc2VsZWN0KGFkb3JuZXIsICRldmVudClcIj5cbiAgICAgICAgPHN2LWFjdGlvbi1iYXIgW21vZGVsXT1cImFkb3JuZXIuYWN0aW9uQ29udGFpbmVyXCIgW2hhbmRsZUNsaWNrXT1cImZhbHNlXCI+PC9zdi1hY3Rpb24tYmFyPlxuICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiIsIjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJzdmMtcXVlc3Rpb25fX2Ryb3Bkb3duLWNob2ljZXMtLXdyYXBwZXJcIj5cbiAgICA8ZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN2Yy1xdWVzdGlvbl9fZHJvcGRvd24tY2hvaWNlc1wiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFkb3JuZXIuZ2V0UmVuZGVyZWRJdGVtcygpXCIgW2NsYXNzXT1cImFkb3JuZXIuZ2V0Q2hvaWNlQ3NzKClcIlxuICAgICAgICAgIGRhdGEtYmluZD1cImNzczogJHBhcmVudC5nZXRDaG9pY2VDc3MoKVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT1cInsgbmFtZTogZ2V0SXRlbVZhbHVlQ29tcG9uZW50TmFtZShpdGVtKSwgZGF0YTogZ2V0SXRlbVZhbHVlQ29tcG9uZW50RGF0YShpdGVtKSB9XCI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzdmMtYWN0aW9uLWJ1dHRvbiAqbmdJZj1cImFkb3JuZXIubmVlZFRvQ29sbGFwc2VcIiBbdGV4dF09XCJhZG9ybmVyLmdldEJ1dHRvblRleHQoKVwiXG4gICAgICAgIFtjbGlja109XCJhZG9ybmVyLnN3aXRjaENvbGxhcHNlLmJpbmQoYWRvcm5lcilcIiBbYWxsb3dCdWJibGVdPVwidHJ1ZVwiPlxuICAgICAgPC9zdmMtYWN0aW9uLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==