ngx-sumax-erp-components 1.1.0 → 1.1.2
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/date-time-picker-editable/date-time-picker-editable.component.mjs +3 -3
- package/esm2022/lib/input-number/input-number.component.mjs +12 -4
- package/esm2022/lib/ng-select-simple/ng-select-simple.component.mjs +3 -3
- package/esm2022/lib/sc-ag-grid/cell-editors/container-shared/container-shared.component.mjs +1 -1
- package/fesm2022/ngx-sumax-erp-components.mjs +16 -8
- package/fesm2022/ngx-sumax-erp-components.mjs.map +1 -1
- package/lib/input-number/input-number.component.d.ts +7 -1
- package/package.json +1 -1
|
@@ -1111,7 +1111,7 @@ export class DateTimePickerEditableComponent {
|
|
|
1111
1111
|
I18n,
|
|
1112
1112
|
{ provide: NgbDatepickerI18n, useClass: CustomDatepickerI18n },
|
|
1113
1113
|
{ provide: NgbDateParserFormatter, useClass: CustomDatepickerFormat },
|
|
1114
|
-
], viewQueries: [{ propertyName: "inputDateTime", first: true, predicate: ["inputDateTime"], descendants: true }, { propertyName: "btnOpen", first: true, predicate: ["btnOpen"], descendants: true }, { propertyName: "btnClean", first: true, predicate: ["btnClean"], descendants: true }, { propertyName: "ngbDatepicker", first: true, predicate: ["d2"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\" style=\"overflow: hidden\">\r\n <label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\r\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\r\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\r\n <span *ngIf=\"labelInfo\">\r\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\r\n </span>\r\n </label>\r\n <input\r\n type=\"text\"\r\n class=\"form-control form-control-sm position-absolute\"\r\n container=\"body\"\r\n id=\"fakeInput\"\r\n ngbDatepicker\r\n [formControl]=\"dateControl\"\r\n [autoClose]=\"'outside'\"\r\n [footerTemplate]=\"footerTemplate\"\r\n [minDate]=\"{ year: 1960, month: 1, day: 1 }\"\r\n #d2=\"ngbDatepicker\" />\r\n <div class=\"input-group w-100\">\r\n <input\r\n type=\"text\"\r\n readonly\r\n id=\"inputDateTime\"\r\n #inputDateTime\r\n style=\"flex: 1\"\r\n [class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [disabled]=\"disabled || readonly\"\r\n class=\"form-control form-control-sm\"\r\n (blur)=\"onBlur()\"\r\n (focusout)=\"focusOutInput()\"\r\n (keyup)=\"onKeyUp($event)\"\r\n (dblclick)=\"preventDefault($event)\"\r\n (click)=\"preventDefault($event)\"\r\n (mouseup)=\"onClick($event, inputDateTime)\"\r\n [formControl]=\"dateTimeControl\" />\r\n <div class=\"input-group-append\">\r\n <button\r\n #btnOpen\r\n (keyup.ArrowLeft)=\"goBack()\"\r\n [disabled]=\"disabled || readonly\"\r\n (keyup.ArrowRight)=\"clearable ? btnClean.focus() : goNext()\"\r\n class=\"btn btn-info p-0 rounded-0 use-button\"\r\n (click)=\"d2.toggle(); open(d2)\"\r\n type=\"button\">\r\n <i aria-hidden=\"true\" class=\"fa fa-calendar text-light px-1\"></i>\r\n </button>\r\n <button\r\n #btnClean\r\n class=\"btn btn-danger p-0 rounded-0 limpiar\"\r\n [disabled]=\"disabled || readonly\"\r\n (click)=\"limpiarTodo()\"\r\n (keyup.ArrowLeft)=\"btnOpen.focus()\"\r\n (keyup.ArrowRight)=\"goNext()\"\r\n type=\"button\">\r\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Limpiar'\" matTooltipClass=\"bg-danger\">close</mat-icon> -->\r\n <i aria-hidden=\"true\" class=\"fa fa-times px-1 text-light\"></i>\r\n </button>\r\n </div>\r\n <div class=\"position-absolute container-tooltipmessage\">\r\n <tooltip-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [tooltipMessage]=\"tooltipMessage\"\r\n [submitted]=\"submitted\"></tooltip-message>\r\n </div>\r\n </div>\r\n <error-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [tooltipMessage]=\"tooltipMessage\"\r\n [submitted]=\"submitted\"></error-message>\r\n <ng-template #footerTemplate>\r\n <ngb-timepicker [formControl]=\"hoursControl\" [meridian]=\"format == 12 ? true : false\" (focusout)=\"focusOut($event)\"></ngb-timepicker>\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: ["#fakeInput{position:relative;visibility:hidden;padding:0;height:0}#inputDateTime{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}ngb-timepicker fieldset{width:230px!important}.container-tooltipmessage{width:16px;height:100%;display:flex;align-items:center;z-index:1000;right:68px;top:1px}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"], exportAs: ["ngbTimepicker"] }, { kind: "directive", type: i2.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.tooltipMessageComponent, selector: "tooltip-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i6.errorMessageComponent, selector: "error-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }] }); }
|
|
1114
|
+
], viewQueries: [{ propertyName: "inputDateTime", first: true, predicate: ["inputDateTime"], descendants: true }, { propertyName: "btnOpen", first: true, predicate: ["btnOpen"], descendants: true }, { propertyName: "btnClean", first: true, predicate: ["btnClean"], descendants: true }, { propertyName: "ngbDatepicker", first: true, predicate: ["d2"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\" style=\"overflow: hidden\">\r\n <label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\r\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\r\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\r\n <span *ngIf=\"labelInfo\">\r\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\r\n </span>\r\n </label>\r\n <input\r\n type=\"text\"\r\n class=\"form-control form-control-sm position-absolute\"\r\n container=\"body\"\r\n id=\"fakeInput\"\r\n ngbDatepicker\r\n [formControl]=\"dateControl\"\r\n [autoClose]=\"'outside'\"\r\n [footerTemplate]=\"footerTemplate\"\r\n [minDate]=\"{ year: 1960, month: 1, day: 1 }\"\r\n #d2=\"ngbDatepicker\" />\r\n <div class=\"input-group w-100\">\r\n <input\r\n type=\"text\"\r\n readonly\r\n id=\"inputDateTime\"\r\n #inputDateTime\r\n style=\"flex: 1\"\r\n [class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [disabled]=\"disabled || readonly\"\r\n class=\"form-control form-control-sm\"\r\n (blur)=\"onBlur()\"\r\n (focusout)=\"focusOutInput()\"\r\n (keyup)=\"onKeyUp($event)\"\r\n (dblclick)=\"preventDefault($event)\"\r\n (click)=\"preventDefault($event)\"\r\n (mouseup)=\"onClick($event, inputDateTime)\"\r\n [formControl]=\"dateTimeControl\" />\r\n <div class=\"input-group-append\">\r\n <button\r\n #btnOpen\r\n (keyup.ArrowLeft)=\"goBack()\"\r\n [disabled]=\"disabled || readonly\"\r\n (keyup.ArrowRight)=\"clearable ? btnClean.focus() : goNext()\"\r\n class=\"btn btn-info p-0 rounded-0 use-button\"\r\n (click)=\"d2.toggle(); open(d2)\"\r\n type=\"button\">\r\n <i aria-hidden=\"true\" class=\"fa fa-calendar text-light px-1\"></i>\r\n </button>\r\n <button\r\n #btnClean\r\n [hidden]=\"!clearable\"\r\n class=\"btn btn-danger p-0 rounded-0 limpiar\"\r\n [disabled]=\"disabled || readonly\"\r\n (click)=\"limpiarTodo()\"\r\n (keyup.ArrowLeft)=\"btnOpen.focus()\"\r\n (keyup.ArrowRight)=\"goNext()\"\r\n type=\"button\">\r\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Limpiar'\" matTooltipClass=\"bg-danger\">close</mat-icon> -->\r\n <i aria-hidden=\"true\" class=\"fa fa-times px-1 text-light\"></i>\r\n </button>\r\n </div>\r\n <div class=\"position-absolute container-tooltipmessage\">\r\n <tooltip-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [tooltipMessage]=\"tooltipMessage\"\r\n [submitted]=\"submitted\"></tooltip-message>\r\n </div>\r\n </div>\r\n <error-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [tooltipMessage]=\"tooltipMessage\"\r\n [submitted]=\"submitted\"></error-message>\r\n <ng-template #footerTemplate>\r\n <ngb-timepicker [formControl]=\"hoursControl\" [meridian]=\"format == 12 ? true : false\" (focusout)=\"focusOut($event)\"></ngb-timepicker>\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: ["#fakeInput{position:relative;visibility:hidden;padding:0;height:0}#inputDateTime{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}ngb-timepicker fieldset{width:230px!important}.container-tooltipmessage{width:16px;height:100%;display:flex;align-items:center;z-index:1000;right:68px;top:1px}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"], exportAs: ["ngbTimepicker"] }, { kind: "directive", type: i2.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.tooltipMessageComponent, selector: "tooltip-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i6.errorMessageComponent, selector: "error-message", inputs: ["tooltipMessage", "validatorMessage", "controls", "label", "submitted"] }] }); }
|
|
1115
1115
|
}
|
|
1116
1116
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DateTimePickerEditableComponent, decorators: [{
|
|
1117
1117
|
type: Component,
|
|
@@ -1129,7 +1129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
1129
1129
|
I18n,
|
|
1130
1130
|
{ provide: NgbDatepickerI18n, useClass: CustomDatepickerI18n },
|
|
1131
1131
|
{ provide: NgbDateParserFormatter, useClass: CustomDatepickerFormat },
|
|
1132
|
-
], template: "<div class=\"row\">\r\n <div class=\"col-12\" style=\"overflow: hidden\">\r\n <label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\r\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\r\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\r\n <span *ngIf=\"labelInfo\">\r\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\r\n </span>\r\n </label>\r\n <input\r\n type=\"text\"\r\n class=\"form-control form-control-sm position-absolute\"\r\n container=\"body\"\r\n id=\"fakeInput\"\r\n ngbDatepicker\r\n [formControl]=\"dateControl\"\r\n [autoClose]=\"'outside'\"\r\n [footerTemplate]=\"footerTemplate\"\r\n [minDate]=\"{ year: 1960, month: 1, day: 1 }\"\r\n #d2=\"ngbDatepicker\" />\r\n <div class=\"input-group w-100\">\r\n <input\r\n type=\"text\"\r\n readonly\r\n id=\"inputDateTime\"\r\n #inputDateTime\r\n style=\"flex: 1\"\r\n [class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [disabled]=\"disabled || readonly\"\r\n class=\"form-control form-control-sm\"\r\n (blur)=\"onBlur()\"\r\n (focusout)=\"focusOutInput()\"\r\n (keyup)=\"onKeyUp($event)\"\r\n (dblclick)=\"preventDefault($event)\"\r\n (click)=\"preventDefault($event)\"\r\n (mouseup)=\"onClick($event, inputDateTime)\"\r\n [formControl]=\"dateTimeControl\" />\r\n <div class=\"input-group-append\">\r\n <button\r\n #btnOpen\r\n (keyup.ArrowLeft)=\"goBack()\"\r\n [disabled]=\"disabled || readonly\"\r\n (keyup.ArrowRight)=\"clearable ? btnClean.focus() : goNext()\"\r\n class=\"btn btn-info p-0 rounded-0 use-button\"\r\n (click)=\"d2.toggle(); open(d2)\"\r\n type=\"button\">\r\n <i aria-hidden=\"true\" class=\"fa fa-calendar text-light px-1\"></i>\r\n </button>\r\n <button\r\n #btnClean\r\n class=\"btn btn-danger p-0 rounded-0 limpiar\"\r\n [disabled]=\"disabled || readonly\"\r\n (click)=\"limpiarTodo()\"\r\n (keyup.ArrowLeft)=\"btnOpen.focus()\"\r\n (keyup.ArrowRight)=\"goNext()\"\r\n type=\"button\">\r\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Limpiar'\" matTooltipClass=\"bg-danger\">close</mat-icon> -->\r\n <i aria-hidden=\"true\" class=\"fa fa-times px-1 text-light\"></i>\r\n </button>\r\n </div>\r\n <div class=\"position-absolute container-tooltipmessage\">\r\n <tooltip-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [tooltipMessage]=\"tooltipMessage\"\r\n [submitted]=\"submitted\"></tooltip-message>\r\n </div>\r\n </div>\r\n <error-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [tooltipMessage]=\"tooltipMessage\"\r\n [submitted]=\"submitted\"></error-message>\r\n <ng-template #footerTemplate>\r\n <ngb-timepicker [formControl]=\"hoursControl\" [meridian]=\"format == 12 ? true : false\" (focusout)=\"focusOut($event)\"></ngb-timepicker>\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: ["#fakeInput{position:relative;visibility:hidden;padding:0;height:0}#inputDateTime{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}ngb-timepicker fieldset{width:230px!important}.container-tooltipmessage{width:16px;height:100%;display:flex;align-items:center;z-index:1000;right:68px;top:1px}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}\n"] }]
|
|
1132
|
+
], template: "<div class=\"row\">\r\n <div class=\"col-12\" style=\"overflow: hidden\">\r\n <label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\r\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\r\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\r\n <span *ngIf=\"labelInfo\">\r\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\r\n </span>\r\n </label>\r\n <input\r\n type=\"text\"\r\n class=\"form-control form-control-sm position-absolute\"\r\n container=\"body\"\r\n id=\"fakeInput\"\r\n ngbDatepicker\r\n [formControl]=\"dateControl\"\r\n [autoClose]=\"'outside'\"\r\n [footerTemplate]=\"footerTemplate\"\r\n [minDate]=\"{ year: 1960, month: 1, day: 1 }\"\r\n #d2=\"ngbDatepicker\" />\r\n <div class=\"input-group w-100\">\r\n <input\r\n type=\"text\"\r\n readonly\r\n id=\"inputDateTime\"\r\n #inputDateTime\r\n style=\"flex: 1\"\r\n [class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\r\n [disabled]=\"disabled || readonly\"\r\n class=\"form-control form-control-sm\"\r\n (blur)=\"onBlur()\"\r\n (focusout)=\"focusOutInput()\"\r\n (keyup)=\"onKeyUp($event)\"\r\n (dblclick)=\"preventDefault($event)\"\r\n (click)=\"preventDefault($event)\"\r\n (mouseup)=\"onClick($event, inputDateTime)\"\r\n [formControl]=\"dateTimeControl\" />\r\n <div class=\"input-group-append\">\r\n <button\r\n #btnOpen\r\n (keyup.ArrowLeft)=\"goBack()\"\r\n [disabled]=\"disabled || readonly\"\r\n (keyup.ArrowRight)=\"clearable ? btnClean.focus() : goNext()\"\r\n class=\"btn btn-info p-0 rounded-0 use-button\"\r\n (click)=\"d2.toggle(); open(d2)\"\r\n type=\"button\">\r\n <i aria-hidden=\"true\" class=\"fa fa-calendar text-light px-1\"></i>\r\n </button>\r\n <button\r\n #btnClean\r\n [hidden]=\"!clearable\"\r\n class=\"btn btn-danger p-0 rounded-0 limpiar\"\r\n [disabled]=\"disabled || readonly\"\r\n (click)=\"limpiarTodo()\"\r\n (keyup.ArrowLeft)=\"btnOpen.focus()\"\r\n (keyup.ArrowRight)=\"goNext()\"\r\n type=\"button\">\r\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Limpiar'\" matTooltipClass=\"bg-danger\">close</mat-icon> -->\r\n <i aria-hidden=\"true\" class=\"fa fa-times px-1 text-light\"></i>\r\n </button>\r\n </div>\r\n <div class=\"position-absolute container-tooltipmessage\">\r\n <tooltip-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [tooltipMessage]=\"tooltipMessage\"\r\n [submitted]=\"submitted\"></tooltip-message>\r\n </div>\r\n </div>\r\n <error-message\r\n [label]=\"label\"\r\n [controls]=\"controls\"\r\n [validatorMessage]=\"validatorMessage\"\r\n [tooltipMessage]=\"tooltipMessage\"\r\n [submitted]=\"submitted\"></error-message>\r\n <ng-template #footerTemplate>\r\n <ngb-timepicker [formControl]=\"hoursControl\" [meridian]=\"format == 12 ? true : false\" (focusout)=\"focusOut($event)\"></ngb-timepicker>\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: ["#fakeInput{position:relative;visibility:hidden;padding:0;height:0}#inputDateTime{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.form-control:focus,.form-control:active{border-color:#007eff;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #007eff1a!important}ngb-timepicker fieldset{width:230px!important}.container-tooltipmessage{width:16px;height:100%;display:flex;align-items:center;z-index:1000;right:68px;top:1px}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}.was-validated .form-control:invalid,.form-control.is-invalid{background-image:none;box-shadow:inset 0 1px 1px #00000013,0 0 0 3px #fde6e8!important}\n"] }]
|
|
1133
1133
|
}], ctorParameters: () => [], propDecorators: { inputDateTime: [{
|
|
1134
1134
|
type: ViewChild,
|
|
1135
1135
|
args: ["inputDateTime"]
|
|
@@ -1187,4 +1187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
1187
1187
|
}], onBack: [{
|
|
1188
1188
|
type: Output
|
|
1189
1189
|
}] } });
|
|
1190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7QUFDeEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7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Q0osT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUNHLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDSixhQUFhO3NCQUE3QixTQUFTO3VCQUFDLElBQUk7Z0JBT04sS0FBSztzQkFBYixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csUUFBUTtzQkFBaEIsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFPRyxjQUFjO3NCQUF0QixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csTUFBTTtzQkFBZCxLQUFLO2dCQU9HLElBQUk7c0JBQVosS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFPRyxJQUFJO3NCQUFaLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFPRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBmb3J3YXJkUmVmLFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICB2aWV3Q2hpbGQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgTkdfVkFMSURBVE9SUyxcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTmdiQ2FsZW5kYXIsIE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIE5nYkRhdGVwaWNrZXJJMThuLCBOZ2JJbnB1dERhdGVwaWNrZXIgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgQ3VzdG9tRGF0ZXBpY2tlckZvcm1hdCB9IGZyb20gXCIuLi9kYXRlLXBpY2tlci9DdXN0b21EYXRlUGlja2VyRm9ybWF0XCI7XHJcbmltcG9ydCB7IEN1c3RvbURhdGVwaWNrZXJJMThuLCBJMThuIH0gZnJvbSBcIi4uL2RhdGUtcGlja2VyL0N1c3RvbURhdGVQaWNrZXJJMThuXCI7XHJcbmltcG9ydCB7IERhdGVUaW1lTW9kZWwgfSBmcm9tIFwiLi4vdXRpbHMvRGF0ZVRpbWVNb2RlbFwiO1xyXG5pbXBvcnQgeyBmb3JtYXRIb3VyIH0gZnJvbSBcIi4uL3V0aWxzL0RhdGVUaW1lUGlja2VyRWRpdGFibGVcIjtcclxuaW1wb3J0IHsgRGF0ZVV0aWwgfSBmcm9tIFwiLi4vdXRpbHMvRGF0ZVV0aWxcIjtcclxuaW1wb3J0IHsgRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UgfSBmcm9tIFwiLi9kYXRlLXRpbWUtcGlja2VyLWVkaXRhYmxlLnNlcnZpY2VcIjtcclxuXHJcbmNvbnN0IE1BU0tfMTJfSE9VUlMgPSBcImRkL21tL3l5eXkgLS06LS0gLS1cIjtcclxuY29uc3QgTUFTS18yNF9IT1VSUyA9IFwiZGQvbW0veXl5eSAtLTotLVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kYXRlLXRpbWUtcGlja2VyLWVkaXRhYmxlLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBEYXRlVGltZVBpY2tlckVkaXRhYmxlQ29tcG9uZW50LFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIEkxOG4sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVwaWNrZXJJMThuLCB1c2VDbGFzczogQ3VzdG9tRGF0ZXBpY2tlckkxOG4gfSxcclxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgdXNlQ2xhc3M6IEN1c3RvbURhdGVwaWNrZXJGb3JtYXQgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcyB7XHJcbiAgcHJpdmF0ZSBfZGF0ZVBpcGUgPSBpbmplY3QoRGF0ZVBpcGUpO1xyXG4gIHByaXZhdGUgX2NhbGVuZGFyID0gaW5qZWN0KE5nYkNhbGVuZGFyKTtcclxuICBwcml2YXRlIF9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZSA9IGluamVjdChEYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfY2RyZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJpbnB1dERhdGVUaW1lXCIpIGlucHV0RGF0ZVRpbWU6IGFueTtcclxuICBAVmlld0NoaWxkKFwiYnRuT3BlblwiKSBidG5PcGVuITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiYnRuQ2xlYW5cIikgYnRuQ2xlYW4hOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJkMlwiKSBuZ2JEYXRlcGlja2VyITogTmdiSW5wdXREYXRlcGlja2VyO1xyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gc3VwZXJpb3JcclxuICAgKiBAZGVmYXVsdCBcIlwiXHJcbiAgICogQHR5cGUgc3RyaW5nXHJcbiAgICovXHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9IFwiXCI7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xhIGxhIHZpc3VhbGl6YWNpw7NuIGRlbCB0ZXh0byBzdXBlcmlvclxyXG4gICAqIEBkZWZhdWx0IHRydWVcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2hvd0xhYmVsOiBib29sZWFuID0gdHJ1ZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gRXN0YWJsZWNlIGVsIGNvbnRyb2wgY29tbyBzb2xvIGxlY3R1cmFcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBJbmRpY2Egc2kgZWwgY2FtcG8gZXMgb2JsaWdhdG9yaW9cclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBNdWVzdHJhIG1lbnNhamVzIGRlIHZhbGlkYWNpw7NuXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgdmFsaWRhdG9yTWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBNdWVzdHJhIG1lbnNhamVzIGRlIGF5dWRhIGNvbW8gdG9vbHRpcHNcclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRvb2x0aXBNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gSW5kaWNhIHNpIGVsIGZvcm11bGFyaW8gaGEgc2lkbyBlbnZpYWRvIHBhcmEgbW9zdHJhciB2YWxpZGFjaW9uZXNcclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHN1Ym1pdHRlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEZvcm1hdG8gZGUgaG9yYTogMTIgbyAyNCBob3Jhc1xyXG4gICAqIEBkZWZhdWx0IDI0XHJcbiAgICogQHR5cGUgZm9ybWF0SG91clxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGZvcm1hdDogZm9ybWF0SG91ciA9IDI0O1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2lhIGFsIHNpZ3VpZW50ZSBjb250cm9sIHBhcmEgbmF2ZWdhY2nDs25cclxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcclxuICAgKiBAdHlwZSBhbnlcclxuICAgKi9cclxuICBASW5wdXQoKSBuZXh0OiBhbnk7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jaWEgYWwgY29udHJvbCBhbHRlcm5hdGl2byBjdWFuZG8gZWwgc2lndWllbnRlIGVzdMOhIGRlc2hhYmlsaXRhZG9cclxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcclxuICAgKiBAdHlwZSBhbnlcclxuICAgKi9cclxuICBASW5wdXQoKSBuZXh0SXNEaXNhYmxlOiBhbnk7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEhhYmlsaXRhIGluZm9ybWFjacOzbiBhZGljaW9uYWwgcGFyYSBsYSBldGlxdWV0YVxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBUZXh0byBpbmZvcm1hdGl2byBhZGljaW9uYWwgcGFyYSBsYSBldGlxdWV0YVxyXG4gICAqIEBkZWZhdWx0IFwiXCJcclxuICAgKiBAdHlwZSBzdHJpbmdcclxuICAgKi9cclxuICBASW5wdXQoKSB0ZXh0TGFiZWxJbmZvOiBzdHJpbmcgPSBcIlwiO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2lhIGFsIGNvbnRyb2wgYW50ZXJpb3IgcGFyYSBuYXZlZ2FjacOzblxyXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxyXG4gICAqIEB0eXBlIGFueVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGJhY2s6IGFueTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNpYSBhbCBjb250cm9sIGFsdGVybmF0aXZvIGN1YW5kbyBlbCBhbnRlcmlvciBlc3TDoSBkZXNoYWJpbGl0YWRvXHJcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXHJcbiAgICogQHR5cGUgYW55XHJcbiAgICovXHJcbiAgQElucHV0KCkgYmFja0lzRGlzYWJsZTogYW55O1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBBYnJlIGVsIHNlbGVjdG9yIGFsIHJlY2liaXIgZWwgZm9jb1xyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG9wZW5XaGVuRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gTmF2ZWdhIGFsIHNpZ3VpZW50ZSBjb250cm9sIGFsIHNlbGVjY2lvbmFyIHVuYSBmZWNoYVxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGdvTmV4dFdoZW5TZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gTXVlc3RyYSBlbCBib3TDs24gZGUgZWxpbWluYXJcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBjbGVhcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBBdXRvY29tcGxldGEgY29uIGxhIGhvcmEvbWludXRvIGFjdHVhbCAodHJ1ZSkgbyBjb24gMDA6MDAgKGZhbHNlKVxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGF1dG9Db21wbGV0ZUhvdXJzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEhhYmlsaXRhIGVsIGF1dG9jb21wbGV0YWRvXHJcbiAgICogQGRlZmF1bHQgdHJ1ZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBhdXRvQ29tcGxldGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBEZXNoYWJpbGl0YSBlbCBjb250cm9sXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgb25OZXh0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25CYWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcbiAgb25Ub3VjaCA9ICgpID0+IHsgfTtcclxuICBvblZhbGlkYXRpb25DaGFuZ2UgPSAoKSA9PiB7IH07XHJcblxyXG4gIGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQ7XHJcbiAgY29udGFkb3IgPSAwO1xyXG4gIHBvc2l0aW9uID0gMDtcclxuICBkYXRlVGltZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woXCJkZC9tbS95eXl5IC0tOi0tIC0tXCIpO1xyXG4gIGhvdXJzQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woe1xyXG4gICAgaG91cjogbnVsbCxcclxuICAgIG1pbnV0ZTogbnVsbCxcclxuICB9KTtcclxuICBkYXRlQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woe1xyXG4gICAgeWVhcjogbnVsbCxcclxuICAgIG1vbnRoOiBudWxsLFxyXG4gICAgZGF5OiBudWxsLFxyXG4gIH0pO1xyXG4gIHRvZGF5ID0gdGhpcy5fY2FsZW5kYXIuZ2V0VG9kYXkoKTtcclxuXHJcbiAgZ2V0IHN0cmluZ0Zvcm1hdCAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1hdCA9PT0gMTIgPyBcImRkL01NL3l5eXkgaGg6bW0gYVwiIDogXCJkZC9NTS95eXl5IEhIOm1tXCI7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc2hvd0xhYmVsID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0U2hvd0xhYmVsKCk7XHJcbiAgICB0aGlzLm9wZW5XaGVuRm9jdXMgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRPcGVuV2hlbkZvY3VzKCk7XHJcbiAgICB0aGlzLmdvTmV4dFdoZW5TZWxlY3QgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRHb05leHRXaGVuU2VsZWN0KCk7XHJcbiAgICB0aGlzLnZhbGlkYXRvck1lc3NhZ2UgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRWYWxpZGF0b3JNZXNzYWdlKCk7XHJcbiAgICB0aGlzLnRvb2x0aXBNZXNzYWdlID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0VG9vbHRpcE1lc3NhZ2UoKTtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0U3VibWl0dGVkKCk7XHJcbiAgICB0aGlzLmZvcm1hdCA9IHRoaXMuX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlLmdldEZvcm1hdCgpO1xyXG4gICAgdGhpcy5jbGVhcmFibGUgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRDbGVhcmFibGUoKTtcclxuICAgIHRoaXMuYXV0b0NvbXBsZXRlSG91cnMgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRBdXRvQ29tcGxldGVIb3VycygpO1xyXG4gICAgdGhpcy5hdXRvQ29tcGxldGUgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRBdXRvQ29tcGxldGUoKTtcclxuICB9XHJcblxyXG5cclxuICB2YWxpZGF0ZSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IGFueSB7XHJcbiAgICB0aGlzLmNvbnRyb2xzID0gY29udHJvbDtcclxuICAgIHRoaXMuX2NkcmYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlPyhmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblZhbGlkYXRpb25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0ICgpOiB2b2lkIHtcclxuICAgIHRoaXMuaG91cnNDaGFuZ2UoKTtcclxuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kYXRlQ2hhbmdlKCk7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgaWYgKCF0aGlzLmNsZWFyYWJsZSkgdGhpcy5idG5DbGVhbiEubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcclxuICAgIH0sIDEwMCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKE1BU0tfMTJfSE9VUlMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoTUFTS18yNF9IT1VSUyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyAoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbXCJzdWJtaXR0ZWRcIl0pIHtcclxuICAgICAgaWYgKHRoaXMuY29udHJvbHMgIT09IHVuZGVmaW5lZCAmJiBjaGFuZ2VzW1wic3VibWl0dGVkXCJdLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbHMubWFya0FzRGlydHkoKTtcclxuICAgICAgICB0aGlzLmNvbnRyb2xzLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9jdXMgKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuXHJcbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcblxyXG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICB9LCAxMDApO1xyXG5cclxuICAgIGlmICghdGhpcy5yZWFkb25seSAmJiB0aGlzLm9wZW5XaGVuRm9jdXMpIHtcclxuICAgICAgdGhpcy5uZ2JEYXRlcGlja2VyPy5vcGVuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlIChvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKG9iaiAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoRGF0ZVRpbWVNb2RlbC5mcm9tTG9jYWxTdHJpbmcob2JqKSk7XHJcbiAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICBob3VyOiB0aGlzLmRhdGVDb250cm9sLnZhbHVlLmhvdXIsXHJcbiAgICAgICAgbWludXRlOiB0aGlzLmRhdGVDb250cm9sLnZhbHVlLm1pbnV0ZSxcclxuICAgICAgICBzZWNvbmQ6IHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUuc2Vjb25kLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKG9iaiwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZSAoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZCAoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHRoaXMuZGF0ZVRpbWVDb250cm9sLmRpc2FibGUoKTtcclxuICAgIGVsc2UgdGhpcy5kYXRlVGltZUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgfVxyXG5cclxuICBob3Vyc0NoYW5nZSAoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXHJcbiAgICAgIHRoaXMuaG91cnNDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldIFswLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhKSB8fFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAxMCkpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSEsXHJcbiAgICAgICAgICAgICAgLi4ucmVzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oaW5wdXQsIHRoaXMuc3RyaW5nRm9ybWF0KSk7XHJcbiAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICBlbHNlIGlmICh0aGlzLmZvcm1hdCA9PSAyNClcclxuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0gWzAtMV1bMC05XTpbMC02XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlISkgfHxcclxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMTApKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgLi4ucmVzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShpbnB1dCwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIC8qIGNvbnNvbGUuZXJyb3IoZXJyb3IpICovXHJcbiAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkVtaXQgKGVtaXRWYWx1ZTogYW55ID0gbnVsbCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgIGVtaXRWYWx1ZSA9IHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZS50b1N0cmluZygpLCBcInl5eXktTU0tZGRUSEg6bW1cIik7XHJcbiAgICB9IGNhdGNoIChlKSB7IH1cclxuICAgIHRoaXMub25DaGFuZ2UoZW1pdFZhbHVlKTtcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUNoYW5nZSAoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0gWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEpIHx8XHJcbiAgICAgICAgICAvWzAtMV1bMC05XTpbMC02XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDE2KSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICAuLi5yZXMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShpbnB1dCwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICBlbHNlIGlmICh0aGlzLmZvcm1hdCA9PSAyNClcclxuICAgICAgdGhpcy5kYXRlQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAvWzAtM11bMC05XVxcL1swLTFdWzAtOV1cXC9bMC05XVswLTldWzAtOV1bMC05XSBbMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlISkgfHxcclxuICAgICAgICAgIC9bMC0xXVswLTldOlswLTZdWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTYpKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIC4uLnJlcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgaW5wdXQ6IGFueSA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlQ29udHJvbC52YWx1ZSwgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUpKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGlucHV0LCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQmx1ciAoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNPdXRJbnB1dCAoKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLmF1dG9Db21wbGV0ZSl7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgICBpZiAoKHZhbHVlICE9IE1BU0tfMTJfSE9VUlMgJiYgdGhpcy5mb3JtYXQgPT0gMTIpIHx8ICh2YWx1ZSAhPSBNQVNLXzI0X0hPVVJTICYmIHRoaXMuZm9ybWF0ID09IDI0KSkge1xyXG4gICAgICAgIGNvbnN0IGRpYSA9IHZhbHVlPy5zdWJzdHJpbmcoMCwgMik7XHJcbiAgICAgICAgY29uc3QgbWVzID0gdmFsdWU/LnN1YnN0cmluZygzLCA1KTtcclxuICAgICAgICBjb25zdCBhbmlvID0gdmFsdWU/LnN1YnN0cmluZyg2LCAxMCk7XHJcbiAgICAgICAgY29uc3QgaG9yYSA9IHZhbHVlPy5zdWJzdHJpbmcoMTEsIDEzKTtcclxuICAgICAgICBjb25zdCBtaW51dG9zID0gdmFsdWU/LnN1YnN0cmluZygxNCwgMTYpO1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBpc05hTihOdW1iZXIoZGlhKSkgfHxcclxuICAgICAgICAgIGRpYSA9PSBcIjAwXCIgfHxcclxuICAgICAgICAgIGlzTmFOKE51bWJlcihtZXMpKSB8fFxyXG4gICAgICAgICAgbWVzID09IFwiMDBcIiB8fFxyXG4gICAgICAgICAgaXNOYU4oTnVtYmVyKGFuaW8pKSB8fFxyXG4gICAgICAgICAgYW5pbyA9PSBcIjAwMDBcIiB8fFxyXG4gICAgICAgICAgaXNOYU4oTnVtYmVyKGhvcmEpKSB8fFxyXG4gICAgICAgICAgaXNOYU4oTnVtYmVyKG1pbnV0b3MpKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHllYXI6IGlzTmFOKE51bWJlcihhbmlvKSkgfHwgYW5pbyA9PSBcIjAwMDBcIiA/IHRoaXMudG9kYXkueWVhciA6IE51bWJlcihhbmlvKSxcclxuICAgICAgICAgICAgICBtb250aDogaXNOYU4oTnVtYmVyKG1lcykpIHx8IG1lcyA9PSBcIjAwXCIgPyB0aGlzLnRvZGF5Lm1vbnRoIDogTnVtYmVyKG1lcyksXHJcbiAgICAgICAgICAgICAgZGF5OiBpc05hTihOdW1iZXIoZGlhKSkgfHwgZGlhID09IFwiMDBcIiA/IHRoaXMudG9kYXkuZGF5IDogTnVtYmVyKGRpYSksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgbGV0IGhvdXIgPSB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5ob3VyO1xyXG4gICAgICAgICAgaWYgKGlzTmFOKE51bWJlcihob3JhKSkpIGhvdXIgPSB0aGlzLmF1dG9Db21wbGV0ZUhvdXJzID8gRGF0ZVV0aWwuZ2V0SG91cnMoRGF0ZVV0aWwubm93KFwiSVNPREFURVRJTUVfTk9fVElNRVpPTkVcIikpIDogMDtcclxuXHJcbiAgICAgICAgICBsZXQgbWludXRlID0gdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlO1xyXG4gICAgICAgICAgaWYgKGlzTmFOKE51bWJlcihtaW51dG9zKSkpIG1pbnV0ZSA9IHRoaXMuYXV0b0NvbXBsZXRlSG91cnMgPyBEYXRlVXRpbC5nZXRNaW51dGVzKERhdGVVdGlsLm5vdyhcIklTT0RBVEVUSU1FX05PX1RJTUVaT05FXCIpKSA6IDA7XHJcblxyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBob3VyLFxyXG4gICAgICAgICAgICAgIG1pbnV0ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBpbnB1dDogYW55ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGlucHV0LCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25LZXlVcCAoZTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGUudGFyZ2V0O1xyXG5cclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcblxyXG4gICAgaWYgKCFpc05hTihOdW1iZXIoZS5rZXkpKSAmJiBlLmtleS50cmltKCkgIT0gXCJcIikge1xyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09IERJQSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBkaWFBY3R1YWw6IHN0cmluZyA9IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAyKTtcclxuXHJcbiAgICAgICAgaWYgKGRpYUFjdHVhbCA9PSBcImRkXCIpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygyKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGRheTogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoZS5rZXkgPiAzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIoZGlhQWN0dWFsKSA8PSAzICYmIE51bWJlcihkaWFBY3R1YWwpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyBOdW1iZXIoTnVtYmVyKGRpYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gMzEgPyAzMSA6IE51bWJlcihkaWFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpXHJcbiAgICAgICAgICAgIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBkYXk6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDIpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygyKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGRheTogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoTnVtYmVyKGUua2V5LnBhZFN0YXJ0KDIsIDApKSA+IDMgfHwgdGhpcy5jb250YWRvciA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAyKTtcclxuICAgICAgfVxyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09IE1FUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDUpIHtcclxuICAgICAgICBjb25zdCB2YWxvckFjdHVhbDogc3RyaW5nID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhO1xyXG4gICAgICAgIGNvbnN0IG1lc0FjdHVhbDogc3RyaW5nID0gdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDMsIDUpO1xyXG5cclxuICAgICAgICBpZiAobWVzQWN0dWFsID09IFwibW1cIikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMykgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNSkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtb250aDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMywgNSkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoZS5rZXkgPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKG1lc0FjdHVhbCkgPD0gMSAmJiBOdW1iZXIobWVzQWN0dWFsKSA+IDAgJiYgdGhpcy5jb250YWRvciA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBOdW1iZXIoTnVtYmVyKG1lc0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gMTIgPyAxMiA6IE51bWJlcihtZXNBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpXHJcbiAgICAgICAgICAgIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNSkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtb250aDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMywgNSkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDUpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbW9udGg6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDMsIDUpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKE51bWJlcihlLmtleS5wYWRTdGFydCgyLCAwKSkgPiAxIHx8IHRoaXMuY29udGFkb3IgPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gQcORTyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDYgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEwKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBhbmlvQWN0dWFsOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNiwgMTApO1xyXG4gICAgICAgIGlmIChhbmlvQWN0dWFsID09IFwieXl5eVwiKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgZS5rZXkucGFkU3RhcnQoNCwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoZS5rZXkgPiAyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBEYXRlVXRpbC5nZXRZZWFyKERhdGVVdGlsLm5vdygpKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihhbmlvQWN0dWFsKSA8PSAyOTk5ICYmIE51bWJlcihhbmlvQWN0dWFsKSA+IDApIHtcclxuICAgICAgICAgIGxldCBudWV2b1ZhbG9yO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKE51bWJlcihhbmlvQWN0dWFsKSA+PSAxMDAwKSB7XHJcbiAgICAgICAgICAgIG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBOdW1iZXIoZS5rZXkpLnRvU3RyaW5nKCkucGFkU3RhcnQoNCwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTApIH1gO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgNikgfSR7IChOdW1iZXIoYW5pb0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpLnBhZFN0YXJ0KFxyXG4gICAgICAgICAgICAgIDQsXHJcbiAgICAgICAgICAgICAgXCIwXCJcclxuICAgICAgICAgICAgKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBOdW1iZXIoTnVtYmVyKGFuaW9BY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDEwMDAgJiZcclxuICAgICAgICAgICAgICBOdW1iZXIoTnVtYmVyKGFuaW9BY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA8IDMwMDBcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIoTnVtYmVyKGFuaW9BY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDI5OTkpIHtcclxuICAgICAgICAgICAgICBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgRGF0ZVV0aWwuZ2V0WWVhcihEYXRlVXRpbC5ub3coKSkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBlLmtleS5wYWRTdGFydCg0LCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIHllYXI6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDYsIDEwKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICB9XHJcbiAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gSE9SQSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgICAgZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBob3JhQWN0dWFsOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTEsIDEzKTtcclxuXHJcbiAgICAgICAgaWYgKGhvcmFBY3R1YWwgPT0gXCItLVwiKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAvLz09PT09PT09PT09IEZPUk1BVE8gMTIgSE9SQVM9PT09PT09PT09PVxyXG4gICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKVxyXG4gICAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgaG91cjogL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXHJcbiAgICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpLFxyXG4gICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiLS1cIiA/IDAgOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgLy89PT09PT09PT09PSBGT1JNQVRPIDI0IEhPUkFTPT09PT09PT09PT1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIGhvdXI6IC9bMC0xXVswLTldOlswLTZdWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXHJcbiAgICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpLFxyXG4gICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiMDBcIiA/IDAgOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKGUua2V5ID4gMSAmJiB0aGlzLmZvcm1hdCA9PSAxMikge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChlLmtleSA+IDIgJiYgdGhpcy5mb3JtYXQgPT0gMjQpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKGhvcmFBY3R1YWwpIDw9IDEgJiYgTnVtYmVyKGhvcmFBY3R1YWwpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCAmJiB0aGlzLmZvcm1hdCA9PSAxMikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBOdW1iZXIoTnVtYmVyKGhvcmFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDEyID8gMTIgOiBOdW1iZXIoaG9yYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSlcclxuICAgICAgICAgICAgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMykgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGhvdXI6IC9bMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSlcclxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpLFxyXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIjAwXCIgPyAwIDogdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKGhvcmFBY3R1YWwpIDw9IDIgJiYgTnVtYmVyKGhvcmFBY3R1YWwpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCAmJiB0aGlzLmZvcm1hdCA9PSAyNCkge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBOdW1iZXIoTnVtYmVyKGhvcmFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDI0ID8gMjQgOiBOdW1iZXIoaG9yYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSlcclxuICAgICAgICAgICAgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMykgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIGxldCBob3VyO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaG91ciA9IC9bMC0xXVswLTldOlswLTZdWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKVxyXG4gICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDEzKSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBob3VyID0gTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDEzKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBob3VyLFxyXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIjAwXCIgPyAwIDogdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICBjb25zdCByZWdleCA9IHRoaXMuZm9ybWF0ID09IDEyID8gL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vIDogL1swLTFdWzAtOV06WzAtNl1bMC05XS87XHJcblxyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgaG91cjogcmVnZXgudGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXHJcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTMpKSxcclxuICAgICAgICAgICAgbWludXRlOlxyXG4gICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIjAwXCIgfHwgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiLS1cIlxyXG4gICAgICAgICAgICAgICAgPyAwXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKChOdW1iZXIoZS5rZXkucGFkU3RhcnQoMiwgMCkpID4gMSB8fCB0aGlzLmNvbnRhZG9yID4gMSkgJiYgdGhpcy5mb3JtYXQgPT0gMTIpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoKE51bWJlcihlLmtleS5wYWRTdGFydCgyLCAwKSkgPiAyIHx8IHRoaXMuY29udGFkb3IgPiAxKSAmJiB0aGlzLmZvcm1hdCA9PSAyNCkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgfVxyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT0gTUlOVVRPUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE0ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxNikge1xyXG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XHJcbiAgICAgICAgY29uc3QgbWludXRvc0FjdHVhbGVzOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTQsIDE2KTtcclxuICAgICAgICBpZiAobWludXRvc0FjdHVhbGVzID09IFwiLS1cIikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTQpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE2KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbWludXRlOiAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwibW1cIikpXHJcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKGUua2V5ID4gNSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgICAgIGVsc2UgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKG1pbnV0b3NBY3R1YWxlcykgPD0gNSAmJiBOdW1iZXIobWludXRvc0FjdHVhbGVzKSA+IDAgJiYgdGhpcy5jb250YWRvciA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDE0KSB9JHsgTnVtYmVyKE51bWJlcihtaW51dG9zQWN0dWFsZXMpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDU5ID8gNTkgOiBOdW1iZXIobWludXRvc0FjdHVhbGVzKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KVxyXG4gICAgICAgICAgICB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE2KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgbGV0IG1pbnV0ZTtcclxuICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gdGhpcy5mb3JtYXQgPT0gMTIgPyAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8gOiAvWzAtMV1bMC05XTpbMC02XVswLTldLztcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIG1pbnV0ZSA9IHJlZ2V4LnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIm1tXCIpKVxyXG4gICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBtaW51dGUgPSBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIG1pbnV0ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICAgIGVsc2UgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxNCkgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTYpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtaW51dGU6IC9bMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJtbVwiKSlcclxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoTnVtYmVyKGUua2V5LnBhZFN0YXJ0KDIsIDApKSA+IDUgfHwgdGhpcy5jb250YWRvciA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgICAgICBlbHNlIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PSBFVkVOVE9TIFRFQ0xBRE8gPT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGlmIChlLmtleSA9PSBcIkFycm93UmlnaHRcIikge1xyXG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gNSkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTYpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZm9ybWF0ID09IDI0KSB0aGlzLmJ0bk9wZW4/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTcgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE5KSB7XHJcbiAgICAgICAgICB0aGlzLmJ0bk9wZW4/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PSBcIkFycm93TGVmdFwiKSB7XHJcbiAgICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDAgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDIpIHtcclxuICAgICAgICAgIHRoaXMuZ29CYWNrKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDUpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDExICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMykge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTYpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmtleS50b0xvd2VyQ2FzZSgpID09IFwiYVwiKSB7XHJcbiAgICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsb3JBY3R1YWwgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwhLnN1YnN0cmluZygwLCAxNykgfUFNYDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgaG91cjogTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmtleS50b0xvd2VyQ2FzZSgpID09IFwicFwiKSB7XHJcbiAgICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsb3JBY3R1YWwgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwhLnN1YnN0cmluZygwLCAxNykgfVBNYDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgaG91cjogTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmNvZGUgPT0gXCJTcGFjZVwiICYmIHRoaXMuYXV0b0NvbXBsZXRlKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBkaWFBY3R1YWw6IHN0cmluZyA9IHRoaXMudG9kYXkuZGF5LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY29uc3QgbWVzQWN0dWFsOiBzdHJpbmcgPSB0aGlzLnRvZGF5Lm1vbnRoLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY29uc3QgYW5pb0FjdHVhbDogc3RyaW5nID0gdGhpcy50b2RheS55ZWFyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY29uc3QgaG9yYUFjdHVhbDogc3RyaW5nID0gRGF0ZVV0aWwudG9TdHJGb3JtYXQoRGF0ZVV0aWwubm93KFwiSVNPREFURVRJTUVfTk9fVElNRVpPTkVcIiksIHRoaXMuZm9ybWF0ID09IDI0ID8gXCJNQVNLXzI0X0hPVVJTXCIgOiBcIk1BU0tfMTJfSE9VUlNcIik7XHJcbiAgICAgICAgY29uc3QgdDogc3RyaW5nID0gRGF0ZVV0aWwudG9TdHJGb3JtYXQoRGF0ZVV0aWwubm93KFwiSVNPREFURVRJTUVfTk9fVElNRVpPTkVcIiksIFwiTUlEREFZX0lORElDQVRPUlwiKTtcclxuICAgICAgICBjb25zdCBtaW51dG9zQWN0dWFsZXM6IHN0cmluZyA9IERhdGVVdGlsLmdldE1pbnV0ZXMoRGF0ZVV0aWwubm93KFwiSVNPREFURVRJTUVfTk9fVElNRVpPTkVcIikpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgXCIwXCIpO1xyXG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IGRpYUFjdHVhbC5wYWRTdGFydCgyLCBcIjBcIikgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygyKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgZGF5OiB0aGlzLnRvZGF5LmRheSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDUpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBtZXNBY3R1YWwucGFkU3RhcnQoMiwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNSkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIG1vbnRoOiB0aGlzLnRvZGF5Lm1vbnRoLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDYgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEwKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgYW5pb0FjdHVhbC5wYWRTdGFydCg0LCBcIjBcIikgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIHllYXI6IHRoaXMudG9kYXkueWVhcixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XHJcbiAgICAgICAgICBsZXQgbnVldm9WYWxvcjtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAyNCkgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBob3JhQWN0dWFsIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXHJcbiAgICAgICAgICAgIG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDExKSB9JHsgaG9yYUFjdHVhbCB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEzLCAxNykgfSR7IHQudG9VcHBlckNhc2UoKSB9YDtcclxuXHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yISk7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSAhPSBudWxsID8gdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlIDogMCxcclxuICAgICAgICAgICAgaG91cjogdGhpcy5mb3JtYXQgPT0gMTIgPyBOdW1iZXIoaG9yYUFjdHVhbCkgOiBOdW1iZXIoaG9yYUFjdHVhbCkgKyAxMixcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE0ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxNikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTQpIH0keyBtaW51dG9zQWN0dWFsZXMucGFkU3RhcnQoMiwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTYpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtaW51dGU6IE51bWJlcihtaW51dG9zQWN0dWFsZXMpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgICBlbHNlIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT0gXCJFbnRlclwiIHx8IGUua2V5ID09IFwiQXJyb3dEb3duXCIpIHtcclxuICAgICAgICB0aGlzLmdvTmV4dCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09IFwiQXJyb3dVcFwiKSB7XHJcbiAgICAgICAgdGhpcy5nb0JhY2soKTtcclxuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PSBcIkRlbGV0ZVwiKSB7XHJcbiAgICAgICAgdGhpcy5saW1waWFyVG9kbygpO1xyXG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09IFwiQmFja3NwYWNlXCIpIHtcclxuICAgICAgICB0aGlzLmxpbXBpYXIoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29OZXh0ICgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm5leHQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh0aGlzLm5leHQuZGlzYWJsZWQgfHwgdGhpcy5uZXh0LnJlYWRvbmx5KSB7XHJcbiAgICAgICAgaWYgKHRoaXMubmV4dElzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMubmV4dElzRGlzYWJsZS5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5leHQuZm9jdXMoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMubmV4dElzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLm5leHRJc0Rpc2FibGUuZm9jdXMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm9uTmV4dC5lbWl0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvQmFjayAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5iYWNrICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodGhpcy5iYWNrLmRpc2FibGVkIHx8IHRoaXMuYmFjay5yZWFkb25seSkge1xyXG4gICAgICAgIGlmICh0aGlzLmJhY2tJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmJhY2tJc0Rpc2FibGUuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5iYWNrLmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmJhY2tJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5iYWNrSXNEaXNhYmxlLmZvY3VzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vbkJhY2suZW1pdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsaW1waWFyVG9kbyAoKSB7XHJcbiAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICB7XHJcbiAgICAgICAgaG91cjogbnVsbCxcclxuICAgICAgICBtaW51dGU6IG51bGwsXHJcbiAgICAgIH0sXHJcbiAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAge1xyXG4gICAgICAgIHllYXI6IG51bGwsXHJcbiAgICAgICAgbW9udGg6IG51bGwsXHJcbiAgICAgICAgZGF5OiBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoXCJkZC9tbS95eXl5IC0tOi0tIC0tXCIpO1xyXG4gICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMjQpIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKFwiZGQvbW0veXl5eSAtLTotLVwiKTtcclxuICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gIH1cclxuXHJcbiAgbGltcGlhciAoKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT0gMCAmJiB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gMikge1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICBkYXk6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShgZGQkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDIpIH1gKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT0gMyAmJiB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gNSkge1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICBtb250aDogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKGAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDMpIH1tbSR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNSkgfWApO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICB5ZWFyOiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoYCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgNikgfXl5eXkkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDEwKSB9YCk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSAxMSAmJiB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gMTMpIHtcclxuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgIGhvdXI6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAxMSkgfS0tJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMykgfWApO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09IDE0ICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAxNikge1xyXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgbWludXRlOiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoYCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMTQpIH0tLSR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTYpIH1gKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcmV2ZW50RGVmYXVsdCAoZTogYW55KSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrIChlOiBFdmVudCwgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG5cclxuICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwIHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDEgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMikge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAzIHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDQgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNSkge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNiB8fFxyXG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA3IHx8XHJcbiAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDggfHxcclxuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gOSB8fFxyXG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMSB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMiB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMykge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE0IHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE1IHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE2KSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTcgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTggfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTkpIHtcclxuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuICB9XHJcbiAgb3BlbiAoZDogTmdiSW5wdXREYXRlcGlja2VyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUgPT0gXCJkZC9tbS95eXl5IC0tOi0tIC0tXCIgfHwgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUgPT0gXCJkZC9tbS95eXl5IC0tOi0tXCIpIHtcclxuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgIGhvdXI6IG5ldyBEYXRlKCkuZ2V0SG91cnMoKSxcclxuICAgICAgICBtaW51dGU6IG5ldyBEYXRlKCkuZ2V0TWludXRlcygpLFxyXG4gICAgICAgIHNlY29uZDogbmV3IERhdGUoKS5nZXRTZWNvbmRzKCksXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICB5ZWFyOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgICAgbW9udGg6IG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDEsXHJcbiAgICAgICAgZGF5OiBuZXcgRGF0ZSgpLmdldERhdGUoKSxcclxuICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUudG9TdHJpbmcoKSwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvY3VzT3V0IChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmFyaWFMYWJlbCA9PSBcIk1pbnV0ZXNcIikge1xyXG4gICAgICB0aGlzLm5nYkRhdGVwaWNrZXI/LmNsb3NlKCk7XHJcbiAgICAgIGlmICh0aGlzLmdvTmV4dFdoZW5TZWxlY3QpIHtcclxuICAgICAgICB0aGlzLmdvTmV4dCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgc3R5bGU9XCJvdmVyZmxvdzogaGlkZGVuXCI+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCJsYWJlbCAhPSBudWxsICYmIGxhYmVsICE9ICcnICYmIHNob3dMYWJlbFwiIGNsYXNzPVwiZC1mbGV4IHN1bWF4LWxhYmVsIG1iLTAgcC0wXCJcclxuICAgICAgPjxzcGFuIFt0aXRsZV09XCJsYWJlbFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXNcIj57eyBsYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJyZXF1aXJlZFwiIGNsYXNzPVwibXMtMVwiIFtjbGFzcy50ZXh0LWRhbmdlcl09XCJjb250cm9scz8uZXJyb3JzICE9IG51bGxcIj4gKjwvc3Bhbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJsYWJlbEluZm9cIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSB0ZXh0LWluZm8gbXMtMlwiIFttYXRUb29sdGlwXT1cInRleHRMYWJlbEluZm9cIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1pbmZvXCI+PC9pPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIHBvc2l0aW9uLWFic29sdXRlXCJcclxuICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgIGlkPVwiZmFrZUlucHV0XCJcclxuICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiZGF0ZUNvbnRyb2xcIlxyXG4gICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiXHJcbiAgICAgIFttaW5EYXRlXT1cInsgeWVhcjogMTk2MCwgbW9udGg6IDEsIGRheTogMSB9XCJcclxuICAgICAgI2QyPVwibmdiRGF0ZXBpY2tlclwiIC8+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgaWQ9XCJpbnB1dERhdGVUaW1lXCJcclxuICAgICAgICAjaW5wdXREYXRlVGltZVxyXG4gICAgICAgIHN0eWxlPVwiZmxleDogMVwiXHJcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsICYmIChjb250cm9scz8uZGlydHkgfHwgY29udHJvbHM/LnRvdWNoZWQpICYmIHN1Ym1pdHRlZFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAoZm9jdXNvdXQpPVwiZm9jdXNPdXRJbnB1dCgpXCJcclxuICAgICAgICAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCJcclxuICAgICAgICAoZGJsY2xpY2spPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInByZXZlbnREZWZhdWx0KCRldmVudClcIlxyXG4gICAgICAgIChtb3VzZXVwKT1cIm9uQ2xpY2soJGV2ZW50LCBpbnB1dERhdGVUaW1lKVwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImRhdGVUaW1lQ29udHJvbFwiIC8+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAjYnRuT3BlblxyXG4gICAgICAgICAgKGtleXVwLkFycm93TGVmdCk9XCJnb0JhY2soKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxyXG4gICAgICAgICAgKGtleXVwLkFycm93UmlnaHQpPVwiY2xlYXJhYmxlID8gYnRuQ2xlYW4uZm9jdXMoKSA6IGdvTmV4dCgpXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIHAtMCByb3VuZGVkLTAgdXNlLWJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZDIudG9nZ2xlKCk7IG9wZW4oZDIpXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXIgdGV4dC1saWdodCBweC0xXCI+PC9pPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICNidG5DbGVhblxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBwLTAgcm91bmRlZC0wIGxpbXBpYXJcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcclxuICAgICAgICAgIChjbGljayk9XCJsaW1waWFyVG9kbygpXCJcclxuICAgICAgICAgIChrZXl1cC5BcnJvd0xlZnQpPVwiYnRuT3Blbi5mb2N1cygpXCJcclxuICAgICAgICAgIChrZXl1cC5BcnJvd1JpZ2h0KT1cImdvTmV4dCgpXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwidGV4dC13aGl0ZSBwdC0xXCIgc3R5bGU9XCJmb250LXNpemU6IDE4cHg7XCIgW21hdFRvb2x0aXBdPVwiJ0xpbXBpYXInXCIgbWF0VG9vbHRpcENsYXNzPVwiYmctZGFuZ2VyXCI+Y2xvc2U8L21hdC1pY29uPiAtLT5cclxuICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtdGltZXMgcHgtMSB0ZXh0LWxpZ2h0XCI+PC9pPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGNvbnRhaW5lci10b29sdGlwbWVzc2FnZVwiPlxyXG4gICAgICAgIDx0b29sdGlwLW1lc3NhZ2VcclxuICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXHJcbiAgICAgICAgICBbY29udHJvbHNdPVwiY29udHJvbHNcIlxyXG4gICAgICAgICAgW3ZhbGlkYXRvck1lc3NhZ2VdPVwidmFsaWRhdG9yTWVzc2FnZVwiXHJcbiAgICAgICAgICBbdG9vbHRpcE1lc3NhZ2VdPVwidG9vbHRpcE1lc3NhZ2VcIlxyXG4gICAgICAgICAgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIj48L3Rvb2x0aXAtbWVzc2FnZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxlcnJvci1tZXNzYWdlXHJcbiAgICAgIFtsYWJlbF09XCJsYWJlbFwiXHJcbiAgICAgIFtjb250cm9sc109XCJjb250cm9sc1wiXHJcbiAgICAgIFt2YWxpZGF0b3JNZXNzYWdlXT1cInZhbGlkYXRvck1lc3NhZ2VcIlxyXG4gICAgICBbdG9vbHRpcE1lc3NhZ2VdPVwidG9vbHRpcE1lc3NhZ2VcIlxyXG4gICAgICBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiPjwvZXJyb3ItbWVzc2FnZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICAgIDxuZ2ItdGltZXBpY2tlciBbZm9ybUNvbnRyb2xdPVwiaG91cnNDb250cm9sXCIgW21lcmlkaWFuXT1cImZvcm1hdCA9PSAxMiA/IHRydWUgOiBmYWxzZVwiIChmb2N1c291dCk9XCJmb2N1c091dCgkZXZlbnQpXCI+PC9uZ2ItdGltZXBpY2tlcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
1190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7QUFDeEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7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Q0osT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUNHLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDSixhQUFhO3NCQUE3QixTQUFTO3VCQUFDLElBQUk7Z0JBT04sS0FBSztzQkFBYixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csUUFBUTtzQkFBaEIsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFPRyxjQUFjO3NCQUF0QixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csTUFBTTtzQkFBZCxLQUFLO2dCQU9HLElBQUk7c0JBQVosS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFPRyxJQUFJO3NCQUFaLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFPRyxZQUFZO3NCQUFwQixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBmb3J3YXJkUmVmLFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICB2aWV3Q2hpbGQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgTkdfVkFMSURBVE9SUyxcclxuICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTmdiQ2FsZW5kYXIsIE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIE5nYkRhdGVwaWNrZXJJMThuLCBOZ2JJbnB1dERhdGVwaWNrZXIgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgQ3VzdG9tRGF0ZXBpY2tlckZvcm1hdCB9IGZyb20gXCIuLi9kYXRlLXBpY2tlci9DdXN0b21EYXRlUGlja2VyRm9ybWF0XCI7XHJcbmltcG9ydCB7IEN1c3RvbURhdGVwaWNrZXJJMThuLCBJMThuIH0gZnJvbSBcIi4uL2RhdGUtcGlja2VyL0N1c3RvbURhdGVQaWNrZXJJMThuXCI7XHJcbmltcG9ydCB7IERhdGVUaW1lTW9kZWwgfSBmcm9tIFwiLi4vdXRpbHMvRGF0ZVRpbWVNb2RlbFwiO1xyXG5pbXBvcnQgeyBmb3JtYXRIb3VyIH0gZnJvbSBcIi4uL3V0aWxzL0RhdGVUaW1lUGlja2VyRWRpdGFibGVcIjtcclxuaW1wb3J0IHsgRGF0ZVV0aWwgfSBmcm9tIFwiLi4vdXRpbHMvRGF0ZVV0aWxcIjtcclxuaW1wb3J0IHsgRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UgfSBmcm9tIFwiLi9kYXRlLXRpbWUtcGlja2VyLWVkaXRhYmxlLnNlcnZpY2VcIjtcclxuXHJcbmNvbnN0IE1BU0tfMTJfSE9VUlMgPSBcImRkL21tL3l5eXkgLS06LS0gLS1cIjtcclxuY29uc3QgTUFTS18yNF9IT1VSUyA9IFwiZGQvbW0veXl5eSAtLTotLVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kYXRlLXRpbWUtcGlja2VyLWVkaXRhYmxlLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBEYXRlVGltZVBpY2tlckVkaXRhYmxlQ29tcG9uZW50LFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIEkxOG4sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVwaWNrZXJJMThuLCB1c2VDbGFzczogQ3VzdG9tRGF0ZXBpY2tlckkxOG4gfSxcclxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgdXNlQ2xhc3M6IEN1c3RvbURhdGVwaWNrZXJGb3JtYXQgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcyB7XHJcbiAgcHJpdmF0ZSBfZGF0ZVBpcGUgPSBpbmplY3QoRGF0ZVBpcGUpO1xyXG4gIHByaXZhdGUgX2NhbGVuZGFyID0gaW5qZWN0KE5nYkNhbGVuZGFyKTtcclxuICBwcml2YXRlIF9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZSA9IGluamVjdChEYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBfY2RyZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJpbnB1dERhdGVUaW1lXCIpIGlucHV0RGF0ZVRpbWU6IGFueTtcclxuICBAVmlld0NoaWxkKFwiYnRuT3BlblwiKSBidG5PcGVuITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiYnRuQ2xlYW5cIikgYnRuQ2xlYW4hOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJkMlwiKSBuZ2JEYXRlcGlja2VyITogTmdiSW5wdXREYXRlcGlja2VyO1xyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gc3VwZXJpb3JcclxuICAgKiBAZGVmYXVsdCBcIlwiXHJcbiAgICogQHR5cGUgc3RyaW5nXHJcbiAgICovXHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9IFwiXCI7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIENvbnRyb2xhIGxhIHZpc3VhbGl6YWNpw7NuIGRlbCB0ZXh0byBzdXBlcmlvclxyXG4gICAqIEBkZWZhdWx0IHRydWVcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2hvd0xhYmVsOiBib29sZWFuID0gdHJ1ZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gRXN0YWJsZWNlIGVsIGNvbnRyb2wgY29tbyBzb2xvIGxlY3R1cmFcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBJbmRpY2Egc2kgZWwgY2FtcG8gZXMgb2JsaWdhdG9yaW9cclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBNdWVzdHJhIG1lbnNhamVzIGRlIHZhbGlkYWNpw7NuXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgdmFsaWRhdG9yTWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBNdWVzdHJhIG1lbnNhamVzIGRlIGF5dWRhIGNvbW8gdG9vbHRpcHNcclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHRvb2x0aXBNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gSW5kaWNhIHNpIGVsIGZvcm11bGFyaW8gaGEgc2lkbyBlbnZpYWRvIHBhcmEgbW9zdHJhciB2YWxpZGFjaW9uZXNcclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHN1Ym1pdHRlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEZvcm1hdG8gZGUgaG9yYTogMTIgbyAyNCBob3Jhc1xyXG4gICAqIEBkZWZhdWx0IDI0XHJcbiAgICogQHR5cGUgZm9ybWF0SG91clxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGZvcm1hdDogZm9ybWF0SG91ciA9IDI0O1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2lhIGFsIHNpZ3VpZW50ZSBjb250cm9sIHBhcmEgbmF2ZWdhY2nDs25cclxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcclxuICAgKiBAdHlwZSBhbnlcclxuICAgKi9cclxuICBASW5wdXQoKSBuZXh0OiBhbnk7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jaWEgYWwgY29udHJvbCBhbHRlcm5hdGl2byBjdWFuZG8gZWwgc2lndWllbnRlIGVzdMOhIGRlc2hhYmlsaXRhZG9cclxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcclxuICAgKiBAdHlwZSBhbnlcclxuICAgKi9cclxuICBASW5wdXQoKSBuZXh0SXNEaXNhYmxlOiBhbnk7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEhhYmlsaXRhIGluZm9ybWFjacOzbiBhZGljaW9uYWwgcGFyYSBsYSBldGlxdWV0YVxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBUZXh0byBpbmZvcm1hdGl2byBhZGljaW9uYWwgcGFyYSBsYSBldGlxdWV0YVxyXG4gICAqIEBkZWZhdWx0IFwiXCJcclxuICAgKiBAdHlwZSBzdHJpbmdcclxuICAgKi9cclxuICBASW5wdXQoKSB0ZXh0TGFiZWxJbmZvOiBzdHJpbmcgPSBcIlwiO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2lhIGFsIGNvbnRyb2wgYW50ZXJpb3IgcGFyYSBuYXZlZ2FjacOzblxyXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxyXG4gICAqIEB0eXBlIGFueVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGJhY2s6IGFueTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNpYSBhbCBjb250cm9sIGFsdGVybmF0aXZvIGN1YW5kbyBlbCBhbnRlcmlvciBlc3TDoSBkZXNoYWJpbGl0YWRvXHJcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXHJcbiAgICogQHR5cGUgYW55XHJcbiAgICovXHJcbiAgQElucHV0KCkgYmFja0lzRGlzYWJsZTogYW55O1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBBYnJlIGVsIHNlbGVjdG9yIGFsIHJlY2liaXIgZWwgZm9jb1xyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG9wZW5XaGVuRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gTmF2ZWdhIGFsIHNpZ3VpZW50ZSBjb250cm9sIGFsIHNlbGVjY2lvbmFyIHVuYSBmZWNoYVxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGdvTmV4dFdoZW5TZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gTXVlc3RyYSBlbCBib3TDs24gZGUgZWxpbWluYXJcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBjbGVhcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBBdXRvY29tcGxldGEgY29uIGxhIGhvcmEvbWludXRvIGFjdHVhbCAodHJ1ZSkgbyBjb24gMDA6MDAgKGZhbHNlKVxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGF1dG9Db21wbGV0ZUhvdXJzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEhhYmlsaXRhIGVsIGF1dG9jb21wbGV0YWRvXHJcbiAgICogQGRlZmF1bHQgdHJ1ZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBhdXRvQ29tcGxldGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBEZXNoYWJpbGl0YSBlbCBjb250cm9sXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgb25OZXh0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25CYWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcbiAgb25Ub3VjaCA9ICgpID0+IHsgfTtcclxuICBvblZhbGlkYXRpb25DaGFuZ2UgPSAoKSA9PiB7IH07XHJcblxyXG4gIGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQ7XHJcbiAgY29udGFkb3IgPSAwO1xyXG4gIHBvc2l0aW9uID0gMDtcclxuICBkYXRlVGltZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woXCJkZC9tbS95eXl5IC0tOi0tIC0tXCIpO1xyXG4gIGhvdXJzQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woe1xyXG4gICAgaG91cjogbnVsbCxcclxuICAgIG1pbnV0ZTogbnVsbCxcclxuICB9KTtcclxuICBkYXRlQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woe1xyXG4gICAgeWVhcjogbnVsbCxcclxuICAgIG1vbnRoOiBudWxsLFxyXG4gICAgZGF5OiBudWxsLFxyXG4gIH0pO1xyXG4gIHRvZGF5ID0gdGhpcy5fY2FsZW5kYXIuZ2V0VG9kYXkoKTtcclxuXHJcbiAgZ2V0IHN0cmluZ0Zvcm1hdCAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1hdCA9PT0gMTIgPyBcImRkL01NL3l5eXkgaGg6bW0gYVwiIDogXCJkZC9NTS95eXl5IEhIOm1tXCI7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuc2hvd0xhYmVsID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0U2hvd0xhYmVsKCk7XHJcbiAgICB0aGlzLm9wZW5XaGVuRm9jdXMgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRPcGVuV2hlbkZvY3VzKCk7XHJcbiAgICB0aGlzLmdvTmV4dFdoZW5TZWxlY3QgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRHb05leHRXaGVuU2VsZWN0KCk7XHJcbiAgICB0aGlzLnZhbGlkYXRvck1lc3NhZ2UgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRWYWxpZGF0b3JNZXNzYWdlKCk7XHJcbiAgICB0aGlzLnRvb2x0aXBNZXNzYWdlID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0VG9vbHRpcE1lc3NhZ2UoKTtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0U3VibWl0dGVkKCk7XHJcbiAgICB0aGlzLmZvcm1hdCA9IHRoaXMuX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlLmdldEZvcm1hdCgpO1xyXG4gICAgdGhpcy5jbGVhcmFibGUgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRDbGVhcmFibGUoKTtcclxuICAgIHRoaXMuYXV0b0NvbXBsZXRlSG91cnMgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRBdXRvQ29tcGxldGVIb3VycygpO1xyXG4gICAgdGhpcy5hdXRvQ29tcGxldGUgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRBdXRvQ29tcGxldGUoKTtcclxuICB9XHJcblxyXG5cclxuICB2YWxpZGF0ZSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IGFueSB7XHJcbiAgICB0aGlzLmNvbnRyb2xzID0gY29udHJvbDtcclxuICAgIHRoaXMuX2NkcmYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlPyhmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblZhbGlkYXRpb25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0ICgpOiB2b2lkIHtcclxuICAgIHRoaXMuaG91cnNDaGFuZ2UoKTtcclxuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kYXRlQ2hhbmdlKCk7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgaWYgKCF0aGlzLmNsZWFyYWJsZSkgdGhpcy5idG5DbGVhbiEubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcclxuICAgIH0sIDEwMCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKE1BU0tfMTJfSE9VUlMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoTUFTS18yNF9IT1VSUyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyAoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbXCJzdWJtaXR0ZWRcIl0pIHtcclxuICAgICAgaWYgKHRoaXMuY29udHJvbHMgIT09IHVuZGVmaW5lZCAmJiBjaGFuZ2VzW1wic3VibWl0dGVkXCJdLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbHMubWFya0FzRGlydHkoKTtcclxuICAgICAgICB0aGlzLmNvbnRyb2xzLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9jdXMgKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuXHJcbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcblxyXG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICB9LCAxMDApO1xyXG5cclxuICAgIGlmICghdGhpcy5yZWFkb25seSAmJiB0aGlzLm9wZW5XaGVuRm9jdXMpIHtcclxuICAgICAgdGhpcy5uZ2JEYXRlcGlja2VyPy5vcGVuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlIChvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKG9iaiAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoRGF0ZVRpbWVNb2RlbC5mcm9tTG9jYWxTdHJpbmcob2JqKSk7XHJcbiAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICBob3VyOiB0aGlzLmRhdGVDb250cm9sLnZhbHVlLmhvdXIsXHJcbiAgICAgICAgbWludXRlOiB0aGlzLmRhdGVDb250cm9sLnZhbHVlLm1pbnV0ZSxcclxuICAgICAgICBzZWNvbmQ6IHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUuc2Vjb25kLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKG9iaiwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZSAoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZCAoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHRoaXMuZGF0ZVRpbWVDb250cm9sLmRpc2FibGUoKTtcclxuICAgIGVsc2UgdGhpcy5kYXRlVGltZUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgfVxyXG5cclxuICBob3Vyc0NoYW5nZSAoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXHJcbiAgICAgIHRoaXMuaG91cnNDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldIFswLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhKSB8fFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAxMCkpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSEsXHJcbiAgICAgICAgICAgICAgLi4ucmVzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oaW5wdXQsIHRoaXMuc3RyaW5nRm9ybWF0KSk7XHJcbiAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICBlbHNlIGlmICh0aGlzLmZvcm1hdCA9PSAyNClcclxuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0gWzAtMV1bMC05XTpbMC02XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlISkgfHxcclxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMTApKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgLi4ucmVzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShpbnB1dCwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIC8qIGNvbnNvbGUuZXJyb3IoZXJyb3IpICovXHJcbiAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkVtaXQgKGVtaXRWYWx1ZTogYW55ID0gbnVsbCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgIGVtaXRWYWx1ZSA9IHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZS50b1N0cmluZygpLCBcInl5eXktTU0tZGRUSEg6bW1cIik7XHJcbiAgICB9IGNhdGNoIChlKSB7IH1cclxuICAgIHRoaXMub25DaGFuZ2UoZW1pdFZhbHVlKTtcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUNoYW5nZSAoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0gWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEpIHx8XHJcbiAgICAgICAgICAvWzAtMV1bMC05XTpbMC02XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDE2KSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICAuLi5yZXMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShpbnB1dCwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICBlbHNlIGlmICh0aGlzLmZvcm1hdCA9PSAyNClcclxuICAgICAgdGhpcy5kYXRlQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAvWzAtM11bMC05XVxcL1swLTFdWzAtOV1cXC9bMC05XVswLTldWzAtOV1bMC05XSBbMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlISkgfHxcclxuICAgICAgICAgIC9bMC0xXVswLTldOlswLTZdWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTYpKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIC4uLnJlcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgaW5wdXQ6IGFueSA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlQ29udHJvbC52YWx1ZSwgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUpKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGlucHV0LCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQmx1ciAoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNPdXRJbnB1dCAoKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLmF1dG9Db21wbGV0ZSl7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgICBpZiAoKHZhbHVlICE9IE1BU0tfMTJfSE9VUlMgJiYgdGhpcy5mb3JtYXQgPT0gMTIpIHx8ICh2YWx1ZSAhPSBNQVNLXzI0X0hPVVJTICYmIHRoaXMuZm9ybWF0ID09IDI0KSkge1xyXG4gICAgICAgIGNvbnN0IGRpYSA9IHZhbHVlPy5zdWJzdHJpbmcoMCwgMik7XHJcbiAgICAgICAgY29uc3QgbWVzID0gdmFsdWU/LnN1YnN0cmluZygzLCA1KTtcclxuICAgICAgICBjb25zdCBhbmlvID0gdmFsdWU/LnN1YnN0cmluZyg2LCAxMCk7XHJcbiAgICAgICAgY29uc3QgaG9yYSA9IHZhbHVlPy5zdWJzdHJpbmcoMTEsIDEzKTtcclxuICAgICAgICBjb25zdCBtaW51dG9zID0gdmFsdWU/LnN1YnN0cmluZygxNCwgMTYpO1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBpc05hTihOdW1iZXIoZGlhKSkgfHxcclxuICAgICAgICAgIGRpYSA9PSBcIjAwXCIgfHxcclxuICAgICAgICAgIGlzTmFOKE51bWJlcihtZXMpKSB8fFxyXG4gICAgICAgICAgbWVzID09IFwiMDBcIiB8fFxyXG4gICAgICAgICAgaXNOYU4oTnVtYmVyKGFuaW8pKSB8fFxyXG4gICAgICAgICAgYW5pbyA9PSBcIjAwMDBcIiB8fFxyXG4gICAgICAgICAgaXNOYU4oTnVtYmVyKGhvcmEpKSB8fFxyXG4gICAgICAgICAgaXNOYU4oTnVtYmVyKG1pbnV0b3MpKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHllYXI6IGlzTmFOKE51bWJlcihhbmlvKSkgfHwgYW5pbyA9PSBcIjAwMDBcIiA/IHRoaXMudG9kYXkueWVhciA6IE51bWJlcihhbmlvKSxcclxuICAgICAgICAgICAgICBtb250aDogaXNOYU4oTnVtYmVyKG1lcykpIHx8IG1lcyA9PSBcIjAwXCIgPyB0aGlzLnRvZGF5Lm1vbnRoIDogTnVtYmVyKG1lcyksXHJcbiAgICAgICAgICAgICAgZGF5OiBpc05hTihOdW1iZXIoZGlhKSkgfHwgZGlhID09IFwiMDBcIiA/IHRoaXMudG9kYXkuZGF5IDogTnVtYmVyKGRpYSksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgbGV0IGhvdXIgPSB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5ob3VyO1xyXG4gICAgICAgICAgaWYgKGlzTmFOKE51bWJlcihob3JhKSkpIGhvdXIgPSB0aGlzLmF1dG9Db21wbGV0ZUhvdXJzID8gRGF0ZVV0aWwuZ2V0SG91cnMoRGF0ZVV0aWwubm93KFwiSVNPREFURVRJTUVfTk9fVElNRVpPTkVcIikpIDogMDtcclxuXHJcbiAgICAgICAgICBsZXQgbWludXRlID0gdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlO1xyXG4gICAgICAgICAgaWYgKGlzTmFOKE51bWJlcihtaW51dG9zKSkpIG1pbnV0ZSA9IHRoaXMuYXV0b0NvbXBsZXRlSG91cnMgPyBEYXRlVXRpbC5nZXRNaW51dGVzKERhdGVVdGlsLm5vdyhcIklTT0RBVEVUSU1FX05PX1RJTUVaT05FXCIpKSA6IDA7XHJcblxyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBob3VyLFxyXG4gICAgICAgICAgICAgIG1pbnV0ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBpbnB1dDogYW55ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGlucHV0LCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25LZXlVcCAoZTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGUudGFyZ2V0O1xyXG5cclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcblxyXG4gICAgaWYgKCFpc05hTihOdW1iZXIoZS5rZXkpKSAmJiBlLmtleS50cmltKCkgIT0gXCJcIikge1xyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09IERJQSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBkaWFBY3R1YWw6IHN0cmluZyA9IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAyKTtcclxuXHJcbiAgICAgICAgaWYgKGRpYUFjdHVhbCA9PSBcImRkXCIpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygyKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGRheTogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoZS5rZXkgPiAzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIoZGlhQWN0dWFsKSA8PSAzICYmIE51bWJlcihkaWFBY3R1YWwpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyBOdW1iZXIoTnVtYmVyKGRpYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gMzEgPyAzMSA6IE51bWJlcihkaWFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpXHJcbiAgICAgICAgICAgIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBkYXk6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDIpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygyKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGRheTogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoTnVtYmVyKGUua2V5LnBhZFN0YXJ0KDIsIDApKSA+IDMgfHwgdGhpcy5jb250YWRvciA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAyKTtcclxuICAgICAgfVxyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09IE1FUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDUpIHtcclxuICAgICAgICBjb25zdCB2YWxvckFjdHVhbDogc3RyaW5nID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhO1xyXG4gICAgICAgIGNvbnN0IG1lc0FjdHVhbDogc3RyaW5nID0gdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDMsIDUpO1xyXG5cclxuICAgICAgICBpZiAobWVzQWN0dWFsID09IFwibW1cIikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMykgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNSkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtb250aDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMywgNSkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoZS5rZXkgPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKG1lc0FjdHVhbCkgPD0gMSAmJiBOdW1iZXIobWVzQWN0dWFsKSA+IDAgJiYgdGhpcy5jb250YWRvciA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBOdW1iZXIoTnVtYmVyKG1lc0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gMTIgPyAxMiA6IE51bWJlcihtZXNBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpXHJcbiAgICAgICAgICAgIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNSkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtb250aDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMywgNSkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDUpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbW9udGg6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDMsIDUpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKE51bWJlcihlLmtleS5wYWRTdGFydCgyLCAwKSkgPiAxIHx8IHRoaXMuY29udGFkb3IgPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gQcORTyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDYgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEwKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBhbmlvQWN0dWFsOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNiwgMTApO1xyXG4gICAgICAgIGlmIChhbmlvQWN0dWFsID09IFwieXl5eVwiKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgZS5rZXkucGFkU3RhcnQoNCwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoZS5rZXkgPiAyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBEYXRlVXRpbC5nZXRZZWFyKERhdGVVdGlsLm5vdygpKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihhbmlvQWN0dWFsKSA8PSAyOTk5ICYmIE51bWJlcihhbmlvQWN0dWFsKSA+IDApIHtcclxuICAgICAgICAgIGxldCBudWV2b1ZhbG9yO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKE51bWJlcihhbmlvQWN0dWFsKSA+PSAxMDAwKSB7XHJcbiAgICAgICAgICAgIG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBOdW1iZXIoZS5rZXkpLnRvU3RyaW5nKCkucGFkU3RhcnQoNCwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTApIH1gO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgNikgfSR7IChOdW1iZXIoYW5pb0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpLnBhZFN0YXJ0KFxyXG4gICAgICAgICAgICAgIDQsXHJcbiAgICAgICAgICAgICAgXCIwXCJcclxuICAgICAgICAgICAgKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBOdW1iZXIoTnVtYmVyKGFuaW9BY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDEwMDAgJiZcclxuICAgICAgICAgICAgICBOdW1iZXIoTnVtYmVyKGFuaW9BY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA8IDMwMDBcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIoTnVtYmVyKGFuaW9BY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDI5OTkpIHtcclxuICAgICAgICAgICAgICBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgRGF0ZVV0aWwuZ2V0WWVhcihEYXRlVXRpbC5ub3coKSkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBlLmtleS5wYWRTdGFydCg0LCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIHllYXI6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDYsIDEwKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICB9XHJcbiAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gSE9SQSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgICAgZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBob3JhQWN0dWFsOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTEsIDEzKTtcclxuXHJcbiAgICAgICAgaWYgKGhvcmFBY3R1YWwgPT0gXCItLVwiKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICAvLz09PT09PT09PT09IEZPUk1BVE8gMTIgSE9SQVM9PT09PT09PT09PVxyXG4gICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKVxyXG4gICAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgaG91cjogL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXHJcbiAgICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpLFxyXG4gICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiLS1cIiA/IDAgOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgLy89PT09PT09PT09PSBGT1JNQVRPIDI0IEhPUkFTPT09PT09PT09PT1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIGhvdXI6IC9bMC0xXVswLTldOlswLTZdWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXHJcbiAgICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpLFxyXG4gICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiMDBcIiA/IDAgOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKGUua2V5ID4gMSAmJiB0aGlzLmZvcm1hdCA9PSAxMikge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChlLmtleSA+IDIgJiYgdGhpcy5mb3JtYXQgPT0gMjQpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKGhvcmFBY3R1YWwpIDw9IDEgJiYgTnVtYmVyKGhvcmFBY3R1YWwpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCAmJiB0aGlzLmZvcm1hdCA9PSAxMikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBOdW1iZXIoTnVtYmVyKGhvcmFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDEyID8gMTIgOiBOdW1iZXIoaG9yYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSlcclxuICAgICAgICAgICAgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMykgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGhvdXI6IC9bMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSlcclxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpLFxyXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIjAwXCIgPyAwIDogdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKGhvcmFBY3R1YWwpIDw9IDIgJiYgTnVtYmVyKGhvcmFBY3R1YWwpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCAmJiB0aGlzLmZvcm1hdCA9PSAyNCkge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBOdW1iZXIoTnVtYmVyKGhvcmFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDI0ID8gMjQgOiBOdW1iZXIoaG9yYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSlcclxuICAgICAgICAgICAgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMykgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIGxldCBob3VyO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaG91ciA9IC9bMC0xXVswLTldOlswLTZdWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKVxyXG4gICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDEzKSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBob3VyID0gTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDEzKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBob3VyLFxyXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIjAwXCIgPyAwIDogdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICBjb25zdCByZWdleCA9IHRoaXMuZm9ybWF0ID09IDEyID8gL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vIDogL1swLTFdWzAtOV06WzAtNl1bMC05XS87XHJcblxyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgaG91cjogcmVnZXgudGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXHJcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTMpKSxcclxuICAgICAgICAgICAgbWludXRlOlxyXG4gICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIjAwXCIgfHwgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiLS1cIlxyXG4gICAgICAgICAgICAgICAgPyAwXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKChOdW1iZXIoZS5rZXkucGFkU3RhcnQoMiwgMCkpID4gMSB8fCB0aGlzLmNvbnRhZG9yID4gMSkgJiYgdGhpcy5mb3JtYXQgPT0gMTIpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoKE51bWJlcihlLmtleS5wYWRTdGFydCgyLCAwKSkgPiAyIHx8IHRoaXMuY29udGFkb3IgPiAxKSAmJiB0aGlzLmZvcm1hdCA9PSAyNCkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgfVxyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT0gTUlOVVRPUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE0ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxNikge1xyXG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XHJcbiAgICAgICAgY29uc3QgbWludXRvc0FjdHVhbGVzOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTQsIDE2KTtcclxuICAgICAgICBpZiAobWludXRvc0FjdHVhbGVzID09IFwiLS1cIikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTQpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE2KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbWludXRlOiAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwibW1cIikpXHJcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKGUua2V5ID4gNSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgICAgIGVsc2UgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKG1pbnV0b3NBY3R1YWxlcykgPD0gNSAmJiBOdW1iZXIobWludXRvc0FjdHVhbGVzKSA+IDAgJiYgdGhpcy5jb250YWRvciA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDE0KSB9JHsgTnVtYmVyKE51bWJlcihtaW51dG9zQWN0dWFsZXMpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDU5ID8gNTkgOiBOdW1iZXIobWludXRvc0FjdHVhbGVzKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KVxyXG4gICAgICAgICAgICB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE2KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgbGV0IG1pbnV0ZTtcclxuICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gdGhpcy5mb3JtYXQgPT0gMTIgPyAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8gOiAvWzAtMV1bMC05XTpbMC02XVswLTldLztcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIG1pbnV0ZSA9IHJlZ2V4LnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIm1tXCIpKVxyXG4gICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBtaW51dGUgPSBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIG1pbnV0ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICAgIGVsc2UgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxNCkgfSR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTYpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtaW51dGU6IC9bMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJtbVwiKSlcclxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XHJcbiAgICAgICAgICBpZiAoTnVtYmVyKGUua2V5LnBhZFN0YXJ0KDIsIDApKSA+IDUgfHwgdGhpcy5jb250YWRvciA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgICAgICBlbHNlIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PSBFVkVOVE9TIFRFQ0xBRE8gPT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGlmIChlLmtleSA9PSBcIkFycm93UmlnaHRcIikge1xyXG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gNSkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTYpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZm9ybWF0ID09IDI0KSB0aGlzLmJ0bk9wZW4/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTcgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE5KSB7XHJcbiAgICAgICAgICB0aGlzLmJ0bk9wZW4/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PSBcIkFycm93TGVmdFwiKSB7XHJcbiAgICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDAgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDIpIHtcclxuICAgICAgICAgIHRoaXMuZ29CYWNrKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDUpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDExICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMykge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTYpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmtleS50b0xvd2VyQ2FzZSgpID09IFwiYVwiKSB7XHJcbiAgICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsb3JBY3R1YWwgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwhLnN1YnN0cmluZygwLCAxNykgfUFNYDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgaG91cjogTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmtleS50b0xvd2VyQ2FzZSgpID09IFwicFwiKSB7XHJcbiAgICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xyXG4gICAgICAgICAgY29uc3QgdmFsb3JBY3R1YWwgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZTtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwhLnN1YnN0cmluZygwLCAxNykgfVBNYDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgaG91cjogTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChlLmNvZGUgPT0gXCJTcGFjZVwiICYmIHRoaXMuYXV0b0NvbXBsZXRlKSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBkaWFBY3R1YWw6IHN0cmluZyA9IHRoaXMudG9kYXkuZGF5LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY29uc3QgbWVzQWN0dWFsOiBzdHJpbmcgPSB0aGlzLnRvZGF5Lm1vbnRoLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY29uc3QgYW5pb0FjdHVhbDogc3RyaW5nID0gdGhpcy50b2RheS55ZWFyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgY29uc3QgaG9yYUFjdHVhbDogc3RyaW5nID0gRGF0ZVV0aWwudG9TdHJGb3JtYXQoRGF0ZVV0aWwubm93KFwiSVNPREFURVRJTUVfTk9fVElNRVpPTkVcIiksIHRoaXMuZm9ybWF0ID09IDI0ID8gXCJNQVNLXzI0X0hPVVJTXCIgOiBcIk1BU0tfMTJfSE9VUlNcIik7XHJcbiAgICAgICAgY29uc3QgdDogc3RyaW5nID0gRGF0ZVV0aWwudG9TdHJGb3JtYXQoRGF0ZVV0aWwubm93KFwiSVNPREFURVRJTUVfTk9fVElNRVpPTkVcIiksIFwiTUlEREFZX0lORElDQVRPUlwiKTtcclxuICAgICAgICBjb25zdCBtaW51dG9zQWN0dWFsZXM6IHN0cmluZyA9IERhdGVVdGlsLmdldE1pbnV0ZXMoRGF0ZVV0aWwubm93KFwiSVNPREFURVRJTUVfTk9fVElNRVpPTkVcIikpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgXCIwXCIpO1xyXG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IGRpYUFjdHVhbC5wYWRTdGFydCgyLCBcIjBcIikgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygyKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgZGF5OiB0aGlzLnRvZGF5LmRheSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDUpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBtZXNBY3R1YWwucGFkU3RhcnQoMiwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNSkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIG1vbnRoOiB0aGlzLnRvZGF5Lm1vbnRoLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDYgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEwKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgYW5pb0FjdHVhbC5wYWRTdGFydCg0LCBcIjBcIikgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIHllYXI6IHRoaXMudG9kYXkueWVhcixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XHJcbiAgICAgICAgICBsZXQgbnVldm9WYWxvcjtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAyNCkgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBob3JhQWN0dWFsIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXHJcbiAgICAgICAgICAgIG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDExKSB9JHsgaG9yYUFjdHVhbCB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEzLCAxNykgfSR7IHQudG9VcHBlckNhc2UoKSB9YDtcclxuXHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yISk7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSAhPSBudWxsID8gdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlIDogMCxcclxuICAgICAgICAgICAgaG91cjogdGhpcy5mb3JtYXQgPT0gMTIgPyBOdW1iZXIoaG9yYUFjdHVhbCkgOiBOdW1iZXIoaG9yYUFjdHVhbCkgKyAxMixcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE0ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxNikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTQpIH0keyBtaW51dG9zQWN0dWFsZXMucGFkU3RhcnQoMiwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTYpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtaW51dGU6IE51bWJlcihtaW51dG9zQWN0dWFsZXMpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgICBlbHNlIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT0gXCJFbnRlclwiIHx8IGUua2V5ID09IFwiQXJyb3dEb3duXCIpIHtcclxuICAgICAgICB0aGlzLmdvTmV4dCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09IFwiQXJyb3dVcFwiKSB7XHJcbiAgICAgICAgdGhpcy5nb0JhY2soKTtcclxuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PSBcIkRlbGV0ZVwiKSB7XHJcbiAgICAgICAgdGhpcy5saW1waWFyVG9kbygpO1xyXG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09IFwiQmFja3NwYWNlXCIpIHtcclxuICAgICAgICB0aGlzLmxpbXBpYXIoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ29OZXh0ICgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm5leHQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh0aGlzLm5leHQuZGlzYWJsZWQgfHwgdGhpcy5uZXh0LnJlYWRvbmx5KSB7XHJcbiAgICAgICAgaWYgKHRoaXMubmV4dElzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMubmV4dElzRGlzYWJsZS5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5leHQuZm9jdXMoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMubmV4dElzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLm5leHRJc0Rpc2FibGUuZm9jdXMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm9uTmV4dC5lbWl0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvQmFjayAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5iYWNrICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodGhpcy5iYWNrLmRpc2FibGVkIHx8IHRoaXMuYmFjay5yZWFkb25seSkge1xyXG4gICAgICAgIGlmICh0aGlzLmJhY2tJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmJhY2tJc0Rpc2FibGUuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5iYWNrLmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmJhY2tJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5iYWNrSXNEaXNhYmxlLmZvY3VzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vbkJhY2suZW1pdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsaW1waWFyVG9kbyAoKSB7XHJcbiAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICB7XHJcbiAgICAgICAgaG91cjogbnVsbCxcclxuICAgICAgICBtaW51dGU6IG51bGwsXHJcbiAgICAgIH0sXHJcbiAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICApO1xyXG4gICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAge1xyXG4gICAgICAgIHllYXI6IG51bGwsXHJcbiAgICAgICAgbW9udGg6IG51bGwsXHJcbiAgICAgICAgZGF5OiBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgKTtcclxuICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoXCJkZC9tbS95eXl5IC0tOi0tIC0tXCIpO1xyXG4gICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMjQpIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKFwiZGQvbW0veXl5eSAtLTotLVwiKTtcclxuICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gIH1cclxuXHJcbiAgbGltcGlhciAoKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT0gMCAmJiB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gMikge1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICBkYXk6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShgZGQkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDIpIH1gKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT0gMyAmJiB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gNSkge1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICBtb250aDogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKGAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDMpIH1tbSR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNSkgfWApO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICB5ZWFyOiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoYCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgNikgfXl5eXkkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDEwKSB9YCk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSAxMSAmJiB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gMTMpIHtcclxuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgIGhvdXI6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAxMSkgfS0tJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMykgfWApO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09IDE0ICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAxNikge1xyXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgbWludXRlOiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoYCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMTQpIH0tLSR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTYpIH1gKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcmV2ZW50RGVmYXVsdCAoZTogYW55KSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrIChlOiBFdmVudCwgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG5cclxuICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwIHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDEgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMikge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAzIHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDQgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNSkge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNiB8fFxyXG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA3IHx8XHJcbiAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDggfHxcclxuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gOSB8fFxyXG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMSB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMiB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMykge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE0IHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE1IHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE2KSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTcgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTggfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTkpIHtcclxuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG4gICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuICB9XHJcbiAgb3BlbiAoZDogTmdiSW5wdXREYXRlcGlja2VyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUgPT0gXCJkZC9tbS95eXl5IC0tOi0tIC0tXCIgfHwgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUgPT0gXCJkZC9tbS95eXl5IC0tOi0tXCIpIHtcclxuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgIGhvdXI6IG5ldyBEYXRlKCkuZ2V0SG91cnMoKSxcclxuICAgICAgICBtaW51dGU6IG5ldyBEYXRlKCkuZ2V0TWludXRlcygpLFxyXG4gICAgICAgIHNlY29uZDogbmV3IERhdGUoKS5nZXRTZWNvbmRzKCksXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICB5ZWFyOiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksXHJcbiAgICAgICAgbW9udGg6IG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDEsXHJcbiAgICAgICAgZGF5OiBuZXcgRGF0ZSgpLmdldERhdGUoKSxcclxuICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUudG9TdHJpbmcoKSwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvY3VzT3V0IChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmFyaWFMYWJlbCA9PSBcIk1pbnV0ZXNcIikge1xyXG4gICAgICB0aGlzLm5nYkRhdGVwaWNrZXI/LmNsb3NlKCk7XHJcbiAgICAgIGlmICh0aGlzLmdvTmV4dFdoZW5TZWxlY3QpIHtcclxuICAgICAgICB0aGlzLmdvTmV4dCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgc3R5bGU9XCJvdmVyZmxvdzogaGlkZGVuXCI+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCJsYWJlbCAhPSBudWxsICYmIGxhYmVsICE9ICcnICYmIHNob3dMYWJlbFwiIGNsYXNzPVwiZC1mbGV4IHN1bWF4LWxhYmVsIG1iLTAgcC0wXCJcclxuICAgICAgPjxzcGFuIFt0aXRsZV09XCJsYWJlbFwiIHN0eWxlPVwid2hpdGUtc3BhY2U6IG5vd3JhcDsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXNcIj57eyBsYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJyZXF1aXJlZFwiIGNsYXNzPVwibXMtMVwiIFtjbGFzcy50ZXh0LWRhbmdlcl09XCJjb250cm9scz8uZXJyb3JzICE9IG51bGxcIj4gKjwvc3Bhbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJsYWJlbEluZm9cIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSB0ZXh0LWluZm8gbXMtMlwiIFttYXRUb29sdGlwXT1cInRleHRMYWJlbEluZm9cIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1pbmZvXCI+PC9pPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIHBvc2l0aW9uLWFic29sdXRlXCJcclxuICAgICAgY29udGFpbmVyPVwiYm9keVwiXHJcbiAgICAgIGlkPVwiZmFrZUlucHV0XCJcclxuICAgICAgbmdiRGF0ZXBpY2tlclxyXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiZGF0ZUNvbnRyb2xcIlxyXG4gICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXHJcbiAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiXHJcbiAgICAgIFttaW5EYXRlXT1cInsgeWVhcjogMTk2MCwgbW9udGg6IDEsIGRheTogMSB9XCJcclxuICAgICAgI2QyPVwibmdiRGF0ZXBpY2tlclwiIC8+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgaWQ9XCJpbnB1dERhdGVUaW1lXCJcclxuICAgICAgICAjaW5wdXREYXRlVGltZVxyXG4gICAgICAgIHN0eWxlPVwiZmxleDogMVwiXHJcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiY29udHJvbHM/LmVycm9ycyAhPSBudWxsICYmIChjb250cm9scz8uZGlydHkgfHwgY29udHJvbHM/LnRvdWNoZWQpICYmIHN1Ym1pdHRlZFwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAoZm9jdXNvdXQpPVwiZm9jdXNPdXRJbnB1dCgpXCJcclxuICAgICAgICAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCJcclxuICAgICAgICAoZGJsY2xpY2spPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInByZXZlbnREZWZhdWx0KCRldmVudClcIlxyXG4gICAgICAgIChtb3VzZXVwKT1cIm9uQ2xpY2soJGV2ZW50LCBpbnB1dERhdGVUaW1lKVwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImRhdGVUaW1lQ29udHJvbFwiIC8+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAjYnRuT3BlblxyXG4gICAgICAgICAgKGtleXVwLkFycm93TGVmdCk9XCJnb0JhY2soKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxyXG4gICAgICAgICAgKGtleXVwLkFycm93UmlnaHQpPVwiY2xlYXJhYmxlID8gYnRuQ2xlYW4uZm9jdXMoKSA6IGdvTmV4dCgpXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIHAtMCByb3VuZGVkLTAgdXNlLWJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiZDIudG9nZ2xlKCk7IG9wZW4oZDIpXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXIgdGV4dC1saWdodCBweC0xXCI+PC9pPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICNidG5DbGVhblxyXG4gICAgICAgICAgW2hpZGRlbl09XCIhY2xlYXJhYmxlXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgcC0wIHJvdW5kZWQtMCBsaW1waWFyXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwibGltcGlhclRvZG8oKVwiXHJcbiAgICAgICAgICAoa2V5dXAuQXJyb3dMZWZ0KT1cImJ0bk9wZW4uZm9jdXMoKVwiXHJcbiAgICAgICAgICAoa2V5dXAuQXJyb3dSaWdodCk9XCJnb05leHQoKVwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInRleHQtd2hpdGUgcHQtMVwiIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4O1wiIFttYXRUb29sdGlwXT1cIidMaW1waWFyJ1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWRhbmdlclwiPmNsb3NlPC9tYXQtaWNvbj4gLS0+XHJcbiAgICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImZhIGZhLXRpbWVzIHB4LTEgdGV4dC1saWdodFwiPjwvaT5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBjb250YWluZXItdG9vbHRpcG1lc3NhZ2VcIj5cclxuICAgICAgICA8dG9vbHRpcC1tZXNzYWdlXHJcbiAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxyXG4gICAgICAgICAgW2NvbnRyb2xzXT1cImNvbnRyb2xzXCJcclxuICAgICAgICAgIFt2YWxpZGF0b3JNZXNzYWdlXT1cInZhbGlkYXRvck1lc3NhZ2VcIlxyXG4gICAgICAgICAgW3Rvb2x0aXBNZXNzYWdlXT1cInRvb2x0aXBNZXNzYWdlXCJcclxuICAgICAgICAgIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCI+PC90b29sdGlwLW1lc3NhZ2U+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZXJyb3ItbWVzc2FnZVxyXG4gICAgICBbbGFiZWxdPVwibGFiZWxcIlxyXG4gICAgICBbY29udHJvbHNdPVwiY29udHJvbHNcIlxyXG4gICAgICBbdmFsaWRhdG9yTWVzc2FnZV09XCJ2YWxpZGF0b3JNZXNzYWdlXCJcclxuICAgICAgW3Rvb2x0aXBNZXNzYWdlXT1cInRvb2x0aXBNZXNzYWdlXCJcclxuICAgICAgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIj48L2Vycm9yLW1lc3NhZ2U+XHJcbiAgICA8bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgICA8bmdiLXRpbWVwaWNrZXIgW2Zvcm1Db250cm9sXT1cImhvdXJzQ29udHJvbFwiIFttZXJpZGlhbl09XCJmb3JtYXQgPT0gMTIgPyB0cnVlIDogZmFsc2VcIiAoZm9jdXNvdXQpPVwiZm9jdXNPdXQoJGV2ZW50KVwiPjwvbmdiLXRpbWVwaWNrZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|