systelab-components
Version:
systelab-components is a set of components that use wide accepted and adopted standard technologies like Angular and Bootstrap, as well as other popular libraries. Please read the ATTRIBUTION.md file for a complete list of dependencies.
65 lines • 20.9 kB
JavaScript
import { Component, ViewChild } from '@angular/core';
import { SystelabModalContext } from '../modal/dialog/modal-context';
import * as i0 from "@angular/core";
import * as i1 from "../modal/dialog/dialog-ref";
import * as i2 from "@angular/common";
import * as i3 from "@angular/forms";
import * as i4 from "../modal/header/dialog-header.component";
import * as i5 from "systelab-translate";
export class NumPadDialogParameters extends SystelabModalContext {
constructor() {
super(...arguments);
this.width = 300;
this.height = 450;
}
}
export class NumPadDialog {
static getParameters() {
return new NumPadDialogParameters();
}
constructor(dialog) {
this.dialog = dialog;
this.value = '';
this.showClose = true;
this.isPassword = false;
this.dialogParameters = dialog.context;
this.isPassword = this.dialogParameters.isPassword;
this.value = this.dialogParameters.value;
}
close() {
this.dialog.close(null);
}
accept() {
this.dialog.close(this.value);
}
pushButton(value) {
if (this.value) {
this.value += value;
}
else {
this.value = value;
}
this.inputElement.nativeElement.focus();
}
deleteNumber() {
this.value = this.value.substring(0, this.value.length - 1);
}
cleanInput() {
this.value = '';
}
doKeyPress(event) {
if (event.code === 'Enter') {
this.dialog.close(this.value);
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: NumPadDialog, deps: [{ token: i1.DialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: NumPadDialog, selector: "ng-component", viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<systelab-dialog-header [withClose]=\"showClose\" (close)=\"close()\">{{titleForDialog}}\n</systelab-dialog-header>\n<div class=\"container slab-numpad-container\">\n <form>\n <div class=\"bs-callout\">\n <div class=\"row\">\n <div class=\"col-md-12 slab-numpad-parentPadding\">\n <input [autofocus]=\"true\" #inputElement *ngIf=\"!isPassword\" id=\"numpadField\" type=\"text\" class=\"form-control slab-numpad-input\" name=\"numpadField\"\n [(ngModel)]=\"value\">\n <input [autofocus]=\"true\" #inputElement *ngIf=\"isPassword\" id=\"numpadFieldPwd\" type=\"password\" class=\"form-control slab-numpad-input\" name=\"numpadFieldPwd\"\n [(ngModel)]=\"value\">\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('1')\">1</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('2')\">2</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('3')\">3</a>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('4')\">4</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('5')\">5</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('6')\">6</a>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('7')\">7</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('8')\">8</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('9')\">9</a>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"cleanInput()\">C</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('0')\">0</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"deleteNumber()\"><</a>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12 slab-numpad-nopadding\">\n <button class=\"btn slab-numpad-btn btn-primary form-control\" (keypress)=\"doKeyPress($event)\" (click)=\"accept()\">{{ 'COMMON_OK' | translate | async }}</button>\n </div>\n </div>\n </div>\n </form>\n</div>", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.DialogHeaderComponent, selector: "systelab-dialog-header", inputs: ["withClose", "withInfo", "withProgressBar", "withTextProgressBar", "withHome", "withMinimize", "withDrag"], outputs: ["close", "info", "home", "minimize"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.GeneralTranslatePipe, name: "translate" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: NumPadDialog, decorators: [{
type: Component,
args: [{ template: "<systelab-dialog-header [withClose]=\"showClose\" (close)=\"close()\">{{titleForDialog}}\n</systelab-dialog-header>\n<div class=\"container slab-numpad-container\">\n <form>\n <div class=\"bs-callout\">\n <div class=\"row\">\n <div class=\"col-md-12 slab-numpad-parentPadding\">\n <input [autofocus]=\"true\" #inputElement *ngIf=\"!isPassword\" id=\"numpadField\" type=\"text\" class=\"form-control slab-numpad-input\" name=\"numpadField\"\n [(ngModel)]=\"value\">\n <input [autofocus]=\"true\" #inputElement *ngIf=\"isPassword\" id=\"numpadFieldPwd\" type=\"password\" class=\"form-control slab-numpad-input\" name=\"numpadFieldPwd\"\n [(ngModel)]=\"value\">\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('1')\">1</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('2')\">2</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('3')\">3</a>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('4')\">4</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('5')\">5</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('6')\">6</a>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('7')\">7</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('8')\">8</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('9')\">9</a>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"cleanInput()\">C</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"pushButton('0')\">0</a>\n </div>\n <div class=\"col-md-4 slab-numpad-nopadding\">\n <a class=\"btn slab-numpad-btn form-control\" (click)=\"deleteNumber()\"><</a>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12 slab-numpad-nopadding\">\n <button class=\"btn slab-numpad-btn btn-primary form-control\" (keypress)=\"doKeyPress($event)\" (click)=\"accept()\">{{ 'COMMON_OK' | translate | async }}</button>\n </div>\n </div>\n </div>\n </form>\n</div>" }]
}], ctorParameters: () => [{ type: i1.DialogRef }], propDecorators: { inputElement: [{
type: ViewChild,
args: ['inputElement', { static: false }]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtcGFkLmRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi1jb21wb25lbnRzL3NyYy9saWIvbnVtcGFkL251bXBhZC5kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3lzdGVsYWItY29tcG9uZW50cy9zcmMvbGliL251bXBhZC9udW1wYWQuZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBa0Isb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7OztBQUdyRixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsb0JBQW9CO0lBQWhFOztRQUVpQixVQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ1osV0FBTSxHQUFHLEdBQUcsQ0FBQztJQUU5QixDQUFDO0NBQUE7QUFLRCxNQUFNLE9BQU8sWUFBWTtJQVdqQixNQUFNLENBQUMsYUFBYTtRQUMxQixPQUFPLElBQUksc0JBQXNCLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsWUFBbUIsTUFBeUM7UUFBekMsV0FBTSxHQUFOLE1BQU0sQ0FBbUM7UUFackQsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUtYLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQU96QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7UUFDbkQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFTSxLQUFLO1FBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVNLE1BQU07UUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFhO1FBQzlCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDO1NBQ3BCO2FBQU07WUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNuQjtRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTSxZQUFZO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxVQUFVO1FBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBb0I7UUFDckMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUI7SUFDRixDQUFDOzhHQW5EVyxZQUFZO2tHQUFaLFlBQVksa0tDZHpCLHdsSEFnRU07OzJGRGxETyxZQUFZO2tCQUh4QixTQUFTOzs4RUFLNkMsWUFBWTtzQkFBakUsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50LCBTeXN0ZWxhYk1vZGFsQ29udGV4dCB9IGZyb20gJy4uL21vZGFsL2RpYWxvZy9tb2RhbC1jb250ZXh0JztcbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJy4uL21vZGFsL2RpYWxvZy9kaWFsb2ctcmVmJztcblxuZXhwb3J0IGNsYXNzIE51bVBhZERpYWxvZ1BhcmFtZXRlcnMgZXh0ZW5kcyBTeXN0ZWxhYk1vZGFsQ29udGV4dCB7XG5cdHB1YmxpYyB2YWx1ZTogc3RyaW5nO1xuXHRwdWJsaWMgb3ZlcnJpZGUgd2lkdGggPSAzMDA7XG5cdHB1YmxpYyBvdmVycmlkZSBoZWlnaHQgPSA0NTA7XG5cdHB1YmxpYyBpc1Bhc3N3b3JkOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcblx0dGVtcGxhdGVVcmw6ICdudW1wYWQuZGlhbG9nLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBOdW1QYWREaWFsb2cgaW1wbGVtZW50cyBNb2RhbENvbXBvbmVudDxOdW1QYWREaWFsb2dQYXJhbWV0ZXJzPiB7XG5cblx0QFZpZXdDaGlsZCgnaW5wdXRFbGVtZW50Jywge3N0YXRpYzogZmFsc2V9KSBwcm90ZWN0ZWQgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXHRwdWJsaWMgdmFsdWUgPSAnJztcblx0cHVibGljIGRpYWxvZ1BhcmFtZXRlcnM6IE51bVBhZERpYWxvZ1BhcmFtZXRlcnM7XG5cdHB1YmxpYyBzZWFyY2hpbmdWYWx1ZTogc3RyaW5nO1xuXG5cdHB1YmxpYyB0aXRsZUZvckRpYWxvZzogc3RyaW5nO1xuXHRwdWJsaWMgc2hvd0Nsb3NlID0gdHJ1ZTtcblx0cHVibGljIGlzUGFzc3dvcmQgPSBmYWxzZTtcblxuXHRwdWJsaWMgc3RhdGljIGdldFBhcmFtZXRlcnMoKTogTnVtUGFkRGlhbG9nUGFyYW1ldGVycyB7XG5cdFx0cmV0dXJuIG5ldyBOdW1QYWREaWFsb2dQYXJhbWV0ZXJzKCk7XG5cdH1cblxuXHRjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nOiBEaWFsb2dSZWY8TnVtUGFkRGlhbG9nUGFyYW1ldGVycz4pIHtcblx0XHR0aGlzLmRpYWxvZ1BhcmFtZXRlcnMgPSBkaWFsb2cuY29udGV4dDtcblx0XHR0aGlzLmlzUGFzc3dvcmQgPSB0aGlzLmRpYWxvZ1BhcmFtZXRlcnMuaXNQYXNzd29yZDtcblx0XHR0aGlzLnZhbHVlID0gdGhpcy5kaWFsb2dQYXJhbWV0ZXJzLnZhbHVlO1xuXHR9XG5cblx0cHVibGljIGNsb3NlKCk6IHZvaWQge1xuXHRcdHRoaXMuZGlhbG9nLmNsb3NlKG51bGwpO1xuXHR9XG5cblx0cHVibGljIGFjY2VwdCgpIHtcblx0XHR0aGlzLmRpYWxvZy5jbG9zZSh0aGlzLnZhbHVlKTtcblx0fVxuXG5cdHB1YmxpYyBwdXNoQnV0dG9uKHZhbHVlOiBzdHJpbmcpIHtcblx0XHRpZiAodGhpcy52YWx1ZSkge1xuXHRcdFx0dGhpcy52YWx1ZSArPSB2YWx1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy52YWx1ZSA9IHZhbHVlO1xuXHRcdH1cblxuXHRcdHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblx0fVxuXG5cdHB1YmxpYyBkZWxldGVOdW1iZXIoKSB7XG5cdFx0dGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuc3Vic3RyaW5nKDAsIHRoaXMudmFsdWUubGVuZ3RoIC0gMSk7XG5cdH1cblxuXHRwdWJsaWMgY2xlYW5JbnB1dCgpIHtcblx0XHR0aGlzLnZhbHVlID0gJyc7XG5cdH1cblxuXHRwdWJsaWMgZG9LZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuXHRcdGlmIChldmVudC5jb2RlID09PSAnRW50ZXInKSB7XG5cdFx0XHR0aGlzLmRpYWxvZy5jbG9zZSh0aGlzLnZhbHVlKTtcblx0XHR9XG5cdH1cbn1cblxuXG4iLCI8c3lzdGVsYWItZGlhbG9nLWhlYWRlciBbd2l0aENsb3NlXT1cInNob3dDbG9zZVwiIChjbG9zZSk9XCJjbG9zZSgpXCI+e3t0aXRsZUZvckRpYWxvZ319XG48L3N5c3RlbGFiLWRpYWxvZy1oZWFkZXI+XG48ZGl2IGNsYXNzPVwiY29udGFpbmVyIHNsYWItbnVtcGFkLWNvbnRhaW5lclwiPlxuICAgIDxmb3JtPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnMtY2FsbG91dFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgc2xhYi1udW1wYWQtcGFyZW50UGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2F1dG9mb2N1c109XCJ0cnVlXCIgI2lucHV0RWxlbWVudCAqbmdJZj1cIiFpc1Bhc3N3b3JkXCIgaWQ9XCJudW1wYWRGaWVsZFwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2xhYi1udW1wYWQtaW5wdXRcIiBuYW1lPVwibnVtcGFkRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2F1dG9mb2N1c109XCJ0cnVlXCIgI2lucHV0RWxlbWVudCAqbmdJZj1cImlzUGFzc3dvcmRcIiBpZD1cIm51bXBhZEZpZWxkUHdkXCIgdHlwZT1cInBhc3N3b3JkXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2xhYi1udW1wYWQtaW5wdXRcIiBuYW1lPVwibnVtcGFkRmllbGRQd2RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHNsYWItbnVtcGFkLW5vcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBzbGFiLW51bXBhZC1idG4gZm9ybS1jb250cm9sXCIgKGNsaWNrKT1cInB1c2hCdXR0b24oJzEnKVwiPjE8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHNsYWItbnVtcGFkLW5vcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBzbGFiLW51bXBhZC1idG4gZm9ybS1jb250cm9sXCIgKGNsaWNrKT1cInB1c2hCdXR0b24oJzInKVwiPjI8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHNsYWItbnVtcGFkLW5vcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBzbGFiLW51bXBhZC1idG4gZm9ybS1jb250cm9sXCIgKGNsaWNrKT1cInB1c2hCdXR0b24oJzMnKVwiPjM8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgc2xhYi1udW1wYWQtbm9wYWRkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIHNsYWItbnVtcGFkLWJ0biBmb3JtLWNvbnRyb2xcIiAoY2xpY2spPVwicHVzaEJ1dHRvbignNCcpXCI+NDwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgc2xhYi1udW1wYWQtbm9wYWRkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIHNsYWItbnVtcGFkLWJ0biBmb3JtLWNvbnRyb2xcIiAoY2xpY2spPVwicHVzaEJ1dHRvbignNScpXCI+NTwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgc2xhYi1udW1wYWQtbm9wYWRkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIHNsYWItbnVtcGFkLWJ0biBmb3JtLWNvbnRyb2xcIiAoY2xpY2spPVwicHVzaEJ1dHRvbignNicpXCI+NjwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBzbGFiLW51bXBhZC1ub3BhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gc2xhYi1udW1wYWQtYnRuIGZvcm0tY29udHJvbFwiIChjbGljayk9XCJwdXNoQnV0dG9uKCc3JylcIj43PC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBzbGFiLW51bXBhZC1ub3BhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gc2xhYi1udW1wYWQtYnRuIGZvcm0tY29udHJvbFwiIChjbGljayk9XCJwdXNoQnV0dG9uKCc4JylcIj44PC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBzbGFiLW51bXBhZC1ub3BhZGRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gc2xhYi1udW1wYWQtYnRuIGZvcm0tY29udHJvbFwiIChjbGljayk9XCJwdXNoQnV0dG9uKCc5JylcIj45PC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHNsYWItbnVtcGFkLW5vcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBzbGFiLW51bXBhZC1idG4gZm9ybS1jb250cm9sXCIgKGNsaWNrKT1cImNsZWFuSW5wdXQoKVwiPkM8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHNsYWItbnVtcGFkLW5vcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBzbGFiLW51bXBhZC1idG4gZm9ybS1jb250cm9sXCIgKGNsaWNrKT1cInB1c2hCdXR0b24oJzAnKVwiPjA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHNsYWItbnVtcGFkLW5vcGFkZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBzbGFiLW51bXBhZC1idG4gZm9ybS1jb250cm9sXCIgKGNsaWNrKT1cImRlbGV0ZU51bWJlcigpXCI+PDwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgc2xhYi1udW1wYWQtbm9wYWRkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gc2xhYi1udW1wYWQtYnRuIGJ0bi1wcmltYXJ5IGZvcm0tY29udHJvbFwiIChrZXlwcmVzcyk9XCJkb0tleVByZXNzKCRldmVudClcIiAoY2xpY2spPVwiYWNjZXB0KClcIj57eyAnQ09NTU9OX09LJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuPC9kaXY+Il19