ngx-sumax-erp-components 1.1.6 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/date-picker/CustomDatePickerFormat.mjs +1 -1
  3. package/esm2022/lib/date-picker/CustomDatePickerI18n.mjs +1 -1
  4. package/esm2022/lib/date-picker/date-picker.component.mjs +3 -3
  5. package/esm2022/lib/date-picker/date-picker.mjs +1 -1
  6. package/esm2022/lib/date-picker/date-picker.module.mjs +1 -1
  7. package/esm2022/lib/date-picker/date-picker.service.mjs +1 -1
  8. package/esm2022/lib/date-time-picker/date-time-picker.component.mjs +3 -3
  9. package/esm2022/lib/date-time-picker/date-time-picker.mjs +1 -1
  10. package/esm2022/lib/date-time-picker/date-time-picker.module.mjs +1 -1
  11. package/esm2022/lib/date-time-picker/date-time-picker.service.mjs +1 -1
  12. package/esm2022/lib/date-time-picker-editable/date-time-picker-editable.component.mjs +3 -3
  13. package/esm2022/lib/date-time-picker-editable/date-time-picker-editable.module.mjs +1 -1
  14. package/esm2022/lib/date-time-picker-editable/date-time-picker-editable.service.mjs +1 -1
  15. package/esm2022/lib/dialog-ag-grid-search/dialog-ag-grid-search.component.mjs +8 -8
  16. package/esm2022/lib/dialog-ag-grid-search/dialog-ag-grid-search.module.mjs +1 -1
  17. package/esm2022/lib/error-message/error-message.component.mjs +3 -3
  18. package/esm2022/lib/error-message/error-message.module.mjs +1 -1
  19. package/esm2022/lib/input-number/input-number.component.mjs +3 -3
  20. package/esm2022/lib/input-number/input-number.mjs +1 -1
  21. package/esm2022/lib/input-number/input-number.module.mjs +1 -1
  22. package/esm2022/lib/input-number/input-number.service.mjs +1 -1
  23. package/esm2022/lib/input-text/input-text.component.mjs +3 -3
  24. package/esm2022/lib/input-text/input-text.mjs +1 -1
  25. package/esm2022/lib/input-text/input-text.module.mjs +1 -1
  26. package/esm2022/lib/input-text/input-text.service.mjs +1 -1
  27. package/esm2022/lib/ng-select-multiple/ng-select-multiple.component.mjs +3 -3
  28. package/esm2022/lib/ng-select-multiple/ng-select-multiple.mjs +1 -1
  29. package/esm2022/lib/ng-select-multiple/ng-select-multiple.module.mjs +1 -1
  30. package/esm2022/lib/ng-select-multiple/ng-select-multiple.service.mjs +1 -1
  31. package/esm2022/lib/ng-select-simple/ng-select-simple.component.mjs +3 -3
  32. package/esm2022/lib/ng-select-simple/ng-select-simple.mjs +1 -1
  33. package/esm2022/lib/ng-select-simple/ng-select-simple.module.mjs +1 -1
  34. package/esm2022/lib/ng-select-simple/ng-select-simple.service.mjs +1 -1
  35. package/esm2022/lib/sc-ag-grid/cell-editors/container-shared/container-shared.component.mjs +3 -3
  36. package/esm2022/lib/sc-ag-grid/cell-render/no-rows-overlay/noRowsOverlayCustom.component.mjs +11 -11
  37. package/esm2022/lib/sc-ag-grid/cell-render/no-rows-overlay/noRowsOverlayDefault.component.mjs +9 -9
  38. package/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-button/sc-cell-render-button.component.mjs +127 -126
  39. package/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-checkbox-list/sc-cell-render-checkbox-list.component.mjs +37 -37
  40. package/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-config.mjs +1 -1
  41. package/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-select/sc-cell-render-select.component.mjs +19 -19
  42. package/esm2022/lib/sc-ag-grid/cell-render/sc-cell-render-toggle/sc-cell-render-toggle.component.mjs +9 -9
  43. package/esm2022/lib/sc-ag-grid/directives/scAgGrid.directive.mjs +1 -1
  44. package/esm2022/lib/sc-ag-grid/index.mjs +1 -1
  45. package/esm2022/lib/sc-ag-grid/input-search/input-search.component.mjs +3 -3
  46. package/esm2022/lib/sc-ag-grid/input-search/input-search.module.mjs +1 -1
  47. package/esm2022/lib/sc-ag-grid/sc-ag-grid-customizable/sc-ag-grid-customizable.component.mjs +13 -13
  48. package/esm2022/lib/sc-ag-grid/sc-ag-grid-pagination/sc-ag-grid-pagination.component.mjs +3 -3
  49. package/esm2022/lib/sc-ag-grid/sc-ag-grid-pagination/sc-ag-grid-pagination.module.mjs +1 -1
  50. package/esm2022/lib/sc-ag-grid/sc-ag-grid.module.mjs +1 -1
  51. package/esm2022/lib/sc-ag-grid/sc-grid.uitl.mjs +1 -1
  52. package/esm2022/lib/sc-wizard/sc-wizard.component.mjs +3 -3
  53. package/esm2022/lib/sc-wizard/sc-wizard.module.mjs +1 -1
  54. package/esm2022/lib/text-area/text-area.component.mjs +3 -3
  55. package/esm2022/lib/text-area/text-area.mjs +1 -1
  56. package/esm2022/lib/text-area/text-area.module.mjs +1 -1
  57. package/esm2022/lib/text-area/text-area.service.mjs +1 -1
  58. package/esm2022/lib/tooltip-message/tooltip-message.component.mjs +3 -3
  59. package/esm2022/lib/tooltip-message/tooltip-message.module.mjs +1 -1
  60. package/esm2022/lib/utils/DateTimeModel.mjs +1 -1
  61. package/esm2022/lib/utils/DateTimePickerEditable.mjs +1 -1
  62. package/esm2022/lib/utils/DateUtil.mjs +1 -1
  63. package/esm2022/lib/utils/INgSelect.mjs +1 -1
  64. package/esm2022/lib/utils/IScAgGrid.mjs +1 -1
  65. package/esm2022/lib/utils/NgSelectUtils.mjs +1 -1
  66. package/esm2022/lib/utils/ScWizardBase.mjs +1 -1
  67. package/esm2022/lib/utils/SharedComponentsUtil.mjs +1 -1
  68. package/esm2022/lib/utils/ValidateUtil.mjs +1 -1
  69. package/esm2022/lib/utils/message-util.service.mjs +1 -1
  70. package/esm2022/public-api.mjs +1 -1
  71. package/fesm2022/ngx-sumax-erp-components.mjs +253 -252
  72. package/fesm2022/ngx-sumax-erp-components.mjs.map +1 -1
  73. package/lib/sc-ag-grid/cell-render/sc-cell-render-button/sc-cell-render-button.component.d.ts +4 -2
  74. package/lib/sc-ag-grid/sc-ag-grid-customizable/sc-ag-grid-customizable.component.d.ts +2 -2
  75. package/package.json +2 -2
@@ -1116,7 +1116,7 @@ export class DateTimePickerEditableComponent {
1116
1116
  I18n,
1117
1117
  { provide: NgbDatepickerI18n, useClass: CustomDatepickerI18n },
1118
1118
  { provide: NgbDateParserFormatter, useClass: CustomDatepickerFormat },
1119
- ], 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"] }] }); }
1119
+ ], 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\">\n <div class=\"col-12\" style=\"overflow: hidden\">\n <label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\n <span *ngIf=\"labelInfo\">\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\n </span>\n </label>\n <input\n type=\"text\"\n class=\"form-control form-control-sm position-absolute\"\n container=\"body\"\n id=\"fakeInput\"\n ngbDatepicker\n [formControl]=\"dateControl\"\n [autoClose]=\"'outside'\"\n [footerTemplate]=\"footerTemplate\"\n [minDate]=\"{ year: 1960, month: 1, day: 1 }\"\n #d2=\"ngbDatepicker\" />\n <div class=\"input-group w-100\">\n <input\n type=\"text\"\n readonly\n id=\"inputDateTime\"\n #inputDateTime\n style=\"flex: 1\"\n [class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [disabled]=\"disabled || readonly\"\n class=\"form-control form-control-sm\"\n (blur)=\"onBlur()\"\n (focusout)=\"focusOutInput()\"\n (keyup)=\"onKeyUp($event)\"\n (dblclick)=\"preventDefault($event)\"\n (click)=\"preventDefault($event)\"\n (mouseup)=\"onClick($event, inputDateTime)\"\n [formControl]=\"dateTimeControl\" />\n <div class=\"input-group-append\">\n <button\n #btnOpen\n (keyup.ArrowLeft)=\"goBack()\"\n [disabled]=\"disabled || readonly\"\n (keyup.ArrowRight)=\"clearable ? btnClean.focus() : goNext()\"\n class=\"btn btn-info p-0 rounded-0 use-button\"\n (click)=\"d2.toggle(); open(d2)\"\n type=\"button\">\n <i aria-hidden=\"true\" class=\"fa fa-calendar text-light px-1\"></i>\n </button>\n <button\n #btnClean\n [hidden]=\"!clearable\"\n class=\"btn btn-danger p-0 rounded-0 limpiar\"\n [disabled]=\"disabled || readonly\"\n (click)=\"limpiarTodo()\"\n (keyup.ArrowLeft)=\"btnOpen.focus()\"\n (keyup.ArrowRight)=\"goNext()\"\n type=\"button\">\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Limpiar'\" matTooltipClass=\"bg-danger\">close</mat-icon> -->\n <i aria-hidden=\"true\" class=\"fa fa-times px-1 text-light\"></i>\n </button>\n </div>\n <div class=\"position-absolute container-tooltipmessage\">\n <tooltip-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [tooltipMessage]=\"tooltipMessage\"\n [submitted]=\"submitted\"></tooltip-message>\n </div>\n </div>\n <error-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [tooltipMessage]=\"tooltipMessage\"\n [submitted]=\"submitted\"></error-message>\n <ng-template #footerTemplate>\n <ngb-timepicker [formControl]=\"hoursControl\" [meridian]=\"format == 12 ? true : false\" (focusout)=\"focusOut($event)\"></ngb-timepicker>\n </ng-template>\n </div>\n</div>\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"] }] }); }
1120
1120
  }
1121
1121
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: DateTimePickerEditableComponent, decorators: [{
1122
1122
  type: Component,
@@ -1135,7 +1135,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
1135
1135
  I18n,
1136
1136
  { provide: NgbDatepickerI18n, useClass: CustomDatepickerI18n },
1137
1137
  { provide: NgbDateParserFormatter, useClass: CustomDatepickerFormat },
1138
- ], 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"] }]
1138
+ ], template: "<div class=\"row\">\n <div class=\"col-12\" style=\"overflow: hidden\">\n <label *ngIf=\"label != null && label != '' && showLabel\" class=\"d-flex sumax-label mb-0 p-0\"\n ><span [title]=\"label\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis\">{{ label }}</span>\n <span *ngIf=\"required\" class=\"ms-1\" [class.text-danger]=\"controls?.errors != null\"> *</span>\n <span *ngIf=\"labelInfo\">\n <i class=\"fa fa-exclamation-circle text-info ms-2\" [matTooltip]=\"textLabelInfo\" matTooltipClass=\"bg-info\"></i>\n </span>\n </label>\n <input\n type=\"text\"\n class=\"form-control form-control-sm position-absolute\"\n container=\"body\"\n id=\"fakeInput\"\n ngbDatepicker\n [formControl]=\"dateControl\"\n [autoClose]=\"'outside'\"\n [footerTemplate]=\"footerTemplate\"\n [minDate]=\"{ year: 1960, month: 1, day: 1 }\"\n #d2=\"ngbDatepicker\" />\n <div class=\"input-group w-100\">\n <input\n type=\"text\"\n readonly\n id=\"inputDateTime\"\n #inputDateTime\n style=\"flex: 1\"\n [class.is-invalid]=\"controls?.errors != null && (controls?.dirty || controls?.touched) && submitted\"\n [disabled]=\"disabled || readonly\"\n class=\"form-control form-control-sm\"\n (blur)=\"onBlur()\"\n (focusout)=\"focusOutInput()\"\n (keyup)=\"onKeyUp($event)\"\n (dblclick)=\"preventDefault($event)\"\n (click)=\"preventDefault($event)\"\n (mouseup)=\"onClick($event, inputDateTime)\"\n [formControl]=\"dateTimeControl\" />\n <div class=\"input-group-append\">\n <button\n #btnOpen\n (keyup.ArrowLeft)=\"goBack()\"\n [disabled]=\"disabled || readonly\"\n (keyup.ArrowRight)=\"clearable ? btnClean.focus() : goNext()\"\n class=\"btn btn-info p-0 rounded-0 use-button\"\n (click)=\"d2.toggle(); open(d2)\"\n type=\"button\">\n <i aria-hidden=\"true\" class=\"fa fa-calendar text-light px-1\"></i>\n </button>\n <button\n #btnClean\n [hidden]=\"!clearable\"\n class=\"btn btn-danger p-0 rounded-0 limpiar\"\n [disabled]=\"disabled || readonly\"\n (click)=\"limpiarTodo()\"\n (keyup.ArrowLeft)=\"btnOpen.focus()\"\n (keyup.ArrowRight)=\"goNext()\"\n type=\"button\">\n <!-- <mat-icon class=\"text-white pt-1\" style=\"font-size: 18px;\" [matTooltip]=\"'Limpiar'\" matTooltipClass=\"bg-danger\">close</mat-icon> -->\n <i aria-hidden=\"true\" class=\"fa fa-times px-1 text-light\"></i>\n </button>\n </div>\n <div class=\"position-absolute container-tooltipmessage\">\n <tooltip-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [tooltipMessage]=\"tooltipMessage\"\n [submitted]=\"submitted\"></tooltip-message>\n </div>\n </div>\n <error-message\n [label]=\"label\"\n [controls]=\"controls\"\n [validatorMessage]=\"validatorMessage\"\n [tooltipMessage]=\"tooltipMessage\"\n [submitted]=\"submitted\"></error-message>\n <ng-template #footerTemplate>\n <ngb-timepicker [formControl]=\"hoursControl\" [meridian]=\"format == 12 ? true : false\" (focusout)=\"focusOut($event)\"></ngb-timepicker>\n </ng-template>\n </div>\n</div>\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"] }]
1139
1139
  }], ctorParameters: () => [], propDecorators: { inputDateTime: [{
1140
1140
  type: ViewChild,
1141
1141
  args: ["inputDateTime"]
@@ -1193,4 +1193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
1193
1193
  }], onBack: [{
1194
1194
  type: Output
1195
1195
  }] } });
