UNPKG

@asoftwareworld/form-builder-pro

Version:

ASW Form Builder Pro helps you with rapid development and designed web forms which includes several controls. The key feature of Form Builder is to make your content attractive and effective. We can customize our control at run time and preview the same b

84 lines 52 kB
/** * @license * Copyright ASW (A Software World) All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file */ import { Component, Inject } from '@angular/core'; import { Validators } from '@angular/forms'; import { MAT_DIALOG_DATA } from '@angular/material/dialog'; import { Constants, Icons } from '@asoftwareworld/form-builder-pro/common'; import * as i0 from "@angular/core"; import * as i1 from "@angular/forms"; import * as i2 from "@angular/material/dialog"; import * as i3 from "@angular/common"; import * as i4 from "@angular/material/button"; import * as i5 from "@angular/material/input"; import * as i6 from "@angular/material/form-field"; import * as i7 from "@angular/material/tooltip"; import * as i8 from "@asoftwareworld/form-builder-pro/core"; import * as i9 from "@asoftwareworld/form-builder-pro/common"; export class AswFileUploadDialog { formBuilder; dialogRef; data; constants = Constants; icons = Icons; aswFileUploadForm; control; constructor(formBuilder, dialogRef, data) { this.formBuilder = formBuilder; this.dialogRef = dialogRef; this.data = data; } ngOnInit() { this.control = this.data.control; this.validateFormBuilder(); this.editProperty(this.control); } validateFormBuilder() { this.aswFileUploadForm = this.formBuilder.group({ id: ['', [Validators.required]], label: ['', [Validators.required, Validators.minLength(2)]], minSize: [], maxSize: [], allowMultipleFile: [], fileTypes: [], isRequired: [false] }); } editProperty(control) { this.aswFileUploadForm.setValue({ id: control.id, label: control.label, minSize: control.minSize, maxSize: control.maxSize, allowMultipleFile: control.allowMultipleFile, fileTypes: control.fileTypes, isRequired: control.isRequired }); } onNoClick() { this.dialogRef.close(); } onSubmit() { if (this.aswFileUploadForm.invalid) { return; } this.aswFileUploadForm.value.controlType = this.control.controlType; this.aswFileUploadForm.value.guid = this.control.guid; this.aswFileUploadForm.value.value = this.control.value; this.dialogRef.close(this.aswFileUploadForm.value); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AswFileUploadDialog, deps: [{ token: i1.FormBuilder }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: AswFileUploadDialog, selector: "asw-fileupload-dialog", ngImport: i0, template: "<div class=\"asw-dialog-header\">\r\n <div class=\"asw-edit-row-dialog\">\r\n <div class=\"asw-dialog-header clearfix\">\r\n <div class=\"asw-dialog-about\">\r\n <h1 mat-dialog-title class=\"asw-m-0\">{{'FormControl.Edit' | aswTranslate}} {{control.label | aswTranslate}}</h1>\r\n </div>\r\n </div>\r\n </div>\r\n <button mat-icon-button (click)=\"onNoClick()\" aria-label=\"Close dialog\" class=\"asw-mt-2 asw-me-2\">\r\n <div [innerHTML]=\"icons.close | aswSafeHtml\"></div>\r\n </button>\r\n</div>\r\n<form [formGroup]=\"aswFileUploadForm\" (ngSubmit)=\"onSubmit()\">\r\n <mat-dialog-content class=\"mat-typography\">\r\n <div class=\"asw-row\">\r\n <ng-container *ngIf=\"data.CSSFramework === 'material'; else bootstrap\">\r\n <ng-container *ngIf=\"!data.propertyPersonalization.includes('uniqueId')\">\r\n <div class=\"asw-col-md-12\">\r\n <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n <mat-label>{{'FormControl.UniqueId' | aswTranslate}}</mat-label>\r\n <input matInput type=\"text\"\r\n name=\"id\"\r\n placeholder=\"{{'FormControl.UniqueId' | aswTranslate}}\"\r\n matTooltip=\"{{'FormControl.UniqueId' | aswTranslate}}\"\r\n formControlName=\"id\" required>\r\n <mat-error *ngFor=\"let validation of constants.accountValidationMessages.id\">\r\n <ng-container *ngIf=\"aswFileUploadForm.get('id')?.hasError(validation.type) && (aswFileUploadForm.get('id')?.dirty || aswFileUploadForm.get('id')?.touched)\">\r\n {{validation.message | aswTranslate}}\r\n </ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n <div class=\"asw-col-md-6\">\r\n <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n <mat-label>{{'FormControl.Label' | aswTranslate}}</mat-label>\r\n <input matInput type=\"text\"\r\n name=\"label\"\r\n placeholder=\"{{'FormControl.Label' | aswTranslate}}\"\r\n matTooltip=\"{{'FormControl.Label' | aswTranslate}}\"\r\n formControlName=\"label\" required>\r\n <mat-error *ngFor=\"let validation of constants.accountValidationMessages.label\">\r\n <ng-container *ngIf=\"aswFileUploadForm.get('label')?.hasError(validation.type) && (aswFileUploadForm.get('label')?.dirty || aswFileUploadForm.get('label')?.touched)\">\r\n {{validation.message | aswTranslate}}\r\n </ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"asw-col-md-6\">\r\n <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n <mat-label>{{'FormControl.AllowMultipleFile' | aswTranslate}}</mat-label>\r\n <input matInput type=\"text\"\r\n name=\"allowMultipleFile\"\r\n placeholder=\"{{'FormControl.AllowMultipleFile' | aswTranslate}}\"\r\n matTooltip=\"{{'FormControl.AllowMultipleFile' | aswTranslate}}\"\r\n formControlName=\"allowMultipleFile\">\r\n </mat-form-field>\r\n </div>\r\n <div class=\"asw-col-md-6\">\r\n <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n <mat-label>{{'FormControl.MinSize' | aswTranslate}}</mat-label>\r\n <input matInput type=\"text\"\r\n name=\"minSize\"\r\n placeholder=\"{{'FormControl.MinSize' | aswTranslate}}\"\r\n matTooltip=\"{{'FormControl.MinSize' | aswTranslate}}\"\r\n formControlName=\"minSize\">\r\n </mat-form-field>\r\n </div>\r\n <div class=\"asw-col-md-6\">\r\n <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n <mat-label>{{'FormControl.MaxSize' | aswTranslate}}</mat-label>\r\n <input matInput type=\"text\"\r\n name=\"maxSize\"\r\n placeholder=\"{{'FormControl.MaxSize' | aswTranslate}}\"\r\n matTooltip=\"{{'FormControl.MaxSize' | aswTranslate}}\"\r\n formControlName=\"maxSize\">\r\n </mat-form-field>\r\n </div>\r\n <div class=\"asw-col-md-12\">\r\n <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n <mat-label>{{'FormControl.FileTypes' | aswTranslate}}</mat-label>\r\n <textarea matInput type=\"text\"\r\n name=\"fileTypes\"\r\n placeholder=\"{{'FormControl.FileTypes' | aswTranslate}}\"\r\n matTooltip=\"{{'FormControl.FileTypes' | aswTranslate}}\"\r\n formControlName=\"fileTypes\">\r\n </textarea>\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n <ng-template #bootstrap>\r\n <ng-container *ngIf=\"!data.propertyPersonalization.includes('uniqueId')\">\r\n <div class=\"asw-col-md-12\">\r\n <div class=\"asw-mb-3\">\r\n <label class=\"asw-input-label asw-invalid-label {{(aswFileUploadForm.get('id')?.invalid && (aswFileUploadForm.get('id')?.dirty || aswFileUploadForm.get('id')?.touched)) ? 'asw-red-color' : ''}}\">{{'FormControl.UniqueId' | aswTranslate}}</label>\r\n <input type=\"text\"\r\n name=\"id\"\r\n class=\"asw-input-control\"\r\n [class.asw-is-invalid]=\"(aswFileUploadForm.get('id')?.invalid && (aswFileUploadForm.get('id')?.dirty || aswFileUploadForm.get('id')?.touched))\"\r\n matTooltip=\"{{'FormControl.UniqueId' | aswTranslate}}\"\r\n formControlName=\"id\" required>\r\n <div *ngFor=\"let validation of constants.accountValidationMessages.id\" class=\"invalid-feedback\">\r\n <ng-container *ngIf=\"aswFileUploadForm.get('id')?.hasError(validation.type) && (aswFileUploadForm.get('id')?.dirty || aswFileUploadForm.get('id')?.touched)\">\r\n {{validation.message | aswTranslate}}\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"asw-col-md-6\">\r\n <div class=\"asw-mb-3\">\r\n <label class=\"asw-input-label asw-invalid-label {{(aswFileUploadForm.get('label')?.invalid && (aswFileUploadForm.get('label')?.dirty || aswFileUploadForm.get('label')?.touched)) ? 'asw-red-color' : ''}}\">{{'FormControl.Label' | aswTranslate}}</label>\r\n <input type=\"text\"\r\n name=\"label\"\r\n class=\"asw-input-control\"\r\n [class.asw-is-invalid]=\"(aswFileUploadForm.get('label')?.invalid && (aswFileUploadForm.get('label')?.dirty || aswFileUploadForm.get('label')?.touched))\"\r\n matTooltip=\"{{'FormControl.Label' | aswTranslate}}\"\r\n formControlName=\"label\" required>\r\n <div *ngFor=\"let validation of constants.accountValidationMessages.label\" class=\"invalid-feedback\">\r\n <ng-container *ngIf=\"aswFileUploadForm.get('label')?.hasError(validation.type) && (aswFileUploadForm.get('label')?.dirty || aswFileUploadForm.get('label')?.touched)\">\r\n {{validation.message | aswTranslate}}\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"asw-col-md-6\">\r\n <div class=\"asw-mb-3\">\r\n <label class=\"asw-input-label\">{{'FormControl.AllowMultipleFile' | aswTranslate}}</label>\r\n <input type=\"text\"\r\n name=\"allowMultipleFile\"\r\n class=\"asw-input-control\"\r\n matTooltip=\"{{'FormControl.AllowMultipleFile' | aswTranslate}}\"\r\n formControlName=\"allowMultipleFile\">\r\n </div>\r\n </div>\r\n <div class=\"asw-col-md-6\">\r\n <div class=\"asw-mb-3\">\r\n <label class=\"asw-input-label\">{{'FormControl.MinSize' | aswTranslate}}</label>\r\n <input type=\"text\"\r\n name=\"minSize\"\r\n class=\"asw-input-control\"\r\n matTooltip=\"{{'FormControl.MinSize' | aswTranslate}}\"\r\n formControlName=\"minSize\">\r\n </div>\r\n </div>\r\n <div class=\"asw-col-md-6\">\r\n <div class=\"asw-mb-3\">\r\n <label class=\"asw-input-label\">{{'FormControl.MaxSize' | aswTranslate}}</label>\r\n <input type=\"text\"\r\n name=\"maxSize\"\r\n class=\"asw-input-control\"\r\n matTooltip=\"{{'FormControl.MaxSize' | aswTranslate}}\"\r\n formControlName=\"maxSize\">\r\n </div>\r\n </div>\r\n <div class=\"asw-col-md-12\">\r\n <div class=\"asw-mb-3\">\r\n <label class=\"asw-input-label\">{{'FormControl.FileTypes' | aswTranslate}}</label>\r\n <textarea type=\"text\"\r\n name=\"fileTypes\"\r\n class=\"asw-input-control\"\r\n matTooltip=\"{{'FormControl.FileTypes' | aswTranslate}}\"\r\n formControlName=\"fileTypes\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions align=\"end\">\r\n <button type=\"button\"\r\n class=\"asw-button asw-button-danger asw-mb-1 asw-me-2\"\r\n (click)=\"onNoClick()\">\r\n {{'FormControl.No' | aswTranslate}}\r\n </button>\r\n <button type=\"submit\"\r\n class=\"asw-button asw-button-primary asw-mb-1\"\r\n cdkFocusInitial>\r\n {{'FormControl.Yes' | aswTranslate}}\r\n </button>\r\n </mat-dialog-actions>\r\n</form>\r\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i8.AswTranslatePipe, name: "aswTranslate" }, { kind: "pipe", type: i9.AswSafeHtmlPipe, name: "aswSafeHtml" }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AswFileUploadDialog, decorators: [{ type: Component, args: [{ selector: 'asw-fileupload-dialog', template: "<div class=\"asw-dialog-header\">\r\n <div class=\"asw-edit-row-dialog\">\r\n <div class=\"asw-dialog-header clearfix\">\r\n <div class=\"asw-dialog-about\">\r\n <h1 mat-dialog-title class=\"asw-m-0\">{{'FormControl.Edit' | aswTranslate}} {{control.label | aswTranslate}}</h1>\r\n </div>\r\n </div>\r\n </div>\r\n <button mat-icon-button (click)=\"onNoClick()\" aria-label=\"Close dialog\" class=\"asw-mt-2 asw-me-2\">\r\n <div [innerHTML]=\"icons.close | aswSafeHtml\"></div>\r\n </button>\r\n</div>\r\n<form [formGroup]=\"aswFileUploadForm\" (ngSubmit)=\"onSubmit()\">\r\n <mat-dialog-content class=\"mat-typography\">\r\n <div class=\"asw-row\">\r\n <ng-container *ngIf=\"data.CSSFramework === 'material'; else bootstrap\">\r\n <ng-container *ngIf=\"!data.propertyPersonalization.includes('uniqueId')\">\r\n <div class=\"asw-col-md-12\">\r\n <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n <mat-label>{{'FormControl.UniqueId' | aswTranslate}}</mat-label>\r\n <input matInput type=\"text\"\r\n name=\"id\"\r\n placeholder=\"{{'FormControl.UniqueId' | aswTranslate}}\"\r\n matTooltip=\"{{'FormControl.UniqueId' | aswTranslate}}\"\r\n formControlName=\"id\" required>\r\n <mat-error *ngFor=\"let validation of constants.accountValidationMessages.id\">\r\n <ng-container *ngIf=\"aswFileUploadForm.get('id')?.hasError(validation.type) && (aswFileUploadForm.get('id')?.dirty || aswFileUploadForm.get('id')?.touched)\">\r\n {{validation.message | aswTranslate}}\r\n </ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n <div class=\"asw-col-md-6\">\r\n <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n <mat-label>{{'FormControl.Label' | aswTranslate}}</mat-label>\r\n <input matInput type=\"text\"\r\n name=\"label\"\r\n placeholder=\"{{'FormControl.Label' | aswTranslate}}\"\r\n matTooltip=\"{{'FormControl.Label' | aswTranslate}}\"\r\n formControlName=\"label\" required>\r\n <mat-error *ngFor=\"let validation of constants.accountValidationMessages.label\">\r\n <ng-container *ngIf=\"aswFileUploadForm.get('label')?.hasError(validation.type) && (aswFileUploadForm.get('label')?.dirty || aswFileUploadForm.get('label')?.touched)\">\r\n {{validation.message | aswTranslate}}\r\n </ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"asw-col-md-6\">\r\n <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n <mat-label>{{'FormControl.AllowMultipleFile' | aswTranslate}}</mat-label>\r\n <input matInput type=\"text\"\r\n name=\"allowMultipleFile\"\r\n placeholder=\"{{'FormControl.AllowMultipleFile' | aswTranslate}}\"\r\n matTooltip=\"{{'FormControl.AllowMultipleFile' | aswTranslate}}\"\r\n formControlName=\"allowMultipleFile\">\r\n </mat-form-field>\r\n </div>\r\n <div class=\"asw-col-md-6\">\r\n <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n <mat-label>{{'FormControl.MinSize' | aswTranslate}}</mat-label>\r\n <input matInput type=\"text\"\r\n name=\"minSize\"\r\n placeholder=\"{{'FormControl.MinSize' | aswTranslate}}\"\r\n matTooltip=\"{{'FormControl.MinSize' | aswTranslate}}\"\r\n formControlName=\"minSize\">\r\n </mat-form-field>\r\n </div>\r\n <div class=\"asw-col-md-6\">\r\n <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n <mat-label>{{'FormControl.MaxSize' | aswTranslate}}</mat-label>\r\n <input matInput type=\"text\"\r\n name=\"maxSize\"\r\n placeholder=\"{{'FormControl.MaxSize' | aswTranslate}}\"\r\n matTooltip=\"{{'FormControl.MaxSize' | aswTranslate}}\"\r\n formControlName=\"maxSize\">\r\n </mat-form-field>\r\n </div>\r\n <div class=\"asw-col-md-12\">\r\n <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n <mat-label>{{'FormControl.FileTypes' | aswTranslate}}</mat-label>\r\n <textarea matInput type=\"text\"\r\n name=\"fileTypes\"\r\n placeholder=\"{{'FormControl.FileTypes' | aswTranslate}}\"\r\n matTooltip=\"{{'FormControl.FileTypes' | aswTranslate}}\"\r\n formControlName=\"fileTypes\">\r\n </textarea>\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n <ng-template #bootstrap>\r\n <ng-container *ngIf=\"!data.propertyPersonalization.includes('uniqueId')\">\r\n <div class=\"asw-col-md-12\">\r\n <div class=\"asw-mb-3\">\r\n <label class=\"asw-input-label asw-invalid-label {{(aswFileUploadForm.get('id')?.invalid && (aswFileUploadForm.get('id')?.dirty || aswFileUploadForm.get('id')?.touched)) ? 'asw-red-color' : ''}}\">{{'FormControl.UniqueId' | aswTranslate}}</label>\r\n <input type=\"text\"\r\n name=\"id\"\r\n class=\"asw-input-control\"\r\n [class.asw-is-invalid]=\"(aswFileUploadForm.get('id')?.invalid && (aswFileUploadForm.get('id')?.dirty || aswFileUploadForm.get('id')?.touched))\"\r\n matTooltip=\"{{'FormControl.UniqueId' | aswTranslate}}\"\r\n formControlName=\"id\" required>\r\n <div *ngFor=\"let validation of constants.accountValidationMessages.id\" class=\"invalid-feedback\">\r\n <ng-container *ngIf=\"aswFileUploadForm.get('id')?.hasError(validation.type) && (aswFileUploadForm.get('id')?.dirty || aswFileUploadForm.get('id')?.touched)\">\r\n {{validation.message | aswTranslate}}\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"asw-col-md-6\">\r\n <div class=\"asw-mb-3\">\r\n <label class=\"asw-input-label asw-invalid-label {{(aswFileUploadForm.get('label')?.invalid && (aswFileUploadForm.get('label')?.dirty || aswFileUploadForm.get('label')?.touched)) ? 'asw-red-color' : ''}}\">{{'FormControl.Label' | aswTranslate}}</label>\r\n <input type=\"text\"\r\n name=\"label\"\r\n class=\"asw-input-control\"\r\n [class.asw-is-invalid]=\"(aswFileUploadForm.get('label')?.invalid && (aswFileUploadForm.get('label')?.dirty || aswFileUploadForm.get('label')?.touched))\"\r\n matTooltip=\"{{'FormControl.Label' | aswTranslate}}\"\r\n formControlName=\"label\" required>\r\n <div *ngFor=\"let validation of constants.accountValidationMessages.label\" class=\"invalid-feedback\">\r\n <ng-container *ngIf=\"aswFileUploadForm.get('label')?.hasError(validation.type) && (aswFileUploadForm.get('label')?.dirty || aswFileUploadForm.get('label')?.touched)\">\r\n {{validation.message | aswTranslate}}\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"asw-col-md-6\">\r\n <div class=\"asw-mb-3\">\r\n <label class=\"asw-input-label\">{{'FormControl.AllowMultipleFile' | aswTranslate}}</label>\r\n <input type=\"text\"\r\n name=\"allowMultipleFile\"\r\n class=\"asw-input-control\"\r\n matTooltip=\"{{'FormControl.AllowMultipleFile' | aswTranslate}}\"\r\n formControlName=\"allowMultipleFile\">\r\n </div>\r\n </div>\r\n <div class=\"asw-col-md-6\">\r\n <div class=\"asw-mb-3\">\r\n <label class=\"asw-input-label\">{{'FormControl.MinSize' | aswTranslate}}</label>\r\n <input type=\"text\"\r\n name=\"minSize\"\r\n class=\"asw-input-control\"\r\n matTooltip=\"{{'FormControl.MinSize' | aswTranslate}}\"\r\n formControlName=\"minSize\">\r\n </div>\r\n </div>\r\n <div class=\"asw-col-md-6\">\r\n <div class=\"asw-mb-3\">\r\n <label class=\"asw-input-label\">{{'FormControl.MaxSize' | aswTranslate}}</label>\r\n <input type=\"text\"\r\n name=\"maxSize\"\r\n class=\"asw-input-control\"\r\n matTooltip=\"{{'FormControl.MaxSize' | aswTranslate}}\"\r\n formControlName=\"maxSize\">\r\n </div>\r\n </div>\r\n <div class=\"asw-col-md-12\">\r\n <div class=\"asw-mb-3\">\r\n <label class=\"asw-input-label\">{{'FormControl.FileTypes' | aswTranslate}}</label>\r\n <textarea type=\"text\"\r\n name=\"fileTypes\"\r\n class=\"asw-input-control\"\r\n matTooltip=\"{{'FormControl.FileTypes' | aswTranslate}}\"\r\n formControlName=\"fileTypes\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions align=\"end\">\r\n <button type=\"button\"\r\n class=\"asw-button asw-button-danger asw-mb-1 asw-me-2\"\r\n (click)=\"onNoClick()\">\r\n {{'FormControl.No' | aswTranslate}}\r\n </button>\r\n <button type=\"submit\"\r\n class=\"asw-button asw-button-primary asw-mb-1\"\r\n cdkFocusInitial>\r\n {{'FormControl.Yes' | aswTranslate}}\r\n </button>\r\n </mat-dialog-actions>\r\n</form>\r\n" }] }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.MatDialogRef }, { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA] }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXVwbG9hZC1kaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9mb3JtLWNvbnRyb2wvZmlsZXVwbG9hZC9maWxldXBsb2FkLWRpYWxvZy50cyIsIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Zvcm0tY29udHJvbC9maWxldXBsb2FkL2ZpbGV1cGxvYWQtZGlhbG9nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQWdCLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7O0FBTzNFLE1BQU0sT0FBTyxtQkFBbUI7SUFNaEI7SUFDRDtJQUN5QjtJQVBwQyxTQUFTLEdBQVEsU0FBUyxDQUFDO0lBQzNCLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDZCxpQkFBaUIsQ0FBYTtJQUM5QixPQUFPLENBQXFCO0lBQzVCLFlBQ1ksV0FBd0IsRUFDekIsU0FBNEMsRUFDbkIsSUFBUztRQUZqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN6QixjQUFTLEdBQVQsU0FBUyxDQUFtQztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFLO0lBQzFDLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNqQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzVDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRCxPQUFPLEVBQUUsRUFBRTtZQUNYLE9BQU8sRUFBRSxFQUFFO1lBQ1gsaUJBQWlCLEVBQUUsRUFBRTtZQUNyQixTQUFTLEVBQUUsRUFBRTtZQUNiLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQztTQUN0QixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQTBCO1FBQ25DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUM7WUFDNUIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQ2QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLGlCQUFpQjtZQUM1QyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDNUIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO1NBQ2pDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxTQUFTO1FBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pDLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDcEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDdEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7dUdBckRRLG1CQUFtQix5RUFRaEIsZUFBZTsyRkFSbEIsbUJBQW1CLDZEQ2xCaEMsNmpYQXNMQTs7MkZEcEthLG1CQUFtQjtrQkFKL0IsU0FBUzsrQkFDSSx1QkFBdUI7OzBCQVc1QixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgQVNXIChBIFNvZnR3YXJlIFdvcmxkKSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENvbnN0YW50cywgSWNvbnMgfSBmcm9tICdAYXNvZnR3YXJld29ybGQvZm9ybS1idWlsZGVyLXByby9jb21tb24nO1xuaW1wb3J0IHsgRmlsZVVwbG9hZENvbnRyb2wgfSBmcm9tICcuL2ZpbGV1cGxvYWQtY29udHJvbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXN3LWZpbGV1cGxvYWQtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZXVwbG9hZC1kaWFsb2cuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQXN3RmlsZVVwbG9hZERpYWxvZyBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgY29uc3RhbnRzOiBhbnkgPSBDb25zdGFudHM7XG4gICAgaWNvbnMgPSBJY29ucztcbiAgICBhc3dGaWxlVXBsb2FkRm9ybSE6IEZvcm1Hcm91cDtcbiAgICBjb250cm9sITogRmlsZVVwbG9hZENvbnRyb2w7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8QXN3RmlsZVVwbG9hZERpYWxvZz4sXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55XG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuZGF0YS5jb250cm9sO1xuICAgICAgICB0aGlzLnZhbGlkYXRlRm9ybUJ1aWxkZXIoKTtcbiAgICAgICAgdGhpcy5lZGl0UHJvcGVydHkodGhpcy5jb250cm9sKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZUZvcm1CdWlsZGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFzd0ZpbGVVcGxvYWRGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICBpZDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgbGFiZWw6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDIpXV0sXG4gICAgICAgICAgICBtaW5TaXplOiBbXSxcbiAgICAgICAgICAgIG1heFNpemU6IFtdLFxuICAgICAgICAgICAgYWxsb3dNdWx0aXBsZUZpbGU6IFtdLFxuICAgICAgICAgICAgZmlsZVR5cGVzOiBbXSxcbiAgICAgICAgICAgIGlzUmVxdWlyZWQ6IFtmYWxzZV1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZWRpdFByb3BlcnR5KGNvbnRyb2w6IEZpbGVVcGxvYWRDb250cm9sKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYXN3RmlsZVVwbG9hZEZvcm0uc2V0VmFsdWUoe1xuICAgICAgICAgICAgaWQ6IGNvbnRyb2wuaWQsXG4gICAgICAgICAgICBsYWJlbDogY29udHJvbC5sYWJlbCxcbiAgICAgICAgICAgIG1pblNpemU6IGNvbnRyb2wubWluU2l6ZSxcbiAgICAgICAgICAgIG1heFNpemU6IGNvbnRyb2wubWF4U2l6ZSxcbiAgICAgICAgICAgIGFsbG93TXVsdGlwbGVGaWxlOiBjb250cm9sLmFsbG93TXVsdGlwbGVGaWxlLFxuICAgICAgICAgICAgZmlsZVR5cGVzOiBjb250cm9sLmZpbGVUeXBlcyxcbiAgICAgICAgICAgIGlzUmVxdWlyZWQ6IGNvbnRyb2wuaXNSZXF1aXJlZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk5vQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgb25TdWJtaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFzd0ZpbGVVcGxvYWRGb3JtLmludmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFzd0ZpbGVVcGxvYWRGb3JtLnZhbHVlLmNvbnRyb2xUeXBlID0gdGhpcy5jb250cm9sLmNvbnRyb2xUeXBlO1xuICAgICAgICB0aGlzLmFzd0ZpbGVVcGxvYWRGb3JtLnZhbHVlLmd1aWQgPSB0aGlzLmNvbnRyb2wuZ3VpZDtcbiAgICAgICAgdGhpcy5hc3dGaWxlVXBsb2FkRm9ybS52YWx1ZS52YWx1ZSA9IHRoaXMuY29udHJvbC52YWx1ZTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5hc3dGaWxlVXBsb2FkRm9ybS52YWx1ZSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFzdy1kaWFsb2ctaGVhZGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXN3LWVkaXQtcm93LWRpYWxvZ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhc3ctZGlhbG9nLWhlYWRlciBjbGVhcmZpeFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXN3LWRpYWxvZy1hYm91dFwiPlxyXG4gICAgICAgICAgICAgICAgPGgxIG1hdC1kaWFsb2ctdGl0bGUgY2xhc3M9XCJhc3ctbS0wXCI+e3snRm9ybUNvbnRyb2wuRWRpdCcgfCBhc3dUcmFuc2xhdGV9fSB7e2NvbnRyb2wubGFiZWwgfCBhc3dUcmFuc2xhdGV9fTwvaDE+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25Ob0NsaWNrKClcIiBhcmlhLWxhYmVsPVwiQ2xvc2UgZGlhbG9nXCIgY2xhc3M9XCJhc3ctbXQtMiBhc3ctbWUtMlwiPlxyXG4gICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJpY29ucy5jbG9zZSB8IGFzd1NhZmVIdG1sXCI+PC9kaXY+XHJcbiAgICA8L2J1dHRvbj5cclxuPC9kaXY+XHJcbjxmb3JtIFtmb3JtR3JvdXBdPVwiYXN3RmlsZVVwbG9hZEZvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiPlxyXG4gICAgPG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFzdy1yb3dcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGEuQ1NTRnJhbWV3b3JrID09PSAnbWF0ZXJpYWwnOyBlbHNlIGJvb3RzdHJhcFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkYXRhLnByb3BlcnR5UGVyc29uYWxpemF0aW9uLmluY2x1ZGVzKCd1bmlxdWVJZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzdy1jb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJhc3ctd2lkdGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7J0Zvcm1Db250cm9sLlVuaXF1ZUlkJyB8IGFzd1RyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydGb3JtQ29udHJvbC5VbmlxdWVJZCcgfCBhc3dUcmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7J0Zvcm1Db250cm9sLlVuaXF1ZUlkJyB8IGFzd1RyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpZFwiIHJlcXVpcmVkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgdmFsaWRhdGlvbiBvZiBjb25zdGFudHMuYWNjb3VudFZhbGlkYXRpb25NZXNzYWdlcy5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhc3dGaWxlVXBsb2FkRm9ybS5nZXQoJ2lkJyk/Lmhhc0Vycm9yKHZhbGlkYXRpb24udHlwZSkgJiYgKGFzd0ZpbGVVcGxvYWRGb3JtLmdldCgnaWQnKT8uZGlydHkgfHwgYXN3RmlsZVVwbG9hZEZvcm0uZ2V0KCdpZCcpPy50b3VjaGVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZhbGlkYXRpb24ubWVzc2FnZSB8IGFzd1RyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzdy1jb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwiYXN3LXdpZHRoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7J0Zvcm1Db250cm9sLkxhYmVsJyB8IGFzd1RyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydGb3JtQ29udHJvbC5MYWJlbCcgfCBhc3dUcmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3snRm9ybUNvbnRyb2wuTGFiZWwnIHwgYXN3VHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGFiZWxcIiByZXF1aXJlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgdmFsaWRhdGlvbiBvZiBjb25zdGFudHMuYWNjb3VudFZhbGlkYXRpb25NZXNzYWdlcy5sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFzd0ZpbGVVcGxvYWRGb3JtLmdldCgnbGFiZWwnKT8uaGFzRXJyb3IodmFsaWRhdGlvbi50eXBlKSAmJiAoYXN3RmlsZVVwbG9hZEZvcm0uZ2V0KCdsYWJlbCcpPy5kaXJ0eSB8fCBhc3dGaWxlVXBsb2FkRm9ybS5nZXQoJ2xhYmVsJyk/LnRvdWNoZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t2YWxpZGF0aW9uLm1lc3NhZ2UgfCBhc3dUcmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3ctY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cImFzdy13aWR0aC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57eydGb3JtQ29udHJvbC5BbGxvd011bHRpcGxlRmlsZScgfCBhc3dUcmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImFsbG93TXVsdGlwbGVGaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snRm9ybUNvbnRyb2wuQWxsb3dNdWx0aXBsZUZpbGUnIHwgYXN3VHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7J0Zvcm1Db250cm9sLkFsbG93TXVsdGlwbGVGaWxlJyB8IGFzd1RyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFsbG93TXVsdGlwbGVGaWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzdy1jb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwiYXN3LXdpZHRoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7J0Zvcm1Db250cm9sLk1pblNpemUnIHwgYXN3VHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJtaW5TaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snRm9ybUNvbnRyb2wuTWluU2l6ZScgfCBhc3dUcmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3snRm9ybUNvbnRyb2wuTWluU2l6ZScgfCBhc3dUcmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5TaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzdy1jb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwiYXN3LXdpZHRoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7J0Zvcm1Db250cm9sLk1heFNpemUnIHwgYXN3VHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJtYXhTaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3snRm9ybUNvbnRyb2wuTWF4U2l6ZScgfCBhc3dUcmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3snRm9ybUNvbnRyb2wuTWF4U2l6ZScgfCBhc3dUcmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXhTaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzdy1jb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cImFzdy13aWR0aC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57eydGb3JtQ29udHJvbC5GaWxlVHlwZXMnIHwgYXN3VHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJmaWxlVHlwZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eydGb3JtQ29udHJvbC5GaWxlVHlwZXMnIHwgYXN3VHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7J0Zvcm1Db250cm9sLkZpbGVUeXBlcycgfCBhc3dUcmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmaWxlVHlwZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Jvb3RzdHJhcD5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGF0YS5wcm9wZXJ0eVBlcnNvbmFsaXphdGlvbi5pbmNsdWRlcygndW5pcXVlSWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3ctY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3ctbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYXN3LWlucHV0LWxhYmVsIGFzdy1pbnZhbGlkLWxhYmVsIHt7KGFzd0ZpbGVVcGxvYWRGb3JtLmdldCgnaWQnKT8uaW52YWxpZCAmJiAoYXN3RmlsZVVwbG9hZEZvcm0uZ2V0KCdpZCcpPy5kaXJ0eSB8fCBhc3dGaWxlVXBsb2FkRm9ybS5nZXQoJ2lkJyk/LnRvdWNoZWQpKSA/ICdhc3ctcmVkLWNvbG9yJyA6ICcnfX1cIj57eydGb3JtQ29udHJvbC5VbmlxdWVJZCcgfCBhc3dUcmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3ctaW5wdXQtY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFzdy1pcy1pbnZhbGlkXT1cIihhc3dGaWxlVXBsb2FkRm9ybS5nZXQoJ2lkJyk/LmludmFsaWQgJiYgKGFzd0ZpbGVVcGxvYWRGb3JtLmdldCgnaWQnKT8uZGlydHkgfHwgYXN3RmlsZVVwbG9hZEZvcm0uZ2V0KCdpZCcpPy50b3VjaGVkKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eydGb3JtQ29udHJvbC5VbmlxdWVJZCcgfCBhc3dUcmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaWRcIiByZXF1aXJlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgY29uc3RhbnRzLmFjY291bnRWYWxpZGF0aW9uTWVzc2FnZXMuaWRcIiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXN3RmlsZVVwbG9hZEZvcm0uZ2V0KCdpZCcpPy5oYXNFcnJvcih2YWxpZGF0aW9uLnR5cGUpICYmIChhc3dGaWxlVXBsb2FkRm9ybS5nZXQoJ2lkJyk/LmRpcnR5IHx8IGFzd0ZpbGVVcGxvYWRGb3JtLmdldCgnaWQnKT8udG91Y2hlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t2YWxpZGF0aW9uLm1lc3NhZ2UgfCBhc3dUcmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXN3LWNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzdy1tYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImFzdy1pbnB1dC1sYWJlbCBhc3ctaW52YWxpZC1sYWJlbCB7eyhhc3dGaWxlVXBsb2FkRm9ybS5nZXQoJ2xhYmVsJyk/LmludmFsaWQgJiYgKGFzd0ZpbGVVcGxvYWRGb3JtLmdldCgnbGFiZWwnKT8uZGlydHkgfHwgYXN3RmlsZVVwbG9hZEZvcm0uZ2V0KCdsYWJlbCcpPy50b3VjaGVkKSkgPyAnYXN3LXJlZC1jb2xvcicgOiAnJ319XCI+e3snRm9ybUNvbnRyb2wuTGFiZWwnIHwgYXN3VHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXN3LWlucHV0LWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFzdy1pcy1pbnZhbGlkXT1cIihhc3dGaWxlVXBsb2FkRm9ybS5nZXQoJ2xhYmVsJyk/LmludmFsaWQgJiYgKGFzd0ZpbGVVcGxvYWRGb3JtLmdldCgnbGFiZWwnKT8uZGlydHkgfHwgYXN3RmlsZVVwbG9hZEZvcm0uZ2V0KCdsYWJlbCcpPy50b3VjaGVkKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7J0Zvcm1Db250cm9sLkxhYmVsJyB8IGFzd1RyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhYmVsXCIgcmVxdWlyZWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHZhbGlkYXRpb24gb2YgY29uc3RhbnRzLmFjY291bnRWYWxpZGF0aW9uTWVzc2FnZXMubGFiZWxcIiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhc3dGaWxlVXBsb2FkRm9ybS5nZXQoJ2xhYmVsJyk/Lmhhc0Vycm9yKHZhbGlkYXRpb24udHlwZSkgJiYgKGFzd0ZpbGVVcGxvYWRGb3JtLmdldCgnbGFiZWwnKT8uZGlydHkgfHwgYXN3RmlsZVVwbG9hZEZvcm0uZ2V0KCdsYWJlbCcpPy50b3VjaGVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dmFsaWRhdGlvbi5tZXNzYWdlIHwgYXN3VHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzdy1jb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3ctbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhc3ctaW5wdXQtbGFiZWxcIj57eydGb3JtQ29udHJvbC5BbGxvd011bHRpcGxlRmlsZScgfCBhc3dUcmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiYWxsb3dNdWx0aXBsZUZpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhc3ctaW5wdXQtY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3snRm9ybUNvbnRyb2wuQWxsb3dNdWx0aXBsZUZpbGUnIHwgYXN3VHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWxsb3dNdWx0aXBsZUZpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzdy1jb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3ctbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhc3ctaW5wdXQtbGFiZWxcIj57eydGb3JtQ29udHJvbC5NaW5TaXplJyB8IGFzd1RyYW5zbGF0ZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJtaW5TaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXN3LWlucHV0LWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7J0Zvcm1Db250cm9sLk1pblNpemUnIHwgYXN3VHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluU2l6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXN3LWNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzdy1tYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImFzdy1pbnB1dC1sYWJlbFwiPnt7J0Zvcm1Db250cm9sLk1heFNpemUnIHwgYXN3VHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgI