@sachin9822/reports-lib 0.0.149 → 0.0.150

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.
Files changed (41) hide show
  1. package/esm2020/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.mjs +22 -8
  2. package/esm2020/lib/components/accounting-report/accounting-report.component.mjs +254 -0
  3. package/esm2020/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.mjs +463 -0
  4. package/esm2020/lib/components/branch-activity-send-report/branch-activity-send-report.component.mjs +33 -53
  5. package/esm2020/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.mjs +348 -0
  6. package/esm2020/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.mjs +28 -77
  7. package/esm2020/lib/models/accounting-report/accounting-report-entry-model.mjs +2 -0
  8. package/esm2020/lib/models/accounting-report/accounting-report-model.mjs +2 -0
  9. package/esm2020/lib/models/branch-activity-receive-report/branch-activity-receive.model.mjs +2 -0
  10. package/esm2020/lib/models/cancellation-transaction-report/cancellation-transaction.model.mjs +2 -0
  11. package/esm2020/lib/reports-lib.module.mjs +18 -5
  12. package/esm2020/lib/services/report.service.mjs +91 -1
  13. package/esm2020/lib/shared/export-generic.service.mjs +324 -0
  14. package/esm2020/lib/shared/export.service.mjs +2 -2
  15. package/esm2020/lib/shared/metadata/metadata.component.mjs +50 -0
  16. package/esm2020/lib/shared/page-size-selector/page-size-selector.component.mjs +2 -2
  17. package/esm2020/lib/shared/search-filter/search-filter.component.mjs +402 -23
  18. package/esm2020/lib/shared/shared.module.mjs +8 -6
  19. package/esm2020/public-api.mjs +7 -1
  20. package/fesm2015/sachin9822-reports-lib.mjs +2117 -293
  21. package/fesm2015/sachin9822-reports-lib.mjs.map +1 -1
  22. package/fesm2020/sachin9822-reports-lib.mjs +2082 -269
  23. package/fesm2020/sachin9822-reports-lib.mjs.map +1 -1
  24. package/lib/components/acc-gl-details-enquiry-report/acc-gl-details-enquiry-report.component.d.ts +5 -2
  25. package/lib/components/accounting-report/accounting-report.component.d.ts +56 -0
  26. package/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.d.ts +52 -0
  27. package/lib/components/branch-activity-send-report/branch-activity-send-report.component.d.ts +4 -31
  28. package/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.d.ts +99 -0
  29. package/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.d.ts +4 -32
  30. package/lib/models/accounting-report/accounting-report-entry-model.d.ts +24 -0
  31. package/lib/models/accounting-report/accounting-report-model.d.ts +8 -0
  32. package/lib/models/branch-activity-receive-report/branch-activity-receive.model.d.ts +18 -0
  33. package/lib/models/cancellation-transaction-report/cancellation-transaction.model.d.ts +44 -0
  34. package/lib/reports-lib.module.d.ts +13 -10
  35. package/lib/services/report.service.d.ts +18 -0
  36. package/lib/shared/export-generic.service.d.ts +47 -0
  37. package/lib/shared/metadata/metadata.component.d.ts +24 -0
  38. package/lib/shared/search-filter/search-filter.component.d.ts +3 -0
  39. package/lib/shared/shared.module.d.ts +5 -3
  40. package/package.json +1 -1
  41. package/public-api.d.ts +6 -0