1196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7QUFDeEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYs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b25cIjtcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgZm9yd2FyZFJlZixcclxuICBpbmplY3QsXHJcbiAgaW5wdXQsXHJcbiAgdmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIE5HX1ZBTElEQVRPUlMsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgVW50eXBlZEZvcm1Db250cm9sLFxyXG4gIFZhbGlkYXRpb25FcnJvcnMsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE5nYkNhbGVuZGFyLCBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLCBOZ2JEYXRlcGlja2VySTE4biwgTmdiSW5wdXREYXRlcGlja2VyIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7IEN1c3RvbURhdGVwaWNrZXJGb3JtYXQgfSBmcm9tIFwiLi4vZGF0ZS1waWNrZXIvQ3VzdG9tRGF0ZVBpY2tlckZvcm1hdFwiO1xyXG5pbXBvcnQgeyBDdXN0b21EYXRlcGlja2VySTE4biwgSTE4biB9IGZyb20gXCIuLi9kYXRlLXBpY2tlci9DdXN0b21EYXRlUGlja2VySTE4blwiO1xyXG5pbXBvcnQgeyBEYXRlVGltZU1vZGVsIH0gZnJvbSBcIi4uL3V0aWxzL0RhdGVUaW1lTW9kZWxcIjtcclxuaW1wb3J0IHsgZm9ybWF0SG91ciB9IGZyb20gXCIuLi91dGlscy9EYXRlVGltZVBpY2tlckVkaXRhYmxlXCI7XHJcbmltcG9ydCB7IERhdGVVdGlsIH0gZnJvbSBcIi4uL3V0aWxzL0RhdGVVdGlsXCI7XHJcbmltcG9ydCB7IERhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlIH0gZnJvbSBcIi4vZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IHRpbWVyIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmNvbnN0IE1BU0tfMTJfSE9VUlMgPSBcImRkL21tL3l5eXkgLS06LS0gLS1cIjtcclxuY29uc3QgTUFTS18yNF9IT1VSUyA9IFwiZGQvbW0veXl5eSAtLTotLVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kYXRlLXRpbWUtcGlja2VyLWVkaXRhYmxlLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpPT4gRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZUNvbXBvbmVudClcclxuICAgICAgLy91c2VFeGlzdGluZzogRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZUNvbXBvbmVudCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVUaW1lUGlja2VyRWRpdGFibGVDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBJMThuLFxyXG4gICAgeyBwcm92aWRlOiBOZ2JEYXRlcGlja2VySTE4biwgdXNlQ2xhc3M6IEN1c3RvbURhdGVwaWNrZXJJMThuIH0sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIHVzZUNsYXNzOiBDdXN0b21EYXRlcGlja2VyRm9ybWF0IH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGVUaW1lUGlja2VyRWRpdGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMge1xyXG4gIHByaXZhdGUgX2RhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcclxuICBwcml2YXRlIF9jYWxlbmRhciA9IGluamVjdChOZ2JDYWxlbmRhcik7XHJcbiAgcHJpdmF0ZSBfZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UgPSBpbmplY3QoRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgX2NkcmYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cclxuICBAVmlld0NoaWxkKFwiaW5wdXREYXRlVGltZVwiKSBpbnB1dERhdGVUaW1lOiBhbnk7XHJcbiAgQFZpZXdDaGlsZChcImJ0bk9wZW5cIikgYnRuT3BlbiE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcImJ0bkNsZWFuXCIpIGJ0bkNsZWFuITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiZDJcIikgbmdiRGF0ZXBpY2tlciE6IE5nYklucHV0RGF0ZXBpY2tlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIFRleHRvIHN1cGVyaW9yXHJcbiAgICogQGRlZmF1bHQgXCJcIlxyXG4gICAqIEB0eXBlIHN0cmluZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSBcIlwiO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBDb250cm9sYSBsYSB2aXN1YWxpemFjacOzbiBkZWwgdGV4dG8gc3VwZXJpb3JcclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNob3dMYWJlbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEVzdGFibGVjZSBlbCBjb250cm9sIGNvbW8gc29sbyBsZWN0dXJhXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gSW5kaWNhIHNpIGVsIGNhbXBvIGVzIG9ibGlnYXRvcmlvXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gTXVlc3RyYSBtZW5zYWplcyBkZSB2YWxpZGFjacOzblxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHZhbGlkYXRvck1lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gTXVlc3RyYSBtZW5zYWplcyBkZSBheXVkYSBjb21vIHRvb2x0aXBzXHJcbiAgICogQGRlZmF1bHQgdHJ1ZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSB0b29sdGlwTWVzc2FnZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIEluZGljYSBzaSBlbCBmb3JtdWxhcmlvIGhhIHNpZG8gZW52aWFkbyBwYXJhIG1vc3RyYXIgdmFsaWRhY2lvbmVzXHJcbiAgICogQGRlZmF1bHQgdHJ1ZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBzdWJtaXR0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBGb3JtYXRvIGRlIGhvcmE6IDEyIG8gMjQgaG9yYXNcclxuICAgKiBAZGVmYXVsdCAyNFxyXG4gICAqIEB0eXBlIGZvcm1hdEhvdXJcclxuICAgKi9cclxuICBASW5wdXQoKSBmb3JtYXQ6IGZvcm1hdEhvdXIgPSAyNDtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNpYSBhbCBzaWd1aWVudGUgY29udHJvbCBwYXJhIG5hdmVnYWNpw7NuXHJcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXHJcbiAgICogQHR5cGUgYW55XHJcbiAgICovXHJcbiAgQElucHV0KCkgbmV4dDogYW55O1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2lhIGFsIGNvbnRyb2wgYWx0ZXJuYXRpdm8gY3VhbmRvIGVsIHNpZ3VpZW50ZSBlc3TDoSBkZXNoYWJpbGl0YWRvXHJcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXHJcbiAgICogQHR5cGUgYW55XHJcbiAgICovXHJcbiAgQElucHV0KCkgbmV4dElzRGlzYWJsZTogYW55O1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBIYWJpbGl0YSBpbmZvcm1hY2nDs24gYWRpY2lvbmFsIHBhcmEgbGEgZXRpcXVldGFcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBsYWJlbEluZm86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gaW5mb3JtYXRpdm8gYWRpY2lvbmFsIHBhcmEgbGEgZXRpcXVldGFcclxuICAgKiBAZGVmYXVsdCBcIlwiXHJcbiAgICogQHR5cGUgc3RyaW5nXHJcbiAgICovXHJcbiAgQElucHV0KCkgdGV4dExhYmVsSW5mbzogc3RyaW5nID0gXCJcIjtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNpYSBhbCBjb250cm9sIGFudGVyaW9yIHBhcmEgbmF2ZWdhY2nDs25cclxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcclxuICAgKiBAdHlwZSBhbnlcclxuICAgKi9cclxuICBASW5wdXQoKSBiYWNrOiBhbnk7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jaWEgYWwgY29udHJvbCBhbHRlcm5hdGl2byBjdWFuZG8gZWwgYW50ZXJpb3IgZXN0w6EgZGVzaGFiaWxpdGFkb1xyXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxyXG4gICAqIEB0eXBlIGFueVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGJhY2tJc0Rpc2FibGU6IGFueTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gQWJyZSBlbCBzZWxlY3RvciBhbCByZWNpYmlyIGVsIGZvY29cclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBvcGVuV2hlbkZvY3VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIE5hdmVnYSBhbCBzaWd1aWVudGUgY29udHJvbCBhbCBzZWxlY2Npb25hciB1bmEgZmVjaGFcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBnb05leHRXaGVuU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGRlc2NyaXB0aW9uIE11ZXN0cmEgZWwgYm90w7NuIGRlIGVsaW1pbmFyXHJcbiAgICogQGRlZmF1bHQgZmFsc2VcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgY2xlYXJhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gQXV0b2NvbXBsZXRhIGNvbiBsYSBob3JhL21pbnV0byBhY3R1YWwgKHRydWUpIG8gY29uIDAwOjAwIChmYWxzZSlcclxuICAgKiBAZGVmYXVsdCBmYWxzZVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKSBhdXRvQ29tcGxldGVIb3VyczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiBIYWJpbGl0YSBlbCBhdXRvY29tcGxldGFkb1xyXG4gICAqIEBkZWZhdWx0IHRydWVcclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KCkgYXV0b0NvbXBsZXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICBcclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gRGVzaGFiaWxpdGEgZWwgY29udHJvbFxyXG4gICAqIEBkZWZhdWx0IGZhbHNlXHJcbiAgICogQHR5cGUgYm9vbGVhblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIG9uTmV4dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQmFjazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xyXG4gIG9uVG91Y2ggPSAoKSA9PiB7IH07XHJcbiAgb25WYWxpZGF0aW9uQ2hhbmdlID0gKCkgPT4geyB9O1xyXG5cclxuICBjb250cm9sczogQWJzdHJhY3RDb250cm9sIHwgdW5kZWZpbmVkO1xyXG4gIGNvbnRhZG9yID0gMDtcclxuICBwb3NpdGlvbiA9IDA7XHJcbiAgZGF0ZVRpbWVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKFwiZGQvbW0veXl5eSAtLTotLSAtLVwiKTtcclxuICBob3Vyc0NvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHtcclxuICAgIGhvdXI6IG51bGwsXHJcbiAgICBtaW51dGU6IG51bGwsXHJcbiAgfSk7XHJcbiAgZGF0ZUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHtcclxuICAgIHllYXI6IG51bGwsXHJcbiAgICBtb250aDogbnVsbCxcclxuICAgIGRheTogbnVsbCxcclxuICB9KTtcclxuICB0b2RheSA9IHRoaXMuX2NhbGVuZGFyLmdldFRvZGF5KCk7XHJcblxyXG4gIGdldCBzdHJpbmdGb3JtYXQgKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtYXQgPT09IDEyID8gXCJkZC9NTS95eXl5IGhoOm1tIGFcIiA6IFwiZGQvTU0veXl5eSBISDptbVwiO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnNob3dMYWJlbCA9IHRoaXMuX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlLmdldFNob3dMYWJlbCgpO1xyXG4gICAgdGhpcy5vcGVuV2hlbkZvY3VzID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0T3BlbldoZW5Gb2N1cygpO1xyXG4gICAgdGhpcy5nb05leHRXaGVuU2VsZWN0ID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0R29OZXh0V2hlblNlbGVjdCgpO1xyXG4gICAgdGhpcy52YWxpZGF0b3JNZXNzYWdlID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0VmFsaWRhdG9yTWVzc2FnZSgpO1xyXG4gICAgdGhpcy50b29sdGlwTWVzc2FnZSA9IHRoaXMuX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlLmdldFRvb2x0aXBNZXNzYWdlKCk7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRoaXMuX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlLmdldFN1Ym1pdHRlZCgpO1xyXG4gICAgdGhpcy5mb3JtYXQgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRGb3JtYXQoKTtcclxuICAgIHRoaXMuY2xlYXJhYmxlID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0Q2xlYXJhYmxlKCk7XHJcbiAgICB0aGlzLmF1dG9Db21wbGV0ZUhvdXJzID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0QXV0b0NvbXBsZXRlSG91cnMoKTtcclxuICAgIHRoaXMuYXV0b0NvbXBsZXRlID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0QXV0b0NvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgdmFsaWRhdGUgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBhbnkge1xyXG4gICAgdGhpcy5jb250cm9scyA9IGNvbnRyb2w7XHJcbiAgICB0aGlzLl9jZHJmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT8oZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25WYWxpZGF0aW9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmhvdXJzQ2hhbmdlKCk7XHJcbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZGF0ZUNoYW5nZSgpO1xyXG4gICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIGlmICghdGhpcy5jbGVhcmFibGUpIHRoaXMuYnRuQ2xlYW4hLm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XHJcbiAgICB9LCAxMDApO1xyXG5cclxuICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikge1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShNQVNLXzEyX0hPVVJTKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKE1BU0tfMjRfSE9VUlMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMgKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzW1wic3VibWl0dGVkXCJdKSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbnRyb2xzICE9PSB1bmRlZmluZWQgJiYgY2hhbmdlc1tcInN1Ym1pdHRlZFwiXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2xzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgdGhpcy5jb250cm9scy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvY3VzICgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcblxyXG4gICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xyXG5cclxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgfSwgMTAwKTtcclxuXHJcbiAgICBpZiAoIXRoaXMucmVhZG9ubHkgJiYgdGhpcy5vcGVuV2hlbkZvY3VzKSB7XHJcbiAgICAgIHRoaXMubmdiRGF0ZXBpY2tlcj8ub3BlbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSAob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChvYmogIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKERhdGVUaW1lTW9kZWwuZnJvbUxvY2FsU3RyaW5nKG9iaikpO1xyXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgaG91cjogdGhpcy5kYXRlQ29udHJvbC52YWx1ZS5ob3VyLFxyXG4gICAgICAgIG1pbnV0ZTogdGhpcy5kYXRlQ29udHJvbC52YWx1ZS5taW51dGUsXHJcbiAgICAgICAgc2Vjb25kOiB0aGlzLmRhdGVDb250cm9sLnZhbHVlLnNlY29uZCxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShvYmosIHRoaXMuc3RyaW5nRm9ybWF0KSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxpbXBpYXJUb2RvKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UgKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQgKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gIH1cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB0aGlzLmRhdGVUaW1lQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICBlbHNlIHRoaXMuZGF0ZVRpbWVDb250cm9sLmVuYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgaG91cnNDaGFuZ2UgKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKVxyXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAvWzAtM11bMC05XVxcL1swLTFdWzAtOV1cXC9bMC05XVswLTldWzAtOV1bMC05XSBbMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlISkgfHxcclxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMTApKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUhLFxyXG4gICAgICAgICAgICAgIC4uLnJlcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBpbnB1dDogYW55ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGlucHV0LCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMjQpXHJcbiAgICAgIHRoaXMuaG91cnNDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldIFswLTFdWzAtOV06WzAtNl1bMC05XS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEpIHx8XHJcbiAgICAgICAgICAvWzAtM11bMC05XVxcL1swLTFdWzAtOV1cXC9bMC05XVswLTldWzAtOV1bMC05XS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDEwKSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIC4uLnJlcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBpbnB1dDogYW55ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oaW5wdXQsIHRoaXMuc3RyaW5nRm9ybWF0KSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAvKiBjb25zb2xlLmVycm9yKGVycm9yKSAqL1xyXG4gICAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25FbWl0IChlbWl0VmFsdWU6IGFueSA9IG51bGwpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG4gICAgICBlbWl0VmFsdWUgPSB0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUudG9TdHJpbmcoKSwgXCJ5eXl5LU1NLWRkVEhIOm1tXCIpO1xyXG4gICAgfSBjYXRjaCAoZSkgeyB9XHJcbiAgICB0aGlzLm9uQ2hhbmdlKGVtaXRWYWx1ZSk7XHJcbiAgICB0aGlzLm9uVG91Y2goKTtcclxuICB9XHJcblxyXG4gIGRhdGVDaGFuZ2UgKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKVxyXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldIFswLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhKSB8fFxyXG4gICAgICAgICAgL1swLTFdWzAtOV06WzAtNl1bMC05XS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxNikpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgICAgLi4ucmVzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBpbnB1dDogYW55ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oaW5wdXQsIHRoaXMuc3RyaW5nRm9ybWF0KSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMjQpXHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0gWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEpIHx8XHJcbiAgICAgICAgICAvWzAtMV1bMC05XTpbMC02XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDE2KSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICAuLi5yZXMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShpbnB1dCwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIgKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkVtaXQoKTtcclxuICB9XHJcblxyXG4gIGZvY3VzT3V0SW5wdXQgKCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5hdXRvQ29tcGxldGUpe1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlO1xyXG5cclxuICAgICAgaWYgKCh2YWx1ZSAhPSBNQVNLXzEyX0hPVVJTICYmIHRoaXMuZm9ybWF0ID09IDEyKSB8fCAodmFsdWUgIT0gTUFTS18yNF9IT1VSUyAmJiB0aGlzLmZvcm1hdCA9PSAyNCkpIHtcclxuICAgICAgICBjb25zdCBkaWEgPSB2YWx1ZT8uc3Vic3RyaW5nKDAsIDIpO1xyXG4gICAgICAgIGNvbnN0IG1lcyA9IHZhbHVlPy5zdWJzdHJpbmcoMywgNSk7XHJcbiAgICAgICAgY29uc3QgYW5pbyA9IHZhbHVlPy5zdWJzdHJpbmcoNiwgMTApO1xyXG4gICAgICAgIGNvbnN0IGhvcmEgPSB2YWx1ZT8uc3Vic3RyaW5nKDExLCAxMyk7XHJcbiAgICAgICAgY29uc3QgbWludXRvcyA9IHZhbHVlPy5zdWJzdHJpbmcoMTQsIDE2KTtcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgaXNOYU4oTnVtYmVyKGRpYSkpIHx8XHJcbiAgICAgICAgICBkaWEgPT0gXCIwMFwiIHx8XHJcbiAgICAgICAgICBpc05hTihOdW1iZXIobWVzKSkgfHxcclxuICAgICAgICAgIG1lcyA9PSBcIjAwXCIgfHxcclxuICAgICAgICAgIGlzTmFOKE51bWJlcihhbmlvKSkgfHxcclxuICAgICAgICAgIGFuaW8gPT0gXCIwMDAwXCIgfHxcclxuICAgICAgICAgIGlzTmFOKE51bWJlcihob3JhKSkgfHxcclxuICAgICAgICAgIGlzTmFOKE51bWJlcihtaW51dG9zKSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB5ZWFyOiBpc05hTihOdW1iZXIoYW5pbykpIHx8IGFuaW8gPT0gXCIwMDAwXCIgPyB0aGlzLnRvZGF5LnllYXIgOiBOdW1iZXIoYW5pbyksXHJcbiAgICAgICAgICAgICAgbW9udGg6IGlzTmFOKE51bWJlcihtZXMpKSB8fCBtZXMgPT0gXCIwMFwiID8gdGhpcy50b2RheS5tb250aCA6IE51bWJlcihtZXMpLFxyXG4gICAgICAgICAgICAgIGRheTogaXNOYU4oTnVtYmVyKGRpYSkpIHx8IGRpYSA9PSBcIjAwXCIgPyB0aGlzLnRvZGF5LmRheSA6IE51bWJlcihkaWEpLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGxldCBob3VyID0gdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUuaG91cjtcclxuICAgICAgICAgIGlmIChpc05hTihOdW1iZXIoaG9yYSkpKSBob3VyID0gdGhpcy5hdXRvQ29tcGxldGVIb3VycyA/IERhdGVVdGlsLmdldEhvdXJzKERhdGVVdGlsLm5vdyhcIklTT0RBVEVUSU1FX05PX1RJTUVaT05FXCIpKSA6IDA7XHJcblxyXG4gICAgICAgICAgbGV0IG1pbnV0ZSA9IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZTtcclxuICAgICAgICAgIGlmIChpc05hTihOdW1iZXIobWludXRvcykpKSBtaW51dGUgPSB0aGlzLmF1dG9Db21wbGV0ZUhvdXJzID8gRGF0ZVV0aWwuZ2V0TWludXRlcyhEYXRlVXRpbC5ub3coXCJJU09EQVRFVElNRV9OT19USU1FWk9ORVwiKSkgOiAwO1xyXG5cclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgaG91cixcclxuICAgICAgICAgICAgICBtaW51dGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgY29uc3QgaW5wdXQ6IGFueSA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlQ29udHJvbC52YWx1ZSwgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUpKTtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShpbnB1dCwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcclxuICAgICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS2V5VXAgKGU6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSBlLnRhcmdldDtcclxuXHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG5cclxuICAgIGlmICghaXNOYU4oTnVtYmVyKGUua2V5KSkgJiYgZS5rZXkudHJpbSgpICE9IFwiXCIpIHtcclxuICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBESUEgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMikge1xyXG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XHJcbiAgICAgICAgY29uc3QgZGlhQWN0dWFsOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMik7XHJcblxyXG4gICAgICAgIGlmIChkaWFBY3R1YWwgPT0gXCJkZFwiKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBkYXk6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDIpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKGUua2V5ID4gMykge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKGRpYUFjdHVhbCkgPD0gMyAmJiBOdW1iZXIoZGlhQWN0dWFsKSA+IDAgJiYgdGhpcy5jb250YWRvciA+IDApIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgTnVtYmVyKE51bWJlcihkaWFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDMxID8gMzEgOiBOdW1iZXIoZGlhQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KVxyXG4gICAgICAgICAgICB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDIpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgZGF5OiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAyKSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IGUua2V5LnBhZFN0YXJ0KDIsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBkYXk6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDIpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKE51bWJlcihlLmtleS5wYWRTdGFydCgyLCAwKSkgPiAzIHx8IHRoaXMuY29udGFkb3IgPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcbiAgICAgIH1cclxuICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBNRVMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAzICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSA1KSB7XHJcbiAgICAgICAgY29uc3QgdmFsb3JBY3R1YWw6IHN0cmluZyA9IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlITtcclxuICAgICAgICBjb25zdCBtZXNBY3R1YWw6IHN0cmluZyA9IHZhbG9yQWN0dWFsLnN1YnN0cmluZygzLCA1KTtcclxuXHJcbiAgICAgICAgaWYgKG1lc0FjdHVhbCA9PSBcIm1tXCIpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDUpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbW9udGg6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDMsIDUpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKGUua2V5ID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihtZXNBY3R1YWwpIDw9IDEgJiYgTnVtYmVyKG1lc0FjdHVhbCkgPiAwICYmIHRoaXMuY29udGFkb3IgPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAzKSB9JHsgTnVtYmVyKE51bWJlcihtZXNBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDEyID8gMTIgOiBOdW1iZXIobWVzQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KVxyXG4gICAgICAgICAgICB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDUpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbW9udGg6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDMsIDUpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAzKSB9JHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZyg1KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIG1vbnRoOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygzLCA1KSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIGlmIChOdW1iZXIoZS5rZXkucGFkU3RhcnQoMiwgMCkpID4gMSB8fCB0aGlzLmNvbnRhZG9yID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgfVxyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEHDkU8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XHJcbiAgICAgICAgY29uc3QgYW5pb0FjdHVhbDogc3RyaW5nID0gdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDYsIDEwKTtcclxuICAgICAgICBpZiAoYW5pb0FjdHVhbCA9PSBcInl5eXlcIikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgNikgfSR7IGUua2V5LnBhZFN0YXJ0KDQsIDApIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTApIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKGUua2V5ID4gMikge1xyXG4gICAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgRGF0ZVV0aWwuZ2V0WWVhcihEYXRlVXRpbC5ub3coKSkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIHllYXI6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDYsIDEwKSksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIoYW5pb0FjdHVhbCkgPD0gMjk5OSAmJiBOdW1iZXIoYW5pb0FjdHVhbCkgPiAwKSB7XHJcbiAgICAgICAgICBsZXQgbnVldm9WYWxvcjtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIGlmIChOdW1iZXIoYW5pb0FjdHVhbCkgPj0gMTAwMCkge1xyXG4gICAgICAgICAgICBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgTnVtYmVyKGUua2V5KS50b1N0cmluZygpLnBhZFN0YXJ0KDQsIFwiMFwiKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyAoTnVtYmVyKGFuaW9BY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKS5wYWRTdGFydChcclxuICAgICAgICAgICAgICA0LFxyXG4gICAgICAgICAgICAgIFwiMFwiXHJcbiAgICAgICAgICAgICkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIHllYXI6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDYsIDEwKSksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgTnVtYmVyKE51bWJlcihhbmlvQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkgPiAxMDAwICYmXHJcbiAgICAgICAgICAgICAgTnVtYmVyKE51bWJlcihhbmlvQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkgPCAzMDAwXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTnVtYmVyKE51bWJlcihhbmlvQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkgPiAyOTk5KSB7XHJcbiAgICAgICAgICAgICAgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgNikgfSR7IERhdGVVdGlsLmdldFllYXIoRGF0ZVV0aWwubm93KCkpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTApIH1gO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICAgIHllYXI6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDYsIDEwKSksXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgeWVhcjogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoNiwgMTApKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgZS5rZXkucGFkU3RhcnQoNCwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgfVxyXG4gICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09IEhPUkEgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAgIGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDExICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMykge1xyXG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XHJcbiAgICAgICAgY29uc3QgaG9yYUFjdHVhbDogc3RyaW5nID0gdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDExLCAxMyk7XHJcblxyXG4gICAgICAgIGlmIChob3JhQWN0dWFsID09IFwiLS1cIikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEzKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgLy89PT09PT09PT09PSBGT1JNQVRPIDEyIEhPUkFTPT09PT09PT09PT1cclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMilcclxuICAgICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIGhvdXI6IC9bMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKVxyXG4gICAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTMpKSxcclxuICAgICAgICAgICAgICBtaW51dGU6IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIi0tXCIgPyAwIDogdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8vPT09PT09PT09PT0gRk9STUFUTyAyNCBIT1JBUz09PT09PT09PT09XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICBob3VyOiAvWzAtMV1bMC05XTpbMC02XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKVxyXG4gICAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTMpKSxcclxuICAgICAgICAgICAgICBtaW51dGU6IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIjAwXCIgPyAwIDogdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIGlmIChlLmtleSA+IDEgJiYgdGhpcy5mb3JtYXQgPT0gMTIpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPiAyICYmIHRoaXMuZm9ybWF0ID09IDI0KSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihob3JhQWN0dWFsKSA8PSAxICYmIE51bWJlcihob3JhQWN0dWFsKSA+IDAgJiYgdGhpcy5jb250YWRvciA+IDAgJiYgdGhpcy5mb3JtYXQgPT0gMTIpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDExKSB9JHsgTnVtYmVyKE51bWJlcihob3JhQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkgPiAxMiA/IDEyIDogTnVtYmVyKGhvcmFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpXHJcbiAgICAgICAgICAgIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBob3VyOiAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXHJcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTMpKSxcclxuICAgICAgICAgICAgbWludXRlOiB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikgPT0gXCIwMFwiID8gMCA6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihob3JhQWN0dWFsKSA8PSAyICYmIE51bWJlcihob3JhQWN0dWFsKSA+IDAgJiYgdGhpcy5jb250YWRvciA+IDAgJiYgdGhpcy5mb3JtYXQgPT0gMjQpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDExKSB9JHsgTnVtYmVyKE51bWJlcihob3JhQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkgPiAyNCA/IDI0IDogTnVtYmVyKGhvcmFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpXHJcbiAgICAgICAgICAgIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICBsZXQgaG91cjtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGhvdXIgPSAvWzAtMV1bMC05XTpbMC02XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSlcclxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgaG91ciA9IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgaG91cixcclxuICAgICAgICAgICAgbWludXRlOiB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikgPT0gXCIwMFwiID8gMCA6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEzKSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgY29uc3QgcmVnZXggPSB0aGlzLmZvcm1hdCA9PSAxMiA/IC9bMC0xXVswLTldOlswLTZdWzAtOV0gW0EsUF1NLyA6IC9bMC0xXVswLTldOlswLTZdWzAtOV0vO1xyXG5cclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGhvdXI6IHJlZ2V4LnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKVxyXG4gICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDEzKSksXHJcbiAgICAgICAgICAgIG1pbnV0ZTpcclxuICAgICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikgPT0gXCIwMFwiIHx8IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSA9PSBcIi0tXCJcclxuICAgICAgICAgICAgICAgID8gMFxyXG4gICAgICAgICAgICAgICAgOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIGlmICgoTnVtYmVyKGUua2V5LnBhZFN0YXJ0KDIsIDApKSA+IDEgfHwgdGhpcy5jb250YWRvciA+IDEpICYmIHRoaXMuZm9ybWF0ID09IDEyKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKChOdW1iZXIoZS5rZXkucGFkU3RhcnQoMiwgMCkpID4gMiB8fCB0aGlzLmNvbnRhZG9yID4gMSkgJiYgdGhpcy5mb3JtYXQgPT0gMjQpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgIH1cclxuICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09IE1JTlVUT1MgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTYpIHtcclxuICAgICAgICBjb25zdCB2YWxvckFjdHVhbDogc3RyaW5nID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhO1xyXG4gICAgICAgIGNvbnN0IG1pbnV0b3NBY3R1YWxlczogc3RyaW5nID0gdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE0LCAxNik7XHJcbiAgICAgICAgaWYgKG1pbnV0b3NBY3R1YWxlcyA9PSBcIi0tXCIpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDE0KSB9JHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxNikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIG1pbnV0ZTogL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXHJcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIm1tXCIpKVxyXG4gICAgICAgICAgICAgIDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIGlmIChlLmtleSA+IDUpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgICAgICBlbHNlIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihtaW51dG9zQWN0dWFsZXMpIDw9IDUgJiYgTnVtYmVyKG1pbnV0b3NBY3R1YWxlcykgPiAwICYmIHRoaXMuY29udGFkb3IgPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxNCkgfSR7IE51bWJlcihOdW1iZXIobWludXRvc0FjdHVhbGVzKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkgPiA1OSA/IDU5IDogTnVtYmVyKG1pbnV0b3NBY3R1YWxlcykudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSlcclxuICAgICAgICAgICAgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxNikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIGxldCBtaW51dGU7XHJcbiAgICAgICAgICBjb25zdCByZWdleCA9IHRoaXMuZm9ybWF0ID09IDEyID8gL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vIDogL1swLTFdWzAtOV06WzAtNl1bMC05XS87XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBtaW51dGUgPSByZWdleC50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpKVxyXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJtbVwiKSlcclxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgbWludXRlID0gTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTQsIDE2KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICBtaW51dGUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcclxuICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgICBlbHNlIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTQpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE2KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbWludXRlOiAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcclxuICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwibW1cIikpXHJcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xyXG4gICAgICAgICAgaWYgKE51bWJlcihlLmtleS5wYWRTdGFydCgyLCAwKSkgPiA1IHx8IHRoaXMuY29udGFkb3IgPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICAgICAgZWxzZSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25FbWl0KCk7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT0gRVZFTlRPUyBURUNMQURPID09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgICBpZiAoZS5rZXkgPT0gXCJBcnJvd1JpZ2h0XCIpIHtcclxuICAgICAgICBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMikge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDUpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNiAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTApIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDExICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMykge1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTQgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE2KSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGlzLmZvcm1hdCA9PSAyNCkgdGhpcy5idG5PcGVuPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xyXG4gICAgICAgICAgdGhpcy5idG5PcGVuPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT0gXCJBcnJvd0xlZnRcIikge1xyXG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLmdvQmFjaygpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAzICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSA1KSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAyKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNiAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTApIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMSAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTMpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTQgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE2KSB7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTkpIHtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkudG9Mb3dlckNhc2UoKSA9PSBcImFcIikge1xyXG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTkpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsIS5zdWJzdHJpbmcoMCwgMTcpIH1BTWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGhvdXI6IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkudG9Mb3dlckNhc2UoKSA9PSBcInBcIikge1xyXG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTkpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsIS5zdWJzdHJpbmcoMCwgMTcpIH1QTWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcclxuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICAgIGhvdXI6IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5jb2RlID09IFwiU3BhY2VcIiAmJiB0aGlzLmF1dG9Db21wbGV0ZSkge1xyXG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XHJcbiAgICAgICAgY29uc3QgZGlhQWN0dWFsOiBzdHJpbmcgPSB0aGlzLnRvZGF5LmRheS50b1N0cmluZygpO1xyXG4gICAgICAgIGNvbnN0IG1lc0FjdHVhbDogc3RyaW5nID0gdGhpcy50b2RheS5tb250aC50b1N0cmluZygpO1xyXG4gICAgICAgIGNvbnN0IGFuaW9BY3R1YWw6IHN0cmluZyA9IHRoaXMudG9kYXkueWVhci50b1N0cmluZygpO1xyXG4gICAgICAgIGNvbnN0IGhvcmFBY3R1YWw6IHN0cmluZyA9IERhdGVVdGlsLnRvU3RyRm9ybWF0KERhdGVVdGlsLm5vdyhcIklTT0RBVEVUSU1FX05PX1RJTUVaT05FXCIpLCB0aGlzLmZvcm1hdCA9PSAyNCA/IFwiTUFTS18yNF9IT1VSU1wiIDogXCJNQVNLXzEyX0hPVVJTXCIpO1xyXG4gICAgICAgIGNvbnN0IHQ6IHN0cmluZyA9IERhdGVVdGlsLnRvU3RyRm9ybWF0KERhdGVVdGlsLm5vdyhcIklTT0RBVEVUSU1FX05PX1RJTUVaT05FXCIpLCBcIk1JRERBWV9JTkRJQ0FUT1JcIik7XHJcbiAgICAgICAgY29uc3QgbWludXRvc0FjdHVhbGVzOiBzdHJpbmcgPSBEYXRlVXRpbC5nZXRNaW51dGVzKERhdGVVdGlsLm5vdyhcIklTT0RBVEVUSU1FX05PX1RJTUVaT05FXCIpKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIFwiMFwiKTtcclxuICAgICAgICBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMikge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyBkaWFBY3R1YWwucGFkU3RhcnQoMiwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMikgfWA7XHJcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcclxuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgICAgIGRheTogdGhpcy50b2RheS5kYXksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAzICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSA1KSB7XHJcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAzKSB9JHsgbWVzQWN0dWFsLnBhZFN0YXJ0KDIsIFwiMFwiKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDUpIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICBtb250aDogdGhpcy50b2RheS5tb250aCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xyXG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgNikgfSR7IGFuaW9BY3R1YWwucGFkU3RhcnQoNCwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTApIH1gO1xyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XHJcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgICB5ZWFyOiB0aGlzLnRvZGF5LnllYXIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDExICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMykge1xyXG4gICAgICAgICAgbGV0IG51ZXZvVmFsb3I7XHJcbiAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMjQpIG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDExKSB9JHsgaG9yYUFjdHVhbCB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEzKSB9YDtcclxuICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZm9ybWF0ID09IDEyKVxyXG4gICAgICAgICAgICBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IGhvcmFBY3R1YWwgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMywgMTcpIH0keyB0LnRvVXBwZXJDYXNlKCkgfWA7XHJcblxyXG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvciEpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbWludXRlOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUgIT0gbnVsbCA/IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSA6IDAsXHJcbiAgICAgICAgICAgIGhvdXI6IHRoaXMuZm9ybWF0ID09IDEyID8gTnVtYmVyKGhvcmFBY3R1YWwpIDogTnVtYmVyKGhvcmFBY3R1YWwpICsgMTIsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTYpIHtcclxuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDE0KSB9JHsgbWludXRvc0FjdHVhbGVzLnBhZFN0YXJ0KDIsIFwiMFwiKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE2KSB9YDtcclxuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xyXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgICAgbWludXRlOiBOdW1iZXIobWludXRvc0FjdHVhbGVzKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xyXG4gICAgICAgICAgZWxzZSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09IFwiRW50ZXJcIiB8fCBlLmtleSA9PSBcIkFycm93RG93blwiKSB7XHJcbiAgICAgICAgdGhpcy5nb05leHQoKTtcclxuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PSBcIkFycm93VXBcIikge1xyXG4gICAgICAgIHRoaXMuZ29CYWNrKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT0gXCJEZWxldGVcIikge1xyXG4gICAgICAgIHRoaXMubGltcGlhclRvZG8oKTtcclxuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PSBcIkJhY2tzcGFjZVwiKSB7XHJcbiAgICAgICAgdGhpcy5saW1waWFyKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdvTmV4dCAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5uZXh0ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodGhpcy5uZXh0LmRpc2FibGVkIHx8IHRoaXMubmV4dC5yZWFkb25seSkge1xyXG4gICAgICAgIGlmICh0aGlzLm5leHRJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLm5leHRJc0Rpc2FibGUuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5uZXh0LmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLm5leHRJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5uZXh0SXNEaXNhYmxlLmZvY3VzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vbk5leHQuZW1pdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnb0JhY2sgKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYmFjayAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHRoaXMuYmFjay5kaXNhYmxlZCB8fCB0aGlzLmJhY2sucmVhZG9ubHkpIHtcclxuICAgICAgICBpZiAodGhpcy5iYWNrSXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5iYWNrSXNEaXNhYmxlLmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYmFjay5mb2N1cygpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5iYWNrSXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuYmFja0lzRGlzYWJsZS5mb2N1cygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25CYWNrLmVtaXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbGltcGlhclRvZG8gKCkge1xyXG4gICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAge1xyXG4gICAgICAgIGhvdXI6IG51bGwsXHJcbiAgICAgICAgbWludXRlOiBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgKTtcclxuICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgIHtcclxuICAgICAgICB5ZWFyOiBudWxsLFxyXG4gICAgICAgIG1vbnRoOiBudWxsLFxyXG4gICAgICAgIGRheTogbnVsbCxcclxuICAgICAgfSxcclxuICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICk7XHJcbiAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKFwiZGQvbW0veXl5eSAtLTotLSAtLVwiKTtcclxuICAgIGVsc2UgaWYgKHRoaXMuZm9ybWF0ID09IDI0KSB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShcImRkL21tL3l5eXkgLS06LS1cIik7XHJcbiAgICB0aW1lcig2MCkuc3Vic2NyaWJlKCgpPT4gdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMikpXHJcbiAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgfVxyXG5cclxuICBsaW1waWFyICgpIHtcclxuICAgIGlmICh0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAyKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgIGRheTogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKGBkZCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMikgfWApO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSAzICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSA1KSB7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgIG1vbnRoOiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoYCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMykgfW1tJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg1KSB9YCk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09IDYgJiYgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID09IDEwKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcclxuICAgICAgICAgIHllYXI6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCA2KSB9eXl5eSR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTApIH1gKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcclxuICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09IDExICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAxMykge1xyXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgaG91cjogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKGAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDExKSB9LS0keyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDEzKSB9YCk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT0gMTQgJiYgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID09IDE2KSB7XHJcbiAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICBtaW51dGU6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAxNCkgfS0tJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNikgfWApO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcclxuICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByZXZlbnREZWZhdWx0IChlOiBhbnkpIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2sgKGU6IEV2ZW50LCBpbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcblxyXG4gICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDAgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMSB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAyKSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAyKTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gNCB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA1KSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2IHx8XHJcbiAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDcgfHxcclxuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gOCB8fFxyXG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA5IHx8XHJcbiAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDEwXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDExIHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDEyIHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDEzKSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xyXG4gICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTQgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTUgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTYpIHtcclxuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNyB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxOCB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxOSkge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcclxuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcclxuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XHJcbiAgICAgIH0sIDEwMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XHJcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfVxyXG4gIH1cclxuICBvcGVuIChkOiBOZ2JJbnB1dERhdGVwaWNrZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSA9PSBcImRkL21tL3l5eXkgLS06LS0gLS1cIiB8fCB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSA9PSBcImRkL21tL3l5eXkgLS06LS1cIikge1xyXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XHJcbiAgICAgICAgaG91cjogbmV3IERhdGUoKS5nZXRIb3VycygpLFxyXG4gICAgICAgIG1pbnV0ZTogbmV3IERhdGUoKS5nZXRNaW51dGVzKCksXHJcbiAgICAgICAgc2Vjb25kOiBuZXcgRGF0ZSgpLmdldFNlY29uZHMoKSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xyXG4gICAgICAgIHllYXI6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgICBtb250aDogbmV3IERhdGUoKS5nZXRNb250aCgpICsgMSxcclxuICAgICAgICBkYXk6IG5ldyBEYXRlKCkuZ2V0RGF0ZSgpLFxyXG4gICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxyXG4gICAgICB9KTtcclxuICAgICAgY29uc3QgdmFsdWUgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XHJcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZS50b1N0cmluZygpLCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xyXG4gICAgICB0aGlzLm9uRW1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9jdXNPdXQgKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuYXJpYUxhYmVsID09IFwiTWludXRlc1wiKSB7XHJcbiAgICAgIHRoaXMubmdiRGF0ZXBpY2tlcj8uY2xvc2UoKTtcclxuICAgICAgaWYgKHRoaXMuZ29OZXh0V2hlblNlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuZ29OZXh0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW5cIj5cclxuICAgIDxsYWJlbCAqbmdJZj1cImxhYmVsICE9IG51bGwgJiYgbGFiZWwgIT0gJycgJiYgc2hvd0xhYmVsXCIgY2xhc3M9XCJkLWZsZXggc3VtYXgtbGFiZWwgbWItMCBwLTBcIlxyXG4gICAgICA+PHNwYW4gW3RpdGxlXT1cImxhYmVsXCIgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpc1wiPnt7IGxhYmVsIH19PC9zcGFuPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cInJlcXVpcmVkXCIgY2xhc3M9XCJtcy0xXCIgW2NsYXNzLnRleHQtZGFuZ2VyXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbFwiPiAqPC9zcGFuPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cImxhYmVsSW5mb1wiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZXhjbGFtYXRpb24tY2lyY2xlIHRleHQtaW5mbyBtcy0yXCIgW21hdFRvb2x0aXBdPVwidGV4dExhYmVsSW5mb1wiIG1hdFRvb2x0aXBDbGFzcz1cImJnLWluZm9cIj48L2k+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbGFiZWw+XHJcbiAgICA8aW5wdXRcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gcG9zaXRpb24tYWJzb2x1dGVcIlxyXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcclxuICAgICAgaWQ9XCJmYWtlSW5wdXRcIlxyXG4gICAgICBuZ2JEYXRlcGlja2VyXHJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJkYXRlQ29udHJvbFwiXHJcbiAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcclxuICAgICAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCJcclxuICAgICAgW21pbkRhdGVdPVwieyB5ZWFyOiAxOTYwLCBtb250aDogMSwgZGF5OiAxIH1cIlxyXG4gICAgICAjZDI9XCJuZ2JEYXRlcGlja2VyXCIgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICBpZD1cImlucHV0RGF0ZVRpbWVcIlxyXG4gICAgICAgICNpbnB1dERhdGVUaW1lXHJcbiAgICAgICAgc3R5bGU9XCJmbGV4OiAxXCJcclxuICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJjb250cm9scz8uZXJyb3JzICE9IG51bGwgJiYgKGNvbnRyb2xzPy5kaXJ0eSB8fCBjb250cm9scz8udG91Y2hlZCkgJiYgc3VibWl0dGVkXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAgIChmb2N1c291dCk9XCJmb2N1c091dElucHV0KClcIlxyXG4gICAgICAgIChrZXl1cCk9XCJvbktleVVwKCRldmVudClcIlxyXG4gICAgICAgIChkYmxjbGljayk9XCJwcmV2ZW50RGVmYXVsdCgkZXZlbnQpXCJcclxuICAgICAgICAoY2xpY2spPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiXHJcbiAgICAgICAgKG1vdXNldXApPVwib25DbGljaygkZXZlbnQsIGlucHV0RGF0ZVRpbWUpXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZGF0ZVRpbWVDb250cm9sXCIgLz5cclxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICNidG5PcGVuXHJcbiAgICAgICAgICAoa2V5dXAuQXJyb3dMZWZ0KT1cImdvQmFjaygpXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXHJcbiAgICAgICAgICAoa2V5dXAuQXJyb3dSaWdodCk9XCJjbGVhcmFibGUgPyBidG5DbGVhbi5mb2N1cygpIDogZ29OZXh0KClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWluZm8gcC0wIHJvdW5kZWQtMCB1c2UtYnV0dG9uXCJcclxuICAgICAgICAgIChjbGljayk9XCJkMi50b2dnbGUoKTsgb3BlbihkMilcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJmYSBmYS1jYWxlbmRhciB0ZXh0LWxpZ2h0IHB4LTFcIj48L2k+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgI2J0bkNsZWFuXHJcbiAgICAgICAgICBbaGlkZGVuXT1cIiFjbGVhcmFibGVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBwLTAgcm91bmRlZC0wIGxpbXBpYXJcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcclxuICAgICAgICAgIChjbGljayk9XCJsaW1waWFyVG9kbygpXCJcclxuICAgICAgICAgIChrZXl1cC5BcnJvd0xlZnQpPVwiYnRuT3Blbi5mb2N1cygpXCJcclxuICAgICAgICAgIChrZXl1cC5BcnJvd1JpZ2h0KT1cImdvTmV4dCgpXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwidGV4dC13aGl0ZSBwdC0xXCIgc3R5bGU9XCJmb250LXNpemU6IDE4cHg7XCIgW21hdFRvb2x0aXBdPVwiJ0xpbXBpYXInXCIgbWF0VG9vbHRpcENsYXNzPVwiYmctZGFuZ2VyXCI+Y2xvc2U8L21hdC1pY29uPiAtLT5cclxuICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtdGltZXMgcHgtMSB0ZXh0LWxpZ2h0XCI+PC9pPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGNvbnRhaW5lci10b29sdGlwbWVzc2FnZVwiPlxyXG4gICAgICAgIDx0b29sdGlwLW1lc3NhZ2VcclxuICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXHJcbiAgICAgICAgICBbY29udHJvbHNdPVwiY29udHJvbHNcIlxyXG4gICAgICAgICAgW3ZhbGlkYXRvck1lc3NhZ2VdPVwidmFsaWRhdG9yTWVzc2FnZVwiXHJcbiAgICAgICAgICBbdG9vbHRpcE1lc3NhZ2VdPVwidG9vbHRpcE1lc3NhZ2VcIlxyXG4gICAgICAgICAgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIj48L3Rvb2x0aXAtbWVzc2FnZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxlcnJvci1tZXNzYWdlXHJcbiAgICAgIFtsYWJlbF09XCJsYWJlbFwiXHJcbiAgICAgIFtjb250cm9sc109XCJjb250cm9sc1wiXHJcbiAgICAgIFt2YWxpZGF0b3JNZXNzYWdlXT1cInZhbGlkYXRvck1lc3NhZ2VcIlxyXG4gICAgICBbdG9vbHRpcE1lc3NhZ2VdPVwidG9vbHRpcE1lc3NhZ2VcIlxyXG4gICAgICBbc3VibWl0dGVkXT1cInN1Ym1pdHRlZFwiPjwvZXJyb3ItbWVzc2FnZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICAgIDxuZ2ItdGltZXBpY2tlciBbZm9ybUNvbnRyb2xdPVwiaG91cnNDb250cm9sXCIgW21lcmlkaWFuXT1cImZvcm1hdCA9PSAxMiA/IHRydWUgOiBmYWxzZVwiIChmb2N1c291dCk9XCJmb2N1c091dCgkZXZlbnQpXCI+PC9uZ2ItdGltZXBpY2tlcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
1196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3VtYXgtZXJwLWNvbXBvbmVudC9zcmMvbGliL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUvZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGtCQUFrQixHQUVuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sNEJBQTRCLENBQUM7QUFDeEgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFFN0IsTUFBTSxhQUFhLEdBQUcscUJBQXFCLENBQUM7QUFDNUMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUM7QUF1QnpDLE1BQU0sT0FBTywrQkFBK0I7SUE0SzFDLElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7UUEvS1EsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixjQUFTLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hDLG1DQUE4QixHQUFHLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3ZFLFVBQUssR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQU8xQzs7OztXQUlHO1FBQ00sVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUU1Qjs7OztXQUlHO1FBQ00sY0FBUyxHQUFZLElBQUksQ0FBQztRQUVuQzs7OztXQUlHO1FBQ00sYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVuQzs7OztXQUlHO1FBQ00sYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVuQzs7OztXQUlHO1FBQ00scUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBRTNDOzs7O1dBSUc7UUFDTSxtQkFBYyxHQUFZLElBQUksQ0FBQztRQUV4Qzs7OztXQUlHO1FBQ00sY0FBUyxHQUFZLElBQUksQ0FBQztRQUVuQzs7OztXQUlHO1FBQ00sV0FBTSxHQUFlLEVBQUUsQ0FBQztRQWdCakM7Ozs7V0FJRztRQUNNLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFcEM7Ozs7V0FJRztRQUNNLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBZ0JwQzs7OztXQUlHO1FBQ00sa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFeEM7Ozs7V0FJRztRQUNNLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUUzQzs7OztXQUlHO1FBQ00sY0FBUyxHQUFZLElBQUksQ0FBQztRQUVuQzs7OztXQUlHO1FBQ00sc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBRTVDOzs7O1dBSUc7UUFDTSxpQkFBWSxHQUFZLElBQUksQ0FBQztRQUV0Qzs7OztXQUlHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNoQixXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0MsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXpELGFBQVEsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLFlBQU8sR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEIsdUJBQWtCLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRy9CLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2Isb0JBQWUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3pELGlCQUFZLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQztZQUNwQyxJQUFJLEVBQUUsSUFBSTtZQUNWLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsZ0JBQVcsR0FBRyxJQUFJLGtCQUFrQixDQUFDO1lBQ25DLElBQUksRUFBRSxJQUFJO1lBQ1YsS0FBSyxFQUFFLElBQUk7WUFDWCxHQUFHLEVBQUUsSUFBSTtTQUNWLENBQUMsQ0FBQztRQUNILFVBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBT2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDNUUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ2xGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNsRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzlFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNwRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBR0QsUUFBUSxDQUFFLE9BQXdCO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQseUJBQXlCLENBQUUsRUFBYztRQUN2QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7Z0JBQUUsSUFBSSxDQUFDLFFBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDaEYsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRVIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUUsT0FBc0I7UUFDakMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN6QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDckUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFekMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRTdFLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFUixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBRSxHQUFRO1FBQ2xCLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUk7Z0JBQ2pDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNO2dCQUNyQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTTthQUN0QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDbEYsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFDRCxnQkFBZ0IsQ0FBRSxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxpQkFBaUIsQ0FBRSxFQUFPO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzs7WUFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMvQyxJQUNFLDJFQUEyRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQztvQkFDN0csOENBQThDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDakcsQ0FBQztvQkFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FDdkI7d0JBQ0UsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQU07d0JBQzFCLEdBQUcsR0FBRztxQkFDUCxFQUNELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUNyQixDQUFDO29CQUNGLElBQUksQ0FBQzt3QkFDSCxNQUFNLEtBQUssR0FBUSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFFckcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO29CQUNwRixDQUFDOzRCQUFTLENBQUM7d0JBQ1QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQzthQUNBLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMvQyxJQUNFLG9FQUFvRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQztvQkFDdEcsOENBQThDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDakcsQ0FBQztvQkFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FDdkI7d0JBQ0UsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7d0JBQ3pCLEdBQUcsR0FBRztxQkFDUCxFQUNELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUNyQixDQUFDO29CQUNGLElBQUksQ0FBQzt3QkFDSCxNQUFNLEtBQUssR0FBUSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO29CQUNwRixDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7d0JBQ2YsMEJBQTBCO29CQUM1QixDQUFDOzRCQUFTLENBQUM7d0JBQ1QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxNQUFNLENBQUUsWUFBaUIsSUFBSTtRQUMzQixJQUFJLENBQUM7WUFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNoRyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRTtZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDOUMsSUFDRSwyRUFBMkUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUM7b0JBQzdHLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQzNFLENBQUM7b0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQ3ZCO3dCQUNFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO3dCQUMxQixHQUFHLEdBQUc7cUJBQ1AsRUFDRCxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FDckIsQ0FBQztvQkFFRixJQUFJLENBQUM7d0JBQ0gsTUFBTSxLQUFLLEdBQVEsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3JHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztvQkFDcEYsQ0FBQztvQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO29CQUNqQixDQUFDOzRCQUFTLENBQUM7d0JBQ1QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQzthQUNBLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUM5QyxJQUNFLDJFQUEyRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQztvQkFDN0csdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDM0UsQ0FBQztvQkFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FDdkI7d0JBQ0UsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7d0JBQzFCLEdBQUcsR0FBRztxQkFDUCxFQUNELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUNyQixDQUFDO29CQUVGLElBQUksQ0FBQzt3QkFDSCxNQUFNLEtBQUssR0FBUSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzt3QkFDckcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO29CQUNwRixDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7b0JBQ2pCLENBQUM7NEJBQVMsQ0FBQzt3QkFDVCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2hCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFHLElBQUksQ0FBQyxZQUFZLEVBQUMsQ0FBQztZQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztZQUV6QyxJQUFJLENBQUMsS0FBSyxJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ25HLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QyxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFFekMsSUFDRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNsQixHQUFHLElBQUksSUFBSTtvQkFDWCxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNsQixHQUFHLElBQUksSUFBSTtvQkFDWCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuQixJQUFJLElBQUksTUFBTTtvQkFDZCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNuQixLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQ3RCLENBQUM7b0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQ3ZCO3dCQUNFLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7d0JBQzVFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7d0JBQ3pFLEdBQUcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7cUJBQ3RFLEVBQ0QsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQ3JCLENBQUM7b0JBQ0YsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUN4QyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUV4SCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7b0JBQzVDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBRS9ILElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUN4Qjt3QkFDRSxJQUFJO3dCQUNKLE1BQU07cUJBQ1AsRUFDRCxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FDckIsQ0FBQztvQkFDRixNQUFNLEtBQUssR0FBUSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDckcsSUFBSSxDQUFDO3dCQUNILElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztvQkFDcEYsQ0FBQzs0QkFBUyxDQUFDO3dCQUNULElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDaEIsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFFLENBQU07UUFDYixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBRXZCLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBRTFCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDaEQsc0VBQXNFO1lBQ3RFLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUM7Z0JBQ3hELE1BQU0sU0FBUyxHQUFXLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUV0RCxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDdEIsTUFBTSxVQUFVLEdBQUcsR0FBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUUsRUFBRSxDQUFDO29CQUM1RSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7d0JBQ3hCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO3dCQUN6QixHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQ3pELENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzt3QkFDbEIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNkLE9BQU87b0JBQ1QsQ0FBQzs7d0JBQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN2QixDQUFDO3FCQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2hGLE1BQU0sVUFBVSxHQUFHLEdBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDakksR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBRSxFQUFFLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQzt3QkFDeEIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7d0JBQ3pCLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDekQsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNkLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO29CQUNsQixPQUFPO2dCQUNULENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLFVBQVUsR0FBRyxHQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUUsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBRSxFQUFFLENBQUM7b0JBQzVFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQzt3QkFDeEIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7d0JBQ3pCLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDekQsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQzFELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO3dCQUNsQixLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUM5QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ2QsT0FBTztvQkFDVCxDQUFDOzt3QkFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNkLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEMsQ0FBQztZQUNELHNFQUFzRTtpQkFDakUsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxNQUFNLFdBQVcsR0FBVyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQztnQkFDeEQsTUFBTSxTQUFTLEdBQVcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXRELElBQUksU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO29CQUN0QixNQUFNLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxHQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUUsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBRSxFQUFFLENBQUM7b0JBQzVHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQzt3QkFDeEIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7d0JBQ3pCLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDM0QsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUNkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDZCxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzt3QkFDbEIsT0FBTztvQkFDVCxDQUFDOzt3QkFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZCLENBQUM7cUJBQU0sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDaEYsTUFBTSxVQUFVLEdBQUcsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUUsR0FBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUNqSyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFFLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO3dCQUN4QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSzt3QkFDekIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUMzRCxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7b0JBQ2xCLE9BQU87Z0JBQ1QsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sVUFBVSxHQUFHLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEdBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFFLEVBQUUsQ0FBQztvQkFDNUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO3dCQUN4QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSzt3QkFDekIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUMzRCxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDMUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNkLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO3dCQUNsQixPQUFPO29CQUNULENBQUM7O3dCQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsQ0FBQztnQkFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoQyxDQUFDO1lBQ0Qsc0VBQXNFO2lCQUNqRSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQy9ELE1BQU0sV0FBVyxHQUFXLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDO2dCQUN4RCxNQUFNLFVBQVUsR0FBVyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxVQUFVLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ3pCLE1BQU0sVUFBVSxHQUFHLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEdBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQztvQkFDN0csSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO3dCQUN4QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSzt3QkFDekIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3FCQUMzRCxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ2QsTUFBTSxVQUFVLEdBQUcsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUUsR0FBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBRSxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQzt3QkFDekgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDOzRCQUN4QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSzs0QkFDekIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3lCQUMzRCxDQUFDLENBQUM7d0JBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNkLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO3dCQUNsQixPQUFPO29CQUNULENBQUM7O3dCQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsQ0FBQztxQkFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNoRSxJQUFJLFVBQVUsQ0FBQztvQkFDZixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2hCLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO3dCQUMvQixVQUFVLEdBQUcsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUUsR0FBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFFLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxDQUFDO29CQUM5SCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sVUFBVSxHQUFHLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEdBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FDdkcsQ0FBQyxFQUNELEdBQUcsQ0FDSCxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQzt3QkFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDOzRCQUN4QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSzs0QkFDekIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3lCQUMzRCxDQUFDLENBQUM7d0JBQ0gsSUFDRSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJOzRCQUM1RCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQzVELENBQUM7NEJBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDOzRCQUNkLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7NEJBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDOzRCQUNsQixPQUFPO3dCQUNULENBQUM7NkJBQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQzs0QkFDeEUsVUFBVSxHQUFHLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEdBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUUsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBRSxFQUFFLENBQUM7NEJBQ25ILElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDOzRCQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztnQ0FDeEIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7Z0NBQ3pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzs2QkFDM0QsQ0FBQyxDQUFDOzRCQUNILElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzs0QkFDZCxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDOzRCQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzs0QkFDbEIsT0FBTzt3QkFDVCxDQUFDO29CQUNILENBQUM7b0JBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO3dCQUN4QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSzt3QkFDekIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3FCQUMzRCxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sVUFBVSxHQUFHLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEdBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQztvQkFDN0csSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO3dCQUN4QixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSzt3QkFDekIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3FCQUMzRCxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDZCxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFDRCxzRUFBc0U7aUJBQ2pFLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDaEUsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUM7Z0JBQ3hELE1BQU0sVUFBVSxHQUFXLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUV6RCxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDdkIsTUFBTSxVQUFVLEdBQUcsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsR0FBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxDQUFDO29CQUM5RyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMseUNBQXlDO29CQUN6QyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRTt3QkFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7NEJBQ3pCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLOzRCQUMxQixJQUFJLEVBQUUsOEJBQThCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQ0FDbEYsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO2dDQUNyRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7NEJBQ3pELE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNO3lCQUNuRyxDQUFDLENBQUM7b0JBQ0wseUNBQXlDOzt3QkFFdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7NEJBQ3pCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLOzRCQUMxQixJQUFJLEVBQUUsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQ0FDM0UsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO2dDQUNyRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7NEJBQ3pELE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNO3lCQUNuRyxDQUFDLENBQUM7b0JBQ0wsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLENBQUM7d0JBQ25DLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDZCxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQzt3QkFDbEIsT0FBTztvQkFDVCxDQUFDO3lCQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQzt3QkFDMUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNkLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO3dCQUNsQixPQUFPO29CQUNULENBQUM7O3dCQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsQ0FBQztxQkFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUN2RyxNQUFNLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxHQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQ3BLLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxDQUFDO29CQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7d0JBQ3pCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO3dCQUMxQixJQUFJLEVBQUUsOEJBQThCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDbEYsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUNyRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ3pELE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNO3FCQUNuRyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7b0JBQ2xCLE9BQU87Z0JBQ1QsQ0FBQztxQkFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUN2RyxNQUFNLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxHQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQ3BLLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxDQUFDO29CQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxJQUFJLENBQUM7b0JBQ1QsSUFBSSxDQUFDO3dCQUNILElBQUksR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUM1RSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLGNBQWUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7NEJBQ3JHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUM1RCxDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7d0JBQ2YsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQy9ELENBQUM7b0JBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7d0JBQ3pCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO3dCQUMxQixJQUFJO3dCQUNKLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNO3FCQUNuRyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7b0JBQ2xCLE9BQU87Z0JBQ1QsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sVUFBVSxHQUFHLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLEdBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQztvQkFDOUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUM7b0JBRTNGLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO3dCQUN6QixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSzt3QkFDMUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUN6RCxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLGNBQWUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7NEJBQ3JHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDekQsTUFBTSxFQUNKLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSTs0QkFDNUcsQ0FBQyxDQUFDLENBQUM7NEJBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU07cUJBQ3JDLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQzt3QkFDakYsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNkLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO3dCQUNsQixPQUFPO29CQUNULENBQUM7eUJBQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO3dCQUN4RixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ2QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7d0JBQ2xCLE9BQU87b0JBQ1QsQ0FBQzs7d0JBQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN2QixDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDZCxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFDRCxzRUFBc0U7aUJBQ2pFLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDaEUsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUM7Z0JBQ3hELE1BQU0sZUFBZSxHQUFXLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLGVBQWUsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxVQUFVLEdBQUcsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsR0FBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxDQUFDO29CQUM5RyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7d0JBQ3pCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO3dCQUMxQixNQUFNLEVBQUUsOEJBQThCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDcEYsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUNyRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7cUJBQzFELENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDZCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ2QsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUU7NEJBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzs7NEJBQ2xELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO3dCQUNsQixPQUFPO29CQUNULENBQUM7O3dCQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDdkIsQ0FBQztxQkFBTSxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUM1RixNQUFNLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxHQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQzlLLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxDQUFDO29CQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxNQUFNLENBQUM7b0JBQ1gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDM0YsSUFBSSxDQUFDO3dCQUNILE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDNUQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDOzRCQUNyRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDNUQsQ0FBQztvQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO3dCQUNmLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNqRSxDQUFDO29CQUNELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO3dCQUN6QixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSzt3QkFDMUIsTUFBTTtxQkFDUCxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2QsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUU7d0JBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzs7d0JBQ2xELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO29CQUNsQixPQUFPO2dCQUNULENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxHQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUUsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBRSxFQUFFLENBQUM7b0JBQzlHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQzt3QkFDekIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7d0JBQzFCLE1BQU0sRUFBRSw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUNwRixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLGNBQWUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7NEJBQ3JHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztxQkFDMUQsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQzFELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDZCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRTs0QkFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs0QkFDbEQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7d0JBQ2xCLE9BQU87b0JBQ1QsQ0FBQzs7d0JBQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN2QixDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDZCxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLHNFQUFzRTtZQUN0RSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQzFCLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDekQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLENBQUM7cUJBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNoRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDcEIsQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ2pFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixDQUFDO3FCQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDbEUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLENBQUM7cUJBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNsRSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRTt3QkFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3lCQUNsRCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRTt3QkFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDaEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLENBQUM7cUJBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNsRSxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLENBQUM7WUFDSCxDQUFDO2lCQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUN6RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLENBQUM7cUJBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNoRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDcEIsQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ2pFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixDQUFDO3FCQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDbEUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLENBQUM7cUJBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNsRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDcEIsQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ2xFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3RDLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDM0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7b0JBQy9DLE1BQU0sVUFBVSxHQUFHLEdBQUksV0FBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLElBQUksQ0FBQztvQkFDMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO3dCQUN6QixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSzt3QkFDMUIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUMxRyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNkLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7WUFDSCxDQUFDO2lCQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUMzRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztvQkFDL0MsTUFBTSxVQUFVLEdBQUcsR0FBSSxXQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsSUFBSSxDQUFDO29CQUMxRCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7d0JBQ3pCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO3dCQUMxQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLGNBQWUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7cUJBQzFHLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbEMsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ2xELE1BQU0sV0FBVyxHQUFXLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDO2dCQUN4RCxNQUFNLFNBQVMsR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEQsTUFBTSxTQUFTLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RELE1BQU0sVUFBVSxHQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0RCxNQUFNLFVBQVUsR0FBVyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDaEosTUFBTSxDQUFDLEdBQVcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztnQkFDcEcsTUFBTSxlQUFlLEdBQVcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN6SCxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3pELE1BQU0sVUFBVSxHQUFHLEdBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFFLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUUsRUFBRSxDQUFDO29CQUNsRixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQ3ZCO3dCQUNFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO3dCQUN6QixHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHO3FCQUNwQixFQUNELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUNyQixDQUFDO29CQUNGLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLENBQUM7cUJBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNoRSxNQUFNLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRSxHQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBRSxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFFLEVBQUUsQ0FBQztvQkFDbEgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUN2Qjt3QkFDRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSzt3QkFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztxQkFDeEIsRUFDRCxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FDckIsQ0FBQztvQkFDRixLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQyxDQUFDO3FCQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDakUsTUFBTSxVQUFVLEdBQUcsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUUsR0FBSSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUUsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBRSxFQUFFLENBQUM7b0JBQ3BILElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FDdkI7d0JBQ0UsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7d0JBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7cUJBQ3RCLEVBQ0QsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQ3JCLENBQUM7b0JBQ0YsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbEMsQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ2xFLElBQUksVUFBVSxDQUFDO29CQUNmLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO3dCQUFFLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxHQUFJLFVBQVcsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBRSxFQUFFLENBQUM7eUJBQ2hILElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO3dCQUN4QixVQUFVLEdBQUcsR0FBSSxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsR0FBSSxVQUFXLEdBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFFLEdBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRyxFQUFFLENBQUM7b0JBRXhILElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVcsQ0FBQyxDQUFDO29CQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQzt3QkFDekIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7d0JBQzFCLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ25GLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtxQkFDdkUsQ0FBQyxDQUFDO29CQUNILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7cUJBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNsRSxNQUFNLFVBQVUsR0FBRyxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxHQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBRSxHQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQztvQkFDMUgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO3dCQUN6QixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSzt3QkFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUM7cUJBQ2hDLENBQUMsQ0FBQztvQkFDSCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRTt3QkFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDOzt3QkFDbEQsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztnQkFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsQ0FBQztpQkFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixDQUFDO2lCQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLENBQUM7aUJBQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsQ0FBQztpQkFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM3QixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUyxFQUFFLENBQUM7WUFDM0IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUM3QyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzdCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUN4QjtZQUNFLElBQUksRUFBRSxJQUFJO1lBQ1YsTUFBTSxFQUFFLElBQUk7U0FDYixFQUNELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUNyQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQ3ZCO1lBQ0UsSUFBSSxFQUFFLElBQUk7WUFDVixLQUFLLEVBQUUsSUFBSTtZQUNYLEdBQUcsRUFBRSxJQUFJO1NBQ1YsRUFDRCxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FDckIsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFO1lBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQzthQUN2RSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRTtZQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDOUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0csSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQ3ZCO2dCQUNFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO2dCQUN6QixHQUFHLEVBQUUsSUFBSTthQUNWLEVBQ0QsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQ3JCLENBQUM7WUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxLQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUUsRUFBRSxDQUFDLENBQUM7WUFDakYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdEgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQ3ZCO2dCQUNFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO2dCQUN6QixLQUFLLEVBQUUsSUFBSTthQUNaLEVBQ0QsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQ3JCLENBQUM7WUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFFLEtBQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBRSxFQUFFLENBQUMsQ0FBQztZQUNqSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNwQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN2SCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FDdkI7Z0JBQ0UsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7Z0JBQ3pCLElBQUksRUFBRSxJQUFJO2FBQ1gsRUFDRCxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FDckIsQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUUsT0FBUSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3hILElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUN4QjtnQkFDRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSztnQkFDekIsSUFBSSxFQUFFLElBQUk7YUFDWCxFQUNELEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUNyQixDQUFDO1lBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxLQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsY0FBYyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxZQUFZLElBQUksRUFBRSxFQUFFLENBQUM7WUFDeEgsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQ3hCO2dCQUNFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLO2dCQUN6QixNQUFNLEVBQUUsSUFBSTthQUNiLEVBQ0QsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQ3JCLENBQUM7WUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFFLEtBQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBRSxFQUFFLENBQUMsQ0FBQztZQUNuSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUNELGNBQWMsQ0FBRSxDQUFNO1FBQ3BCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxPQUFPLENBQUUsQ0FBUSxFQUFFLEtBQXVCO1FBQ3hDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUVuQixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUUxQixJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDeEYsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDOUIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ2xCLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDVixDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9GLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQzlCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsQ0FBQzthQUFNLElBQ0wsS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDO1lBQ3pCLEtBQUssQ0FBQyxjQUFjLElBQUksQ0FBQztZQUN6QixLQUFLLENBQUMsY0FBYyxJQUFJLENBQUM7WUFDekIsS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDO1lBQ3pCLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxFQUMxQixDQUFDO1lBQ0QsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDOUIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ2xCLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDVixDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2xHLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQzlCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNsRyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUM5QixLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDbEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNWLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbEcsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDOUIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ2xCLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDVixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQzlCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLENBQUUsQ0FBcUI7UUFDekIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxxQkFBcUIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQzVHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO2dCQUN6QixJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Z0JBQzNCLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRTtnQkFDL0IsTUFBTSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFO2FBQ2hDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO2dCQUN4QixJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7Z0JBQzlCLEtBQUssRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUM7Z0JBQ2hDLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRTtnQkFDekIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUs7YUFDM0IsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDaEcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQzdGLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBRSxLQUFVO1FBQ2xCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksU0FBUyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOytHQXJuQ1UsK0JBQStCO21HQUEvQiwrQkFBK0IscW9CQWpCL0I7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixLQUFLLEVBQUUsSUFBSTtnQkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUUsRUFBRSxDQUFDLCtCQUErQixDQUFDO2dCQUM3RCwrQ0FBK0M7YUFDaEQ7WUFDRDtnQkFDRSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztnQkFDOUQsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNELElBQUk7WUFDSixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUU7WUFDOUQsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFO1NBQ3RFLGlhQ3pESCxrNkdBaUZBOzs0RkR0QmEsK0JBQStCO2tCQXJCM0MsU0FBUzsrQkFDRSwyQkFBMkIsYUFHMUI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFFLEVBQUUsZ0NBQWdDLENBQUM7NEJBQzdELCtDQUErQzt5QkFDaEQ7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdDQUFnQyxDQUFDOzRCQUM5RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRCxJQUFJO3dCQUNKLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRTt3QkFDOUQsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFO3FCQUN0RTt3REFRMkIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUNKLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDRyxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ0osYUFBYTtzQkFBN0IsU0FBUzt1QkFBQyxJQUFJO2dCQU9OLEtBQUs7c0JBQWIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBT0csUUFBUTtzQkFBaEIsS0FBSztnQkFPRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBT0csY0FBYztzQkFBdEIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLE1BQU07c0JBQWQsS0FBSztnQkFPRyxJQUFJO3NCQUFaLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBT0csSUFBSTtzQkFBWixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFPRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBT0csU0FBUztzQkFBakIsS0FBSztnQkFPRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBT0csWUFBWTtzQkFBcEIsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgdmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTmdiQ2FsZW5kYXIsIE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIE5nYkRhdGVwaWNrZXJJMThuLCBOZ2JJbnB1dERhdGVwaWNrZXIgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcbmltcG9ydCB7IEN1c3RvbURhdGVwaWNrZXJGb3JtYXQgfSBmcm9tIFwiLi4vZGF0ZS1waWNrZXIvQ3VzdG9tRGF0ZVBpY2tlckZvcm1hdFwiO1xuaW1wb3J0IHsgQ3VzdG9tRGF0ZXBpY2tlckkxOG4sIEkxOG4gfSBmcm9tIFwiLi4vZGF0ZS1waWNrZXIvQ3VzdG9tRGF0ZVBpY2tlckkxOG5cIjtcbmltcG9ydCB7IERhdGVUaW1lTW9kZWwgfSBmcm9tIFwiLi4vdXRpbHMvRGF0ZVRpbWVNb2RlbFwiO1xuaW1wb3J0IHsgZm9ybWF0SG91ciB9IGZyb20gXCIuLi91dGlscy9EYXRlVGltZVBpY2tlckVkaXRhYmxlXCI7XG5pbXBvcnQgeyBEYXRlVXRpbCB9IGZyb20gXCIuLi91dGlscy9EYXRlVXRpbFwiO1xuaW1wb3J0IHsgRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UgfSBmcm9tIFwiLi9kYXRlLXRpbWUtcGlja2VyLWVkaXRhYmxlLnNlcnZpY2VcIjtcbmltcG9ydCB7IHRpbWVyIH0gZnJvbSBcInJ4anNcIjtcblxuY29uc3QgTUFTS18xMl9IT1VSUyA9IFwiZGQvbW0veXl5eSAtLTotLSAtLVwiO1xuY29uc3QgTUFTS18yNF9IT1VSUyA9IFwiZGQvbW0veXl5eSAtLTotLVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiZGF0ZS10aW1lLXBpY2tlci1lZGl0YWJsZVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2RhdGUtdGltZS1waWNrZXItZWRpdGFibGUuY29tcG9uZW50LnNjc3NcIl0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKT0+IERhdGVUaW1lUGlja2VyRWRpdGFibGVDb21wb25lbnQpXG4gICAgICAvL3VzZUV4aXN0aW5nOiBEYXRlVGltZVBpY2tlckVkaXRhYmxlQ29tcG9uZW50LFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVUaW1lUGlja2VyRWRpdGFibGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICBJMThuLFxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZXBpY2tlckkxOG4sIHVzZUNsYXNzOiBDdXN0b21EYXRlcGlja2VySTE4biB9LFxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgdXNlQ2xhc3M6IEN1c3RvbURhdGVwaWNrZXJGb3JtYXQgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVQaWNrZXJFZGl0YWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgX2RhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcbiAgcHJpdmF0ZSBfY2FsZW5kYXIgPSBpbmplY3QoTmdiQ2FsZW5kYXIpO1xuICBwcml2YXRlIF9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZSA9IGluamVjdChEYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZSk7XG4gIHByaXZhdGUgX2NkcmYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIEBWaWV3Q2hpbGQoXCJpbnB1dERhdGVUaW1lXCIpIGlucHV0RGF0ZVRpbWU6IGFueTtcbiAgQFZpZXdDaGlsZChcImJ0bk9wZW5cIikgYnRuT3BlbiE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoXCJidG5DbGVhblwiKSBidG5DbGVhbiE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoXCJkMlwiKSBuZ2JEYXRlcGlja2VyITogTmdiSW5wdXREYXRlcGlja2VyO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGV4dG8gc3VwZXJpb3JcbiAgICogQGRlZmF1bHQgXCJcIlxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSBcIlwiO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb250cm9sYSBsYSB2aXN1YWxpemFjacOzbiBkZWwgdGV4dG8gc3VwZXJpb3JcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSBzaG93TGFiZWw6IGJvb2xlYW4gPSB0cnVlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBFc3RhYmxlY2UgZWwgY29udHJvbCBjb21vIHNvbG8gbGVjdHVyYVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbmRpY2Egc2kgZWwgY2FtcG8gZXMgb2JsaWdhdG9yaW9cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTXVlc3RyYSBtZW5zYWplcyBkZSB2YWxpZGFjacOzblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSB2YWxpZGF0b3JNZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE11ZXN0cmEgbWVuc2FqZXMgZGUgYXl1ZGEgY29tbyB0b29sdGlwc1xuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5kaWNhIHNpIGVsIGZvcm11bGFyaW8gaGEgc2lkbyBlbnZpYWRvIHBhcmEgbW9zdHJhciB2YWxpZGFjaW9uZXNcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSBzdWJtaXR0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGb3JtYXRvIGRlIGhvcmE6IDEyIG8gMjQgaG9yYXNcbiAgICogQGRlZmF1bHQgMjRcbiAgICogQHR5cGUgZm9ybWF0SG91clxuICAgKi9cbiAgQElucHV0KCkgZm9ybWF0OiBmb3JtYXRIb3VyID0gMjQ7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jaWEgYWwgc2lndWllbnRlIGNvbnRyb2wgcGFyYSBuYXZlZ2FjacOzblxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICogQHR5cGUgYW55XG4gICAqL1xuICBASW5wdXQoKSBuZXh0OiBhbnk7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jaWEgYWwgY29udHJvbCBhbHRlcm5hdGl2byBjdWFuZG8gZWwgc2lndWllbnRlIGVzdMOhIGRlc2hhYmlsaXRhZG9cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqIEB0eXBlIGFueVxuICAgKi9cbiAgQElucHV0KCkgbmV4dElzRGlzYWJsZTogYW55O1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBIYWJpbGl0YSBpbmZvcm1hY2nDs24gYWRpY2lvbmFsIHBhcmEgbGEgZXRpcXVldGFcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgbGFiZWxJbmZvOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRleHRvIGluZm9ybWF0aXZvIGFkaWNpb25hbCBwYXJhIGxhIGV0aXF1ZXRhXG4gICAqIEBkZWZhdWx0IFwiXCJcbiAgICogQHR5cGUgc3RyaW5nXG4gICAqL1xuICBASW5wdXQoKSB0ZXh0TGFiZWxJbmZvOiBzdHJpbmcgPSBcIlwiO1xuICBcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZWZlcmVuY2lhIGFsIGNvbnRyb2wgYW50ZXJpb3IgcGFyYSBuYXZlZ2FjacOzblxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICogQHR5cGUgYW55XG4gICAqL1xuICBASW5wdXQoKSBiYWNrOiBhbnk7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jaWEgYWwgY29udHJvbCBhbHRlcm5hdGl2byBjdWFuZG8gZWwgYW50ZXJpb3IgZXN0w6EgZGVzaGFiaWxpdGFkb1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICogQHR5cGUgYW55XG4gICAqL1xuICBASW5wdXQoKSBiYWNrSXNEaXNhYmxlOiBhbnk7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFicmUgZWwgc2VsZWN0b3IgYWwgcmVjaWJpciBlbCBmb2NvXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIG9wZW5XaGVuRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTmF2ZWdhIGFsIHNpZ3VpZW50ZSBjb250cm9sIGFsIHNlbGVjY2lvbmFyIHVuYSBmZWNoYVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSBnb05leHRXaGVuU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE11ZXN0cmEgZWwgYm90w7NuIGRlIGVsaW1pbmFyXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIGNsZWFyYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEF1dG9jb21wbGV0YSBjb24gbGEgaG9yYS9taW51dG8gYWN0dWFsICh0cnVlKSBvIGNvbiAwMDowMCAoZmFsc2UpXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpIGF1dG9Db21wbGV0ZUhvdXJzOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhYmlsaXRhIGVsIGF1dG9jb21wbGV0YWRvXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgYXV0b0NvbXBsZXRlOiBib29sZWFuID0gdHJ1ZTtcbiAgXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRGVzaGFiaWxpdGEgZWwgY29udHJvbFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBAT3V0cHV0KCkgb25OZXh0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQmFjazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XG4gIG9uVG91Y2ggPSAoKSA9PiB7IH07XG4gIG9uVmFsaWRhdGlvbkNoYW5nZSA9ICgpID0+IHsgfTtcblxuICBjb250cm9sczogQWJzdHJhY3RDb250cm9sIHwgdW5kZWZpbmVkO1xuICBjb250YWRvciA9IDA7XG4gIHBvc2l0aW9uID0gMDtcbiAgZGF0ZVRpbWVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKFwiZGQvbW0veXl5eSAtLTotLSAtLVwiKTtcbiAgaG91cnNDb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7XG4gICAgaG91cjogbnVsbCxcbiAgICBtaW51dGU6IG51bGwsXG4gIH0pO1xuICBkYXRlQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woe1xuICAgIHllYXI6IG51bGwsXG4gICAgbW9udGg6IG51bGwsXG4gICAgZGF5OiBudWxsLFxuICB9KTtcbiAgdG9kYXkgPSB0aGlzLl9jYWxlbmRhci5nZXRUb2RheSgpO1xuXG4gIGdldCBzdHJpbmdGb3JtYXQgKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0ID09PSAxMiA/IFwiZGQvTU0veXl5eSBoaDptbSBhXCIgOiBcImRkL01NL3l5eXkgSEg6bW1cIjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2hvd0xhYmVsID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0U2hvd0xhYmVsKCk7XG4gICAgdGhpcy5vcGVuV2hlbkZvY3VzID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0T3BlbldoZW5Gb2N1cygpO1xuICAgIHRoaXMuZ29OZXh0V2hlblNlbGVjdCA9IHRoaXMuX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlLmdldEdvTmV4dFdoZW5TZWxlY3QoKTtcbiAgICB0aGlzLnZhbGlkYXRvck1lc3NhZ2UgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRWYWxpZGF0b3JNZXNzYWdlKCk7XG4gICAgdGhpcy50b29sdGlwTWVzc2FnZSA9IHRoaXMuX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlLmdldFRvb2x0aXBNZXNzYWdlKCk7XG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRTdWJtaXR0ZWQoKTtcbiAgICB0aGlzLmZvcm1hdCA9IHRoaXMuX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlLmdldEZvcm1hdCgpO1xuICAgIHRoaXMuY2xlYXJhYmxlID0gdGhpcy5fZGF0ZVRpbWVQaWNrZXJFZGl0YWJsZVNlcnZpY2UuZ2V0Q2xlYXJhYmxlKCk7XG4gICAgdGhpcy5hdXRvQ29tcGxldGVIb3VycyA9IHRoaXMuX2RhdGVUaW1lUGlja2VyRWRpdGFibGVTZXJ2aWNlLmdldEF1dG9Db21wbGV0ZUhvdXJzKCk7XG4gICAgdGhpcy5hdXRvQ29tcGxldGUgPSB0aGlzLl9kYXRlVGltZVBpY2tlckVkaXRhYmxlU2VydmljZS5nZXRBdXRvQ29tcGxldGUoKTtcbiAgfVxuXG5cbiAgdmFsaWRhdGUgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBhbnkge1xuICAgIHRoaXMuY29udHJvbHMgPSBjb250cm9sO1xuICAgIHRoaXMuX2NkcmYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT8oZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVmFsaWRhdGlvbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgbmdPbkluaXQgKCk6IHZvaWQge1xuICAgIHRoaXMuaG91cnNDaGFuZ2UoKTtcbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRhdGVDaGFuZ2UoKTtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgIGlmICghdGhpcy5jbGVhcmFibGUpIHRoaXMuYnRuQ2xlYW4hLm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XG4gICAgfSwgMTAwKTtcblxuICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikge1xuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoTUFTS18xMl9IT1VSUyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKE1BU0tfMjRfSE9VUlMpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzIChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbXCJzdWJtaXR0ZWRcIl0pIHtcbiAgICAgIGlmICh0aGlzLmNvbnRyb2xzICE9PSB1bmRlZmluZWQgJiYgY2hhbmdlc1tcInN1Ym1pdHRlZFwiXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgdGhpcy5jb250cm9scy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB0aGlzLmNvbnRyb2xzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb2N1cyAoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblxuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XG5cbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICB9LCAxMDApO1xuXG4gICAgaWYgKCF0aGlzLnJlYWRvbmx5ICYmIHRoaXMub3BlbldoZW5Gb2N1cykge1xuICAgICAgdGhpcy5uZ2JEYXRlcGlja2VyPy5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSAob2JqOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAob2JqICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoRGF0ZVRpbWVNb2RlbC5mcm9tTG9jYWxTdHJpbmcob2JqKSk7XG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XG4gICAgICAgIGhvdXI6IHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUuaG91cixcbiAgICAgICAgbWludXRlOiB0aGlzLmRhdGVDb250cm9sLnZhbHVlLm1pbnV0ZSxcbiAgICAgICAgc2Vjb25kOiB0aGlzLmRhdGVDb250cm9sLnZhbHVlLnNlY29uZCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKG9iaiwgdGhpcy5zdHJpbmdGb3JtYXQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saW1waWFyVG9kbygpO1xuICAgIH1cbiAgfVxuICByZWdpc3Rlck9uQ2hhbmdlIChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkIChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB0aGlzLmRhdGVUaW1lQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgZWxzZSB0aGlzLmRhdGVUaW1lQ29udHJvbC5lbmFibGUoKTtcbiAgfVxuXG4gIGhvdXJzQ2hhbmdlICgpIHtcbiAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldIFswLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhKSB8fFxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldLy50ZXN0KHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMTApKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlISxcbiAgICAgICAgICAgICAgLi4ucmVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgaW5wdXQ6IGFueSA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlQ29udHJvbC52YWx1ZSwgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUpKTtcblxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGlucHV0LCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMjQpXG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldIFswLTFdWzAtOV06WzAtNl1bMC05XS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEpIHx8XG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAxMCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICAgIC4uLnJlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oaW5wdXQsIHRoaXMuc3RyaW5nRm9ybWF0KSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8qIGNvbnNvbGUuZXJyb3IoZXJyb3IpICovXG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG9uRW1pdCAoZW1pdFZhbHVlOiBhbnkgPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xuICAgICAgZW1pdFZhbHVlID0gdGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLnRvU3RyaW5nKCksIFwieXl5eS1NTS1kZFRISDptbVwiKTtcbiAgICB9IGNhdGNoIChlKSB7IH1cbiAgICB0aGlzLm9uQ2hhbmdlKGVtaXRWYWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gIH1cblxuICBkYXRlQ2hhbmdlICgpIHtcbiAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXG4gICAgICB0aGlzLmRhdGVDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgL1swLTNdWzAtOV1cXC9bMC0xXVswLTldXFwvWzAtOV1bMC05XVswLTldWzAtOV0gWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEpIHx8XG4gICAgICAgICAgL1swLTFdWzAtOV06WzAtNl1bMC05XS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxNikpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxuICAgICAgICAgICAgICAuLi5yZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0OiBhbnkgPSBuZXcgRGF0ZVRpbWVNb2RlbChPYmplY3QuYXNzaWduKHRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsIHRoaXMuaG91cnNDb250cm9sLnZhbHVlKSk7XG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZSh0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oaW5wdXQsIHRoaXMuc3RyaW5nRm9ybWF0KSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIGVsc2UgaWYgKHRoaXMuZm9ybWF0ID09IDI0KVxuICAgICAgdGhpcy5kYXRlQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIC9bMC0zXVswLTldXFwvWzAtMV1bMC05XVxcL1swLTldWzAtOV1bMC05XVswLTldIFswLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhKSB8fFxuICAgICAgICAgIC9bMC0xXVswLTldOlswLTZdWzAtOV0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTYpKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgICAgLi4ucmVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dDogYW55ID0gbmV3IERhdGVUaW1lTW9kZWwoT2JqZWN0LmFzc2lnbih0aGlzLmRhdGVDb250cm9sLnZhbHVlLCB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZSkpO1xuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGlucHV0LCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG9uQmx1ciAoKTogdm9pZCB7XG4gICAgdGhpcy5vbkVtaXQoKTtcbiAgfVxuXG4gIGZvY3VzT3V0SW5wdXQgKCk6IHZvaWQge1xuICAgIGlmKHRoaXMuYXV0b0NvbXBsZXRlKXtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWU7XG5cbiAgICAgIGlmICgodmFsdWUgIT0gTUFTS18xMl9IT1VSUyAmJiB0aGlzLmZvcm1hdCA9PSAxMikgfHwgKHZhbHVlICE9IE1BU0tfMjRfSE9VUlMgJiYgdGhpcy5mb3JtYXQgPT0gMjQpKSB7XG4gICAgICAgIGNvbnN0IGRpYSA9IHZhbHVlPy5zdWJzdHJpbmcoMCwgMik7XG4gICAgICAgIGNvbnN0IG1lcyA9IHZhbHVlPy5zdWJzdHJpbmcoMywgNSk7XG4gICAgICAgIGNvbnN0IGFuaW8gPSB2YWx1ZT8uc3Vic3RyaW5nKDYsIDEwKTtcbiAgICAgICAgY29uc3QgaG9yYSA9IHZhbHVlPy5zdWJzdHJpbmcoMTEsIDEzKTtcbiAgICAgICAgY29uc3QgbWludXRvcyA9IHZhbHVlPy5zdWJzdHJpbmcoMTQsIDE2KTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgaXNOYU4oTnVtYmVyKGRpYSkpIHx8XG4gICAgICAgICAgZGlhID09IFwiMDBcIiB8fFxuICAgICAgICAgIGlzTmFOKE51bWJlcihtZXMpKSB8fFxuICAgICAgICAgIG1lcyA9PSBcIjAwXCIgfHxcbiAgICAgICAgICBpc05hTihOdW1iZXIoYW5pbykpIHx8XG4gICAgICAgICAgYW5pbyA9PSBcIjAwMDBcIiB8fFxuICAgICAgICAgIGlzTmFOKE51bWJlcihob3JhKSkgfHxcbiAgICAgICAgICBpc05hTihOdW1iZXIobWludXRvcykpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHllYXI6IGlzTmFOKE51bWJlcihhbmlvKSkgfHwgYW5pbyA9PSBcIjAwMDBcIiA/IHRoaXMudG9kYXkueWVhciA6IE51bWJlcihhbmlvKSxcbiAgICAgICAgICAgICAgbW9udGg6IGlzTmFOKE51bWJlcihtZXMpKSB8fCBtZXMgPT0gXCIwMFwiID8gdGhpcy50b2RheS5tb250aCA6IE51bWJlcihtZXMpLFxuICAgICAgICAgICAgICBkYXk6IGlzTmFOKE51bWJlcihkaWEpKSB8fCBkaWEgPT0gXCIwMFwiID8gdGhpcy50b2RheS5kYXkgOiBOdW1iZXIoZGlhKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICk7XG4gICAgICAgICAgbGV0IGhvdXIgPSB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5ob3VyO1xuICAgICAgICAgIGlmIChpc05hTihOdW1iZXIoaG9yYSkpKSBob3VyID0gdGhpcy5hdXRvQ29tcGxldGVIb3VycyA/IERhdGVVdGlsLmdldEhvdXJzKERhdGVVdGlsLm5vdyhcIklTT0RBVEVUSU1FX05PX1RJTUVaT05FXCIpKSA6IDA7XG5cbiAgICAgICAgICBsZXQgbWludXRlID0gdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlO1xuICAgICAgICAgIGlmIChpc05hTihOdW1iZXIobWludXRvcykpKSBtaW51dGUgPSB0aGlzLmF1dG9Db21wbGV0ZUhvdXJzID8gRGF0ZVV0aWwuZ2V0TWludXRlcyhEYXRlVXRpbC5ub3coXCJJU09EQVRFVElNRV9OT19USU1FWk9ORVwiKSkgOiAwO1xuXG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGhvdXIsXG4gICAgICAgICAgICAgIG1pbnV0ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgaW5wdXQ6IGFueSA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlQ29udHJvbC52YWx1ZSwgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUpKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGlucHV0LCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICB9XG4gIH1cblxuICBvbktleVVwIChlOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IGUudGFyZ2V0O1xuXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcblxuICAgIGlmICghaXNOYU4oTnVtYmVyKGUua2V5KSkgJiYgZS5rZXkudHJpbSgpICE9IFwiXCIpIHtcbiAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRElBID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XG4gICAgICAgIGNvbnN0IGRpYUFjdHVhbDogc3RyaW5nID0gdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDIpO1xuXG4gICAgICAgIGlmIChkaWFBY3R1YWwgPT0gXCJkZFwiKSB7XG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDIpIH1gO1xuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgIGRheTogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMikpLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcbiAgICAgICAgICBpZiAoZS5rZXkgPiAzKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIoZGlhQWN0dWFsKSA8PSAzICYmIE51bWJlcihkaWFBY3R1YWwpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCkge1xuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgTnVtYmVyKE51bWJlcihkaWFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDMxID8gMzEgOiBOdW1iZXIoZGlhQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KVxuICAgICAgICAgICAgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygyKSB9YDtcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICBkYXk6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDAsIDIpKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDIpIH1gO1xuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgIGRheTogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMikpLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcbiAgICAgICAgICBpZiAoTnVtYmVyKGUua2V5LnBhZFN0YXJ0KDIsIDApKSA+IDMgfHwgdGhpcy5jb250YWRvciA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25FbWl0KCk7XG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xuICAgICAgfVxuICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBNRVMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gNSkge1xuICAgICAgICBjb25zdCB2YWxvckFjdHVhbDogc3RyaW5nID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhO1xuICAgICAgICBjb25zdCBtZXNBY3R1YWw6IHN0cmluZyA9IHZhbG9yQWN0dWFsLnN1YnN0cmluZygzLCA1KTtcblxuICAgICAgICBpZiAobWVzQWN0dWFsID09IFwibW1cIikge1xuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDUpIH1gO1xuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgIG1vbnRoOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygzLCA1KSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xuICAgICAgICAgIGlmIChlLmtleSA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIobWVzQWN0dWFsKSA8PSAxICYmIE51bWJlcihtZXNBY3R1YWwpID4gMCAmJiB0aGlzLmNvbnRhZG9yID4gMCkge1xuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBOdW1iZXIoTnVtYmVyKG1lc0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gMTIgPyAxMiA6IE51bWJlcihtZXNBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpXG4gICAgICAgICAgICB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDUpIH1gO1xuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xuICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xuICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgIG1vbnRoOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygzLCA1KSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xuICAgICAgICAgIHRoaXMub25FbWl0KCk7XG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAzKSB9JHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZyg1KSB9YDtcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICBtb250aDogTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMywgNSkpLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcbiAgICAgICAgICBpZiAoTnVtYmVyKGUua2V5LnBhZFN0YXJ0KDIsIDApKSA+IDEgfHwgdGhpcy5jb250YWRvciA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XG4gICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uRW1pdCgpO1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcbiAgICAgIH1cbiAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gQcORTyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xuICAgICAgICBjb25zdCB2YWxvckFjdHVhbDogc3RyaW5nID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhO1xuICAgICAgICBjb25zdCBhbmlvQWN0dWFsOiBzdHJpbmcgPSB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNiwgMTApO1xuICAgICAgICBpZiAoYW5pb0FjdHVhbCA9PSBcInl5eXlcIikge1xuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBlLmtleS5wYWRTdGFydCg0LCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcbiAgICAgICAgICBpZiAoZS5rZXkgPiAyKSB7XG4gICAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgRGF0ZVV0aWwuZ2V0WWVhcihEYXRlVXRpbC5ub3coKSkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcbiAgICAgICAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoe1xuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxuICAgICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihhbmlvQWN0dWFsKSA8PSAyOTk5ICYmIE51bWJlcihhbmlvQWN0dWFsKSA+IDApIHtcbiAgICAgICAgICBsZXQgbnVldm9WYWxvcjtcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XG4gICAgICAgICAgaWYgKE51bWJlcihhbmlvQWN0dWFsKSA+PSAxMDAwKSB7XG4gICAgICAgICAgICBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgTnVtYmVyKGUua2V5KS50b1N0cmluZygpLnBhZFN0YXJ0KDQsIFwiMFwiKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgNikgfSR7IChOdW1iZXIoYW5pb0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpLnBhZFN0YXJ0KFxuICAgICAgICAgICAgICA0LFxuICAgICAgICAgICAgICBcIjBcIlxuICAgICAgICAgICAgKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xuICAgICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XG4gICAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICAgIHllYXI6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDYsIDEwKSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgTnVtYmVyKE51bWJlcihhbmlvQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KSkgPiAxMDAwICYmXG4gICAgICAgICAgICAgIE51bWJlcihOdW1iZXIoYW5pb0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpIDwgMzAwMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRoaXMub25FbWl0KCk7XG4gICAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XG4gICAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihOdW1iZXIoYW5pb0FjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gMjk5OSkge1xuICAgICAgICAgICAgICBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCA2KSB9JHsgRGF0ZVV0aWwuZ2V0WWVhcihEYXRlVXRpbC5ub3coKSkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMCkgfWA7XG4gICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xuICAgICAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxuICAgICAgICAgICAgICAgIHllYXI6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDYsIDEwKSksXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xuICAgICAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xuICAgICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBlLmtleS5wYWRTdGFydCg0LCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICB5ZWFyOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg2LCAxMCkpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGFkb3IrKztcbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoNiwgMTApO1xuICAgICAgfVxuICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBIT1JBID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XG4gICAgICAgIGNvbnN0IGhvcmFBY3R1YWw6IHN0cmluZyA9IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMSwgMTMpO1xuXG4gICAgICAgIGlmIChob3JhQWN0dWFsID09IFwiLS1cIikge1xuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDExKSB9JHsgZS5rZXkucGFkU3RhcnQoMiwgMCkgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMykgfWA7XG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XG4gICAgICAgICAgLy89PT09PT09PT09PSBGT1JNQVRPIDEyIEhPUkFTPT09PT09PT09PT1cbiAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXG4gICAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XG4gICAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxuICAgICAgICAgICAgICBob3VyOiAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcbiAgICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXG4gICAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTMpKSxcbiAgICAgICAgICAgICAgbWludXRlOiB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikgPT0gXCItLVwiID8gMCA6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vPT09PT09PT09PT0gRk9STUFUTyAyNCBIT1JBUz09PT09PT09PT09XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xuICAgICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgICAgaG91cjogL1swLTFdWzAtOV06WzAtNl1bMC05XS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcbiAgICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLl9kYXRlUGlwZS50cmFuc2Zvcm0oYDAxLzAxLzIwMjAgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkgfWAsIFwiSEhcIikpXG4gICAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTMpKSxcbiAgICAgICAgICAgICAgbWludXRlOiB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikgPT0gXCIwMFwiID8gMCA6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY29udGFkb3IrKztcbiAgICAgICAgICBpZiAoZS5rZXkgPiAxICYmIHRoaXMuZm9ybWF0ID09IDEyKSB7XG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPiAyICYmIHRoaXMuZm9ybWF0ID09IDI0KSB7XG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihob3JhQWN0dWFsKSA8PSAxICYmIE51bWJlcihob3JhQWN0dWFsKSA+IDAgJiYgdGhpcy5jb250YWRvciA+IDAgJiYgdGhpcy5mb3JtYXQgPT0gMTIpIHtcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IE51bWJlcihOdW1iZXIoaG9yYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gMTIgPyAxMiA6IE51bWJlcihob3JhQWN0dWFsKS50b1N0cmluZygpICsgTnVtYmVyKGUua2V5KVxuICAgICAgICAgICAgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMykgfWA7XG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICBob3VyOiAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKVxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpLFxuICAgICAgICAgICAgbWludXRlOiB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikgPT0gXCIwMFwiID8gMCA6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XG4gICAgICAgICAgdGhpcy5vbkVtaXQoKTtcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChOdW1iZXIoaG9yYUFjdHVhbCkgPD0gMiAmJiBOdW1iZXIoaG9yYUFjdHVhbCkgPiAwICYmIHRoaXMuY29udGFkb3IgPiAwICYmIHRoaXMuZm9ybWF0ID09IDI0KSB7XG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBOdW1iZXIoTnVtYmVyKGhvcmFBY3R1YWwpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpKSA+IDI0ID8gMjQgOiBOdW1iZXIoaG9yYUFjdHVhbCkudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSlcbiAgICAgICAgICAgIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMTMpIH1gO1xuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKG51ZXZvVmFsb3IpO1xuICAgICAgICAgIGxldCBob3VyO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBob3VyID0gL1swLTFdWzAtOV06WzAtNl1bMC05XS8udGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKVxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExLCAxMykpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBob3VyID0gTnVtYmVyKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEsIDEzKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaG91cnNDb250cm9sLnNldFZhbHVlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxuICAgICAgICAgICAgaG91cixcbiAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiMDBcIiA/IDAgOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xuICAgICAgICAgIHRoaXMub25FbWl0KCk7XG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTEpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEzKSB9YDtcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcbiAgICAgICAgICBjb25zdCByZWdleCA9IHRoaXMuZm9ybWF0ID09IDEyID8gL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vIDogL1swLTFdWzAtOV06WzAtNl1bMC05XS87XG5cbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgIGhvdXI6IHJlZ2V4LnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJISFwiKSlcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSwgMTMpKSxcbiAgICAgICAgICAgIG1pbnV0ZTpcbiAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpID09IFwiMDBcIiB8fCB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikgPT0gXCItLVwiXG4gICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgOiB0aGlzLmhvdXJzQ29udHJvbC52YWx1ZS5taW51dGUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xuICAgICAgICAgIGlmICgoTnVtYmVyKGUua2V5LnBhZFN0YXJ0KDIsIDApKSA+IDEgfHwgdGhpcy5jb250YWRvciA+IDEpICYmIHRoaXMuZm9ybWF0ID09IDEyKSB7XG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xuICAgICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH0gZWxzZSBpZiAoKE51bWJlcihlLmtleS5wYWRTdGFydCgyLCAwKSkgPiAyIHx8IHRoaXMuY29udGFkb3IgPiAxKSAmJiB0aGlzLmZvcm1hdCA9PSAyNCkge1xuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcbiAgICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XG4gICAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9IGVsc2UgdGhpcy5vbkVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uRW1pdCgpO1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xuICAgICAgfVxuICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09IE1JTlVUT1MgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTQgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE2KSB7XG4gICAgICAgIGNvbnN0IHZhbG9yQWN0dWFsOiBzdHJpbmcgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSE7XG4gICAgICAgIGNvbnN0IG1pbnV0b3NBY3R1YWxlczogc3RyaW5nID0gdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE0LCAxNik7XG4gICAgICAgIGlmIChtaW51dG9zQWN0dWFsZXMgPT0gXCItLVwiKSB7XG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTQpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE2KSB9YDtcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgIG1pbnV0ZTogL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJtbVwiKSlcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XG4gICAgICAgICAgaWYgKGUua2V5ID4gNSkge1xuICAgICAgICAgICAgdGhpcy5vbkVtaXQoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcbiAgICAgICAgICAgIGVsc2UgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcbiAgICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH0gZWxzZSB0aGlzLm9uRW1pdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihtaW51dG9zQWN0dWFsZXMpIDw9IDUgJiYgTnVtYmVyKG1pbnV0b3NBY3R1YWxlcykgPiAwICYmIHRoaXMuY29udGFkb3IgPiAwKSB7XG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTQpIH0keyBOdW1iZXIoTnVtYmVyKG1pbnV0b3NBY3R1YWxlcykudG9TdHJpbmcoKSArIE51bWJlcihlLmtleSkpID4gNTkgPyA1OSA6IE51bWJlcihtaW51dG9zQWN0dWFsZXMpLnRvU3RyaW5nKCkgKyBOdW1iZXIoZS5rZXkpXG4gICAgICAgICAgICB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE2KSB9YDtcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcbiAgICAgICAgICBsZXQgbWludXRlO1xuICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gdGhpcy5mb3JtYXQgPT0gMTIgPyAvWzAtMV1bMC05XTpbMC02XVswLTldIFtBLFBdTS8gOiAvWzAtMV1bMC05XTpbMC02XVswLTldLztcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgbWludXRlID0gcmVnZXgudGVzdCh0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSlcbiAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIm1tXCIpKVxuICAgICAgICAgICAgICA6IE51bWJlcih0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDE0LCAxNikpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBtaW51dGUgPSBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICBtaW51dGUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jb250YWRvcisrO1xuICAgICAgICAgIHRoaXMub25FbWl0KCk7XG4gICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xuICAgICAgICAgIGVsc2UgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMCwgMTQpIH0keyBlLmtleS5wYWRTdGFydCgyLCAwKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDE2KSB9YDtcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcbiAgICAgICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XG4gICAgICAgICAgICAuLi50aGlzLmhvdXJzQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgIG1pbnV0ZTogL1swLTFdWzAtOV06WzAtNl1bMC05XSBbQSxQXU0vLnRlc3QodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxMSkpXG4gICAgICAgICAgICAgID8gTnVtYmVyKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybShgMDEvMDEvMjAyMCAkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDExKSB9YCwgXCJtbVwiKSlcbiAgICAgICAgICAgICAgOiBOdW1iZXIodGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNCwgMTYpKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yKys7XG4gICAgICAgICAgaWYgKE51bWJlcihlLmtleS5wYWRTdGFydCgyLCAwKSkgPiA1IHx8IHRoaXMuY29udGFkb3IgPiAxKSB7XG4gICAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNywgMTkpO1xuICAgICAgICAgICAgZWxzZSBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xuICAgICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBlbHNlIHRoaXMub25FbWl0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT0gRVZFTlRPUyBURUNMQURPID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgaWYgKGUua2V5ID09IFwiQXJyb3dSaWdodFwiKSB7XG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gNSkge1xuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTYpIHtcbiAgICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT0gMTIpIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XG4gICAgICAgICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMjQpIHRoaXMuYnRuT3Blbj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xuICAgICAgICAgIHRoaXMuYnRuT3Blbj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09IFwiQXJyb3dMZWZ0XCIpIHtcbiAgICAgICAgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDAgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDIpIHtcbiAgICAgICAgICB0aGlzLmdvQmFjaygpO1xuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDMgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDUpIHtcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAyKTtcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDUpO1xuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDExICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMykge1xuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcbiAgICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTYpIHtcbiAgICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxMSwgMTMpO1xuICAgICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxOSkge1xuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XG4gICAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkudG9Mb3dlckNhc2UoKSA9PSBcImFcIikge1xuICAgICAgICBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTcgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE5KSB7XG4gICAgICAgICAgY29uc3QgdmFsb3JBY3R1YWwgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsIS5zdWJzdHJpbmcoMCwgMTcpIH1BTWA7XG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICBob3VyOiBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkudG9Mb3dlckNhc2UoKSA9PSBcInBcIikge1xuICAgICAgICBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTcgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDE5KSB7XG4gICAgICAgICAgY29uc3QgdmFsb3JBY3R1YWwgPSB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZTtcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsIS5zdWJzdHJpbmcoMCwgMTcpIH1QTWA7XG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICBob3VyOiBOdW1iZXIodGhpcy5fZGF0ZVBpcGUudHJhbnNmb3JtKGAwMS8wMS8yMDIwICR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTEpIH1gLCBcIkhIXCIpKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLm9uRW1pdCgpO1xuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZS5jb2RlID09IFwiU3BhY2VcIiAmJiB0aGlzLmF1dG9Db21wbGV0ZSkge1xuICAgICAgICBjb25zdCB2YWxvckFjdHVhbDogc3RyaW5nID0gdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhO1xuICAgICAgICBjb25zdCBkaWFBY3R1YWw6IHN0cmluZyA9IHRoaXMudG9kYXkuZGF5LnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IG1lc0FjdHVhbDogc3RyaW5nID0gdGhpcy50b2RheS5tb250aC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCBhbmlvQWN0dWFsOiBzdHJpbmcgPSB0aGlzLnRvZGF5LnllYXIudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgaG9yYUFjdHVhbDogc3RyaW5nID0gRGF0ZVV0aWwudG9TdHJGb3JtYXQoRGF0ZVV0aWwubm93KFwiSVNPREFURVRJTUVfTk9fVElNRVpPTkVcIiksIHRoaXMuZm9ybWF0ID09IDI0ID8gXCJNQVNLXzI0X0hPVVJTXCIgOiBcIk1BU0tfMTJfSE9VUlNcIik7XG4gICAgICAgIGNvbnN0IHQ6IHN0cmluZyA9IERhdGVVdGlsLnRvU3RyRm9ybWF0KERhdGVVdGlsLm5vdyhcIklTT0RBVEVUSU1FX05PX1RJTUVaT05FXCIpLCBcIk1JRERBWV9JTkRJQ0FUT1JcIik7XG4gICAgICAgIGNvbnN0IG1pbnV0b3NBY3R1YWxlczogc3RyaW5nID0gRGF0ZVV0aWwuZ2V0TWludXRlcyhEYXRlVXRpbC5ub3coXCJJU09EQVRFVElNRV9OT19USU1FWk9ORVwiKSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIik7XG4gICAgICAgIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAyKSB7XG4gICAgICAgICAgY29uc3QgbnVldm9WYWxvciA9IGAkeyBkaWFBY3R1YWwucGFkU3RhcnQoMiwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoMikgfWA7XG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgICAgZGF5OiB0aGlzLnRvZGF5LmRheSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICAgICAgICk7XG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMyAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gNSkge1xuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDMpIH0keyBtZXNBY3R1YWwucGFkU3RhcnQoMiwgXCIwXCIpIH0keyB2YWxvckFjdHVhbC5zdWJzdHJpbmcoNSkgfWA7XG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XG4gICAgICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgICAgbW9udGg6IHRoaXMudG9kYXkubW9udGgsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDYsIDEwKTtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2ICYmIGlucHV0LnNlbGVjdGlvbkVuZCA9PSAxMCkge1xuICAgICAgICAgIGNvbnN0IG51ZXZvVmFsb3IgPSBgJHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDAsIDYpIH0keyBhbmlvQWN0dWFsLnBhZFN0YXJ0KDQsIFwiMFwiKSB9JHsgdmFsb3JBY3R1YWwuc3Vic3RyaW5nKDEwKSB9YDtcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yKTtcbiAgICAgICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxuICAgICAgICAgICAgICB5ZWFyOiB0aGlzLnRvZGF5LnllYXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgJiYgaW5wdXQuc2VsZWN0aW9uRW5kID09IDEzKSB7XG4gICAgICAgICAgbGV0IG51ZXZvVmFsb3I7XG4gICAgICAgICAgaWYgKHRoaXMuZm9ybWF0ID09IDI0KSBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IGhvcmFBY3R1YWwgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMykgfWA7XG4gICAgICAgICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMTIpXG4gICAgICAgICAgICBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxMSkgfSR7IGhvcmFBY3R1YWwgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxMywgMTcpIH0keyB0LnRvVXBwZXJDYXNlKCkgfWA7XG5cbiAgICAgICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShudWV2b1ZhbG9yISk7XG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMuaG91cnNDb250cm9sLnZhbHVlLm1pbnV0ZSAhPSBudWxsID8gdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUubWludXRlIDogMCxcbiAgICAgICAgICAgIGhvdXI6IHRoaXMuZm9ybWF0ID09IDEyID8gTnVtYmVyKGhvcmFBY3R1YWwpIDogTnVtYmVyKGhvcmFBY3R1YWwpICsgMTIsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcbiAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCAmJiBpbnB1dC5zZWxlY3Rpb25FbmQgPT0gMTYpIHtcbiAgICAgICAgICBjb25zdCBudWV2b1ZhbG9yID0gYCR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygwLCAxNCkgfSR7IG1pbnV0b3NBY3R1YWxlcy5wYWRTdGFydCgyLCBcIjBcIikgfSR7IHZhbG9yQWN0dWFsLnN1YnN0cmluZygxNikgfWA7XG4gICAgICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUobnVldm9WYWxvcik7XG4gICAgICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoe1xuICAgICAgICAgICAgLi4udGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICBtaW51dGU6IE51bWJlcihtaW51dG9zQWN0dWFsZXMpLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICh0aGlzLmZvcm1hdCA9PSAxMikgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTcsIDE5KTtcbiAgICAgICAgICBlbHNlIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE0LCAxNik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkVtaXQoKTtcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT0gXCJFbnRlclwiIHx8IGUua2V5ID09IFwiQXJyb3dEb3duXCIpIHtcbiAgICAgICAgdGhpcy5nb05leHQoKTtcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT0gXCJBcnJvd1VwXCIpIHtcbiAgICAgICAgdGhpcy5nb0JhY2soKTtcbiAgICAgIH0gZWxzZSBpZiAoZS5rZXkgPT0gXCJEZWxldGVcIikge1xuICAgICAgICB0aGlzLmxpbXBpYXJUb2RvKCk7XG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09IFwiQmFja3NwYWNlXCIpIHtcbiAgICAgICAgdGhpcy5saW1waWFyKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ29OZXh0ICgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uZXh0ICE9IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMubmV4dC5kaXNhYmxlZCB8fCB0aGlzLm5leHQucmVhZG9ubHkpIHtcbiAgICAgICAgaWYgKHRoaXMubmV4dElzRGlzYWJsZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLm5leHRJc0Rpc2FibGUuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5uZXh0LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm5leHRJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMubmV4dElzRGlzYWJsZS5mb2N1cygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vbk5leHQuZW1pdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdvQmFjayAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYmFjayAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLmJhY2suZGlzYWJsZWQgfHwgdGhpcy5iYWNrLnJlYWRvbmx5KSB7XG4gICAgICAgIGlmICh0aGlzLmJhY2tJc0Rpc2FibGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5iYWNrSXNEaXNhYmxlLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYmFjay5mb2N1cygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5iYWNrSXNEaXNhYmxlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmJhY2tJc0Rpc2FibGUuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub25CYWNrLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsaW1waWFyVG9kbyAoKSB7XG4gICAgdGhpcy5jb250YWRvciA9IDA7XG4gICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoXG4gICAgICB7XG4gICAgICAgIGhvdXI6IG51bGwsXG4gICAgICAgIG1pbnV0ZTogbnVsbCxcbiAgICAgIH0sXG4gICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICk7XG4gICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcbiAgICAgIHtcbiAgICAgICAgeWVhcjogbnVsbCxcbiAgICAgICAgbW9udGg6IG51bGwsXG4gICAgICAgIGRheTogbnVsbCxcbiAgICAgIH0sXG4gICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICk7XG4gICAgaWYgKHRoaXMuZm9ybWF0ID09IDEyKSB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShcImRkL21tL3l5eXkgLS06LS0gLS1cIik7XG4gICAgZWxzZSBpZiAodGhpcy5mb3JtYXQgPT0gMjQpIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKFwiZGQvbW0veXl5eSAtLTotLVwiKTtcbiAgICB0aW1lcig2MCkuc3Vic2NyaWJlKCgpPT4gdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMikpXG4gICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICB0aGlzLm9uVG91Y2goKTtcbiAgfVxuXG4gIGxpbXBpYXIgKCkge1xuICAgIGlmICh0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAyKSB7XG4gICAgICB0aGlzLmRhdGVDb250cm9sLnNldFZhbHVlKFxuICAgICAgICB7XG4gICAgICAgICAgLi4udGhpcy5kYXRlQ29udHJvbC52YWx1ZSxcbiAgICAgICAgICBkYXk6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgICApO1xuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoYGRkJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygyKSB9YCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSgwLCAyKTtcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT0gMyAmJiB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gNSkge1xuICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZShcbiAgICAgICAge1xuICAgICAgICAgIC4uLnRoaXMuZGF0ZUNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgbW9udGg6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgICApO1xuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoYCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMykgfW1tJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZyg1KSB9YCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSgzLCA1KTtcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT0gNiAmJiB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gMTApIHtcbiAgICAgIHRoaXMuZGF0ZUNvbnRyb2wuc2V0VmFsdWUoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxuICAgICAgICAgIHllYXI6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgICApO1xuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoYCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgNikgfXl5eXkkeyB0aGlzLmRhdGVUaW1lQ29udHJvbC52YWx1ZSEuc3Vic3RyaW5nKDEwKSB9YCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICB0aGlzLmlucHV0RGF0ZVRpbWUubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XG4gICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09IDExICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAxMykge1xuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxuICAgICAgICAgIGhvdXI6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICAgIHsgZW1pdEV2ZW50OiBmYWxzZSB9XG4gICAgICApO1xuICAgICAgdGhpcy5kYXRlVGltZUNvbnRyb2wuc2V0VmFsdWUoYCR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMCwgMTEpIH0tLSR7IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlIS5zdWJzdHJpbmcoMTMpIH1gKTtcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICAgIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDExLCAxMyk7XG4gICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09IDE0ICYmIHRoaXMuaW5wdXREYXRlVGltZS5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9PSAxNikge1xuICAgICAgdGhpcy5ob3Vyc0NvbnRyb2wuc2V0VmFsdWUoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50aGlzLmRhdGVDb250cm9sLnZhbHVlLFxuICAgICAgICAgIG1pbnV0ZTogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICAgICk7XG4gICAgICB0aGlzLmRhdGVUaW1lQ29udHJvbC5zZXRWYWx1ZShgJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygwLCAxNCkgfS0tJHsgdGhpcy5kYXRlVGltZUNvbnRyb2wudmFsdWUhLnN1YnN0cmluZygxNikgfWApO1xuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgICAgdGhpcy5pbnB1dERhdGVUaW1lLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMTQsIDE2KTtcbiAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgIH1cbiAgfVxuICBwcmV2ZW50RGVmYXVsdCAoZTogYW55KSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG9uQ2xpY2sgKGU6IEV2ZW50LCBpbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMCB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxIHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDIpIHtcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMik7XG4gICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB9LCAxMDApO1xuICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMyB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA0IHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDUpIHtcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMywgNSk7XG4gICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB9LCAxMDApO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA2IHx8XG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA3IHx8XG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA4IHx8XG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSA5IHx8XG4gICAgICBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxMFxuICAgICkge1xuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSg2LCAxMCk7XG4gICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB9LCAxMDApO1xuICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTEgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTIgfHwgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT0gMTMpIHtcbiAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMTEsIDEzKTtcbiAgICAgICAgdGhpcy5jb250YWRvciA9IDA7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfSBlbHNlIGlmIChpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNCB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNSB8fCBpbnB1dC5zZWxlY3Rpb25TdGFydCA9PSAxNikge1xuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxNCwgMTYpO1xuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgfSwgMTAwKTtcbiAgICB9IGVsc2UgaWYgKGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE3IHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE4IHx8IGlucHV0LnNlbGVjdGlvblN0YXJ0ID09IDE5KSB7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDE3LCAxOSk7XG4gICAgICAgIHRoaXMuY29udGFkb3IgPSAwO1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB9LCAxMDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDAsIDIpO1xuICAgICAgICB0aGlzLmNvbnRhZG9yID0gMDtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cbiAgb3BlbiAoZDogTmdiSW5wdXREYXRlcGlja2VyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlID09IFwiZGQvbW0veXl5eSAtLTotLSAtLVwiIHx8IHRoaXMuZGF0ZVRpbWVDb250cm9sLnZhbHVlID09IFwiZGQvbW0veXl5eSAtLTotLVwiKSB7XG4gICAgICB0aGlzLmhvdXJzQ29udHJvbC5zZXRWYWx1ZSh7XG4gICAgICAgIGhvdXI6IG5ldyBEYXRlKCkuZ2V0SG91cnMoKSxcbiAgICAgICAgbWludXRlOiBuZXcgRGF0ZSgpLmdldE1pbnV0ZXMoKSxcbiAgICAgICAgc2Vjb25kOiBuZXcgRGF0ZSgpLmdldFNlY29uZHMoKSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kYXRlQ29udHJvbC5zZXRWYWx1ZSh7XG4gICAgICAgIHllYXI6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgbW9udGg6IG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDEsXG4gICAgICAgIGRheTogbmV3IERhdGUoKS5nZXREYXRlKCksXG4gICAgICAgIC4uLnRoaXMuaG91cnNDb250cm9sLnZhbHVlLFxuICAgICAgfSk7XG4gICAgICBjb25zdCB2YWx1ZSA9IG5ldyBEYXRlVGltZU1vZGVsKE9iamVjdC5hc3NpZ24odGhpcy5kYXRlQ29udHJvbC52YWx1ZSwgdGhpcy5ob3Vyc0NvbnRyb2wudmFsdWUpKTtcbiAgICAgIHRoaXMuZGF0ZVRpbWVDb250cm9sLnNldFZhbHVlKHRoaXMuX2RhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZS50b1N0cmluZygpLCB0aGlzLnN0cmluZ0Zvcm1hdCkpO1xuICAgICAgdGhpcy5vbkVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBmb2N1c091dCAoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmIChldmVudC50YXJnZXQuYXJpYUxhYmVsID09IFwiTWludXRlc1wiKSB7XG4gICAgICB0aGlzLm5nYkRhdGVwaWNrZXI/LmNsb3NlKCk7XG4gICAgICBpZiAodGhpcy5nb05leHRXaGVuU2VsZWN0KSB7XG4gICAgICAgIHRoaXMuZ29OZXh0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW5cIj5cbiAgICA8bGFiZWwgKm5nSWY9XCJsYWJlbCAhPSBudWxsICYmIGxhYmVsICE9ICcnICYmIHNob3dMYWJlbFwiIGNsYXNzPVwiZC1mbGV4IHN1bWF4LWxhYmVsIG1iLTAgcC0wXCJcbiAgICAgID48c3BhbiBbdGl0bGVdPVwibGFiZWxcIiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7IG92ZXJmbG93OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzXCI+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cInJlcXVpcmVkXCIgY2xhc3M9XCJtcy0xXCIgW2NsYXNzLnRleHQtZGFuZ2VyXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbFwiPiAqPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJsYWJlbEluZm9cIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1leGNsYW1hdGlvbi1jaXJjbGUgdGV4dC1pbmZvIG1zLTJcIiBbbWF0VG9vbHRpcF09XCJ0ZXh0TGFiZWxJbmZvXCIgbWF0VG9vbHRpcENsYXNzPVwiYmctaW5mb1wiPjwvaT5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIHBvc2l0aW9uLWFic29sdXRlXCJcbiAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgaWQ9XCJmYWtlSW5wdXRcIlxuICAgICAgbmdiRGF0ZXBpY2tlclxuICAgICAgW2Zvcm1Db250cm9sXT1cImRhdGVDb250cm9sXCJcbiAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiXG4gICAgICBbbWluRGF0ZV09XCJ7IHllYXI6IDE5NjAsIG1vbnRoOiAxLCBkYXk6IDEgfVwiXG4gICAgICAjZDI9XCJuZ2JEYXRlcGlja2VyXCIgLz5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIHJlYWRvbmx5XG4gICAgICAgIGlkPVwiaW5wdXREYXRlVGltZVwiXG4gICAgICAgICNpbnB1dERhdGVUaW1lXG4gICAgICAgIHN0eWxlPVwiZmxleDogMVwiXG4gICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImNvbnRyb2xzPy5lcnJvcnMgIT0gbnVsbCAmJiAoY29udHJvbHM/LmRpcnR5IHx8IGNvbnRyb2xzPy50b3VjaGVkKSAmJiBzdWJtaXR0ZWRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgIChmb2N1c291dCk9XCJmb2N1c091dElucHV0KClcIlxuICAgICAgICAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCJcbiAgICAgICAgKGRibGNsaWNrKT1cInByZXZlbnREZWZhdWx0KCRldmVudClcIlxuICAgICAgICAoY2xpY2spPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZXVwKT1cIm9uQ2xpY2soJGV2ZW50LCBpbnB1dERhdGVUaW1lKVwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJkYXRlVGltZUNvbnRyb2xcIiAvPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgI2J0bk9wZW5cbiAgICAgICAgICAoa2V5dXAuQXJyb3dMZWZ0KT1cImdvQmFjaygpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgcmVhZG9ubHlcIlxuICAgICAgICAgIChrZXl1cC5BcnJvd1JpZ2h0KT1cImNsZWFyYWJsZSA/IGJ0bkNsZWFuLmZvY3VzKCkgOiBnb05leHQoKVwiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWluZm8gcC0wIHJvdW5kZWQtMCB1c2UtYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiZDIudG9nZ2xlKCk7IG9wZW4oZDIpXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgPGkgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJmYSBmYS1jYWxlbmRhciB0ZXh0LWxpZ2h0IHB4LTFcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgI2J0bkNsZWFuXG4gICAgICAgICAgW2hpZGRlbl09XCIhY2xlYXJhYmxlXCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIHAtMCByb3VuZGVkLTAgbGltcGlhclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgICAoY2xpY2spPVwibGltcGlhclRvZG8oKVwiXG4gICAgICAgICAgKGtleXVwLkFycm93TGVmdCk9XCJidG5PcGVuLmZvY3VzKClcIlxuICAgICAgICAgIChrZXl1cC5BcnJvd1JpZ2h0KT1cImdvTmV4dCgpXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJ0ZXh0LXdoaXRlIHB0LTFcIiBzdHlsZT1cImZvbnQtc2l6ZTogMThweDtcIiBbbWF0VG9vbHRpcF09XCInTGltcGlhcidcIiBtYXRUb29sdGlwQ2xhc3M9XCJiZy1kYW5nZXJcIj5jbG9zZTwvbWF0LWljb24+IC0tPlxuICAgICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiZmEgZmEtdGltZXMgcHgtMSB0ZXh0LWxpZ2h0XCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIGNvbnRhaW5lci10b29sdGlwbWVzc2FnZVwiPlxuICAgICAgICA8dG9vbHRpcC1tZXNzYWdlXG4gICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICBbY29udHJvbHNdPVwiY29udHJvbHNcIlxuICAgICAgICAgIFt2YWxpZGF0b3JNZXNzYWdlXT1cInZhbGlkYXRvck1lc3NhZ2VcIlxuICAgICAgICAgIFt0b29sdGlwTWVzc2FnZV09XCJ0b29sdGlwTWVzc2FnZVwiXG4gICAgICAgICAgW3N1Ym1pdHRlZF09XCJzdWJtaXR0ZWRcIj48L3Rvb2x0aXAtbWVzc2FnZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxlcnJvci1tZXNzYWdlXG4gICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgW2NvbnRyb2xzXT1cImNvbnRyb2xzXCJcbiAgICAgIFt2YWxpZGF0b3JNZXNzYWdlXT1cInZhbGlkYXRvck1lc3NhZ2VcIlxuICAgICAgW3Rvb2x0aXBNZXNzYWdlXT1cInRvb2x0aXBNZXNzYWdlXCJcbiAgICAgIFtzdWJtaXR0ZWRdPVwic3VibWl0dGVkXCI+PC9lcnJvci1tZXNzYWdlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XG4gICAgICA8bmdiLXRpbWVwaWNrZXIgW2Zvcm1Db250cm9sXT1cImhvdXJzQ29udHJvbFwiIFttZXJpZGlhbl09XCJmb3JtYXQgPT0gMTIgPyB0cnVlIDogZmFsc2VcIiAoZm9jdXNvdXQpPVwiZm9jdXNPdXQoJGV2ZW50KVwiPjwvbmdiLXRpbWVwaWNrZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==