verben-ng-ui 0.4.4 → 0.4.5
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/esm2022/lib/Verbena-input/verbena-input.component.mjs +6 -3
- package/esm2022/lib/components/data-export/data-export.component.mjs +7 -4
- package/esm2022/lib/components/data-filter/data-filter.component.mjs +149 -0
- package/esm2022/lib/components/data-filter/data-filter.module.mjs +47 -0
- package/esm2022/lib/components/data-filter/data-filter.service.mjs +14 -0
- package/esm2022/lib/components/data-filter/data-filter.types.mjs +17 -0
- package/esm2022/lib/components/data-sort/data-sort.component.mjs +157 -0
- package/esm2022/lib/components/data-sort/data-sort.module.mjs +40 -0
- package/esm2022/lib/components/data-sort/data-sort.service.mjs +14 -0
- package/esm2022/lib/components/data-sort/data-sort.types.mjs +13 -0
- package/esm2022/lib/components/data-table/data-table.component.mjs +55 -48
- package/esm2022/lib/components/data-table/data-table.types.mjs +1 -1
- package/esm2022/lib/components/data-xport/data-xport.component.mjs +251 -0
- package/esm2022/lib/components/data-xport/data-xport.module.mjs +49 -0
- package/esm2022/lib/components/data-xport/data-xport.service.mjs +154 -0
- package/esm2022/lib/components/data-xport/data-xport.types.mjs +2 -0
- package/esm2022/lib/components/drop-down/drop-down.component.mjs +3 -3
- package/esm2022/lib/components/table-filter/table-filter.component.mjs +1 -1
- package/esm2022/lib/components/verben-time-picker/verben-time-picker.component.mjs +49 -0
- package/esm2022/lib/components/verben-time-picker/verben-time-picker.module.mjs +19 -0
- package/esm2022/public-api.mjs +15 -1
- package/fesm2022/verben-ng-ui.mjs +973 -56
- package/fesm2022/verben-ng-ui.mjs.map +1 -1
- package/lib/Verbena-input/verbena-input.component.d.ts +2 -1
- package/lib/components/data-export/data-export.component.d.ts +7 -3
- package/lib/components/data-filter/data-filter.component.d.ts +35 -0
- package/lib/components/data-filter/data-filter.module.d.ts +14 -0
- package/lib/components/data-filter/data-filter.service.d.ts +6 -0
- package/lib/components/data-filter/data-filter.types.d.ts +23 -0
- package/lib/components/data-sort/data-sort.component.d.ts +37 -0
- package/lib/components/data-sort/data-sort.module.d.ts +13 -0
- package/lib/components/data-sort/data-sort.service.d.ts +6 -0
- package/lib/components/data-sort/data-sort.types.d.ts +13 -0
- package/lib/components/data-table/data-table.component.d.ts +8 -9
- package/lib/components/data-table/data-table.types.d.ts +5 -0
- package/lib/components/data-xport/data-xport.component.d.ts +77 -0
- package/lib/components/data-xport/data-xport.module.d.ts +14 -0
- package/lib/components/data-xport/data-xport.service.d.ts +27 -0
- package/lib/components/data-xport/data-xport.types.d.ts +29 -0
- package/lib/components/verben-time-picker/verben-time-picker.component.d.ts +21 -0
- package/lib/components/verben-time-picker/verben-time-picker.module.d.ts +9 -0
- package/package.json +1 -1
- package/public-api.d.ts +13 -0
|
@@ -40,6 +40,7 @@ export class VerbenaInputComponent {
|
|
|
40
40
|
inputWrapperClass = '';
|
|
41
41
|
passwordToggle = false;
|
|
42
42
|
customErrorMessages = {};
|
|
43
|
+
fontSize = "14px";
|
|
43
44
|
valueChange = new EventEmitter();
|
|
44
45
|
errorMessage;
|
|
45
46
|
inputId = '';
|
|
@@ -184,11 +185,11 @@ export class VerbenaInputComponent {
|
|
|
184
185
|
this.disable = isDisabled;
|
|
185
186
|
}
|
|
186
187
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: VerbenaInputComponent, deps: [{ token: forwardRef(() => NgControl), optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
187
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: VerbenaInputComponent, selector: "verbena-input", inputs: { label: "label", placeHolder: "placeHolder", required: "required", svgPosition: "svgPosition", minLength: "minLength", maxLength: "maxLength", type: "type", bgColor: "bgColor", border: "border", borderRadius: "borderRadius", textColor: "textColor", value: "value", labelPosition: "labelPosition", labelColor: "labelColor", disable: "disable", readOnly: "readOnly", min: "min", max: "max", showBorder: "showBorder", showErrorMessage: "showErrorMessage", errorMessageColor: "errorMessageColor", errorBorderColor: "errorBorderColor", errorPosition: "errorPosition", svg: "svg", svgWidth: "svgWidth", svgHeight: "svgHeight", svgColor: "svgColor", capitalization: "capitalization", inputContainerClass: "inputContainerClass", inputFieldClass: "inputFieldClass", passLength: "passLength", inputWrapperClass: "inputWrapperClass", passwordToggle: "passwordToggle", customErrorMessages: "customErrorMessages", icon: "icon", textPass: "textPass" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n 'display': 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n 'display': 'flex',\n 'justify-content': labelPosition,\n 'color': labelColor,\n 'padding': '0'\n }\"\n class=\"input-field\"\n >\n <div [ngStyle]=\"{\n 'width': '100%',\n 'display': 'flex',\n 'justify-content':'space-between'\n\n }\">\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper \">\n <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'8px',\n 'top':'0',\n 'bottom':'0',\n\n 'margin': 'auto',\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n\n </div>\n <input\n [ngClass]=\"{'ng-invalid': isInvalid}\"\n [id]=\"label\"\n [attr.type]=\"type\"\n [attr.placeholder]=\"placeHolder\"\n [attr.minlength]=\"minLength?.toString()\"\n [attr.maxlength]=\"maxLength?.toString()\"\n [attr.disabled]=\"disable ? true : null\"\n [attr.readOnly]=\"readOnly ? true : null\"\n (input)=\"onInput($event)\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor
|
|
188
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: VerbenaInputComponent, selector: "verbena-input", inputs: { label: "label", placeHolder: "placeHolder", required: "required", svgPosition: "svgPosition", minLength: "minLength", maxLength: "maxLength", type: "type", bgColor: "bgColor", border: "border", borderRadius: "borderRadius", textColor: "textColor", value: "value", labelPosition: "labelPosition", labelColor: "labelColor", disable: "disable", readOnly: "readOnly", min: "min", max: "max", showBorder: "showBorder", showErrorMessage: "showErrorMessage", errorMessageColor: "errorMessageColor", errorBorderColor: "errorBorderColor", errorPosition: "errorPosition", svg: "svg", svgWidth: "svgWidth", svgHeight: "svgHeight", svgColor: "svgColor", capitalization: "capitalization", inputContainerClass: "inputContainerClass", inputFieldClass: "inputFieldClass", passLength: "passLength", inputWrapperClass: "inputWrapperClass", passwordToggle: "passwordToggle", customErrorMessages: "customErrorMessages", fontSize: "fontSize", icon: "icon", textPass: "textPass" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n 'display': 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n 'display': 'flex',\n 'justify-content': labelPosition,\n 'color': labelColor,\n 'padding': '0'\n }\"\n class=\"input-field\"\n >\n <div [ngStyle]=\"{\n 'width': '100%',\n 'display': 'flex',\n 'justify-content':'space-between'\n\n }\">\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper \">\n <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'8px',\n 'top':'0',\n 'bottom':'0',\n\n 'margin': 'auto',\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n\n </div>\n <input\n [ngClass]=\"{'ng-invalid': isInvalid}\"\n [id]=\"label\"\n [attr.type]=\"type\"\n [attr.placeholder]=\"placeHolder\"\n [attr.minlength]=\"minLength?.toString()\"\n [attr.maxlength]=\"maxLength?.toString()\"\n [attr.disabled]=\"disable ? true : null\"\n [attr.readOnly]=\"readOnly ? true : null\"\n (input)=\"onInput($event)\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor,\n 'font-size': fontSize,\n }\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n </div>\n\n <div *ngIf=\"isInvalid && showErrorMessage\" class=\"error-message\" [ngStyle]=\"{\n 'color': errorMessageColor,\n 'position': errorPosition\n }\">\n {{ errorMessage }}\n </div>\n</div>\n", styles: ["*{font-family:sans-serif;font-size:.9rem}.w-100{width:100%}.h-100{height:100%}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.input-container{display:flex;flex-direction:column;gap:5px;position:relative}.input-field{width:100%;display:block;padding:6px}.error-message-text{font-size:12px;margin:0}.error-top{position:absolute;top:0;left:50%}.error-bottom{position:relative;margin-top:5px}.error-left{position:absolute;left:-10px}.error-right{position:absolute;right:-10px;top:0}.input-wrapper{position:relative}.input-field{width:100%;padding:8px}.error-dot{position:absolute;top:0%;right:-10px;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;cursor:pointer}.error-message{position:absolute;z-index:1;left:0;right:0;bottom:-20px}.top-error .error-message{position:absolute!important;top:-20px!important;bottom:initial!important}.left-error{position:absolute!important;bottom:50%!important;right:calc(100% + 10px)!important;width:max-content;left:initial!important;transform:translateY(50%);top:-100px}.right-error .error-message{position:absolute!important;bottom:50%!important;left:calc(100% + 10px)!important;width:max-content;right:initial!important;transform:translateY(50%)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "size"] }] });
|
|
188
189
|
}
|
|
189
190
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: VerbenaInputComponent, decorators: [{
|
|
190
191
|
type: Component,
|
|
191
|
-
args: [{ selector: 'verbena-input', template: "<div class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n 'display': 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n 'display': 'flex',\n 'justify-content': labelPosition,\n 'color': labelColor,\n 'padding': '0'\n }\"\n class=\"input-field\"\n >\n <div [ngStyle]=\"{\n 'width': '100%',\n 'display': 'flex',\n 'justify-content':'space-between'\n\n }\">\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper \">\n <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'8px',\n 'top':'0',\n 'bottom':'0',\n\n 'margin': 'auto',\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n\n </div>\n <input\n [ngClass]=\"{'ng-invalid': isInvalid}\"\n [id]=\"label\"\n [attr.type]=\"type\"\n [attr.placeholder]=\"placeHolder\"\n [attr.minlength]=\"minLength?.toString()\"\n [attr.maxlength]=\"maxLength?.toString()\"\n [attr.disabled]=\"disable ? true : null\"\n [attr.readOnly]=\"readOnly ? true : null\"\n (input)=\"onInput($event)\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor
|
|
192
|
+
args: [{ selector: 'verbena-input', template: "<div class=\"input-container {{ inputContainerClass }}\"\n [ngStyle]=\"{\n 'display': 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div\n [ngStyle]=\"{\n 'display': 'flex',\n 'justify-content': labelPosition,\n 'color': labelColor,\n 'padding': '0'\n }\"\n class=\"input-field\"\n >\n <div [ngStyle]=\"{\n 'width': '100%',\n 'display': 'flex',\n 'justify-content':'space-between'\n\n }\">\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n </div>\n\n <div class=\"input-wrapper \">\n <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'grid',\n 'align-items':'center',\n 'justify-content':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer',\n 'position': 'absolute',\n 'right':'8px',\n 'top':'0',\n 'bottom':'0',\n\n 'margin': 'auto',\n\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n\n </div>\n <input\n [ngClass]=\"{'ng-invalid': isInvalid}\"\n [id]=\"label\"\n [attr.type]=\"type\"\n [attr.placeholder]=\"placeHolder\"\n [attr.minlength]=\"minLength?.toString()\"\n [attr.maxlength]=\"maxLength?.toString()\"\n [attr.disabled]=\"disable ? true : null\"\n [attr.readOnly]=\"readOnly ? true : null\"\n (input)=\"onInput($event)\"\n [(ngModel)]=\"value\"\n [ngStyle]=\"{\n 'background-color': bgColor,\n 'border': isInvalid && errorBorderColor ? '1px solid ' + errorBorderColor : border,\n 'border-radius': borderRadius,\n 'color': textColor,\n 'font-size': fontSize,\n }\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n </div>\n\n <div *ngIf=\"isInvalid && showErrorMessage\" class=\"error-message\" [ngStyle]=\"{\n 'color': errorMessageColor,\n 'position': errorPosition\n }\">\n {{ errorMessage }}\n </div>\n</div>\n", styles: ["*{font-family:sans-serif;font-size:.9rem}.w-100{width:100%}.h-100{height:100%}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.input-container{display:flex;flex-direction:column;gap:5px;position:relative}.input-field{width:100%;display:block;padding:6px}.error-message-text{font-size:12px;margin:0}.error-top{position:absolute;top:0;left:50%}.error-bottom{position:relative;margin-top:5px}.error-left{position:absolute;left:-10px}.error-right{position:absolute;right:-10px;top:0}.input-wrapper{position:relative}.input-field{width:100%;padding:8px}.error-dot{position:absolute;top:0%;right:-10px;transform:translateY(-50%);width:8px;height:8px;border-radius:50%;cursor:pointer}.error-message{position:absolute;z-index:1;left:0;right:0;bottom:-20px}.top-error .error-message{position:absolute!important;top:-20px!important;bottom:initial!important}.left-error{position:absolute!important;bottom:50%!important;right:calc(100% + 10px)!important;width:max-content;left:initial!important;transform:translateY(50%);top:-100px}.right-error .error-message{position:absolute!important;bottom:50%!important;left:calc(100% + 10px)!important;width:max-content;right:initial!important;transform:translateY(50%)}\n"] }]
|
|
192
193
|
}], ctorParameters: () => [{ type: i2.NgControl, decorators: [{
|
|
193
194
|
type: Optional
|
|
194
195
|
}, {
|
|
@@ -264,6 +265,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
264
265
|
type: Input
|
|
265
266
|
}], customErrorMessages: [{
|
|
266
267
|
type: Input
|
|
268
|
+
}], fontSize: [{
|
|
269
|
+
type: Input
|
|
267
270
|
}], valueChange: [{
|
|
268
271
|
type: Output
|
|
269
272
|
}], icon: [{
|
|
@@ -271,4 +274,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
271
274
|
}], textPass: [{
|
|
272
275
|
type: Input
|
|
273
276
|
}] } });
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyYmVuYS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9WZXJiZW5hLWlucHV0L3ZlcmJlbmEtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvVmVyYmVuYS1pbnB1dC92ZXJiZW5hLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBd0IsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBT2pFLE1BQU0sT0FBTyxxQkFBcUI7SUFxRTZDO0lBcEVwRSxLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixXQUFXLEdBQXFCLE1BQU0sQ0FBQztJQUN2QyxTQUFTLENBQVU7SUFDbkIsU0FBUyxDQUFVO0lBQ25CLElBQUksR0FBNEgsTUFBTSxDQUFDO0lBQ3ZJLE9BQU8sR0FBVyxTQUFTLENBQUM7SUFDNUIsTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUNwQixZQUFZLEdBQVcsS0FBSyxDQUFDO0lBQzdCLFNBQVMsR0FBVyxNQUFNLENBQUM7SUFDM0IsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixhQUFhLEdBQVcsT0FBTyxDQUFDO0lBQ2hDLFVBQVUsR0FBVyxPQUFPLENBQUM7SUFDN0IsT0FBTyxHQUFZLEtBQUssQ0FBQyxDQUFDLGdCQUFnQjtJQUMxQyxRQUFRLEdBQVksS0FBSyxDQUFDLENBQUMsa0JBQWtCO0lBQzdDLEdBQUcs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Q0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFlSSxXQUFXO3NCQUFwQixNQUFNO2dCQVNFLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3B0aW9uYWwsIFNlbGYsIEluamVjdCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuYS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi92ZXJiZW5hLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmVyYmVuYS1pbnB1dC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVyYmVuYUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcGxhY2VIb2xkZXI6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzdmdQb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcbiAgQElucHV0KCkgbWluTGVuZ3RoPzogbnVtYmVyO1xuICBASW5wdXQoKSBtYXhMZW5ndGg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHR5cGU6ICd0ZXh0JyB8ICdwYXNzd29yZCcgfCAnaW50ZWdlcicgfCAnbnVtYmVyJyB8ICdkZWNpbWFsJyB8ICdlbWFpbCcgfCAnZGF0ZScgfCAndGVsJyB8ICd1cmwnIHwgJ2ZpbGUnIHwgJ2NvbG9yJyB8ICdzZWFyY2gnID0gJ3RleHQnO1xuICBASW5wdXQoKSBiZ0NvbG9yOiBzdHJpbmcgPSAnI2Y5ZjlmOSc7XG4gIEBJbnB1dCgpIGJvcmRlcjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGJvcmRlclJhZGl1czogc3RyaW5nID0gJzVweCc7XG4gIEBJbnB1dCgpIHRleHRDb2xvcjogc3RyaW5nID0gJyMzMzMnO1xuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGxhYmVsUG9zaXRpb246IHN0cmluZyA9ICdzdGFydCc7XG4gIEBJbnB1dCgpIGxhYmVsQ29sb3I6IHN0cmluZyA9ICdibGFjayc7XG4gIEBJbnB1dCgpIGRpc2FibGU6IGJvb2xlYW4gPSBmYWxzZTsgLy8gRGlzYWJsZSBpbnB1dFxuICBASW5wdXQoKSByZWFkT25seTogYm9vbGVhbiA9IGZhbHNlOyAvLyBSZWFkLW9ubHkgaW5wdXRcbiAgQElucHV0KCkgbWluPzogbnVtYmVyO1xuICBASW5wdXQoKSBtYXg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHNob3dCb3JkZXI6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93RXJyb3JNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlQ29sb3I6IHN0cmluZyA9ICdyZWQnO1xuICBASW5wdXQoKSBlcnJvckJvcmRlckNvbG9yPzogc3RyaW5nO1xuICBASW5wdXQoKSBlcnJvclBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnIHwgJ3RvcCcgfCAnYm90dG9tJyA9ICdib3R0b20nO1xuICBASW5wdXQoKSBzdmc6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzdmdXaWR0aDogbnVtYmVyID0gMjA7XG4gIEBJbnB1dCgpIHN2Z0hlaWdodDogbnVtYmVyID0gMjA7XG4gIEBJbnB1dCgpIHN2Z0NvbG9yOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY2FwaXRhbGl6YXRpb246ICdub25lJyB8ICd1cHBlcmNhc2UnIHwgJ2xvd2VyY2FzZScgfCAnc2VudGVuY2VjYXNlJyB8ICdwYXNjYWxjYXNlJyB8ICdjYW1lbGNhc2UnID0gJ25vbmUnO1xuICBASW5wdXQoKSBpbnB1dENvbnRhaW5lckNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaW5wdXRGaWVsZENsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcGFzc0xlbmd0aDogbnVtYmVyID0gODtcbiAgQElucHV0KCkgaW5wdXRXcmFwcGVyQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwYXNzd29yZFRvZ2dsZT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY3VzdG9tRXJyb3JNZXNzYWdlczoge1xuICAgIHJlcXVpcmVkPzogc3RyaW5nO1xuICAgIG1pbkxlbmd0aD86IHN0cmluZztcbiAgICBtYXhMZW5ndGg/OiBzdHJpbmc7XG4gICAgbWluVmFsdWU/OiBzdHJpbmc7XG4gICAgbWF4VmFsdWU/OiBzdHJpbmc7XG4gICAgaW50ZWdlcj86IHN0cmluZztcbiAgICBudW1iZXI/OiBzdHJpbmc7XG4gICAgZGVjaW1hbD86IHN0cmluZztcbiAgICBlbWFpbD86IHN0cmluZztcbiAgICBwYXNzd29yZD86IHN0cmluZztcbiAgICB0ZWw/OiBzdHJpbmc7XG4gICAgdXJsPzogc3RyaW5nO1xuICB9ID0ge307XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBGaWxlTGlzdD4oKTtcblxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaW5wdXRJZDogc3RyaW5nID0gJyc7XG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG4gIGlzSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuXG5cbiAgQElucHV0KCkgaWNvbjogc3RyaW5nID0gJ2V5ZSc7XG4gIEBJbnB1dCgpIHRleHRQYXNzOiBzdHJpbmcgPSAnU2hvdyc7XG5cblxuICB0b2dnbGVJY29uKCk6IHZvaWQge1xuICAgIHRoaXMuaWNvbiA9IHRoaXMuaWNvbiA9PT0gJ2V5ZScgPyAnZXllLWNsb3NlZCcgOiAnZXllJztcbiAgICB0aGlzLnRleHRQYXNzID0gdGhpcy50ZXh0UGFzcyA9PT0gJ1Nob3cnID8gJ0hpZGUnIDogJ1Nob3cnO1xuICAgIHRoaXMudHlwZSA9IHRoaXMudHlwZSA9PT0gJ3Bhc3N3b3JkJyA/ICd0ZXh0JyA6ICdwYXNzd29yZCc7XG5cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nQ29udHJvbCkpIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgdGhpcy5uZ0NvbnRyb2w/LnN0YXR1c0NoYW5nZXM/LnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdGhpcy5uZ0NvbnRyb2wudG91Y2hlZFxuICAgICAgICAgID8gc3RhdHVzID09PSAnSU5WQUxJRCcgJiYgdGhpcy5uZ0NvbnRyb2wudG91Y2hlZFxuICAgICAgICAgIDogZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlucHV0SWQgPSBgdmVyYmVuYS1pbnB1dC0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KX1gO1xuICB9XG5cbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdmaWxlJyAmJiB0YXJnZXQuZmlsZXMpIHtcbiAgICAgIGNvbnN0IGZpbGVzID0gdGFyZ2V0LmZpbGVzO1xuICAgICAgdGhpcy5vbkNoYW5nZShmaWxlcyk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZmlsZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGFyZ2V0LnZhbHVlLnRyaW0oKTtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmFwcGx5Q2FwaXRhbGl6YXRpb24odGhpcy52YWx1ZSwgdGhpcy5jYXBpdGFsaXphdGlvbik7XG4gICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgICBjb25zdCBzYW5pdGl6ZWRWYWx1ZSA9IHRoaXMuc2FuaXRpemVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMub25DaGFuZ2Uoc2FuaXRpemVkVmFsdWUpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHNhbml0aXplZFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBhcHBseUNhcGl0YWxpemF0aW9uKHZhbHVlOiBzdHJpbmcsIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgY2FzZSAndXBwZXJjYXNlJzogcmV0dXJuIHZhbHVlLnRvVXBwZXJDYXNlKCk7XG4gICAgICBjYXNlICdsb3dlcmNhc2UnOiByZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNhc2UgJ3NlbnRlbmNlY2FzZSc6IHJldHVybiB2YWx1ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZhbHVlLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjYXNlICdwYXNjYWxjYXNlJzogcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1xcdysvZywgKHcpID0+IHdbMF0udG9VcHBlckNhc2UoKSArIHcuc2xpY2UoMSkudG9Mb3dlckNhc2UoKSk7XG4gICAgICBjYXNlICdjYW1lbGNhc2UnOiByZXR1cm4gdmFsdWUucmVwbGFjZSgvKD86Xlxcd3xbQS1aXXxcXGJcXHd8XFxzKykvZywgKG1hdGNoLCBpbmRleCkgPT5cbiAgICAgICAgaW5kZXggPT09IDAgPyBtYXRjaC50b0xvd2VyQ2FzZSgpIDogbWF0Y2gudG9VcHBlckNhc2UoKSkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgc2FuaXRpemVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoWydudW1iZXInLCAnZGVjaW1hbCcsICdpbnRlZ2VyJ10uaW5jbHVkZXModGhpcy50eXBlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLywvZywgJycpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuXG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLnJlcXVpcmVkIHx8ICdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLic7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWluTGVuZ3RoICYmIHRoaXMudmFsdWUubGVuZ3RoIDwgdGhpcy5taW5MZW5ndGgpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLm1pbkxlbmd0aCB8fCBgTWluaW11bSBsZW5ndGggaXMgJHt0aGlzLm1pbkxlbmd0aH0uYDtcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tYXhMZW5ndGggJiYgdGhpcy52YWx1ZS5sZW5ndGggPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMubWF4TGVuZ3RoIHx8IGBNYXhpbXVtIGxlbmd0aCBpcyAke3RoaXMubWF4TGVuZ3RofS5gO1xuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNhbml0aXplZFZhbHVlID0gdGhpcy5zYW5pdGl6ZVZhbHVlKHRoaXMudmFsdWUpO1xuICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IHBhcnNlRmxvYXQoc2FuaXRpemVkVmFsdWUpO1xuXG4gICAgaWYgKFsnaW50ZWdlcicsICdudW1iZXInLCAnZGVjaW1hbCddLmluY2x1ZGVzKHRoaXMudHlwZSkpIHtcbiAgICAgIGlmICh0aGlzLm1pbiAhPT0gdW5kZWZpbmVkICYmIG51bWVyaWNWYWx1ZSA8IHRoaXMubWluKSB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLm1pblZhbHVlIHx8IGBNaW5pbXVtIHZhbHVlIGlzICR7dGhpcy5taW59LmA7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm1heCAhPT0gdW5kZWZpbmVkICYmIG51bWVyaWNWYWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLm1heFZhbHVlIHx8IGBNYXhpbXVtIHZhbHVlIGlzICR7dGhpcy5tYXh9LmA7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdpbnRlZ2VyJyAmJiAhL15cXGQrJC8udGVzdCh0aGlzLnZhbHVlKSkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMuaW50ZWdlciB8fCAnUGxlYXNlIGVudGVyIGEgdmFsaWQgaW50ZWdlci4nO1xuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdudW1iZXInICYmICEvXlxcZCsoXFwuXFxkKyk/JC8udGVzdCh0aGlzLnZhbHVlKSkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMubnVtYmVyIHx8ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBudW1iZXIuJztcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnZGVjaW1hbCcgJiYgIS9eXFxkKyhcXC5cXGQrKT8kLy50ZXN0KHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuY3VzdG9tRXJyb3JNZXNzYWdlcy5kZWNpbWFsIHx8ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBkZWNpbWFsLic7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2VtYWlsJyAmJiAhL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC8udGVzdCh0aGlzLnZhbHVlKSkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMuZW1haWwgfHwgJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MuJztcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAncGFzc3dvcmQnICYmIHRoaXMudmFsdWUubGVuZ3RoIDwgdGhpcy5wYXNzTGVuZ3RoKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuY3VzdG9tRXJyb3JNZXNzYWdlcy5wYXNzd29yZCB8fCBgUGFzc3dvcmQgbXVzdCBiZSBhdCBsZWFzdCAke3RoaXMucGFzc0xlbmd0aH0gY2hhcmFjdGVycyBsb25nLmA7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuXG4gICAgLy9waG9uZSBudW1iZXJcbiAgICBpZiAodGhpcy50eXBlID09PSAndGVsJykge1xuICAgICAgY29uc3QgcGhvbmVOdW1iZXJSZWdleCA9IC9eXFwrP1swLTlcXHNcXC0oKS5dezcsfSQvO1xuICAgICAgaWYgKCFwaG9uZU51bWJlclJlZ2V4LnRlc3QodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMudGVsIHx8ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB0ZWxlcGhvbmUgbnVtYmVyLic7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICd1cmwnICYmICEvXihodHRwcz98ZnRwKTpcXC9cXC9bXlxccy8kLj8jXS5bXlxcc10qJC8udGVzdCh0aGlzLnZhbHVlKSkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMudXJsIHx8ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBVUkwuJztcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzSW52YWxpZCA9IGZhbHNlO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlID8gdGhpcy5hcHBseUNhcGl0YWxpemF0aW9uKHZhbHVlLnRyaW0oKSwgdGhpcy5jYXBpdGFsaXphdGlvbikgOiAnJztcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZSA9IGlzRGlzYWJsZWQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXIge3sgaW5wdXRDb250YWluZXJDbGFzcyB9fVwiXG4gICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICdkaXNwbGF5JzogJ2ZsZXgnLFxuICAgICAgJ2ZsZXgtZGlyZWN0aW9uJzogJ2NvbHVtbidcbiAgICAgfVwiXG4+XG4gIDxkaXZcbiAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAnZGlzcGxheSc6ICdmbGV4JyxcbiAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiBsYWJlbFBvc2l0aW9uLFxuICAgICAgJ2NvbG9yJzogbGFiZWxDb2xvcixcbiAgICAgICdwYWRkaW5nJzogJzAnXG4gICAgfVwiXG4gICAgY2xhc3M9XCJpbnB1dC1maWVsZFwiXG4gID5cbiAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcbiAgICAgICd3aWR0aCc6ICcxMDAlJyxcbiAgICAgICdkaXNwbGF5JzogJ2ZsZXgnLFxuICAgICAgJ2p1c3RpZnktY29udGVudCc6J3NwYWNlLWJldHdlZW4nXG5cbiAgICAgfVwiPlxuICAgICAgPGxhYmVsIFtmb3JdPVwibGFiZWxcIj57eyBsYWJlbCB9fTwvbGFiZWw+XG4gICAgICA8IS0tIGluY2FzZSBpIG5lZWQgaXQgYmFjayAgLS0+XG4gICAgICA8IS0tIDxkaXYgKm5nSWY9XCIgcGFzc3dvcmRUb2dnbGUgPT09IHRydWVcIiBbbmdTdHlsZV09XCJ7XG5cbiAgICAgICAgJ2Rpc3BsYXknOiAnZmxleCcsXG4gICAgICAgICdhbGlnbi1pdGVtJzonY2VudGVyJyxcbiAgICAgICAgJ2dhcCc6JzRweCcsXG4gICAgICAgICdjb2xvcic6J2dyZXknLFxuICAgICAgICAnY3Vyc29yJzoncG9pbnRlcidcblxuICAgICAgIH1cIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUljb24oKVwiXG4gICAgICAgPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICBbaWNvbl09XCJpY29uXCJcbiAgICAgICAgW3dpZHRoXT1cIjIwXCJcbiAgICAgICAgW2hlaWdodF09XCIyMFwiXG4gICAgICAgIGNvbG9yPVwiYmxhY2tcIlxuICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICA8cD57eyB0ZXh0UGFzcyB9fTwvcD5cbiAgICA8L2Rpdj4gLS0+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyIFwiPlxuICAgIDxkaXYgKm5nSWY9XCIgcGFzc3dvcmRUb2dnbGUgPT09IHRydWVcIiBbbmdTdHlsZV09XCJ7XG5cbiAgICAgICdkaXNwbGF5JzogJ2dyaWQnLFxuICAgICAgJ2FsaWduLWl0ZW1zJzonY2VudGVyJyxcbiAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOidjZW50ZXInLFxuICAgICAgJ2dhcCc6JzRweCcsXG4gICAgICAnY29sb3InOidncmV5JyxcbiAgICAgICdjdXJzb3InOidwb2ludGVyJyxcbiAgICAgICdwb3NpdGlvbic6ICdhYnNvbHV0ZScsXG4gICAgICAncmlnaHQnOic4cHgnLFxuICAgICAgJ3RvcCc6JzAnLFxuICAgICAgJ2JvdHRvbSc6JzAnLFxuXG4gICAgICAnbWFyZ2luJzogJ2F1dG8nLFxuXG5cbiAgICAgfVwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZUljb24oKVwiXG4gICAgID5cbiAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICBbaWNvbl09XCJpY29uXCJcbiAgICAgIFt3aWR0aF09XCIyMFwiXG4gICAgICBbaGVpZ2h0XT1cIjIwXCJcbiAgICAgIGNvbG9yPVwiYmxhY2tcIlxuICAgID48L3ZlcmJlbi1zdmc+XG5cbiAgPC9kaXY+XG4gICAgPGlucHV0XG4gICAgICBbbmdDbGFzc109XCJ7J25nLWludmFsaWQnOiBpc0ludmFsaWR9XCJcbiAgICAgIFtpZF09XCJsYWJlbFwiXG4gICAgICBbYXR0ci50eXBlXT1cInR5cGVcIlxuICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIlxuICAgICAgW2F0dHIubWlubGVuZ3RoXT1cIm1pbkxlbmd0aD8udG9TdHJpbmcoKVwiXG4gICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4TGVuZ3RoPy50b1N0cmluZygpXCJcbiAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGUgPyB0cnVlIDogbnVsbFwiXG4gICAgICBbYXR0ci5yZWFkT25seV09XCJyZWFkT25seSA/IHRydWUgOiBudWxsXCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogYmdDb2xvcixcbiAgICAgICAgJ2JvcmRlcic6IGlzSW52YWxpZCAmJiBlcnJvckJvcmRlckNvbG9yID8gJzFweCBzb2xpZCAnICsgZXJyb3JCb3JkZXJDb2xvciA6IGJvcmRlcixcbiAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiBib3JkZXJSYWRpdXMsXG4gICAgICAgICdjb2xvcic6IHRleHRDb2xvclxuICAgICAgfVwiXG4gICAgICBjbGFzcz1cImlucHV0LWZpZWxkIHZlcmJlbi1pbnB1dCB7eyBpbnB1dFdyYXBwZXJDbGFzcyB9fVwiXG4gICAgLz5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cImlzSW52YWxpZCAmJiBzaG93RXJyb3JNZXNzYWdlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgW25nU3R5bGVdPVwie1xuICAgICdjb2xvcic6IGVycm9yTWVzc2FnZUNvbG9yLFxuICAgICdwb3NpdGlvbic6IGVycm9yUG9zaXRpb25cbiAgfVwiPlxuICAgIHt7IGVycm9yTWVzc2FnZSB9fVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
277
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyYmVuYS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9WZXJiZW5hLWlucHV0L3ZlcmJlbmEtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvVmVyYmVuYS1pbnB1dC92ZXJiZW5hLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBd0IsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBT2pFLE1BQU0sT0FBTyxxQkFBcUI7SUFzRTZDO0lBckVwRSxLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixXQUFXLEdBQXFCLE1BQU0sQ0FBQztJQUN2QyxTQUFTLENBQVU7SUFDbkIsU0FBUyxDQUFVO0lBQ25CLElBQUksR0FBNEgsTUFBTSxDQUFDO0lBQ3ZJLE9BQU8sR0FBVyxTQUFTLENBQUM7SUFDNUIsTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUNwQixZQUFZLEdBQVcsS0FBSyxDQUFDO0lBQzdCLFNBQVMsR0FBVyxNQUFNLENBQUM7SUFDM0IsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixhQUFhLEdBQVcsT0FBTyxDQUFDO0lBQ2hDLFVBQVUsR0FBVyxPQUFPLENBQUM7SUFDN0IsT0FBTyxHQUFZLEtBQUssQ0FBQyxDQUFDLGdCQUFnQjtJQUMxQyxRQUFRLEdBQVksS0FBSyxDQUFDLENBQUMsa0JBQWtCO0lBQzdDLEdBQUcs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Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQWNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFTRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9wdGlvbmFsLCBTZWxmLCBJbmplY3QsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlcmJlbmEtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmVyYmVuYS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZlcmJlbmEtaW5wdXQuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFZlcmJlbmFJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlSG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc3ZnUG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XG4gIEBJbnB1dCgpIG1pbkxlbmd0aD86IG51bWJlcjtcbiAgQElucHV0KCkgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICBASW5wdXQoKSB0eXBlOiAndGV4dCcgfCAncGFzc3dvcmQnIHwgJ2ludGVnZXInIHwgJ251bWJlcicgfCAnZGVjaW1hbCcgfCAnZW1haWwnIHwgJ2RhdGUnIHwgJ3RlbCcgfCAndXJsJyB8ICdmaWxlJyB8ICdjb2xvcicgfCAnc2VhcmNoJyA9ICd0ZXh0JztcbiAgQElucHV0KCkgYmdDb2xvcjogc3RyaW5nID0gJyNmOWY5ZjknO1xuICBASW5wdXQoKSBib3JkZXI6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBib3JkZXJSYWRpdXM6IHN0cmluZyA9ICc1cHgnO1xuICBASW5wdXQoKSB0ZXh0Q29sb3I6IHN0cmluZyA9ICcjMzMzJztcbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBsYWJlbFBvc2l0aW9uOiBzdHJpbmcgPSAnc3RhcnQnO1xuICBASW5wdXQoKSBsYWJlbENvbG9yOiBzdHJpbmcgPSAnYmxhY2snO1xuICBASW5wdXQoKSBkaXNhYmxlOiBib29sZWFuID0gZmFsc2U7IC8vIERpc2FibGUgaW5wdXRcbiAgQElucHV0KCkgcmVhZE9ubHk6IGJvb2xlYW4gPSBmYWxzZTsgLy8gUmVhZC1vbmx5IGlucHV0XG4gIEBJbnB1dCgpIG1pbj86IG51bWJlcjtcbiAgQElucHV0KCkgbWF4PzogbnVtYmVyO1xuICBASW5wdXQoKSBzaG93Qm9yZGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0Vycm9yTWVzc2FnZTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZUNvbG9yOiBzdHJpbmcgPSAncmVkJztcbiAgQElucHV0KCkgZXJyb3JCb3JkZXJDb2xvcj86IHN0cmluZztcbiAgQElucHV0KCkgZXJyb3JQb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICd0b3AnIHwgJ2JvdHRvbScgPSAnYm90dG9tJztcbiAgQElucHV0KCkgc3ZnOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc3ZnV2lkdGg6IG51bWJlciA9IDIwO1xuICBASW5wdXQoKSBzdmdIZWlnaHQ6IG51bWJlciA9IDIwO1xuICBASW5wdXQoKSBzdmdDb2xvcjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNhcGl0YWxpemF0aW9uOiAnbm9uZScgfCAndXBwZXJjYXNlJyB8ICdsb3dlcmNhc2UnIHwgJ3NlbnRlbmNlY2FzZScgfCAncGFzY2FsY2FzZScgfCAnY2FtZWxjYXNlJyA9ICdub25lJztcbiAgQElucHV0KCkgaW5wdXRDb250YWluZXJDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGlucHV0RmllbGRDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBhc3NMZW5ndGg6IG51bWJlciA9IDg7XG4gIEBJbnB1dCgpIGlucHV0V3JhcHBlckNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcGFzc3dvcmRUb2dnbGU/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGN1c3RvbUVycm9yTWVzc2FnZXM6IHtcbiAgICByZXF1aXJlZD86IHN0cmluZztcbiAgICBtaW5MZW5ndGg/OiBzdHJpbmc7XG4gICAgbWF4TGVuZ3RoPzogc3RyaW5nO1xuICAgIG1pblZhbHVlPzogc3RyaW5nO1xuICAgIG1heFZhbHVlPzogc3RyaW5nO1xuICAgIGludGVnZXI/OiBzdHJpbmc7XG4gICAgbnVtYmVyPzogc3RyaW5nO1xuICAgIGRlY2ltYWw/OiBzdHJpbmc7XG4gICAgZW1haWw/OiBzdHJpbmc7XG4gICAgcGFzc3dvcmQ/OiBzdHJpbmc7XG4gICAgdGVsPzogc3RyaW5nO1xuICAgIHVybD86IHN0cmluZztcbiAgfSA9IHt9O1xuICBASW5wdXQoKSBmb250U2l6ZTogc3RyaW5nID0gXCIxNHB4XCI7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBGaWxlTGlzdD4oKTtcblxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaW5wdXRJZDogc3RyaW5nID0gJyc7XG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG4gIGlzSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuXG5cbiAgQElucHV0KCkgaWNvbjogc3RyaW5nID0gJ2V5ZSc7XG4gIEBJbnB1dCgpIHRleHRQYXNzOiBzdHJpbmcgPSAnU2hvdyc7XG5cblxuICB0b2dnbGVJY29uKCk6IHZvaWQge1xuICAgIHRoaXMuaWNvbiA9IHRoaXMuaWNvbiA9PT0gJ2V5ZScgPyAnZXllLWNsb3NlZCcgOiAnZXllJztcbiAgICB0aGlzLnRleHRQYXNzID0gdGhpcy50ZXh0UGFzcyA9PT0gJ1Nob3cnID8gJ0hpZGUnIDogJ1Nob3cnO1xuICAgIHRoaXMudHlwZSA9IHRoaXMudHlwZSA9PT0gJ3Bhc3N3b3JkJyA/ICd0ZXh0JyA6ICdwYXNzd29yZCc7XG5cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nQ29udHJvbCkpIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgdGhpcy5uZ0NvbnRyb2w/LnN0YXR1c0NoYW5nZXM/LnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdGhpcy5uZ0NvbnRyb2wudG91Y2hlZFxuICAgICAgICAgID8gc3RhdHVzID09PSAnSU5WQUxJRCcgJiYgdGhpcy5uZ0NvbnRyb2wudG91Y2hlZFxuICAgICAgICAgIDogZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlucHV0SWQgPSBgdmVyYmVuYS1pbnB1dC0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KX1gO1xuICB9XG5cbiAgb25JbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdmaWxlJyAmJiB0YXJnZXQuZmlsZXMpIHtcbiAgICAgIGNvbnN0IGZpbGVzID0gdGFyZ2V0LmZpbGVzO1xuICAgICAgdGhpcy5vbkNoYW5nZShmaWxlcyk7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZmlsZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGFyZ2V0LnZhbHVlLnRyaW0oKTtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmFwcGx5Q2FwaXRhbGl6YXRpb24odGhpcy52YWx1ZSwgdGhpcy5jYXBpdGFsaXphdGlvbik7XG4gICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgICBjb25zdCBzYW5pdGl6ZWRWYWx1ZSA9IHRoaXMuc2FuaXRpemVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMub25DaGFuZ2Uoc2FuaXRpemVkVmFsdWUpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHNhbml0aXplZFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBhcHBseUNhcGl0YWxpemF0aW9uKHZhbHVlOiBzdHJpbmcsIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgY2FzZSAndXBwZXJjYXNlJzogcmV0dXJuIHZhbHVlLnRvVXBwZXJDYXNlKCk7XG4gICAgICBjYXNlICdsb3dlcmNhc2UnOiByZXR1cm4gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNhc2UgJ3NlbnRlbmNlY2FzZSc6IHJldHVybiB2YWx1ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZhbHVlLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjYXNlICdwYXNjYWxjYXNlJzogcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1xcdysvZywgKHcpID0+IHdbMF0udG9VcHBlckNhc2UoKSArIHcuc2xpY2UoMSkudG9Mb3dlckNhc2UoKSk7XG4gICAgICBjYXNlICdjYW1lbGNhc2UnOiByZXR1cm4gdmFsdWUucmVwbGFjZSgvKD86Xlxcd3xbQS1aXXxcXGJcXHd8XFxzKykvZywgKG1hdGNoLCBpbmRleCkgPT5cbiAgICAgICAgaW5kZXggPT09IDAgPyBtYXRjaC50b0xvd2VyQ2FzZSgpIDogbWF0Y2gudG9VcHBlckNhc2UoKSkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgc2FuaXRpemVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoWydudW1iZXInLCAnZGVjaW1hbCcsICdpbnRlZ2VyJ10uaW5jbHVkZXModGhpcy50eXBlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoLywvZywgJycpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuXG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLnJlcXVpcmVkIHx8ICdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLic7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWluTGVuZ3RoICYmIHRoaXMudmFsdWUubGVuZ3RoIDwgdGhpcy5taW5MZW5ndGgpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLm1pbkxlbmd0aCB8fCBgTWluaW11bSBsZW5ndGggaXMgJHt0aGlzLm1pbkxlbmd0aH0uYDtcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tYXhMZW5ndGggJiYgdGhpcy52YWx1ZS5sZW5ndGggPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMubWF4TGVuZ3RoIHx8IGBNYXhpbXVtIGxlbmd0aCBpcyAke3RoaXMubWF4TGVuZ3RofS5gO1xuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNhbml0aXplZFZhbHVlID0gdGhpcy5zYW5pdGl6ZVZhbHVlKHRoaXMudmFsdWUpO1xuICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IHBhcnNlRmxvYXQoc2FuaXRpemVkVmFsdWUpO1xuXG4gICAgaWYgKFsnaW50ZWdlcicsICdudW1iZXInLCAnZGVjaW1hbCddLmluY2x1ZGVzKHRoaXMudHlwZSkpIHtcbiAgICAgIGlmICh0aGlzLm1pbiAhPT0gdW5kZWZpbmVkICYmIG51bWVyaWNWYWx1ZSA8IHRoaXMubWluKSB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLm1pblZhbHVlIHx8IGBNaW5pbXVtIHZhbHVlIGlzICR7dGhpcy5taW59LmA7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm1heCAhPT0gdW5kZWZpbmVkICYmIG51bWVyaWNWYWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5jdXN0b21FcnJvck1lc3NhZ2VzLm1heFZhbHVlIHx8IGBNYXhpbXVtIHZhbHVlIGlzICR7dGhpcy5tYXh9LmA7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdpbnRlZ2VyJyAmJiAhL15cXGQrJC8udGVzdCh0aGlzLnZhbHVlKSkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMuaW50ZWdlciB8fCAnUGxlYXNlIGVudGVyIGEgdmFsaWQgaW50ZWdlci4nO1xuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdudW1iZXInICYmICEvXlxcZCsoXFwuXFxkKyk/JC8udGVzdCh0aGlzLnZhbHVlKSkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMubnVtYmVyIHx8ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBudW1iZXIuJztcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAnZGVjaW1hbCcgJiYgIS9eXFxkKyhcXC5cXGQrKT8kLy50ZXN0KHRoaXMudmFsdWUpKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuY3VzdG9tRXJyb3JNZXNzYWdlcy5kZWNpbWFsIHx8ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBkZWNpbWFsLic7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2VtYWlsJyAmJiAhL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC8udGVzdCh0aGlzLnZhbHVlKSkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMuZW1haWwgfHwgJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MuJztcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50eXBlID09PSAncGFzc3dvcmQnICYmIHRoaXMudmFsdWUubGVuZ3RoIDwgdGhpcy5wYXNzTGVuZ3RoKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuY3VzdG9tRXJyb3JNZXNzYWdlcy5wYXNzd29yZCB8fCBgUGFzc3dvcmQgbXVzdCBiZSBhdCBsZWFzdCAke3RoaXMucGFzc0xlbmd0aH0gY2hhcmFjdGVycyBsb25nLmA7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuXG4gICAgLy9waG9uZSBudW1iZXJcbiAgICBpZiAodGhpcy50eXBlID09PSAndGVsJykge1xuICAgICAgY29uc3QgcGhvbmVOdW1iZXJSZWdleCA9IC9eXFwrP1swLTlcXHNcXC0oKS5dezcsfSQvO1xuICAgICAgaWYgKCFwaG9uZU51bWJlclJlZ2V4LnRlc3QodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMudGVsIHx8ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCB0ZWxlcGhvbmUgbnVtYmVyLic7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICd1cmwnICYmICEvXihodHRwcz98ZnRwKTpcXC9cXC9bXlxccy8kLj8jXS5bXlxcc10qJC8udGVzdCh0aGlzLnZhbHVlKSkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSB0aGlzLmN1c3RvbUVycm9yTWVzc2FnZXMudXJsIHx8ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBVUkwuJztcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzSW52YWxpZCA9IGZhbHNlO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlID8gdGhpcy5hcHBseUNhcGl0YWxpemF0aW9uKHZhbHVlLnRyaW0oKSwgdGhpcy5jYXBpdGFsaXphdGlvbikgOiAnJztcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZSA9IGlzRGlzYWJsZWQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXIge3sgaW5wdXRDb250YWluZXJDbGFzcyB9fVwiXG4gICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICdkaXNwbGF5JzogJ2ZsZXgnLFxuICAgICAgJ2ZsZXgtZGlyZWN0aW9uJzogJ2NvbHVtbidcbiAgICAgfVwiXG4+XG4gIDxkaXZcbiAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAnZGlzcGxheSc6ICdmbGV4JyxcbiAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiBsYWJlbFBvc2l0aW9uLFxuICAgICAgJ2NvbG9yJzogbGFiZWxDb2xvcixcbiAgICAgICdwYWRkaW5nJzogJzAnXG4gICAgfVwiXG4gICAgY2xhc3M9XCJpbnB1dC1maWVsZFwiXG4gID5cbiAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcbiAgICAgICd3aWR0aCc6ICcxMDAlJyxcbiAgICAgICdkaXNwbGF5JzogJ2ZsZXgnLFxuICAgICAgJ2p1c3RpZnktY29udGVudCc6J3NwYWNlLWJldHdlZW4nXG5cbiAgICAgfVwiPlxuICAgICAgPGxhYmVsIFtmb3JdPVwibGFiZWxcIj57eyBsYWJlbCB9fTwvbGFiZWw+XG4gICAgICA8IS0tIGluY2FzZSBpIG5lZWQgaXQgYmFjayAgLS0+XG4gICAgICA8IS0tIDxkaXYgKm5nSWY9XCIgcGFzc3dvcmRUb2dnbGUgPT09IHRydWVcIiBbbmdTdHlsZV09XCJ7XG5cbiAgICAgICAgJ2Rpc3BsYXknOiAnZmxleCcsXG4gICAgICAgICdhbGlnbi1pdGVtJzonY2VudGVyJyxcbiAgICAgICAgJ2dhcCc6JzRweCcsXG4gICAgICAgICdjb2xvcic6J2dyZXknLFxuICAgICAgICAnY3Vyc29yJzoncG9pbnRlcidcblxuICAgICAgIH1cIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUljb24oKVwiXG4gICAgICAgPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICBbaWNvbl09XCJpY29uXCJcbiAgICAgICAgW3dpZHRoXT1cIjIwXCJcbiAgICAgICAgW2hlaWdodF09XCIyMFwiXG4gICAgICAgIGNvbG9yPVwiYmxhY2tcIlxuICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICA8cD57eyB0ZXh0UGFzcyB9fTwvcD5cbiAgICA8L2Rpdj4gLS0+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC13cmFwcGVyIFwiPlxuICAgIDxkaXYgKm5nSWY9XCIgcGFzc3dvcmRUb2dnbGUgPT09IHRydWVcIiBbbmdTdHlsZV09XCJ7XG5cbiAgICAgICdkaXNwbGF5JzogJ2dyaWQnLFxuICAgICAgJ2FsaWduLWl0ZW1zJzonY2VudGVyJyxcbiAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOidjZW50ZXInLFxuICAgICAgJ2dhcCc6JzRweCcsXG4gICAgICAnY29sb3InOidncmV5JyxcbiAgICAgICdjdXJzb3InOidwb2ludGVyJyxcbiAgICAgICdwb3NpdGlvbic6ICdhYnNvbHV0ZScsXG4gICAgICAncmlnaHQnOic4cHgnLFxuICAgICAgJ3RvcCc6JzAnLFxuICAgICAgJ2JvdHRvbSc6JzAnLFxuXG4gICAgICAnbWFyZ2luJzogJ2F1dG8nLFxuXG5cbiAgICAgfVwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZUljb24oKVwiXG4gICAgID5cbiAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICBbaWNvbl09XCJpY29uXCJcbiAgICAgIFt3aWR0aF09XCIyMFwiXG4gICAgICBbaGVpZ2h0XT1cIjIwXCJcbiAgICAgIGNvbG9yPVwiYmxhY2tcIlxuICAgID48L3ZlcmJlbi1zdmc+XG5cbiAgPC9kaXY+XG4gICAgPGlucHV0XG4gICAgICBbbmdDbGFzc109XCJ7J25nLWludmFsaWQnOiBpc0ludmFsaWR9XCJcbiAgICAgIFtpZF09XCJsYWJlbFwiXG4gICAgICBbYXR0ci50eXBlXT1cInR5cGVcIlxuICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIlxuICAgICAgW2F0dHIubWlubGVuZ3RoXT1cIm1pbkxlbmd0aD8udG9TdHJpbmcoKVwiXG4gICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4TGVuZ3RoPy50b1N0cmluZygpXCJcbiAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGUgPyB0cnVlIDogbnVsbFwiXG4gICAgICBbYXR0ci5yZWFkT25seV09XCJyZWFkT25seSA/IHRydWUgOiBudWxsXCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogYmdDb2xvcixcbiAgICAgICAgJ2JvcmRlcic6IGlzSW52YWxpZCAmJiBlcnJvckJvcmRlckNvbG9yID8gJzFweCBzb2xpZCAnICsgZXJyb3JCb3JkZXJDb2xvciA6IGJvcmRlcixcbiAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiBib3JkZXJSYWRpdXMsXG4gICAgICAgICdjb2xvcic6IHRleHRDb2xvcixcbiAgICAgICAgJ2ZvbnQtc2l6ZSc6IGZvbnRTaXplLFxuICAgICAgfVwiXG4gICAgICBjbGFzcz1cImlucHV0LWZpZWxkIHZlcmJlbi1pbnB1dCB7eyBpbnB1dFdyYXBwZXJDbGFzcyB9fVwiXG4gICAgLz5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cImlzSW52YWxpZCAmJiBzaG93RXJyb3JNZXNzYWdlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgW25nU3R5bGVdPVwie1xuICAgICdjb2xvcic6IGVycm9yTWVzc2FnZUNvbG9yLFxuICAgICdwb3NpdGlvbic6IGVycm9yUG9zaXRpb25cbiAgfVwiPlxuICAgIHt7IGVycm9yTWVzc2FnZSB9fVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -12,6 +12,7 @@ import * as i7 from "../../Verbena-input/verbena-input.component";
|
|
|
12
12
|
export class DataExportComponent {
|
|
13
13
|
exportService;
|
|
14
14
|
fb;
|
|
15
|
+
columns;
|
|
15
16
|
data;
|
|
16
17
|
exportDataEvent = new EventEmitter();
|
|
17
18
|
profiles = [];
|
|
@@ -191,14 +192,16 @@ export class DataExportComponent {
|
|
|
191
192
|
this.showAllGroups = !this.showAllGroups;
|
|
192
193
|
}
|
|
193
194
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DataExportComponent, deps: [{ token: i1.DataExportService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
194
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: DataExportComponent, selector: "lib-data-export", inputs: { data: "data" }, outputs: { exportDataEvent: "exportDataEvent" }, usesOnChanges: true, ngImport: i0, template: "<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Export</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetAll()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Profiles</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let profile of visibleProfiles; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'profile-' + i\"\n [(ngModel)]=\"profile.selected\"\n />\n <label [for]=\"'profile-' + i\" class=\"checkbox-label\">\n {{ profile.name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editProfile(profile)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeProfile(profile)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"profiles.length > 3\"\n (click)=\"toggleShowAllProfiles()\"\n class=\"show-more\"\n >\n <span>{{ showAllProfiles ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Group</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"newGroupForm\" (ngSubmit)=\"addGroup()\">\n <verbena-input\n placeholder=\"Group name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n height=\"20px\"\n pd=\"4px 6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n formControlName=\"name\"\n ></verbena-input>\n </form>\n <div *ngFor=\"let item of visibleGroups; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'group-' + i\"\n [(ngModel)]=\"item.selected\"\n />\n <label [for]=\"'group-' + i\" class=\"checkbox-label\">\n {{ item.name }}\n </label>\n </div>\n <div class=\"item-actions\" *ngIf=\"item.type === 'operation'\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editOperation(item)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeOperation(item)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"groupItems.length > 3\"\n (click)=\"toggleShowAllGroups()\"\n class=\"show-more\"\n >\n <span>{{ showAllGroups ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n <button class=\"add-button\" (click)=\"addGroup()\">+ Add</button>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Operation</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <verbena-input\n placeholder=\"Operation name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n height=\"20px\"\n pd=\"2px 6px\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [(ngModel)]=\"newOperation.name\"\n ></verbena-input>\n <div class=\"operation-grid\">\n <verben-drop-down\n width=\"'8rem'\"\n placeholder=\"Select field\"\n [options]=\"numericProperties.concat(stringProperties)\"\n [(ngModel)]=\"newOperation.field1\"\n (ngModelChange)=\"onField1Change()\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"'8rem'\"\n placeholder=\"Select operator\"\n [options]=\"availableOperators\"\n [(ngModel)]=\"newOperation.operator\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"'8rem'\"\n placeholder=\"Select field\"\n [options]=\"availableFields2\"\n [(ngModel)]=\"newOperation.field2\"\n >\n </verben-drop-down>\n </div>\n <button class=\"add-button\" (click)=\"addOrUpdateOperation()\">\n {{ isEditingOperation ? \"Update\" : \"+ Add\" }}\n </button>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"exportData()\">Export</button>\n </div>\n</verben-card>\n", styles: [".export-card{font-size:.75rem;z-index:10}.card-header{display:flex;justify-content:space-between;align-items:center}.header-title{font-weight:600;font-size:.8125rem}.card-body,.section{display:flex;flex-direction:column;gap:1rem}.section-header{display:flex;justify-content:space-between;align-items:center}.section-title{font-size:.8125rem}.item{display:flex;justify-content:space-between;align-items:center}.item-label{display:flex;align-items:center;gap:.5rem}.checkbox-label{line-height:1}.item-actions{display:flex;gap:.5rem}.show-more{display:flex;align-items:center;color:#6b7280;cursor:pointer}.divider{border:none;border-top:1px solid #e8eaf1}.operation-grid{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.add-button{margin-top:.5rem;outline:none;border:none;background-color:transparent;color:#3479e9;font-size:.75rem;font-weight:500;cursor:pointer}.card-footer{display:flex;justify-content:flex-end;background-color:transparent}.export-button{margin-top:.5rem;outline:none;border:none;padding:.2rem 1.6rem;background-color:#ffe681;color:#404040;font-size:.75rem;font-weight:600;cursor:pointer}\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: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "size"] }, { kind: "component", type: i5.CardComponent, selector: "verben-card", inputs: ["pd", "mg", "height", "width", "textColor", "bgColor", "border", "borderRadius", "disabled", "aspectRatio"] }, { kind: "component", type: i6.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "component", type: i7.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "icon", "textPass"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
195
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: DataExportComponent, selector: "lib-data-export", inputs: { columns: "columns", data: "data" }, outputs: { exportDataEvent: "exportDataEvent" }, usesOnChanges: true, ngImport: i0, template: "<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Export</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetAll()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Profiles</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let profile of visibleProfiles; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'profile-' + i\"\n [(ngModel)]=\"profile.selected\"\n />\n <label [for]=\"'profile-' + i\" class=\"checkbox-label\">\n {{ profile.name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editProfile(profile)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeProfile(profile)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"profiles.length > 3\"\n (click)=\"toggleShowAllProfiles()\"\n class=\"show-more\"\n >\n <span>{{ showAllProfiles ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Group</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"newGroupForm\" (ngSubmit)=\"addGroup()\">\n <verbena-input\n placeholder=\"Group name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n fontSize=\"11px\"\n height=\"20px\"\n pd=\"2px 4px !important\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n formControlName=\"name\"\n ></verbena-input>\n </form>\n <div *ngFor=\"let item of visibleGroups; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'group-' + i\"\n [(ngModel)]=\"item.selected\"\n />\n <label [for]=\"'group-' + i\" class=\"checkbox-label\">\n {{ item.name }}\n </label>\n </div>\n <div class=\"item-actions\" *ngIf=\"item.type === 'operation'\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editOperation(item)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeOperation(item)\"\n ></verben-svg>\n </div>\n </div>\n\n <div class=\"flex items-center justify-between\">\n <button\n *ngIf=\"groupItems.length > 3\"\n (click)=\"toggleShowAllGroups()\"\n class=\"show-more\"\n >\n <span>{{ showAllGroups ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </button>\n <button class=\"add-button\" (click)=\"addGroup()\">+ Add</button>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Operation</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <verbena-input\n placeholder=\"Operation name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n fontSize=\"11px\"\n width=\"100%\"\n height=\"20px\"\n pd=\"2px 6px\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [(ngModel)]=\"newOperation.name\"\n ></verbena-input>\n <div class=\"operation-grid\">\n <verben-drop-down\n width=\"'8rem'\"\n height=\"'1.25rem'\"\n placeholder=\"Select field\"\n [options]=\"numericProperties.concat(stringProperties)\"\n [(ngModel)]=\"newOperation.field1\"\n (ngModelChange)=\"onField1Change()\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"'8rem'\"\n height=\"'1.25rem'\"\n placeholder=\"Select operator\"\n [options]=\"availableOperators\"\n [(ngModel)]=\"newOperation.operator\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"'8rem'\"\n placeholder=\"Select field\"\n [options]=\"availableFields2\"\n [(ngModel)]=\"newOperation.field2\"\n >\n </verben-drop-down>\n </div>\n <button class=\"add-button ml-auto\" (click)=\"addOrUpdateOperation()\">\n {{ isEditingOperation ? \"Update\" : \"+ Add\" }}\n </button>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"exportData()\">Export</button>\n </div>\n</verben-card>\n", styles: [".export-card{font-size:.75rem;z-index:10}.card-header{display:flex;justify-content:space-between;align-items:center;background-color:transparent;padding:4px!important}.header-title{font-weight:600;font-size:.8125rem}.card-body,.section{display:flex;flex-direction:column;gap:.5rem}.section-header{display:flex;justify-content:space-between;align-items:center}.section-title{font-size:.8125rem}.item{display:flex;justify-content:space-between;align-items:center}.item-label{display:flex;align-items:center;gap:.5rem}.checkbox-label{line-height:1}.item-actions{display:flex;gap:.5rem}.show-more{display:flex;gap:.5em;align-items:center;color:#6b7280;cursor:pointer}.divider{border:none;border-top:1px solid #e8eaf1}.operation-grid{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.add-button{margin-top:.5rem;outline:none;border:none;background-color:transparent;color:#3479e9;font-size:.75rem;font-weight:500;cursor:pointer}.card-footer{display:flex;justify-content:flex-end;background-color:transparent}.export-button{margin-top:.5rem;outline:none;border:none;padding:.2rem 1.6rem;background-color:#ffe681;color:#404040;font-size:.75rem;font-weight:600;cursor:pointer}\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: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "size"] }, { kind: "component", type: i5.CardComponent, selector: "verben-card", inputs: ["pd", "mg", "height", "width", "textColor", "bgColor", "border", "borderRadius", "disabled", "aspectRatio"] }, { kind: "component", type: i6.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "component", type: i7.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "fontSize", "icon", "textPass"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
195
196
|
}
|
|
196
197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: DataExportComponent, decorators: [{
|
|
197
198
|
type: Component,
|
|
198
|
-
args: [{ selector: 'lib-data-export', changeDetection: ChangeDetectionStrategy.OnPush, template: "<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Export</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetAll()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Profiles</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let profile of visibleProfiles; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'profile-' + i\"\n [(ngModel)]=\"profile.selected\"\n />\n <label [for]=\"'profile-' + i\" class=\"checkbox-label\">\n {{ profile.name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editProfile(profile)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeProfile(profile)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"profiles.length > 3\"\n (click)=\"toggleShowAllProfiles()\"\n class=\"show-more\"\n >\n <span>{{ showAllProfiles ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Group</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"newGroupForm\" (ngSubmit)=\"addGroup()\">\n <verbena-input\n placeholder=\"Group name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n height=\"20px\"\n pd=\"4px
|
|
199
|
-
}], ctorParameters: () => [{ type: i1.DataExportService }, { type: i2.FormBuilder }], propDecorators: {
|
|
199
|
+
args: [{ selector: 'lib-data-export', changeDetection: ChangeDetectionStrategy.OnPush, template: "<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Export</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"resetAll()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Profiles</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let profile of visibleProfiles; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'profile-' + i\"\n [(ngModel)]=\"profile.selected\"\n />\n <label [for]=\"'profile-' + i\" class=\"checkbox-label\">\n {{ profile.name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editProfile(profile)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeProfile(profile)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"profiles.length > 3\"\n (click)=\"toggleShowAllProfiles()\"\n class=\"show-more\"\n >\n <span>{{ showAllProfiles ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Group</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"newGroupForm\" (ngSubmit)=\"addGroup()\">\n <verbena-input\n placeholder=\"Group name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n fontSize=\"11px\"\n height=\"20px\"\n pd=\"2px 4px !important\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n formControlName=\"name\"\n ></verbena-input>\n </form>\n <div *ngFor=\"let item of visibleGroups; let i = index\" class=\"item\">\n <div class=\"item-label\">\n <input\n type=\"checkbox\"\n [id]=\"'group-' + i\"\n [(ngModel)]=\"item.selected\"\n />\n <label [for]=\"'group-' + i\" class=\"checkbox-label\">\n {{ item.name }}\n </label>\n </div>\n <div class=\"item-actions\" *ngIf=\"item.type === 'operation'\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editOperation(item)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeOperation(item)\"\n ></verben-svg>\n </div>\n </div>\n\n <div class=\"flex items-center justify-between\">\n <button\n *ngIf=\"groupItems.length > 3\"\n (click)=\"toggleShowAllGroups()\"\n class=\"show-more\"\n >\n <span>{{ showAllGroups ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </button>\n <button class=\"add-button\" (click)=\"addGroup()\">+ Add</button>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Operation</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <verbena-input\n placeholder=\"Operation name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n fontSize=\"11px\"\n width=\"100%\"\n height=\"20px\"\n pd=\"2px 6px\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n [(ngModel)]=\"newOperation.name\"\n ></verbena-input>\n <div class=\"operation-grid\">\n <verben-drop-down\n width=\"'8rem'\"\n height=\"'1.25rem'\"\n placeholder=\"Select field\"\n [options]=\"numericProperties.concat(stringProperties)\"\n [(ngModel)]=\"newOperation.field1\"\n (ngModelChange)=\"onField1Change()\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"'8rem'\"\n height=\"'1.25rem'\"\n placeholder=\"Select operator\"\n [options]=\"availableOperators\"\n [(ngModel)]=\"newOperation.operator\"\n >\n </verben-drop-down>\n <verben-drop-down\n width=\"'8rem'\"\n placeholder=\"Select field\"\n [options]=\"availableFields2\"\n [(ngModel)]=\"newOperation.field2\"\n >\n </verben-drop-down>\n </div>\n <button class=\"add-button ml-auto\" (click)=\"addOrUpdateOperation()\">\n {{ isEditingOperation ? \"Update\" : \"+ Add\" }}\n </button>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"exportData()\">Export</button>\n </div>\n</verben-card>\n", styles: [".export-card{font-size:.75rem;z-index:10}.card-header{display:flex;justify-content:space-between;align-items:center;background-color:transparent;padding:4px!important}.header-title{font-weight:600;font-size:.8125rem}.card-body,.section{display:flex;flex-direction:column;gap:.5rem}.section-header{display:flex;justify-content:space-between;align-items:center}.section-title{font-size:.8125rem}.item{display:flex;justify-content:space-between;align-items:center}.item-label{display:flex;align-items:center;gap:.5rem}.checkbox-label{line-height:1}.item-actions{display:flex;gap:.5rem}.show-more{display:flex;gap:.5em;align-items:center;color:#6b7280;cursor:pointer}.divider{border:none;border-top:1px solid #e8eaf1}.operation-grid{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.add-button{margin-top:.5rem;outline:none;border:none;background-color:transparent;color:#3479e9;font-size:.75rem;font-weight:500;cursor:pointer}.card-footer{display:flex;justify-content:flex-end;background-color:transparent}.export-button{margin-top:.5rem;outline:none;border:none;padding:.2rem 1.6rem;background-color:#ffe681;color:#404040;font-size:.75rem;font-weight:600;cursor:pointer}\n"] }]
|
|
200
|
+
}], ctorParameters: () => [{ type: i1.DataExportService }, { type: i2.FormBuilder }], propDecorators: { columns: [{
|
|
201
|
+
type: Input
|
|
202
|
+
}], data: [{
|
|
200
203
|
type: Input
|
|
201
204
|
}], exportDataEvent: [{
|
|
202
205
|
type: Output
|
|
203
206
|
}] } });
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWV4cG9ydC9kYXRhLWV4cG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtZXhwb3J0L2RhdGEtZXhwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0UsT0FBTyxFQUlMLFNBQVMsR0FDVixNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFRN0IsTUFBTSxPQUFPLG1CQUFtQjtJQWlDcEI7SUFDQTtJQWpDRCxJQUFJLENBQVM7SUFDWixlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7SUFFdEUsUUFBUSxHQUE4QyxFQUFFLENBQUM7SUFDekQsVUFBVSxHQUEyQyxFQUFFLENBQUM7SUFDeEQsWUFBWSxDQUFZO0lBQ3hCLFlBQVksR0FBYztRQUN4QixFQUFFLEVBQUUsRUFBRTtRQUNOLElBQUksRUFBRSxFQUFFO1FBQ1IsTUFBTSxFQUFFLEVBQUU7UUFDVixRQUFRLEVBQUUsU0FBUyxDQUFDLEdBQUc7UUFDdkIsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBQ0YsaUJBQWlCLEdBQWEsRUFBRSxDQUFDO0lBQ2pDLGdCQUFnQixHQUFhLEVBQUUsQ0FBQztJQUNoQyxrQkFBa0IsR0FBWSxLQUFLLENBQUM7SUFDcEMsZUFBZSxHQUFZLEtBQUssQ0FBQztJQUNqQyxhQUFhLEdBQVksS0FBSyxD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Q0FBQzt1R0ExTlUsbUJBQW1COzJGQUFuQixtQkFBbUIsdUpDdEJoQywycE1BNE1BOzsyRkR0TGEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNO2dIQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYXRhRXhwb3J0U2VydmljZSB9IGZyb20gJy4vZGF0YS1leHBvcnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBFeHBvcnRJdGVtLFxuICBFeHBvcnRQcm9maWxlLFxuICBPcGVyYXRpb24sXG4gIE9wZXJhdG9ycyxcbn0gZnJvbSAnLi9kYXRhLWV4cG9ydC50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kYXRhLWV4cG9ydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWV4cG9ydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRhLWV4cG9ydC5jb21wb25lbnQuY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERhdGFFeHBvcnRDb21wb25lbnQge1xuICBASW5wdXQoKSBkYXRhITogYW55W107XG4gIEBPdXRwdXQoKSBleHBvcnREYXRhRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZDxzdHJpbmcsIGFueT5bXT4oKTtcblxuICBwcm9maWxlczogKEV4cG9ydFByb2ZpbGUgJiB7IHNlbGVjdGVkOiBib29sZWFuIH0pW10gPSBbXTtcbiAgZ3JvdXBJdGVtczogKEV4cG9ydEl0ZW0gJiB7IHNlbGVjdGVkOiBib29sZWFuIH0pW10gPSBbXTtcbiAgbmV3R3JvdXBGb3JtOiBGb3JtR3JvdXA7XG4gIG5ld09wZXJhdGlvbjogT3BlcmF0aW9uID0ge1xuICAgIGlkOiAnJyxcbiAgICBuYW1lOiAnJyxcbiAgICBmaWVsZDE6ICcnLFxuICAgIG9wZXJhdG9yOiBPcGVyYXRvcnMuYWRkLFxuICAgIGZpZWxkMjogJycsXG4gIH07XG4gIG51bWVyaWNQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBzdHJpbmdQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBpc0VkaXRpbmdPcGVyYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0FsbFByb2ZpbGVzOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dBbGxHcm91cHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBvcGVyYXRvcnNOdW1lcmljOiBPcGVyYXRvcnNbXSA9IFtcbiAgICBPcGVyYXRvcnMuYWRkLFxuICAgIE9wZXJhdG9ycy5zdWJ0cmFjdCxcbiAgICBPcGVyYXRvcnMubXVsdGlwbHksXG4gICAgT3BlcmF0b3JzLmRpdmlkZSxcbiAgXTtcbiAgb3BlcmF0b3JzU3RyaW5nOiBPcGVyYXRvcnNbXSA9IFtcbiAgICBPcGVyYXRvcnMuY29uY2F0ZW5hdGVTcGFjZSxcbiAgICBPcGVyYXRvcnMuY29uY2F0ZW5hdGVDb21tYVNwYWNlLFxuICAgIE9wZXJhdG9ycy5jb25jYXRlbmF0ZUNvbW1hLFxuICBdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogRGF0YUV4cG9ydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgdGhpcy5uZXdHcm91cEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemVHcm91cEl0ZW1zKCk7XG4gICAgdGhpcy51cGRhdGVQcm9maWxlcygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplR3JvdXBJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2aXNpYmxlUHJvZmlsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0FsbFByb2ZpbGVzID8gdGhpcy5wcm9maWxlcyA6IHRoaXMucHJvZmlsZXMuc2xpY2UoMCwgMyk7XG4gIH1cblxuICBnZXQgdmlzaWJsZUdyb3VwcygpIHtcbiAgICByZXR1cm4gdGhpcy5zaG93QWxsR3JvdXBzID8gdGhpcy5ncm91cEl0ZW1zIDogdGhpcy5ncm91cEl0ZW1zLnNsaWNlKDAsIDMpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZUdyb3VwSXRlbXMoKSB7XG4gICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdC5rZXlzKHRoaXMuZGF0YVswXSkuZmlsdGVyKChrKSA9PiBrICE9PSAnaWQnKTtcbiAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5zZXRCYXNlUHJvcGVydGllcyhwcm9wZXJ0aWVzKTtcbiAgICAgIHRoaXMubnVtZXJpY1Byb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmZpbHRlcihcbiAgICAgICAgKHByb3ApID0+IHR5cGVvZiB0aGlzLmRhdGFbMF1bcHJvcF0gPT09ICdudW1iZXInXG4gICAgICApO1xuICAgICAgdGhpcy5zdHJpbmdQcm9wZXJ0aWVzID0gcHJvcGVydGllcy5maWx0ZXIoXG4gICAgICAgIChwcm9wKSA9PiB0eXBlb2YgdGhpcy5kYXRhWzBdW3Byb3BdID09PSAnc3RyaW5nJ1xuICAgICAgKTtcbiAgICAgIHRoaXMudXBkYXRlR3JvdXBJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVByb2ZpbGVzKCkge1xuICAgIHRoaXMucHJvZmlsZXMgPSB0aGlzLmV4cG9ydFNlcnZpY2UuZ2V0UHJvZmlsZXMoKS5tYXAoKHByb2ZpbGUpID0+ICh7XG4gICAgICAuLi5wcm9maWxlLFxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgIH0pKTtcbiAgfVxuXG4gIHVwZGF0ZUdyb3VwSXRlbXMoKSB7XG4gICAgdGhpcy5ncm91cEl0ZW1zID0gdGhpcy5leHBvcnRTZXJ2aWNlLmdldEFsbEl0ZW1zKCkubWFwKChpdGVtKSA9PiAoe1xuICAgICAgLi4uaXRlbSxcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICB9KSk7XG4gIH1cblxuICBhZGRHcm91cCgpIHtcbiAgICBjb25zb2xlLmxvZygnaW4nKTtcbiAgICBpZiAodGhpcy5uZXdHcm91cEZvcm0udmFsaWQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLmdyb3VwSXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnNlbGVjdGVkKTtcbiAgICAgIGlmIChzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgbmV3UHJvZmlsZTogRXhwb3J0UHJvZmlsZSA9IHtcbiAgICAgICAgICBpZDogRGF0ZS5ub3coKS50b1N0cmluZygpLFxuICAgICAgICAgIG5hbWU6IHRoaXMubmV3R3JvdXBGb3JtLmdldCgnbmFtZScpPy52YWx1ZSxcbiAgICAgICAgICBpdGVtczogc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLmFkZFByb2ZpbGUobmV3UHJvZmlsZSk7XG4gICAgICAgIHRoaXMudXBkYXRlUHJvZmlsZXMoKTtcbiAgICAgICAgdGhpcy5ncm91cEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IChpdGVtLnNlbGVjdGVkID0gZmFsc2UpKTtcbiAgICAgICAgdGhpcy5uZXdHcm91cEZvcm0ucmVzZXQoKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1NFTEVDVEVEJyk7XG4gICAgICB9XG4gICAgICBjb25zb2xlLmxvZygnVkFMSUQnKTtcbiAgICB9XG4gIH1cblxuICBlZGl0UHJvZmlsZShwcm9maWxlOiBFeHBvcnRQcm9maWxlICYgeyBzZWxlY3RlZDogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5ncm91cEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBwcm9maWxlLml0ZW1zLnNvbWUoXG4gICAgICAgIChwcm9maWxlSXRlbSkgPT4gcHJvZmlsZUl0ZW0uaWQgPT09IGl0ZW0uaWRcbiAgICAgICk7XG4gICAgfSk7XG4gICAgdGhpcy5yZW1vdmVQcm9maWxlKHByb2ZpbGUpO1xuICB9XG5cbiAgcmVtb3ZlUHJvZmlsZShwcm9maWxlOiBFeHBvcnRQcm9maWxlICYgeyBzZWxlY3RlZDogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5leHBvcnRTZXJ2aWNlLnJlbW92ZVByb2ZpbGUocHJvZmlsZS5pZCk7XG4gICAgdGhpcy51cGRhdGVQcm9maWxlcygpO1xuICB9XG5cbiAgYWRkT3JVcGRhdGVPcGVyYXRpb24oKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5uZXdPcGVyYXRpb24ubmFtZSAmJlxuICAgICAgdGhpcy5uZXdPcGVyYXRpb24uZmllbGQxICYmXG4gICAgICB0aGlzLm5ld09wZXJhdGlvbi5maWVsZDJcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLmlzRWRpdGluZ09wZXJhdGlvbikge1xuICAgICAgICB0aGlzLmV4cG9ydFNlcnZpY2UudXBkYXRlT3BlcmF0aW9uKFxuICAgICAgICAgIHRoaXMubmV3T3BlcmF0aW9uLmlkLFxuICAgICAgICAgIHRoaXMubmV3T3BlcmF0aW9uXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBvcGVyYXRpb246IE9wZXJhdGlvbiA9IHtcbiAgICAgICAgICAuLi50aGlzLm5ld09wZXJhdGlvbixcbiAgICAgICAgICBpZDogRGF0ZS5ub3coKS50b1N0cmluZygpLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuYWRkT3BlcmF0aW9uKG9wZXJhdGlvbik7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZUdyb3VwSXRlbXMoKTtcbiAgICAgIHRoaXMucmVzZXRPcGVyYXRpb25Gb3JtKCk7XG4gICAgfVxuICB9XG5cbiAgZWRpdE9wZXJhdGlvbihvcGVyYXRpb246IEV4cG9ydEl0ZW0gJiB7IHNlbGVjdGVkOiBib29sZWFuIH0pIHtcbiAgICB0aGlzLm5ld09wZXJhdGlvbiA9IHsgLi4uKG9wZXJhdGlvbiBhcyB1bmtub3duIGFzIE9wZXJhdGlvbikgfTtcbiAgICB0aGlzLmlzRWRpdGluZ09wZXJhdGlvbiA9IHRydWU7XG4gIH1cblxuICByZW1vdmVPcGVyYXRpb24ob3BlcmF0aW9uOiBFeHBvcnRJdGVtICYgeyBzZWxlY3RlZDogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5leHBvcnRTZXJ2aWNlLnJlbW92ZU9wZXJhdGlvbihvcGVyYXRpb24uaWQpO1xuICAgIHRoaXMudXBkYXRlR3JvdXBJdGVtcygpO1xuICB9XG5cbiAgcmVzZXRPcGVyYXRpb25Gb3JtKCkge1xuICAgIHRoaXMubmV3T3BlcmF0aW9uID0ge1xuICAgICAgaWQ6ICcnLFxuICAgICAgbmFtZTogJycsXG4gICAgICBmaWVsZDE6ICcnLFxuICAgICAgb3BlcmF0b3I6IE9wZXJhdG9ycy5hZGQsXG4gICAgICBmaWVsZDI6ICcnLFxuICAgIH07XG4gICAgdGhpcy5pc0VkaXRpbmdPcGVyYXRpb24gPSBmYWxzZTtcbiAgfVxuXG4gIHJlc2V0QWxsKCkge1xuICAgIHRoaXMuZXhwb3J0U2VydmljZS5yZXNldEFsbCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUdyb3VwSXRlbXMoKTtcbiAgICB0aGlzLnVwZGF0ZVByb2ZpbGVzKCk7XG4gICAgdGhpcy5yZXNldE9wZXJhdGlvbkZvcm0oKTtcbiAgICB0aGlzLm5ld0dyb3VwRm9ybS5yZXNldCgpO1xuICB9XG5cbiAgZXhwb3J0RGF0YSgpIHtcbiAgICBjb25zdCBzZWxlY3RlZFByb2ZpbGVzID0gdGhpcy5wcm9maWxlcy5maWx0ZXIoXG4gICAgICAocHJvZmlsZSkgPT4gcHJvZmlsZS5zZWxlY3RlZFxuICAgICk7XG4gICAgaWYgKHNlbGVjdGVkUHJvZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZXhwb3J0ZWREYXRhID0gdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydERhdGEoXG4gICAgICAgIHRoaXMuZGF0YSxcbiAgICAgICAgc2VsZWN0ZWRQcm9maWxlc1xuICAgICAgKTtcbiAgICAgIHRoaXMuZXhwb3J0RGF0YUV2ZW50LmVtaXQoZXhwb3J0ZWREYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ05vIHByb2ZpbGVzIHNlbGVjdGVkIGZvciBleHBvcnQnKTtcbiAgICB9XG4gIH1cblxuICBvbkZpZWxkMUNoYW5nZSgpIHtcbiAgICB0aGlzLm5ld09wZXJhdGlvbi5maWVsZDIgPSAnJztcbiAgICB0aGlzLm5ld09wZXJhdGlvbi5vcGVyYXRvciA9IHRoaXMuaXNOdW1lcmljRmllbGQodGhpcy5uZXdPcGVyYXRpb24uZmllbGQxKVxuICAgICAgPyBPcGVyYXRvcnMuYWRkXG4gICAgICA6IE9wZXJhdG9ycy5jb25jYXRlbmF0ZVNwYWNlO1xuICB9XG5cbiAgaXNOdW1lcmljRmllbGQoZmllbGQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm51bWVyaWNQcm9wZXJ0aWVzLmluY2x1ZGVzKGZpZWxkKTtcbiAgfVxuXG4gIGdldCBhdmFpbGFibGVPcGVyYXRvcnMoKTogT3BlcmF0b3JzW10ge1xuICAgIHJldHVybiB0aGlzLmlzTnVtZXJpY0ZpZWxkKHRoaXMubmV3T3BlcmF0aW9uLmZpZWxkMSlcbiAgICAgID8gdGhpcy5vcGVyYXRvcnNOdW1lcmljXG4gICAgICA6IHRoaXMub3BlcmF0b3JzU3RyaW5nO1xuICB9XG5cbiAgZ2V0IGF2YWlsYWJsZUZpZWxkczIoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmlzTnVtZXJpY0ZpZWxkKHRoaXMubmV3T3BlcmF0aW9uLmZpZWxkMSlcbiAgICAgID8gdGhpcy5udW1lcmljUHJvcGVydGllc1xuICAgICAgOiB0aGlzLnN0cmluZ1Byb3BlcnRpZXM7XG4gIH1cblxuICB0b2dnbGVTaG93QWxsUHJvZmlsZXMoKSB7XG4gICAgdGhpcy5zaG93QWxsUHJvZmlsZXMgPSAhdGhpcy5zaG93QWxsUHJvZmlsZXM7XG4gIH1cblxuICB0b2dnbGVTaG93QWxsR3JvdXBzKCkge1xuICAgIHRoaXMuc2hvd0FsbEdyb3VwcyA9ICF0aGlzLnNob3dBbGxHcm91cHM7XG4gIH1cbn1cbiIsIjx2ZXJiZW4tY2FyZFxuICB3aWR0aD1cIjI0cmVtXCJcbiAgYm9yZGVyUmFkaXVzPVwiMXJlbVwiXG4gIFtib3JkZXJdPVwiJzFweCBzb2xpZCAjRDRBMDA3J1wiXG4gIGJnQ29sb3I9XCIjRkZGRkZGXCJcbiAgY2xhc3M9XCJleHBvcnQtY2FyZFwiXG4+XG4gIDxkaXYgY2FyZC1oZWFkZXIgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxuICAgIDxoNCBjbGFzcz1cImhlYWRlci10aXRsZVwiPkV4cG9ydDwvaDQ+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJyZXNldC1idXR0b25cIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cIicjMzQ3OUU5J1wiXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgIFtzdHlsZS5ib3JkZXJdPVwiJ25vbmUnXCJcbiAgICAgIFtzdHlsZS5jdXJzb3JdPVwiJ3BvaW50ZXInXCJcbiAgICAgIFtzdHlsZS5mb250LXNpemVdPVwiJzEycHgnXCJcbiAgICAgIChjbGljayk9XCJyZXNldEFsbCgpXCJcbiAgICA+XG4gICAgICBSZXNldFxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjYXJkLWJvZHkgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+UHJvZmlsZXM8L2gzPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgIGljb249XCJpbmZvXCJcbiAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgIGZpbGw9XCJncmV5XCJcbiAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvZmlsZSBvZiB2aXNpYmxlUHJvZmlsZXM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cIml0ZW1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tbGFiZWxcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBbaWRdPVwiJ3Byb2ZpbGUtJyArIGlcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9maWxlLnNlbGVjdGVkXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidwcm9maWxlLScgKyBpXCIgY2xhc3M9XCJjaGVja2JveC1sYWJlbFwiPlxuICAgICAgICAgICAge3sgcHJvZmlsZS5uYW1lIH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWFjdGlvbnNcIj5cbiAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgaWNvbj1cImVkaXRcIlxuICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NzlFOVwiXG4gICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRQcm9maWxlKHByb2ZpbGUpXCJcbiAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgIHN0cm9rZT1cIiNFMjAwMDBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVByb2ZpbGUocHJvZmlsZSlcIlxuICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwicHJvZmlsZXMubGVuZ3RoID4gM1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93QWxsUHJvZmlsZXMoKVwiXG4gICAgICAgIGNsYXNzPVwic2hvdy1tb3JlXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+e3sgc2hvd0FsbFByb2ZpbGVzID8gXCJTaG93IGxlc3NcIiA6IFwiU2hvdyBtb3JlXCIgfX08L3NwYW4+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgaWNvbj1cImNoZXZyb25cIlxuICAgICAgICAgIFt3aWR0aF09XCI4XCJcbiAgICAgICAgICBbaGVpZ2h0XT1cIjZcIlxuICAgICAgICAgIGZpbGw9XCJibGFja1wiXG4gICAgICAgICAgc3Ryb2tlPVwiYmxhY2tcIlxuICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxociBjbGFzcz1cImRpdmlkZXJcIiAvPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5Hcm91cDwvaDM+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgaWNvbj1cImluZm9cIlxuICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgZmlsbD1cImdyZXlcIlxuICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIm5ld0dyb3VwRm9ybVwiIChuZ1N1Ym1pdCk9XCJhZGRHcm91cCgpXCI+XG4gICAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJHcm91cCBuYW1lXCJcbiAgICAgICAgICBib3JkZXI9XCIxcHggc29saWQgI2NjY1wiXG4gICAgICAgICAgYm9yZGVyUmFkaXVzPVwiNXB4XCJcbiAgICAgICAgICB0ZXh0Q29sb3I9XCJibGFja1wiXG4gICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICBoZWlnaHQ9XCIyMHB4XCJcbiAgICAgICAgICBwZD1cIjRweCA2cHhcIlxuICAgICAgICAgIFtzaG93Qm9yZGVyXT1cInRydWVcIlxuICAgICAgICAgIFtzaG93RXJyb3JNZXNzYWdlXT1cInRydWVcIlxuICAgICAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgICAgPjwvdmVyYmVuYS1pbnB1dD5cbiAgICAgIDwvZm9ybT5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmlzaWJsZUdyb3VwczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiaXRlbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1sYWJlbFwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIFtpZF09XCInZ3JvdXAtJyArIGlcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidncm91cC0nICsgaVwiIGNsYXNzPVwiY2hlY2tib3gtbGFiZWxcIj5cbiAgICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1hY3Rpb25zXCIgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdvcGVyYXRpb24nXCI+XG4gICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgIGljb249XCJlZGl0XCJcbiAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgIHN0cm9rZT1cIiMzNDc5RTlcIlxuICAgICAgICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJlZGl0T3BlcmF0aW9uKGl0ZW0pXCJcbiAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgIHN0cm9rZT1cIiNFMjAwMDBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZU9wZXJhdGlvbihpdGVtKVwiXG4gICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJncm91cEl0ZW1zLmxlbmd0aCA+IDNcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd0FsbEdyb3VwcygpXCJcbiAgICAgICAgY2xhc3M9XCJzaG93LW1vcmVcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57eyBzaG93QWxsR3JvdXBzID8gXCJTaG93IGxlc3NcIiA6IFwiU2hvdyBtb3JlXCIgfX08L3NwYW4+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgaWNvbj1cImNoZXZyb25cIlxuICAgICAgICAgIFt3aWR0aF09XCI4XCJcbiAgICAgICAgICBbaGVpZ2h0XT1cIjZcIlxuICAgICAgICAgIGZpbGw9XCJibGFja1wiXG4gICAgICAgICAgc3Ryb2tlPVwiYmxhY2tcIlxuICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYWRkLWJ1dHRvblwiIChjbGljayk9XCJhZGRHcm91cCgpXCI+KyBBZGQ8L2J1dHRvbj5cbiAgICA8L3NlY3Rpb24+XG4gICAgPGhyIGNsYXNzPVwiZGl2aWRlclwiIC8+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPk9wZXJhdGlvbjwvaDM+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgaWNvbj1cImluZm9cIlxuICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgZmlsbD1cImdyZXlcIlxuICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICBwbGFjZWhvbGRlcj1cIk9wZXJhdGlvbiBuYW1lXCJcbiAgICAgICAgYm9yZGVyPVwiMXB4IHNvbGlkICNjY2NcIlxuICAgICAgICBib3JkZXJSYWRpdXM9XCI1cHhcIlxuICAgICAgICB0ZXh0Q29sb3I9XCJibGFja1wiXG4gICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgIGhlaWdodD1cIjIwcHhcIlxuICAgICAgICBwZD1cIjJweCA2cHhcIlxuICAgICAgICBbc2hvd0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdPcGVyYXRpb24ubmFtZVwiXG4gICAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgICAgPGRpdiBjbGFzcz1cIm9wZXJhdGlvbi1ncmlkXCI+XG4gICAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgICAgd2lkdGg9XCInOHJlbSdcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGZpZWxkXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJudW1lcmljUHJvcGVydGllcy5jb25jYXQoc3RyaW5nUHJvcGVydGllcylcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwibmV3T3BlcmF0aW9uLmZpZWxkMVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWVsZDFDaGFuZ2UoKVwiXG4gICAgICAgID5cbiAgICAgICAgPC92ZXJiZW4tZHJvcC1kb3duPlxuICAgICAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgICAgIHdpZHRoPVwiJzhyZW0nXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBvcGVyYXRvclwiXG4gICAgICAgICAgW29wdGlvbnNdPVwiYXZhaWxhYmxlT3BlcmF0b3JzXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5ld09wZXJhdGlvbi5vcGVyYXRvclwiXG4gICAgICAgID5cbiAgICAgICAgPC92ZXJiZW4tZHJvcC1kb3duPlxuICAgICAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgICAgIHdpZHRoPVwiJzhyZW0nXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBmaWVsZFwiXG4gICAgICAgICAgW29wdGlvbnNdPVwiYXZhaWxhYmxlRmllbGRzMlwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdPcGVyYXRpb24uZmllbGQyXCJcbiAgICAgICAgPlxuICAgICAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhZGQtYnV0dG9uXCIgKGNsaWNrKT1cImFkZE9yVXBkYXRlT3BlcmF0aW9uKClcIj5cbiAgICAgICAge3sgaXNFZGl0aW5nT3BlcmF0aW9uID8gXCJVcGRhdGVcIiA6IFwiKyBBZGRcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9zZWN0aW9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjYXJkLWZvb3RlciBjbGFzcz1cImNhcmQtZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImV4cG9ydC1idXR0b25cIiAoY2xpY2spPVwiZXhwb3J0RGF0YSgpXCI+RXhwb3J0PC9idXR0b24+XG4gIDwvZGl2PlxuPC92ZXJiZW4tY2FyZD5cbiJdfQ==
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWV4cG9ydC9kYXRhLWV4cG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtZXhwb3J0L2RhdGEtZXhwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0UsT0FBTyxFQUlMLFNBQVMsR0FDVixNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFTN0IsTUFBTSxPQUFPLG1CQUFtQjtJQWtDcEI7SUFDQTtJQWxDRCxPQUFPLENBQXVCO0lBQzlCLElBQUksQ0FBUztJQUNaLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztJQUV0RSxRQUFRLEdBQThDLEVBQUUsQ0FBQztJQUN6RCxVQUFVLEdBQTJDLEVBQUUsQ0FBQztJQUN4RCxZQUFZLENBQVk7SUFDeEIsWUFBWSxHQUFjO1FBQ3hCLEVBQUUsRUFBRSxFQUFFO1FBQ04sSUFBSSxFQUFFLEVBQUU7UUFDUixNQUFNLEVBQUUsRUFBRTtRQUNWLFFBQVEsRUFBRSxTQUFTLENBQUMsR0FBRztRQUN2QixNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUM7SUFDRixpQkFBaUIsR0FBYSxFQUFFLENBQUM7SUFDakMsZ0JBQWdCLEdBQWEsRUFBRSxDQUFDO0lBQ2hDLGtCQUFrQixHQUFZLEtBQUssQ0FBQztJQUNwQyxlQUFlLEdBQVksS0FBSyxDQUFDO0lBQ2pD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LGFBQWEsQ0FBQztJQUMzQyxDQUFDO3VHQTNOVSxtQkFBbUI7MkZBQW5CLG1CQUFtQiwyS0N2QmhDLHU5TUFxTkE7OzJGRDlMYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07Z0hBR3RDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYXRhRXhwb3J0U2VydmljZSB9IGZyb20gJy4vZGF0YS1leHBvcnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBFeHBvcnRJdGVtLFxuICBFeHBvcnRQcm9maWxlLFxuICBPcGVyYXRpb24sXG4gIE9wZXJhdG9ycyxcbn0gZnJvbSAnLi9kYXRhLWV4cG9ydC50eXBlcyc7XG5pbXBvcnQgeyBDb2x1bW5EZWZpbml0aW9uIH0gZnJvbSAnLi4vZGF0YS10YWJsZS9kYXRhLXRhYmxlLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWRhdGEtZXhwb3J0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtZXhwb3J0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RhdGEtZXhwb3J0LmNvbXBvbmVudC5jc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUV4cG9ydENvbXBvbmVudDxUIGV4dGVuZHMgeyBpZDogc3RyaW5nIHwgbnVtYmVyIH0+IHtcbiAgQElucHV0KCkgY29sdW1ucyE6IENvbHVtbkRlZmluaXRpb248VD47XG4gIEBJbnB1dCgpIGRhdGEhOiBhbnlbXTtcbiAgQE91dHB1dCgpIGV4cG9ydERhdGFFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPHN0cmluZywgYW55PltdPigpO1xuXG4gIHByb2ZpbGVzOiAoRXhwb3J0UHJvZmlsZSAmIHsgc2VsZWN0ZWQ6IGJvb2xlYW4gfSlbXSA9IFtdO1xuICBncm91cEl0ZW1zOiAoRXhwb3J0SXRlbSAmIHsgc2VsZWN0ZWQ6IGJvb2xlYW4gfSlbXSA9IFtdO1xuICBuZXdHcm91cEZvcm06IEZvcm1Hcm91cDtcbiAgbmV3T3BlcmF0aW9uOiBPcGVyYXRpb24gPSB7XG4gICAgaWQ6ICcnLFxuICAgIG5hbWU6ICcnLFxuICAgIGZpZWxkMTogJycsXG4gICAgb3BlcmF0b3I6IE9wZXJhdG9ycy5hZGQsXG4gICAgZmllbGQyOiAnJyxcbiAgfTtcbiAgbnVtZXJpY1Byb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gIHN0cmluZ1Byb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gIGlzRWRpdGluZ09wZXJhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93QWxsUHJvZmlsZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0FsbEdyb3VwczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIG9wZXJhdG9yc051bWVyaWM6IE9wZXJhdG9yc1tdID0gW1xuICAgIE9wZXJhdG9ycy5hZGQsXG4gICAgT3BlcmF0b3JzLnN1YnRyYWN0LFxuICAgIE9wZXJhdG9ycy5tdWx0aXBseSxcbiAgICBPcGVyYXRvcnMuZGl2aWRlLFxuICBdO1xuICBvcGVyYXRvcnNTdHJpbmc6IE9wZXJhdG9yc1tdID0gW1xuICAgIE9wZXJhdG9ycy5jb25jYXRlbmF0ZVNwYWNlLFxuICAgIE9wZXJhdG9ycy5jb25jYXRlbmF0ZUNvbW1hU3BhY2UsXG4gICAgT3BlcmF0b3JzLmNvbmNhdGVuYXRlQ29tbWEsXG4gIF07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBEYXRhRXhwb3J0U2VydmljZSxcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlclxuICApIHtcbiAgICB0aGlzLm5ld0dyb3VwRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgbmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUdyb3VwSXRlbXMoKTtcbiAgICB0aGlzLnVwZGF0ZVByb2ZpbGVzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVHcm91cEl0ZW1zKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZpc2libGVQcm9maWxlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zaG93QWxsUHJvZmlsZXMgPyB0aGlzLnByb2ZpbGVzIDogdGhpcy5wcm9maWxlcy5zbGljZSgwLCAzKTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlR3JvdXBzKCkge1xuICAgIHJldHVybiB0aGlzLnNob3dBbGxHcm91cHMgPyB0aGlzLmdyb3VwSXRlbXMgOiB0aGlzLmdyb3VwSXRlbXMuc2xpY2UoMCwgMyk7XG4gIH1cblxuICBpbml0aWFsaXplR3JvdXBJdGVtcygpIHtcbiAgICBpZiAodGhpcy5kYXRhICYmIHRoaXMuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXModGhpcy5kYXRhWzBdKS5maWx0ZXIoKGspID0+IGsgIT09ICdpZCcpO1xuICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLnNldEJhc2VQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuICAgICAgdGhpcy5udW1lcmljUHJvcGVydGllcyA9IHByb3BlcnRpZXMuZmlsdGVyKFxuICAgICAgICAocHJvcCkgPT4gdHlwZW9mIHRoaXMuZGF0YVswXVtwcm9wXSA9PT0gJ251bWJlcidcbiAgICAgICk7XG4gICAgICB0aGlzLnN0cmluZ1Byb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmZpbHRlcihcbiAgICAgICAgKHByb3ApID0+IHR5cGVvZiB0aGlzLmRhdGFbMF1bcHJvcF0gPT09ICdzdHJpbmcnXG4gICAgICApO1xuICAgICAgdGhpcy51cGRhdGVHcm91cEl0ZW1zKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlUHJvZmlsZXMoKSB7XG4gICAgdGhpcy5wcm9maWxlcyA9IHRoaXMuZXhwb3J0U2VydmljZS5nZXRQcm9maWxlcygpLm1hcCgocHJvZmlsZSkgPT4gKHtcbiAgICAgIC4uLnByb2ZpbGUsXG4gICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgfSkpO1xuICB9XG5cbiAgdXBkYXRlR3JvdXBJdGVtcygpIHtcbiAgICB0aGlzLmdyb3VwSXRlbXMgPSB0aGlzLmV4cG9ydFNlcnZpY2UuZ2V0QWxsSXRlbXMoKS5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAuLi5pdGVtLFxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgIH0pKTtcbiAgfVxuXG4gIGFkZEdyb3VwKCkge1xuICAgIGNvbnNvbGUubG9nKCdpbicpO1xuICAgIGlmICh0aGlzLm5ld0dyb3VwRm9ybS52YWxpZCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuZ3JvdXBJdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgICAgaWYgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBuZXdQcm9maWxlOiBFeHBvcnRQcm9maWxlID0ge1xuICAgICAgICAgIGlkOiBEYXRlLm5vdygpLnRvU3RyaW5nKCksXG4gICAgICAgICAgbmFtZTogdGhpcy5uZXdHcm91cEZvcm0uZ2V0KCduYW1lJyk/LnZhbHVlLFxuICAgICAgICAgIGl0ZW1zOiBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuYWRkUHJvZmlsZShuZXdQcm9maWxlKTtcbiAgICAgICAgdGhpcy51cGRhdGVQcm9maWxlcygpO1xuICAgICAgICB0aGlzLmdyb3VwSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gKGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZSkpO1xuICAgICAgICB0aGlzLm5ld0dyb3VwRm9ybS5yZXNldCgpO1xuICAgICAgICBjb25zb2xlLmxvZygnU0VMRUNURUQnKTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKCdWQUxJRCcpO1xuICAgIH1cbiAgfVxuXG4gIGVkaXRQcm9maWxlKHByb2ZpbGU6IEV4cG9ydFByb2ZpbGUgJiB7IHNlbGVjdGVkOiBib29sZWFuIH0pIHtcbiAgICB0aGlzLmdyb3VwSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbS5zZWxlY3RlZCA9IHByb2ZpbGUuaXRlbXMuc29tZShcbiAgICAgICAgKHByb2ZpbGVJdGVtKSA9PiBwcm9maWxlSXRlbS5pZCA9PT0gaXRlbS5pZFxuICAgICAgKTtcbiAgICB9KTtcbiAgICB0aGlzLnJlbW92ZVByb2ZpbGUocHJvZmlsZSk7XG4gIH1cblxuICByZW1vdmVQcm9maWxlKHByb2ZpbGU6IEV4cG9ydFByb2ZpbGUgJiB7IHNlbGVjdGVkOiBib29sZWFuIH0pIHtcbiAgICB0aGlzLmV4cG9ydFNlcnZpY2UucmVtb3ZlUHJvZmlsZShwcm9maWxlLmlkKTtcbiAgICB0aGlzLnVwZGF0ZVByb2ZpbGVzKCk7XG4gIH1cblxuICBhZGRPclVwZGF0ZU9wZXJhdGlvbigpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLm5ld09wZXJhdGlvbi5uYW1lICYmXG4gICAgICB0aGlzLm5ld09wZXJhdGlvbi5maWVsZDEgJiZcbiAgICAgIHRoaXMubmV3T3BlcmF0aW9uLmZpZWxkMlxuICAgICkge1xuICAgICAgaWYgKHRoaXMuaXNFZGl0aW5nT3BlcmF0aW9uKSB7XG4gICAgICAgIHRoaXMuZXhwb3J0U2VydmljZS51cGRhdGVPcGVyYXRpb24oXG4gICAgICAgICAgdGhpcy5uZXdPcGVyYXRpb24uaWQsXG4gICAgICAgICAgdGhpcy5uZXdPcGVyYXRpb25cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG9wZXJhdGlvbjogT3BlcmF0aW9uID0ge1xuICAgICAgICAgIC4uLnRoaXMubmV3T3BlcmF0aW9uLFxuICAgICAgICAgIGlkOiBEYXRlLm5vdygpLnRvU3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5hZGRPcGVyYXRpb24ob3BlcmF0aW9uKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlR3JvdXBJdGVtcygpO1xuICAgICAgdGhpcy5yZXNldE9wZXJhdGlvbkZvcm0oKTtcbiAgICB9XG4gIH1cblxuICBlZGl0T3BlcmF0aW9uKG9wZXJhdGlvbjogRXhwb3J0SXRlbSAmIHsgc2VsZWN0ZWQ6IGJvb2xlYW4gfSkge1xuICAgIHRoaXMubmV3T3BlcmF0aW9uID0geyAuLi4ob3BlcmF0aW9uIGFzIHVua25vd24gYXMgT3BlcmF0aW9uKSB9O1xuICAgIHRoaXMuaXNFZGl0aW5nT3BlcmF0aW9uID0gdHJ1ZTtcbiAgfVxuXG4gIHJlbW92ZU9wZXJhdGlvbihvcGVyYXRpb246IEV4cG9ydEl0ZW0gJiB7IHNlbGVjdGVkOiBib29sZWFuIH0pIHtcbiAgICB0aGlzLmV4cG9ydFNlcnZpY2UucmVtb3ZlT3BlcmF0aW9uKG9wZXJhdGlvbi5pZCk7XG4gICAgdGhpcy51cGRhdGVHcm91cEl0ZW1zKCk7XG4gIH1cblxuICByZXNldE9wZXJhdGlvbkZvcm0oKSB7XG4gICAgdGhpcy5uZXdPcGVyYXRpb24gPSB7XG4gICAgICBpZDogJycsXG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGZpZWxkMTogJycsXG4gICAgICBvcGVyYXRvcjogT3BlcmF0b3JzLmFkZCxcbiAgICAgIGZpZWxkMjogJycsXG4gICAgfTtcbiAgICB0aGlzLmlzRWRpdGluZ09wZXJhdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgcmVzZXRBbGwoKSB7XG4gICAgdGhpcy5leHBvcnRTZXJ2aWNlLnJlc2V0QWxsKCk7XG4gICAgdGhpcy5pbml0aWFsaXplR3JvdXBJdGVtcygpO1xuICAgIHRoaXMudXBkYXRlUHJvZmlsZXMoKTtcbiAgICB0aGlzLnJlc2V0T3BlcmF0aW9uRm9ybSgpO1xuICAgIHRoaXMubmV3R3JvdXBGb3JtLnJlc2V0KCk7XG4gIH1cblxuICBleHBvcnREYXRhKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkUHJvZmlsZXMgPSB0aGlzLnByb2ZpbGVzLmZpbHRlcihcbiAgICAgIChwcm9maWxlKSA9PiBwcm9maWxlLnNlbGVjdGVkXG4gICAgKTtcbiAgICBpZiAoc2VsZWN0ZWRQcm9maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBleHBvcnRlZERhdGEgPSB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0RGF0YShcbiAgICAgICAgdGhpcy5kYXRhLFxuICAgICAgICBzZWxlY3RlZFByb2ZpbGVzXG4gICAgICApO1xuICAgICAgdGhpcy5leHBvcnREYXRhRXZlbnQuZW1pdChleHBvcnRlZERhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnTm8gcHJvZmlsZXMgc2VsZWN0ZWQgZm9yIGV4cG9ydCcpO1xuICAgIH1cbiAgfVxuXG4gIG9uRmllbGQxQ2hhbmdlKCkge1xuICAgIHRoaXMubmV3T3BlcmF0aW9uLmZpZWxkMiA9ICcnO1xuICAgIHRoaXMubmV3T3BlcmF0aW9uLm9wZXJhdG9yID0gdGhpcy5pc051bWVyaWNGaWVsZCh0aGlzLm5ld09wZXJhdGlvbi5maWVsZDEpXG4gICAgICA/IE9wZXJhdG9ycy5hZGRcbiAgICAgIDogT3BlcmF0b3JzLmNvbmNhdGVuYXRlU3BhY2U7XG4gIH1cblxuICBpc051bWVyaWNGaWVsZChmaWVsZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubnVtZXJpY1Byb3BlcnRpZXMuaW5jbHVkZXMoZmllbGQpO1xuICB9XG5cbiAgZ2V0IGF2YWlsYWJsZU9wZXJhdG9ycygpOiBPcGVyYXRvcnNbXSB7XG4gICAgcmV0dXJuIHRoaXMuaXNOdW1lcmljRmllbGQodGhpcy5uZXdPcGVyYXRpb24uZmllbGQxKVxuICAgICAgPyB0aGlzLm9wZXJhdG9yc051bWVyaWNcbiAgICAgIDogdGhpcy5vcGVyYXRvcnNTdHJpbmc7XG4gIH1cblxuICBnZXQgYXZhaWxhYmxlRmllbGRzMigpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuaXNOdW1lcmljRmllbGQodGhpcy5uZXdPcGVyYXRpb24uZmllbGQxKVxuICAgICAgPyB0aGlzLm51bWVyaWNQcm9wZXJ0aWVzXG4gICAgICA6IHRoaXMuc3RyaW5nUHJvcGVydGllcztcbiAgfVxuXG4gIHRvZ2dsZVNob3dBbGxQcm9maWxlcygpIHtcbiAgICB0aGlzLnNob3dBbGxQcm9maWxlcyA9ICF0aGlzLnNob3dBbGxQcm9maWxlcztcbiAgfVxuXG4gIHRvZ2dsZVNob3dBbGxHcm91cHMoKSB7XG4gICAgdGhpcy5zaG93QWxsR3JvdXBzID0gIXRoaXMuc2hvd0FsbEdyb3VwcztcbiAgfVxufVxuIiwiPHZlcmJlbi1jYXJkXG4gIHdpZHRoPVwiMjRyZW1cIlxuICBib3JkZXJSYWRpdXM9XCIxcmVtXCJcbiAgW2JvcmRlcl09XCInMXB4IHNvbGlkICNENEEwMDcnXCJcbiAgYmdDb2xvcj1cIiNGRkZGRkZcIlxuICBjbGFzcz1cImV4cG9ydC1jYXJkXCJcbj5cbiAgPGRpdiBjYXJkLWhlYWRlciBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgPGg0IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+RXhwb3J0PC9oND5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInJlc2V0LWJ1dHRvblwiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiJyMzNDc5RTknXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgW3N0eWxlLmJvcmRlcl09XCInbm9uZSdcIlxuICAgICAgW3N0eWxlLmN1cnNvcl09XCIncG9pbnRlcidcIlxuICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCInMTJweCdcIlxuICAgICAgKGNsaWNrKT1cInJlc2V0QWxsKClcIlxuICAgID5cbiAgICAgIFJlc2V0XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNhcmQtYm9keSBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5Qcm9maWxlczwvaDM+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgaWNvbj1cImluZm9cIlxuICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgZmlsbD1cImdyZXlcIlxuICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9maWxlIG9mIHZpc2libGVQcm9maWxlczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiaXRlbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1sYWJlbFwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIFtpZF09XCIncHJvZmlsZS0nICsgaVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb2ZpbGUuc2VsZWN0ZWRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ3Byb2ZpbGUtJyArIGlcIiBjbGFzcz1cImNoZWNrYm94LWxhYmVsXCI+XG4gICAgICAgICAgICB7eyBwcm9maWxlLm5hbWUgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tYWN0aW9uc1wiPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICBpY29uPVwiZWRpdFwiXG4gICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICBzdHJva2U9XCIjMzQ3OUU5XCJcbiAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdFByb2ZpbGUocHJvZmlsZSlcIlxuICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgIGljb249XCJkZWxldGVcIlxuICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiI0UyMDAwMFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUHJvZmlsZShwcm9maWxlKVwiXG4gICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJwcm9maWxlcy5sZW5ndGggPiAzXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3dBbGxQcm9maWxlcygpXCJcbiAgICAgICAgY2xhc3M9XCJzaG93LW1vcmVcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57eyBzaG93QWxsUHJvZmlsZXMgPyBcIlNob3cgbGVzc1wiIDogXCJTaG93IG1vcmVcIiB9fTwvc3Bhbj5cbiAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICBpY29uPVwiY2hldnJvblwiXG4gICAgICAgICAgW3dpZHRoXT1cIjhcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiNlwiXG4gICAgICAgICAgZmlsbD1cImJsYWNrXCJcbiAgICAgICAgICBzdHJva2U9XCJibGFja1wiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG4gICAgPGhyIGNsYXNzPVwiZGl2aWRlclwiIC8+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPkdyb3VwPC9oMz5cbiAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICBpY29uPVwiaW5mb1wiXG4gICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICBmaWxsPVwiZ3JleVwiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwibmV3R3JvdXBGb3JtXCIgKG5nU3VibWl0KT1cImFkZEdyb3VwKClcIj5cbiAgICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkdyb3VwIG5hbWVcIlxuICAgICAgICAgIGJvcmRlcj1cIjFweCBzb2xpZCAjY2NjXCJcbiAgICAgICAgICBib3JkZXJSYWRpdXM9XCI1cHhcIlxuICAgICAgICAgIHRleHRDb2xvcj1cImJsYWNrXCJcbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIGZvbnRTaXplPVwiMTFweFwiXG4gICAgICAgICAgaGVpZ2h0PVwiMjBweFwiXG4gICAgICAgICAgcGQ9XCIycHggNHB4ICFpbXBvcnRhbnRcIlxuICAgICAgICAgIGJnQ29sb3I9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICAgICAgW2Vycm9yUG9zaXRpb25dPVwiJ2JvdHRvbSdcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgICAgPC9mb3JtPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2aXNpYmxlR3JvdXBzOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJpdGVtXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWxhYmVsXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgW2lkXT1cIidncm91cC0nICsgaVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ2dyb3VwLScgKyBpXCIgY2xhc3M9XCJjaGVja2JveC1sYWJlbFwiPlxuICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWFjdGlvbnNcIiAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ29wZXJhdGlvbidcIj5cbiAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgaWNvbj1cImVkaXRcIlxuICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NzlFOVwiXG4gICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRPcGVyYXRpb24oaXRlbSlcIlxuICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgIGljb249XCJkZWxldGVcIlxuICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiI0UyMDAwMFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlT3BlcmF0aW9uKGl0ZW0pXCJcbiAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cImdyb3VwSXRlbXMubGVuZ3RoID4gM1wiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3dBbGxHcm91cHMoKVwiXG4gICAgICAgICAgY2xhc3M9XCJzaG93LW1vcmVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4+e3sgc2hvd0FsbEdyb3VwcyA/IFwiU2hvdyBsZXNzXCIgOiBcIlNob3cgbW9yZVwiIH19PC9zcGFuPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICBpY29uPVwiY2hldnJvblwiXG4gICAgICAgICAgICBbd2lkdGhdPVwiOFwiXG4gICAgICAgICAgICBbaGVpZ2h0XT1cIjZcIlxuICAgICAgICAgICAgZmlsbD1cImJsYWNrXCJcbiAgICAgICAgICAgIHN0cm9rZT1cImJsYWNrXCJcbiAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZC1idXR0b25cIiAoY2xpY2spPVwiYWRkR3JvdXAoKVwiPisgQWRkPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG4gICAgPGhyIGNsYXNzPVwiZGl2aWRlclwiIC8+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPk9wZXJhdGlvbjwvaDM+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgaWNvbj1cImluZm9cIlxuICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgZmlsbD1cImdyZXlcIlxuICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICBwbGFjZWhvbGRlcj1cIk9wZXJhdGlvbiBuYW1lXCJcbiAgICAgICAgYm9yZGVyPVwiMXB4IHNvbGlkICNjY2NcIlxuICAgICAgICBib3JkZXJSYWRpdXM9XCI1cHhcIlxuICAgICAgICB0ZXh0Q29sb3I9XCJibGFja1wiXG4gICAgICAgIGZvbnRTaXplPVwiMTFweFwiXG4gICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgIGhlaWdodD1cIjIwcHhcIlxuICAgICAgICBwZD1cIjJweCA2cHhcIlxuICAgICAgICBiZ0NvbG9yPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICBbc2hvd0JvcmRlcl09XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdPcGVyYXRpb24ubmFtZVwiXG4gICAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgICAgPGRpdiBjbGFzcz1cIm9wZXJhdGlvbi1ncmlkXCI+XG4gICAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgICAgd2lkdGg9XCInOHJlbSdcIlxuICAgICAgICAgIGhlaWdodD1cIicxLjI1cmVtJ1wiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZmllbGRcIlxuICAgICAgICAgIFtvcHRpb25zXT1cIm51bWVyaWNQcm9wZXJ0aWVzLmNvbmNhdChzdHJpbmdQcm9wZXJ0aWVzKVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdPcGVyYXRpb24uZmllbGQxXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkZpZWxkMUNoYW5nZSgpXCJcbiAgICAgICAgPlxuICAgICAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICAgICAgd2lkdGg9XCInOHJlbSdcIlxuICAgICAgICAgIGhlaWdodD1cIicxLjI1cmVtJ1wiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3Qgb3BlcmF0b3JcIlxuICAgICAgICAgIFtvcHRpb25zXT1cImF2YWlsYWJsZU9wZXJhdG9yc1wiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdPcGVyYXRpb24ub3BlcmF0b3JcIlxuICAgICAgICA+XG4gICAgICAgIDwvdmVyYmVuLWRyb3AtZG93bj5cbiAgICAgICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgICAgICB3aWR0aD1cIic4cmVtJ1wiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZmllbGRcIlxuICAgICAgICAgIFtvcHRpb25zXT1cImF2YWlsYWJsZUZpZWxkczJcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwibmV3T3BlcmF0aW9uLmZpZWxkMlwiXG4gICAgICAgID5cbiAgICAgICAgPC92ZXJiZW4tZHJvcC1kb3duPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYWRkLWJ1dHRvbiBtbC1hdXRvXCIgKGNsaWNrKT1cImFkZE9yVXBkYXRlT3BlcmF0aW9uKClcIj5cbiAgICAgICAge3sgaXNFZGl0aW5nT3BlcmF0aW9uID8gXCJVcGRhdGVcIiA6IFwiKyBBZGRcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9zZWN0aW9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjYXJkLWZvb3RlciBjbGFzcz1cImNhcmQtZm9vdGVyXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImV4cG9ydC1idXR0b25cIiAoY2xpY2spPVwiZXhwb3J0RGF0YSgpXCI+RXhwb3J0PC9idXR0b24+XG4gIDwvZGl2PlxuPC92ZXJiZW4tY2FyZD5cbiJdfQ==
|