kwikid-agent-dashboard
Version:
KwikID's EKYC Agent Map View Module.
118 lines • 25.9 kB
JavaScript
import { __decorate } from "tslib";
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from "@angular/core";
import { FormControl, FormGroup } from "@angular/forms";
import { logMethod } from "kwikid-toolkit";
import { TuiDay, TuiDayRange } from "@taiga-ui/cdk";
import { convertKwikUIDateToStringFormat, convertNormalDateToStringFormat } from "../../helpers/date.helplers";
import * as i0 from "@angular/core";
import * as i1 from "kwikui";
import * as i2 from "@angular/forms";
import * as i3 from "@angular/common";
export class TaskListSearchComponent {
constructor() {
// Search Text
this.searchText = "";
this.formGroup = new FormGroup({});
this.sortInAscendingOrder = true;
// Date Range Values
this.start_time = undefined;
this.end_time = undefined;
this.max = new TuiDay(new Date().getFullYear(), new Date().getMonth(), new Date().getDate());
// Sorting Variables
this.sortFilterOptions = ["name", "session_status", "mobile_number"];
this.activeSearchAction = undefined;
this.onFilterTasksByText = new EventEmitter();
this.onFilterTasksByDate = new EventEmitter();
this.onChangeSortFilter = new EventEmitter();
}
ngOnInit() {
this.handleSearchAndSortFormControls();
this.handleInitialDateRange();
}
handleOnClickSearchType(type) {
if (this.activeSearchAction !== type) {
this.activeSearchAction = type;
}
else {
this.activeSearchAction = undefined;
}
}
handleInitialDateRange() {
var _a, _b, _c, _d, _e, _f;
const searchFilterStartPoint = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.extendedFlags) === null || _b === void 0 ? void 0 : _b.searchFilterStartPoint) !== null && _c !== void 0 ? _c : {
day: 0,
month: 0,
year: 0
};
const currentDate = new Date();
const startDate = new Date((_d = currentDate.getFullYear() - (searchFilterStartPoint === null || searchFilterStartPoint === void 0 ? void 0 : searchFilterStartPoint.year)) !== null && _d !== void 0 ? _d : 0, (_e = currentDate.getMonth() - (searchFilterStartPoint === null || searchFilterStartPoint === void 0 ? void 0 : searchFilterStartPoint.month)) !== null && _e !== void 0 ? _e : 0, (_f = currentDate.getDate() - (searchFilterStartPoint === null || searchFilterStartPoint === void 0 ? void 0 : searchFilterStartPoint.day)) !== null && _f !== void 0 ? _f : 0);
this.searchDateFormControl = new FormControl({
value: new TuiDayRange(new TuiDay(startDate.getFullYear(), startDate.getMonth(), startDate.getDate()), this.max),
disabled: false
});
this.formGroup.addControl("search-date", this.searchDateFormControl);
this.start_time = convertNormalDateToStringFormat(startDate);
this.end_time = convertNormalDateToStringFormat(null);
// To get Tasks for First Time
this.onFilterTasksByDate.emit({
start_time: this.start_time,
end_time: this.end_time
});
}
handleSearchAndSortFormControls() {
var _a, _b, _c;
this.searchTextFormControl = new FormControl("");
this.formGroup.addControl("search-text", this.searchTextFormControl);
this.sortFilterKeyFormControl = new FormControl("");
this.formGroup.addControl("sort-filter", this.sortFilterKeyFormControl);
this.sortFilterOptions =
(_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.extendedFlags) === null || _b === void 0 ? void 0 : _b.sortFilterKeys) !== null && _c !== void 0 ? _c : this.sortFilterOptions;
}
handleOnChangeSearchText(event) {
this.onFilterTasksByText.emit({ text: event.value });
}
handleOnChangeDateRange(event) {
this.handleChangeDateRangeFormat(event);
this.onFilterTasksByDate.emit({
start_time: this.start_time,
end_time: this.end_time
});
}
handleOnChangeSortFilter(event) {
this.onChangeSortFilter.emit({
sortFilterKey: this.sortFilterKeyFormControl.value,
sortFilterOrder: this.sortInAscendingOrder
});
}
handleOnClickChangeSortOrder() {
this.sortInAscendingOrder = !this.sortInAscendingOrder;
this.handleOnChangeSortFilter(false);
}
handleChangeDateRangeFormat(event) {
this.start_time = convertKwikUIDateToStringFormat(event.value.from);
this.end_time = convertKwikUIDateToStringFormat(event.value.to);
}
}
/** @nocollapse */ TaskListSearchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TaskListSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
/** @nocollapse */ TaskListSearchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TaskListSearchComponent, selector: "task-list-search", inputs: { config: "config" }, outputs: { onFilterTasksByText: "onFilterTasksByText", onFilterTasksByDate: "onFilterTasksByDate", onChangeSortFilter: "onChangeSortFilter" }, ngImport: i0, template: "<div\n class=\"task-list-search-container\"\n [formGroup]=\"formGroup\"\n>\n <div class=\"task-list-search-icons\">\n <kwikui-button\n appearance=\"mono\"\n icon=\"tuiIconSearchLarge\"\n size=\"s\"\n type=\"button\"\n (onClick)=\"handleOnClickSearchType('search-text')\"\n ></kwikui-button>\n <kwikui-button\n appearance=\"mono\"\n icon=\"tuiIconCalendarLarge\"\n size=\"s\"\n type=\"button\"\n (onClick)=\"handleOnClickSearchType('search-date')\"\n ></kwikui-button>\n <kwikui-button\n *ngIf=\"config?.utilityFlags?.isAllowSortTasks\"\n appearance=\"mono\"\n icon=\"tuiIconFilterLarge\"\n size=\"s\"\n type=\"button\"\n (onClick)=\"handleOnClickSearchType('sort-filter')\"\n ></kwikui-button>\n </div>\n\n <div\n class=\"task-list-search-action\"\n *ngIf=\"activeSearchAction\"\n >\n <kwikui-input-date-range\n *ngIf=\"activeSearchAction == 'search-date'\"\n class=\"task-list-date-box\"\n label=\"Search by Date Range\"\n id=\"dateRange\"\n size=\"m\"\n [max]=\"max\"\n [maxLength]=\"maxLength\"\n formControlName=\"search-date\"\n [formControl]=\"searchDateFormControl\"\n (getKeyValue)=\"handleOnChangeDateRange($event)\"\n ></kwikui-input-date-range>\n\n <kwikui-input\n *ngIf=\"activeSearchAction == 'search-text'\"\n label=\"Search\"\n id=\"search\"\n icon=\"tuiIconSearch\"\n placeholder=\"Search any task from here\"\n size=\"m\"\n [formControl]=\"searchTextFormControl\"\n formControlName=\"search-text\"\n (getKeyValue)=\"handleOnChangeSearchText($event)\"\n ></kwikui-input>\n\n <div\n *ngIf=\"activeSearchAction == 'sort-filter'\"\n class=\"task-list-sort-action\"\n >\n <kwikui-button\n appearance=\"outline\"\n [icon]=\"\n sortInAscendingOrder\n ? 'tuiIconChevronsUpLarge'\n : 'tuiIconChevronsDownLarge'\n \"\n size=\"m\"\n type=\"button\"\n (onClick)=\"handleOnClickChangeSortOrder()\"\n ></kwikui-button>\n <kwikui-input-select\n class=\"task-list-sort-key\"\n formControlName=\"sort-filter\"\n label=\"Sort By Key\"\n size=\"m\"\n [formControl]=\"sortFilterKeyFormControl\"\n [options]=\"sortFilterOptions\"\n [searchable]=\"false\"\n (getKeyValue)=\"handleOnChangeSortFilter($event)\"\n ></kwikui-input-select>\n </div>\n </div>\n</div>\n", styles: [".task-list-search-container{width:100%}.task-list-search-container .task-list-search-icons{display:flex;justify-content:flex-end;align-items:center;flex-direction:row;grid-gap:.5rem;gap:.5rem}.task-list-search-container .task-list-search-action{margin-top:.5rem}.task-list-search-container .task-list-search-action .task-list-sort-action{display:flex;flex-direction:row;grid-gap:.5rem;gap:.5rem}.task-list-search-container .task-list-search-action .task-list-sort-action .task-list-sort-key{flex:1}\n"], components: [{ type: i1.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }, { type: i1.KwikUIInputDateRangeComponent, selector: "kwikui-input-date-range", inputs: ["disabled", "focus", "formControl", "formControlName", "hintContent", "icon", "id", "invalid", "label", "max", "maxLength", "min", "minLength", "placeholder", "postfix", "prefix", "properties", "size", "validators"], outputs: ["getKeyValue"] }, { type: i1.KwikUIInputComponent, selector: "kwikui-input", inputs: ["case", "disabled", "focus", "formControl", "formControlName", "hintContent", "icon", "id", "invalid", "label", "placeholder", "postfix", "prefix", "properties", "size", "type", "validators"], outputs: ["getKeyValue"] }, { type: i1.KwikUIInputSelectComponent, selector: "kwikui-input-select", inputs: ["disabled", "focus", "formControl", "formControlName", "hintContent", "icon", "id", "invalid", "label", "options", "placeholder", "properties", "searchable", "size", "validators"], outputs: ["getKeyValue"] }], directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i2.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
__decorate([
logMethod
], TaskListSearchComponent.prototype, "handleOnChangeSearchText", null);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TaskListSearchComponent, decorators: [{
type: Component,
args: [{
selector: "task-list-search",
templateUrl: "./task-list-search.component.html",
styleUrls: ["./task-list-search.component.scss"],
changeDetection: ChangeDetectionStrategy.OnPush
}]
}], ctorParameters: function () { return []; }, propDecorators: { config: [{
type: Input
}], onFilterTasksByText: [{
type: Output
}], onFilterTasksByDate: [{
type: Output
}], onChangeSortFilter: [{
type: Output
}], handleOnChangeSearchText: [] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1saXN0LXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjIvY29tcG9uZW50cy90YXNrLWxpc3Qtc2VhcmNoL3Rhc2stbGlzdC1zZWFyY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3YyL2NvbXBvbmVudHMvdGFzay1saXN0LXNlYXJjaC90YXNrLWxpc3Qtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLCtCQUErQixFQUNoQyxNQUFNLDZCQUE2QixDQUFDOzs7OztBQVFyQyxNQUFNLE9BQU8sdUJBQXVCO0lBNENsQztRQXhDQSxjQUFjO1FBQ2QsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixjQUFTLEdBQWMsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFRekMseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBRTVCLG9CQUFvQjtRQUNwQixlQUFVLEdBQWtCLFNBQVMsQ0FBQztRQUV0QyxhQUFRLEdBQWtCLFNBQVMsQ0FBQztRQUVwQyxRQUFHLEdBQVcsSUFBSSxNQUFNLENBQ3RCLElBQUksSUFBSSxFQUFF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QStCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsUUFBUSxHQUFHLCtCQUErQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQzs7d0lBdElVLHVCQUF1Qjs0SEFBdkIsdUJBQXVCLHFPQ3RCcEMsaS9FQXNGQTtBRDJDRTtJQURDLFNBQVM7dUVBR1Q7NEZBN0dVLHVCQUF1QjtrQkFObkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixXQUFXLEVBQUUsbUNBQW1DO29CQUNoRCxTQUFTLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQztvQkFDaEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzBFQUdDLE1BQU07c0JBREwsS0FBSztnQkFtQ04sbUJBQW1CO3NCQURsQixNQUFNO2dCQUlQLG1CQUFtQjtzQkFEbEIsTUFBTTtnQkFJUCxrQkFBa0I7c0JBRGpCLE1BQU07Z0JBa0VQLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0XG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBsb2dNZXRob2QgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IFR1aURheSwgVHVpRGF5UmFuZ2UgfSBmcm9tIFwiQHRhaWdhLXVpL2Nka1wiO1xuaW1wb3J0IHtcbiAgY29udmVydEt3aWtVSURhdGVUb1N0cmluZ0Zvcm1hdCxcbiAgY29udmVydE5vcm1hbERhdGVUb1N0cmluZ0Zvcm1hdFxufSBmcm9tIFwiLi4vLi4vaGVscGVycy9kYXRlLmhlbHBsZXJzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJ0YXNrLWxpc3Qtc2VhcmNoXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGFzay1saXN0LXNlYXJjaC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vdGFzay1saXN0LXNlYXJjaC5jb21wb25lbnQuc2Nzc1wiXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGFza0xpc3RTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBjb25maWc7XG5cbiAgLy8gU2VhcmNoIFRleHRcbiAgc2VhcmNoVGV4dCA9IFwiXCI7XG5cbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcblxuICBzZWFyY2hUZXh0Rm9ybUNvbnRyb2w6IEZvcm1Db250cm9sO1xuXG4gIHNlYXJjaERhdGVGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG5cbiAgc29ydEZpbHRlcktleUZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcblxuICBzb3J0SW5Bc2NlbmRpbmdPcmRlciA9IHRydWU7XG5cbiAgLy8gRGF0ZSBSYW5nZSBWYWx1ZXNcbiAgc3RhcnRfdGltZTogc3RyaW5nIHwgRGF0ZSA9IHVuZGVmaW5lZDtcblxuICBlbmRfdGltZTogc3RyaW5nIHwgRGF0ZSA9IHVuZGVmaW5lZDtcblxuICBtYXg6IFR1aURheSA9IG5ldyBUdWlEYXkoXG4gICAgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLFxuICAgIG5ldyBEYXRlKCkuZ2V0TW9udGgoKSxcbiAgICBuZXcgRGF0ZSgpLmdldERhdGUoKVxuICApO1xuXG4gIG1heExlbmd0aDogYW55O1xuXG4gIC8vIFNvcnRpbmcgVmFyaWFibGVzXG4gIHNvcnRGaWx0ZXJPcHRpb25zID0gW1wibmFtZVwiLCBcInNlc3Npb25fc3RhdHVzXCIsIFwibW9iaWxlX251bWJlclwiXTtcblxuICBhY3RpdmVTZWFyY2hBY3Rpb246IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICBAT3V0cHV0KClcbiAgb25GaWx0ZXJUYXNrc0J5VGV4dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KClcbiAgb25GaWx0ZXJUYXNrc0J5RGF0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KClcbiAgb25DaGFuZ2VTb3J0RmlsdGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmhhbmRsZVNlYXJjaEFuZFNvcnRGb3JtQ29udHJvbHMoKTtcbiAgICB0aGlzLmhhbmRsZUluaXRpYWxEYXRlUmFuZ2UoKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tTZWFyY2hUeXBlKHR5cGUpIHtcbiAgICBpZiAodGhpcy5hY3RpdmVTZWFyY2hBY3Rpb24gIT09IHR5cGUpIHtcbiAgICAgIHRoaXMuYWN0aXZlU2VhcmNoQWN0aW9uID0gdHlwZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3RpdmVTZWFyY2hBY3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlSW5pdGlhbERhdGVSYW5nZSgpIHtcbiAgICBjb25zdCBzZWFyY2hGaWx0ZXJTdGFydFBvaW50ID0gdGhpcy5jb25maWc/LmV4dGVuZGVkRmxhZ3NcbiAgICAgID8uc2VhcmNoRmlsdGVyU3RhcnRQb2ludCA/PyB7XG4gICAgICBkYXk6IDAsXG4gICAgICBtb250aDogMCxcbiAgICAgIHllYXI6IDBcbiAgICB9O1xuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgRGF0ZShcbiAgICAgIGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCkgLSBzZWFyY2hGaWx0ZXJTdGFydFBvaW50Py55ZWFyID8/IDAsXG4gICAgICBjdXJyZW50RGF0ZS5nZXRNb250aCgpIC0gc2VhcmNoRmlsdGVyU3RhcnRQb2ludD8ubW9udGggPz8gMCxcbiAgICAgIGN1cnJlbnREYXRlLmdldERhdGUoKSAtIHNlYXJjaEZpbHRlclN0YXJ0UG9pbnQ/LmRheSA/PyAwXG4gICAgKTtcblxuICAgIHRoaXMuc2VhcmNoRGF0ZUZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKHtcbiAgICAgIHZhbHVlOiBuZXcgVHVpRGF5UmFuZ2UoXG4gICAgICAgIG5ldyBUdWlEYXkoXG4gICAgICAgICAgc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgc3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgc3RhcnREYXRlLmdldERhdGUoKVxuICAgICAgICApLFxuICAgICAgICB0aGlzLm1heFxuICAgICAgKSxcbiAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgIH0pO1xuICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woXCJzZWFyY2gtZGF0ZVwiLCB0aGlzLnNlYXJjaERhdGVGb3JtQ29udHJvbCk7XG5cbiAgICB0aGlzLnN0YXJ0X3RpbWUgPSBjb252ZXJ0Tm9ybWFsRGF0ZVRvU3RyaW5nRm9ybWF0KHN0YXJ0RGF0ZSk7XG4gICAgdGhpcy5lbmRfdGltZSA9IGNvbnZlcnROb3JtYWxEYXRlVG9TdHJpbmdGb3JtYXQobnVsbCk7XG5cbiAgICAvLyBUbyBnZXQgVGFza3MgZm9yIEZpcnN0IFRpbWVcbiAgICB0aGlzLm9uRmlsdGVyVGFza3NCeURhdGUuZW1pdCh7XG4gICAgICBzdGFydF90aW1lOiB0aGlzLnN0YXJ0X3RpbWUsXG4gICAgICBlbmRfdGltZTogdGhpcy5lbmRfdGltZVxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU2VhcmNoQW5kU29ydEZvcm1Db250cm9scygpIHtcbiAgICB0aGlzLnNlYXJjaFRleHRGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChcIlwiKTtcbiAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKFwic2VhcmNoLXRleHRcIiwgdGhpcy5zZWFyY2hUZXh0Rm9ybUNvbnRyb2wpO1xuXG4gICAgdGhpcy5zb3J0RmlsdGVyS2V5Rm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woXCJcIik7XG4gICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChcInNvcnQtZmlsdGVyXCIsIHRoaXMuc29ydEZpbHRlcktleUZvcm1Db250cm9sKTtcbiAgICB0aGlzLnNvcnRGaWx0ZXJPcHRpb25zID1cbiAgICAgIHRoaXMuY29uZmlnPy5leHRlbmRlZEZsYWdzPy5zb3J0RmlsdGVyS2V5cyA/PyB0aGlzLnNvcnRGaWx0ZXJPcHRpb25zO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPbkNoYW5nZVNlYXJjaFRleHQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25GaWx0ZXJUYXNrc0J5VGV4dC5lbWl0KHsgdGV4dDogZXZlbnQudmFsdWUgfSk7XG4gIH1cblxuICBoYW5kbGVPbkNoYW5nZURhdGVSYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5oYW5kbGVDaGFuZ2VEYXRlUmFuZ2VGb3JtYXQoZXZlbnQpO1xuICAgIHRoaXMub25GaWx0ZXJUYXNrc0J5RGF0ZS5lbWl0KHtcbiAgICAgIHN0YXJ0X3RpbWU6IHRoaXMuc3RhcnRfdGltZSxcbiAgICAgIGVuZF90aW1lOiB0aGlzLmVuZF90aW1lXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVPbkNoYW5nZVNvcnRGaWx0ZXIoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMub25DaGFuZ2VTb3J0RmlsdGVyLmVtaXQoe1xuICAgICAgc29ydEZpbHRlcktleTogdGhpcy5zb3J0RmlsdGVyS2V5Rm9ybUNvbnRyb2wudmFsdWUsXG4gICAgICBzb3J0RmlsdGVyT3JkZXI6IHRoaXMuc29ydEluQXNjZW5kaW5nT3JkZXJcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZU9uQ2xpY2tDaGFuZ2VTb3J0T3JkZXIoKSB7XG4gICAgdGhpcy5zb3J0SW5Bc2NlbmRpbmdPcmRlciA9ICF0aGlzLnNvcnRJbkFzY2VuZGluZ09yZGVyO1xuICAgIHRoaXMuaGFuZGxlT25DaGFuZ2VTb3J0RmlsdGVyKGZhbHNlKTtcbiAgfVxuXG4gIGhhbmRsZUNoYW5nZURhdGVSYW5nZUZvcm1hdChldmVudDogYW55KSB7XG4gICAgdGhpcy5zdGFydF90aW1lID0gY29udmVydEt3aWtVSURhdGVUb1N0cmluZ0Zvcm1hdChldmVudC52YWx1ZS5mcm9tKTtcbiAgICB0aGlzLmVuZF90aW1lID0gY29udmVydEt3aWtVSURhdGVUb1N0cmluZ0Zvcm1hdChldmVudC52YWx1ZS50byk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJ0YXNrLWxpc3Qtc2VhcmNoLWNvbnRhaW5lclwiXG4gIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbj5cbiAgPGRpdiBjbGFzcz1cInRhc2stbGlzdC1zZWFyY2gtaWNvbnNcIj5cbiAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgYXBwZWFyYW5jZT1cIm1vbm9cIlxuICAgICAgaWNvbj1cInR1aUljb25TZWFyY2hMYXJnZVwiXG4gICAgICBzaXplPVwic1wiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChvbkNsaWNrKT1cImhhbmRsZU9uQ2xpY2tTZWFyY2hUeXBlKCdzZWFyY2gtdGV4dCcpXCJcbiAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgICBpY29uPVwidHVpSWNvbkNhbGVuZGFyTGFyZ2VcIlxuICAgICAgc2l6ZT1cInNcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAob25DbGljayk9XCJoYW5kbGVPbkNsaWNrU2VhcmNoVHlwZSgnc2VhcmNoLWRhdGUnKVwiXG4gICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgKm5nSWY9XCJjb25maWc/LnV0aWxpdHlGbGFncz8uaXNBbGxvd1NvcnRUYXNrc1wiXG4gICAgICBhcHBlYXJhbmNlPVwibW9ub1wiXG4gICAgICBpY29uPVwidHVpSWNvbkZpbHRlckxhcmdlXCJcbiAgICAgIHNpemU9XCJzXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlT25DbGlja1NlYXJjaFR5cGUoJ3NvcnQtZmlsdGVyJylcIlxuICAgID48L2t3aWt1aS1idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cInRhc2stbGlzdC1zZWFyY2gtYWN0aW9uXCJcbiAgICAqbmdJZj1cImFjdGl2ZVNlYXJjaEFjdGlvblwiXG4gID5cbiAgICA8a3dpa3VpLWlucHV0LWRhdGUtcmFuZ2VcbiAgICAgICpuZ0lmPVwiYWN0aXZlU2VhcmNoQWN0aW9uID09ICdzZWFyY2gtZGF0ZSdcIlxuICAgICAgY2xhc3M9XCJ0YXNrLWxpc3QtZGF0ZS1ib3hcIlxuICAgICAgbGFiZWw9XCJTZWFyY2ggYnkgRGF0ZSBSYW5nZVwiXG4gICAgICBpZD1cImRhdGVSYW5nZVwiXG4gICAgICBzaXplPVwibVwiXG4gICAgICBbbWF4XT1cIm1heFwiXG4gICAgICBbbWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2gtZGF0ZVwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoRGF0ZUZvcm1Db250cm9sXCJcbiAgICAgIChnZXRLZXlWYWx1ZSk9XCJoYW5kbGVPbkNoYW5nZURhdGVSYW5nZSgkZXZlbnQpXCJcbiAgICA+PC9rd2lrdWktaW5wdXQtZGF0ZS1yYW5nZT5cblxuICAgIDxrd2lrdWktaW5wdXRcbiAgICAgICpuZ0lmPVwiYWN0aXZlU2VhcmNoQWN0aW9uID09ICdzZWFyY2gtdGV4dCdcIlxuICAgICAgbGFiZWw9XCJTZWFyY2hcIlxuICAgICAgaWQ9XCJzZWFyY2hcIlxuICAgICAgaWNvbj1cInR1aUljb25TZWFyY2hcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggYW55IHRhc2sgZnJvbSBoZXJlXCJcbiAgICAgIHNpemU9XCJtXCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hUZXh0Rm9ybUNvbnRyb2xcIlxuICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoLXRleHRcIlxuICAgICAgKGdldEtleVZhbHVlKT1cImhhbmRsZU9uQ2hhbmdlU2VhcmNoVGV4dCgkZXZlbnQpXCJcbiAgICA+PC9rd2lrdWktaW5wdXQ+XG5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImFjdGl2ZVNlYXJjaEFjdGlvbiA9PSAnc29ydC1maWx0ZXInXCJcbiAgICAgIGNsYXNzPVwidGFzay1saXN0LXNvcnQtYWN0aW9uXCJcbiAgICA+XG4gICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXG4gICAgICAgIFtpY29uXT1cIlxuICAgICAgICAgIHNvcnRJbkFzY2VuZGluZ09yZGVyXG4gICAgICAgICAgICA/ICd0dWlJY29uQ2hldnJvbnNVcExhcmdlJ1xuICAgICAgICAgICAgOiAndHVpSWNvbkNoZXZyb25zRG93bkxhcmdlJ1xuICAgICAgICBcIlxuICAgICAgICBzaXplPVwibVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVPbkNsaWNrQ2hhbmdlU29ydE9yZGVyKClcIlxuICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgIDxrd2lrdWktaW5wdXQtc2VsZWN0XG4gICAgICAgIGNsYXNzPVwidGFzay1saXN0LXNvcnQta2V5XCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic29ydC1maWx0ZXJcIlxuICAgICAgICBsYWJlbD1cIlNvcnQgQnkgS2V5XCJcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwic29ydEZpbHRlcktleUZvcm1Db250cm9sXCJcbiAgICAgICAgW29wdGlvbnNdPVwic29ydEZpbHRlck9wdGlvbnNcIlxuICAgICAgICBbc2VhcmNoYWJsZV09XCJmYWxzZVwiXG4gICAgICAgIChnZXRLZXlWYWx1ZSk9XCJoYW5kbGVPbkNoYW5nZVNvcnRGaWx0ZXIoJGV2ZW50KVwiXG4gICAgICA+PC9rd2lrdWktaW5wdXQtc2VsZWN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19