@@ -0,0 +1,50 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/forms";
5
+ import * as i3 from "@ng-select/ng-select";
6
+ export class MetadataComponent {
7
+ constructor() {
8
+ this.metaDataOne = {};
9
+ this.metaDataTwo = {};
10
+ this.showmetaDataOne = true;
11
+ this.showmetaDataTwo = false;
12
+ this.searchEvent = new EventEmitter();
13
+ this.exportEvent = new EventEmitter();
14
+ this.exportFormats = [{ formatName: "Excel", code: 'excel' }, { formatName: "PDF", code: 'pdf' }, { formatName: "CSV", code: 'csv' }];
15
+ this.selectedExportOption = 'excel';
16
+ this.preserveOrder = (_a, _b) => 0;
17
+ }
18
+ ngOnInit() {
19
+ console.log("Meta Data");
20
+ console.log(this.showmetaDataOne);
21
+ console.log(this.showmetaDataTwo);
22
+ }
23
+ onSearch() {
24
+ this.searchEvent.emit(this.searchText);
25
+ }
26
+ handleExport() {
27
+ this.exportEvent.emit(this.selectedExportOption);
28
+ }
29
+ }
30
+ MetadataComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MetadataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
+ MetadataComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: MetadataComponent, selector: "lib-metadata", inputs: { metaDataOne: "metaDataOne", metaDataTwo: "metaDataTwo", showmetaDataOne: "showmetaDataOne", showmetaDataTwo: "showmetaDataTwo", reportName: "reportName" }, outputs: { searchEvent: "searchEvent", exportEvent: "exportEvent" }, ngImport: i0, template: "<section class=\"my-2\">\r\n <div class=\"title mb-3\">\r\n {{reportName}}\r\n </div>\r\n <div class=\"meta mb-2\">\r\n <div *ngIf=\"showmetaDataOne\" class=\"data-holder\">\r\n <tbody>\r\n <tr *ngFor=\"let item of metaDataOne | keyvalue:preserveOrder\">\r\n <td class=\"labl meta-td\">{{item.key}}:</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{item.value}}</span></td>\r\n </tr>\r\n </tbody>\r\n </div>\r\n <div *ngIf=\"showmetaDataTwo\" class=\"data-holder\">\r\n <tbody>\r\n <tr *ngFor=\"let item of metaDataTwo | keyvalue\">\r\n <td class=\"labl meta-td\">{{item.key}}:</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{item.value}}</span></td>\r\n </tr>\r\n </tbody>\r\n </div>\r\n </div>\r\n <div class=\"search-export\">\r\n <div class=\"searchBox\">\r\n <input type=\"text\" [(ngModel)]=\"searchText\" name=\"searchText\" class=\"search-input\"\r\n (ngModelChange)=\"onSearch()\" placeholder=\"Search...\" autocomplete=\"off\" />\r\n\r\n <button type=\"button\" class=\"btn btn-sm search-btn\" (click)=\"onSearch()\">\r\n <img src=\"assets/images/Search.svg\" alt=\"Search\" class=\"search-icon\" />\r\n </button>\r\n </div>\r\n\r\n <div class=\"export\">\r\n <div class=\"exp-options\">\r\n <ng-select [items]=\"exportFormats\" bindLabel=\"formatName\" bindValue=\"code\" placeholder=\"Select Format\"\r\n [(ngModel)]=\"selectedExportOption\" [clearable]=\"false\" class=\"export-selector\" required>\r\n </ng-select>\r\n </div>\r\n <button class=\"btn btn-report\" (click)=\"handleExport()\">Export</button>\r\n </div>\r\n </div>\r\n</section>", styles: [".title{text-align:center;font-size:18px;font-weight:700!important}.meta{position:relative;display:flex;justify-content:space-between;align-items:center}.labl{font-size:11.2px;font-weight:700!important}.info{font-size:12px!important;font-weight:400;padding-left:.5rem}.meta-td{padding:0!important}.search-export{position:relative;display:flex;justify-content:space-between}.searchBox{display:inline-flex}.search-btn{height:32px;width:36px;background-color:#8091a5;border:none;border-radius:0 4px 4px 0;display:flex;justify-content:center;align-items:center}.search-input{outline:none!important;border:1px solid #ccc!important;width:190px;height:32px!important;font-size:.75rem;padding:.25rem .5rem;border-top-left-radius:4px;border-bottom-left-radius:4px;border-top-right-radius:0!important;border-bottom-right-radius:0!important;text-transform:uppercase}.search-input:focus{box-shadow:0 0 5px 3px #1877f2!important}.export{display:flex}.exp-options{display:inline-flex;font-size:.75rem;height:2rem!important;width:5rem!important}:host ::ng-deep .exp-options .ng-select{width:100%}.btn-report{border-radius:3px;background-color:#8091a5;color:#fff!important;font-size:14px!important;height:32px!important;height:32px;min-width:110px;margin:0 0 0 20px!important;padding:4px 15px!important}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }] });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MetadataComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'lib-metadata', template: "<section class=\"my-2\">\r\n <div class=\"title mb-3\">\r\n {{reportName}}\r\n </div>\r\n <div class=\"meta mb-2\">\r\n <div *ngIf=\"showmetaDataOne\" class=\"data-holder\">\r\n <tbody>\r\n <tr *ngFor=\"let item of metaDataOne | keyvalue:preserveOrder\">\r\n <td class=\"labl meta-td\">{{item.key}}:</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{item.value}}</span></td>\r\n </tr>\r\n </tbody>\r\n </div>\r\n <div *ngIf=\"showmetaDataTwo\" class=\"data-holder\">\r\n <tbody>\r\n <tr *ngFor=\"let item of metaDataTwo | keyvalue\">\r\n <td class=\"labl meta-td\">{{item.key}}:</td>\r\n <td class=\"px-3 meta-td\"><span class=\"info\">{{item.value}}</span></td>\r\n </tr>\r\n </tbody>\r\n </div>\r\n </div>\r\n <div class=\"search-export\">\r\n <div class=\"searchBox\">\r\n <input type=\"text\" [(ngModel)]=\"searchText\" name=\"searchText\" class=\"search-input\"\r\n (ngModelChange)=\"onSearch()\" placeholder=\"Search...\" autocomplete=\"off\" />\r\n\r\n <button type=\"button\" class=\"btn btn-sm search-btn\" (click)=\"onSearch()\">\r\n <img src=\"assets/images/Search.svg\" alt=\"Search\" class=\"search-icon\" />\r\n </button>\r\n </div>\r\n\r\n <div class=\"export\">\r\n <div class=\"exp-options\">\r\n <ng-select [items]=\"exportFormats\" bindLabel=\"formatName\" bindValue=\"code\" placeholder=\"Select Format\"\r\n [(ngModel)]=\"selectedExportOption\" [clearable]=\"false\" class=\"export-selector\" required>\r\n </ng-select>\r\n </div>\r\n <button class=\"btn btn-report\" (click)=\"handleExport()\">Export</button>\r\n </div>\r\n </div>\r\n</section>", styles: [".title{text-align:center;font-size:18px;font-weight:700!important}.meta{position:relative;display:flex;justify-content:space-between;align-items:center}.labl{font-size:11.2px;font-weight:700!important}.info{font-size:12px!important;font-weight:400;padding-left:.5rem}.meta-td{padding:0!important}.search-export{position:relative;display:flex;justify-content:space-between}.searchBox{display:inline-flex}.search-btn{height:32px;width:36px;background-color:#8091a5;border:none;border-radius:0 4px 4px 0;display:flex;justify-content:center;align-items:center}.search-input{outline:none!important;border:1px solid #ccc!important;width:190px;height:32px!important;font-size:.75rem;padding:.25rem .5rem;border-top-left-radius:4px;border-bottom-left-radius:4px;border-top-right-radius:0!important;border-bottom-right-radius:0!important;text-transform:uppercase}.search-input:focus{box-shadow:0 0 5px 3px #1877f2!important}.export{display:flex}.exp-options{display:inline-flex;font-size:.75rem;height:2rem!important;width:5rem!important}:host ::ng-deep .exp-options .ng-select{width:100%}.btn-report{border-radius:3px;background-color:#8091a5;color:#fff!important;font-size:14px!important;height:32px!important;height:32px;min-width:110px;margin:0 0 0 20px!important;padding:4px 15px!important}\n"] }]
35
+ }], ctorParameters: function () { return []; }, propDecorators: { metaDataOne: [{
36
+ type: Input
37
+ }], metaDataTwo: [{
38
+ type: Input
39
+ }], showmetaDataOne: [{
40
+ type: Input
41
+ }], showmetaDataTwo: [{
42
+ type: Input
43
+ }], reportName: [{
44
+ type: Input
45
+ }], searchEvent: [{
46
+ type: Output
47
+ }], exportEvent: [{
48
+ type: Output
49
+ }] } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0cy1saWIvc3JjL2xpYi9zaGFyZWQvbWV0YWRhdGEvbWV0YWRhdGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0cy1saWIvc3JjL2xpYi9zaGFyZWQvbWV0YWRhdGEvbWV0YWRhdGEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFPOUUsTUFBTSxPQUFPLGlCQUFpQjtJQVk1QjtRQVhTLGdCQUFXLEdBQXdCLEVBQUUsQ0FBQztRQUN0QyxnQkFBVyxHQUF5QixFQUFFLENBQUM7UUFDeEMsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFdEIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3pDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVuRCxrQkFBYSxHQUFHLENBQUMsRUFBQyxVQUFVLEVBQUMsT0FBTyxFQUFDLElBQUksRUFBQyxPQUFPLEVBQUMsRUFBQyxFQUFDLFVBQVUsRUFBQyxLQUFLLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxFQUFDLEVBQUMsVUFBVSxFQUFDLEtBQUssRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUMvRyx5QkFBb0IsR0FBRyxPQUFPLENBQUM7UUFDL0Isa0JBQWEsR0FBRyxDQUFDLEVBQU8sRUFBRSxFQUFPLEVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUcvQyxDQUFDO0lBRUYsUUFBUTtRQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNuRCxDQUFDOzs4R0E1QlUsaUJBQWlCO2tHQUFqQixpQkFBaUIsK1JDUDlCLGc4REF5Q1U7MkZEbENHLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxjQUFjOzBFQUtmLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRSxlQUFlO3NCQUF0QixLQUFLO2dCQUNFLGVBQWU7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW1ldGFkYXRhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWV0YWRhdGEuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21ldGFkYXRhLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE1ldGFkYXRhQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBtZXRhRGF0YU9uZTpSZWNvcmQ8c3RyaW5nLHN0cmluZz4gPXt9O1xyXG4gIEBJbnB1dCgpIG1ldGFEYXRhVHdvOlJlY29yZDxzdHJpbmcsc3RyaW5nPiA9IHt9O1xyXG4gIEBJbnB1dCgpc2hvd21ldGFEYXRhT25lID0gdHJ1ZTtcclxuICBASW5wdXQoKXNob3dtZXRhRGF0YVR3byA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHJlcG9ydE5hbWU6c3RyaW5nO1xyXG4gIEBPdXRwdXQoKSBzZWFyY2hFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBleHBvcnRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIHNlYXJjaFRleHQ6YW55O1xyXG4gIGV4cG9ydEZvcm1hdHMgPSBbe2Zvcm1hdE5hbWU6XCJFeGNlbFwiLGNvZGU6J2V4Y2VsJ30se2Zvcm1hdE5hbWU6XCJQREZcIixjb2RlOidwZGYnfSx7Zm9ybWF0TmFtZTpcIkNTVlwiLGNvZGU6J2Nzdid9XVxyXG4gIHNlbGVjdGVkRXhwb3J0T3B0aW9uID0gJ2V4Y2VsJztcclxuICBwcmVzZXJ2ZU9yZGVyID0gKF9hOiBhbnksIF9iOiBhbnkpOiBudW1iZXIgPT4gMDtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuXHJcbiAgIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcIk1ldGEgRGF0YVwiKVxyXG4gICAgY29uc29sZS5sb2codGhpcy5zaG93bWV0YURhdGFPbmUpO1xyXG4gICAgY29uc29sZS5sb2codGhpcy5zaG93bWV0YURhdGFUd28pO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2goKXtcclxuICAgIHRoaXMuc2VhcmNoRXZlbnQuZW1pdCh0aGlzLnNlYXJjaFRleHQpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRXhwb3J0KCl7XHJcbiAgICB0aGlzLmV4cG9ydEV2ZW50LmVtaXQodGhpcy5zZWxlY3RlZEV4cG9ydE9wdGlvbik7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cIm15LTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0aXRsZSBtYi0zXCI+XHJcbiAgICAgICAge3tyZXBvcnROYW1lfX1cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1ldGEgbWItMlwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93bWV0YURhdGFPbmVcIiBjbGFzcz1cImRhdGEtaG9sZGVyXCI+XHJcbiAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtZXRhRGF0YU9uZSB8IGtleXZhbHVlOnByZXNlcnZlT3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsYWJsIG1ldGEtdGRcIj57e2l0ZW0ua2V5fX06PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJweC0zIG1ldGEtdGRcIj48c3BhbiBjbGFzcz1cImluZm9cIj57e2l0ZW0udmFsdWV9fTwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd21ldGFEYXRhVHdvXCIgY2xhc3M9XCJkYXRhLWhvbGRlclwiPlxyXG4gICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbWV0YURhdGFUd28gfCBrZXl2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImxhYmwgbWV0YS10ZFwiPnt7aXRlbS5rZXl9fTo8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInB4LTMgbWV0YS10ZFwiPjxzcGFuIGNsYXNzPVwiaW5mb1wiPnt7aXRlbS52YWx1ZX19PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWV4cG9ydFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hCb3hcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCIgbmFtZT1cInNlYXJjaFRleHRcIiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaCgpXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIHNlYXJjaC1idG5cIiAoY2xpY2spPVwib25TZWFyY2goKVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaW1hZ2VzL1NlYXJjaC5zdmdcIiBhbHQ9XCJTZWFyY2hcIiBjbGFzcz1cInNlYXJjaC1pY29uXCIgLz5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleHBvcnRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4cC1vcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctc2VsZWN0IFtpdGVtc109XCJleHBvcnRGb3JtYXRzXCIgYmluZExhYmVsPVwiZm9ybWF0TmFtZVwiIGJpbmRWYWx1ZT1cImNvZGVcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBGb3JtYXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRFeHBvcnRPcHRpb25cIiBbY2xlYXJhYmxlXT1cImZhbHNlXCIgY2xhc3M9XCJleHBvcnQtc2VsZWN0b3JcIiByZXF1aXJlZD5cclxuICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcmVwb3J0XCIgKGNsaWNrKT1cImhhbmRsZUV4cG9ydCgpXCI+RXhwb3J0PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9zZWN0aW9uPiJdfQ==