vcomply-workflow-engine 6.1.49 → 6.1.51

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 (30) hide show
  1. package/esm2022/lib/constants/common.constants.mjs +2 -1
  2. package/esm2022/lib/pipes/pipes.module.mjs +10 -5
  3. package/esm2022/lib/pipes/responsibility-checked.pipe.mjs +19 -0
  4. package/esm2022/lib/services/common.service.mjs +15 -1
  5. package/esm2022/lib/sharedComponents/assessment-list/assessment-list.component.mjs +3 -3
  6. package/esm2022/lib/sharedComponents/assessment-preview/preview/preview.component.mjs +6 -3
  7. package/esm2022/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +5 -3
  8. package/esm2022/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.mjs +9 -12
  9. package/esm2022/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.mjs +53 -23
  10. package/esm2022/lib/sharedComponents/frequency/frequency-responsibility-list/sub-responsibility/sub-responsibility.component.mjs +7 -3
  11. package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +8 -4
  12. package/esm2022/lib/ui-kit/avatar-v2/avatar-v2.component.mjs +1 -2
  13. package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +18 -3
  14. package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +1 -2
  15. package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +1 -1
  16. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.mjs +1 -1
  17. package/fesm2022/vcomply-workflow-engine.mjs +126 -39
  18. package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
  19. package/lib/constants/common.constants.d.ts +1 -0
  20. package/lib/pipes/pipes.module.d.ts +3 -2
  21. package/lib/pipes/responsibility-checked.pipe.d.ts +7 -0
  22. package/lib/services/common.service.d.ts +9 -0
  23. package/lib/sharedComponents/assessment-preview/preview/preview.component.d.ts +2 -1
  24. package/lib/sharedComponents/frequency/frequency-container/frequency-container.component.d.ts +2 -1
  25. package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts +2 -2
  26. package/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.d.ts +5 -2
  27. package/lib/sharedComponents/frequency/frequency-responsibility-list/sub-responsibility/sub-responsibility.component.d.ts +2 -1
  28. package/lib/workflow-compliance/workflow-compliance.component.d.ts +2 -0
  29. package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
  30. package/package.json +1 -1
@@ -282,11 +282,11 @@ export class FrequencyContainerComponent {
282
282
  this.closeFrequency.emit();
283
283
  }
284
284
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrequencyContainerComponent, deps: [{ token: i1.FrequencyService }, { token: i2.SnackBarService }], target: i0.ɵɵFactoryTarget.Component }); }
285
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FrequencyContainerComponent, selector: "app-frequency-container", inputs: { frequencyDetails: "frequencyDetails", mode: "mode", feature: "feature", pageType: "pageType" }, outputs: { selectedFrequency: "selectedFrequency", closeFrequency: "closeFrequency" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"mode !== 'policy'\">\n <div class=\"frequency-dialog\" *ngIf=\"mode !== 'policy'\">\n <div class=\"frequency-dialog-head vx-p-3 vx-mb-4 vx-d-flex vx-align-center vx-justify-between\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Set a Frequency</div>\n </div>\n <div class=\"frequency-dialog-body vx-pl-4 vx-pr-4\">\n <div class=\"frequency-dialog-body-inner\" [ngSwitch]=\"frequencyTab\">\n <div class=\"frequency-tab vx-d-flex vx-align-center\">\n <ng-container *ngFor=\"let frequencyType of frequencyList; let i = index\">\n <button (click)=\"changeFrequencyTab(frequencyType)\"\n class=\"tab-btn vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-pb-2 vx-m-0\"\n [class.active]=\"frequencyType?.type == frequencyTab\">{{ frequencyType?.name }}</button>\n </ng-container>\n </div>\n <div class=\"frequency-tab-bottom vx-pl-4 vx-pr-4\">\n <!-- Daily Frequency Start -->\n <app-frequency-daily *ngSwitchCase=\"'daily'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-daily>\n <!-- Daily Frequency End -->\n <!-- Weekly Frequency Start -->\n <app-frequency-weekly *ngSwitchCase=\"'weekly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-weekly>\n <!-- Weekly Frequency End -->\n <!-- Monthly Frequency Start -->\n <app-frequency-monthly *ngSwitchCase=\"'monthly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-monthly>\n <!-- Monthly Frequency End -->\n <!-- Quarterly Frequency Start -->\n <app-frequency-quarterly *ngSwitchCase=\"'quarterly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-quarterly>\n <!-- Quarterly Frequency End -->\n <!-- Biannual Frequency Start -->\n <app-frequency-biannual *ngSwitchCase=\"'biannual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-biannual>\n <!-- Biannual Frequency End -->\n <!-- Annual Frequency Start -->\n <app-frequency-annual *ngSwitchCase=\"'annual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-annual>\n <!-- Annual Frequency End -->\n <!-- One Time Frequency Start -->\n <app-frequency-one-time *ngSwitchCase=\"'oneTime'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-one-time>\n <!-- One Time Frequency End -->\n <!-- Random Frequency Start -->\n <app-frequency-random *ngSwitchCase=\"'random'\" [mode]=\"mode\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-random>\n <!-- Random Frequency End -->\n <!-- On Completion Frequency Start -->\n <app-frequency-on-completion-of *ngSwitchCase=\"'on_complete'\" [mode]=\"mode\" [feature]=\"feature\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"\n (radioForm)=\"openedRadio($event)\"></app-frequency-on-completion-of>\n <!-- On Completion Frequency End -->\n <!-- Ongoing Frequency Start -->\n <app-frequency-ongoing *ngSwitchCase=\"'ongoing'\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-ongoing>\n <!-- Ongoing Frequency End -->\n </div>\n </div>\n </div>\n\n <div class=\"frequency-dialog-footer\" *ngIf=\"!openedRadioForm\">\n <app-floating-bar [showFrequencyText]=\"true\" [currentFrequency]=\"currentTabName\" [isDisabled]=\"isNextDisabled\"\n (closeEvent)=\"save()\" (closeList)=\"close()\"></app-floating-bar>\n </div>\n </div>\n</ng-container>\n<!-- When responsibility list show then hide frequency-dialog html -->\n\n<!-- For Policy -->\n<div class=\"frequency-dialog\" *ngIf=\"mode === 'policy'\">\n <div class=\"frequency-dialog-head vx-p-3 vx-mb-4 vx-d-flex vx-align-center vx-justify-between\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Set a Frequency</div>\n </div>\n <div class=\"frequency-dialog-body vx-pl-4 vx-pr-4\">\n <div class=\"frequency-dialog-body-inner\" [ngSwitch]=\"frequencyTab\">\n <div class=\"frequency-tab vx-d-flex vx-align-center\">\n <ng-container *ngFor=\"let frequencyType of frequencyList; let i = index\">\n <button (click)=\"changeFrequencyTab(frequencyType)\"\n class=\"tab-btn vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-pb-2 vx-m-0\"\n [class.active]=\"frequencyType?.type == frequencyTab\">{{ frequencyType?.name }}</button>\n </ng-container>\n </div>\n <div class=\"frequency-tab-bottom vx-pl-4 vx-pr-4\">\n <!-- Daily Frequency Start -->\n <app-frequency-daily *ngSwitchCase=\"'daily'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-daily>\n <!-- Daily Frequency End -->\n <!-- Weekly Frequency Start -->\n <app-frequency-weekly *ngSwitchCase=\"'weekly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-weekly>\n <!-- Weekly Frequency End -->\n <!-- Monthly Frequency Start -->\n <app-frequency-monthly *ngSwitchCase=\"'monthly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-monthly>\n <!-- Monthly Frequency End -->\n <!-- Quarterly Frequency Start -->\n <app-frequency-quarterly *ngSwitchCase=\"'quarterly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-quarterly>\n <!-- Quarterly Frequency End -->\n <!-- Biannual Frequency Start -->\n <app-frequency-biannual *ngSwitchCase=\"'biannual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-biannual>\n <!-- Biannual Frequency End -->\n <!-- Annual Frequency Start -->\n <app-frequency-annual *ngSwitchCase=\"'annual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-annual>\n <!-- Annual Frequency End -->\n <!-- One Time Frequency Start -->\n <app-frequency-one-time *ngSwitchCase=\"'oneTime'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-one-time>\n <!-- One Time Frequency End -->\n <!-- Random Frequency Start -->\n <app-frequency-random *ngSwitchCase=\"'random'\" [mode]=\"mode\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-random>\n <!-- Random Frequency End -->\n <!-- On Completion Frequency Start -->\n <app-frequency-on-completion-of *ngSwitchCase=\"'on_complete'\" [mode]=\"mode\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-on-completion-of>\n <!-- On Completion Frequency End -->\n <!-- Ongoing Frequency Start -->\n <app-frequency-ongoing *ngSwitchCase=\"'ongoing'\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-ongoing>\n <!-- Ongoing Frequency End -->\n </div>\n </div>\n </div>\n <div class=\"frequency-dialog-footer\">\n <app-floating-bar [showFrequencyText]=\"true\" [currentFrequency]=\"currentTabName\" [isDisabled]=\"isNextDisabled\"\n (closeEvent)=\"save()\" (closeList)=\"close()\"></app-floating-bar>\n </div>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .frequency-dialog{position:fixed;inset:0 500px 0 0;z-index:11}::ng-deep .frequency-dialog:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}@media screen and (max-width: 1280px){::ng-deep .frequency-dialog{right:30px}::ng-deep .frequency-dialog .frequency-dialog-body .frequency-dialog-body-inner .frequency-tab-bottom app-frequency-on-completion-of .frequency-completion .frequency-completion-inner .frequency-completion-bottom app-frequency-responsibility-list .frequency-responsibility-list{right:0;z-index:9999}}::ng-deep .frequency-dialog-head{background:#fbfbfb;border-radius:.125rem .125rem 0 0;border-bottom:1px solid #f1f1f1}::ng-deep .frequency-dialog-head button.back-btn{background:transparent;border-radius:0;border:none}::ng-deep .frequency-dialog-body{height:calc(100vh - 9.75rem);margin:0 auto 1rem;overflow:hidden;overflow-y:auto;width:calc(100% - 2.5rem)}::ng-deep .frequency-dialog-body::-webkit-scrollbar-track{background-color:transparent}::ng-deep .frequency-dialog-body-inner{width:54.5rem;margin:0 auto}@media screen and (min-width: 1366px){::ng-deep .frequency-dialog-body-inner{width:auto}}::ng-deep .frequency-dialog-body .frequency-tab{border:none!important;border-bottom:1px solid #f1f1f1!important;margin-bottom:1.5rem}::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn{background:transparent;border-radius:0;border:none;border-bottom:.125rem solid transparent;height:1.5rem;margin-right:1.5rem!important}::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn:last-of-type{margin-right:0!important}@media screen and (max-width: 1366px){::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn{margin-right:1rem!important}}@media screen and (max-width: 1280px){::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn{margin-right:.75rem!important}}::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn.active{color:#1e5dd3!important;border-color:#1e5dd3}::ng-deep .frequency-dialog-footer{padding:0 2rem}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "isResponsibility", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "component", type: i5.FrequencyDailyComponent, selector: "app-frequency-daily", inputs: ["mode", "frequencyData", "startDate", "pageType"], outputs: ["frequencyDetails"] }, { kind: "component", type: i6.FrequencyWeeklyComponent, selector: "app-frequency-weekly", inputs: ["mode", "pageType", "startDate", "frequencyData"], outputs: ["frequencyDetails"] }, { kind: "component", type: i7.FrequencyMonthlyComponent, selector: "app-frequency-monthly", inputs: ["mode", "pageType", "startDate", "frequencyData"], outputs: ["frequencyDetails"] }, { kind: "component", type: i8.FrequencyQuarterlyComponent, selector: "app-frequency-quarterly", inputs: ["mode", "startDate", "frequencyData", "pageType"], outputs: ["frequencyDetails"] }, { kind: "component", type: i9.FrequencyBiannualComponent, selector: "app-frequency-biannual", inputs: ["mode", "pageType", "startDate", "frequencyData"], outputs: ["frequencyDetails"] }, { kind: "component", type: i10.FrequencyAnnualComponent, selector: "app-frequency-annual", inputs: ["pageType", "frequencyData", "mode", "startDate"], outputs: ["frequencyDetails"] }, { kind: "component", type: i11.FrequencyOneTimeComponent, selector: "app-frequency-one-time", inputs: ["pageType", "frequencyData", "mode"], outputs: ["frequencyDetails"] }, { kind: "component", type: i12.FrequencyRandomComponent, selector: "app-frequency-random", inputs: ["mode", "startDate", "frequencyData"], outputs: ["frequencyDetails"] }, { kind: "component", type: i13.FrequencyOnCompletionOfComponent, selector: "app-frequency-on-completion-of", inputs: ["mode", "feature", "startDate", "frequencyData"], outputs: ["frequencyDetails", "radioForm"] }, { kind: "component", type: i14.FrequencyOngoingComponent, selector: "app-frequency-ongoing", inputs: ["selectedType", "selectedOngoingType", "frequencyData", "startDate"], outputs: ["frequencyDetails"] }] }); }
285
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FrequencyContainerComponent, selector: "app-frequency-container", inputs: { frequencyDetails: "frequencyDetails", mode: "mode", feature: "feature", pageType: "pageType", onCompletionResponsibility: "onCompletionResponsibility" }, outputs: { selectedFrequency: "selectedFrequency", closeFrequency: "closeFrequency" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"mode !== 'policy'\">\n <div class=\"frequency-dialog\" *ngIf=\"mode !== 'policy'\">\n <div class=\"frequency-dialog-head vx-p-3 vx-mb-4 vx-d-flex vx-align-center vx-justify-between\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Set a Frequency</div>\n </div>\n <div class=\"frequency-dialog-body vx-pl-4 vx-pr-4\">\n <div class=\"frequency-dialog-body-inner\" [ngSwitch]=\"frequencyTab\">\n <div class=\"frequency-tab vx-d-flex vx-align-center\">\n <ng-container *ngFor=\"let frequencyType of frequencyList; let i = index\">\n <button (click)=\"changeFrequencyTab(frequencyType)\"\n class=\"tab-btn vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-pb-2 vx-m-0\"\n [class.active]=\"frequencyType?.type == frequencyTab\">{{ frequencyType?.name }}</button>\n </ng-container>\n </div>\n <div class=\"frequency-tab-bottom vx-pl-4 vx-pr-4\">\n <!-- Daily Frequency Start -->\n <app-frequency-daily *ngSwitchCase=\"'daily'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-daily>\n <!-- Daily Frequency End -->\n <!-- Weekly Frequency Start -->\n <app-frequency-weekly *ngSwitchCase=\"'weekly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-weekly>\n <!-- Weekly Frequency End -->\n <!-- Monthly Frequency Start -->\n <app-frequency-monthly *ngSwitchCase=\"'monthly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-monthly>\n <!-- Monthly Frequency End -->\n <!-- Quarterly Frequency Start -->\n <app-frequency-quarterly *ngSwitchCase=\"'quarterly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-quarterly>\n <!-- Quarterly Frequency End -->\n <!-- Biannual Frequency Start -->\n <app-frequency-biannual *ngSwitchCase=\"'biannual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-biannual>\n <!-- Biannual Frequency End -->\n <!-- Annual Frequency Start -->\n <app-frequency-annual *ngSwitchCase=\"'annual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-annual>\n <!-- Annual Frequency End -->\n <!-- One Time Frequency Start -->\n <app-frequency-one-time *ngSwitchCase=\"'oneTime'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-one-time>\n <!-- One Time Frequency End -->\n <!-- Random Frequency Start -->\n <app-frequency-random *ngSwitchCase=\"'random'\" [mode]=\"mode\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-random>\n <!-- Random Frequency End -->\n <!-- On Completion Frequency Start -->\n <app-frequency-on-completion-of *ngSwitchCase=\"'on_complete'\" [mode]=\"mode\" [feature]=\"feature\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"\n [onCompletionResponsibility]=\"onCompletionResponsibility\"\n (radioForm)=\"openedRadio($event)\"></app-frequency-on-completion-of>\n <!-- On Completion Frequency End -->\n <!-- Ongoing Frequency Start -->\n <app-frequency-ongoing *ngSwitchCase=\"'ongoing'\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-ongoing>\n <!-- Ongoing Frequency End -->\n </div>\n </div>\n </div>\n\n <div class=\"frequency-dialog-footer\" *ngIf=\"!openedRadioForm\">\n <app-floating-bar [showFrequencyText]=\"true\" [currentFrequency]=\"currentTabName\" [isDisabled]=\"isNextDisabled\"\n (closeEvent)=\"save()\" (closeList)=\"close()\"></app-floating-bar>\n </div>\n </div>\n</ng-container>\n<!-- When responsibility list show then hide frequency-dialog html -->\n\n<!-- For Policy -->\n<div class=\"frequency-dialog\" *ngIf=\"mode === 'policy'\">\n <div class=\"frequency-dialog-head vx-p-3 vx-mb-4 vx-d-flex vx-align-center vx-justify-between\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Set a Frequency</div>\n </div>\n <div class=\"frequency-dialog-body vx-pl-4 vx-pr-4\">\n <div class=\"frequency-dialog-body-inner\" [ngSwitch]=\"frequencyTab\">\n <div class=\"frequency-tab vx-d-flex vx-align-center\">\n <ng-container *ngFor=\"let frequencyType of frequencyList; let i = index\">\n <button (click)=\"changeFrequencyTab(frequencyType)\"\n class=\"tab-btn vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-pb-2 vx-m-0\"\n [class.active]=\"frequencyType?.type == frequencyTab\">{{ frequencyType?.name }}</button>\n </ng-container>\n </div>\n <div class=\"frequency-tab-bottom vx-pl-4 vx-pr-4\">\n <!-- Daily Frequency Start -->\n <app-frequency-daily *ngSwitchCase=\"'daily'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-daily>\n <!-- Daily Frequency End -->\n <!-- Weekly Frequency Start -->\n <app-frequency-weekly *ngSwitchCase=\"'weekly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-weekly>\n <!-- Weekly Frequency End -->\n <!-- Monthly Frequency Start -->\n <app-frequency-monthly *ngSwitchCase=\"'monthly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-monthly>\n <!-- Monthly Frequency End -->\n <!-- Quarterly Frequency Start -->\n <app-frequency-quarterly *ngSwitchCase=\"'quarterly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-quarterly>\n <!-- Quarterly Frequency End -->\n <!-- Biannual Frequency Start -->\n <app-frequency-biannual *ngSwitchCase=\"'biannual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-biannual>\n <!-- Biannual Frequency End -->\n <!-- Annual Frequency Start -->\n <app-frequency-annual *ngSwitchCase=\"'annual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-annual>\n <!-- Annual Frequency End -->\n <!-- One Time Frequency Start -->\n <app-frequency-one-time *ngSwitchCase=\"'oneTime'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-one-time>\n <!-- One Time Frequency End -->\n <!-- Random Frequency Start -->\n <app-frequency-random *ngSwitchCase=\"'random'\" [mode]=\"mode\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-random>\n <!-- Random Frequency End -->\n <!-- On Completion Frequency Start -->\n <app-frequency-on-completion-of *ngSwitchCase=\"'on_complete'\" [mode]=\"mode\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-on-completion-of>\n <!-- On Completion Frequency End -->\n <!-- Ongoing Frequency Start -->\n <app-frequency-ongoing *ngSwitchCase=\"'ongoing'\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-ongoing>\n <!-- Ongoing Frequency End -->\n </div>\n </div>\n </div>\n <div class=\"frequency-dialog-footer\">\n <app-floating-bar [showFrequencyText]=\"true\" [currentFrequency]=\"currentTabName\" [isDisabled]=\"isNextDisabled\"\n (closeEvent)=\"save()\" (closeList)=\"close()\"></app-floating-bar>\n </div>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .frequency-dialog{position:fixed;inset:0 500px 0 0;z-index:11}::ng-deep .frequency-dialog:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}@media screen and (max-width: 1280px){::ng-deep .frequency-dialog{right:30px}::ng-deep .frequency-dialog .frequency-dialog-body .frequency-dialog-body-inner .frequency-tab-bottom app-frequency-on-completion-of .frequency-completion .frequency-completion-inner .frequency-completion-bottom app-frequency-responsibility-list .frequency-responsibility-list{right:0;z-index:9999}}::ng-deep .frequency-dialog-head{background:#fbfbfb;border-radius:.125rem .125rem 0 0;border-bottom:1px solid #f1f1f1}::ng-deep .frequency-dialog-head button.back-btn{background:transparent;border-radius:0;border:none}::ng-deep .frequency-dialog-body{height:calc(100vh - 9.75rem);margin:0 auto 1rem;overflow:hidden;overflow-y:auto;width:calc(100% - 2.5rem)}::ng-deep .frequency-dialog-body::-webkit-scrollbar-track{background-color:transparent}::ng-deep .frequency-dialog-body-inner{width:54.5rem;margin:0 auto}@media screen and (min-width: 1366px){::ng-deep .frequency-dialog-body-inner{width:auto}}::ng-deep .frequency-dialog-body .frequency-tab{border:none!important;border-bottom:1px solid #f1f1f1!important;margin-bottom:1.5rem}::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn{background:transparent;border-radius:0;border:none;border-bottom:.125rem solid transparent;height:1.5rem;margin-right:1.5rem!important}::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn:last-of-type{margin-right:0!important}@media screen and (max-width: 1366px){::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn{margin-right:1rem!important}}@media screen and (max-width: 1280px){::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn{margin-right:.75rem!important}}::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn.active{color:#1e5dd3!important;border-color:#1e5dd3}::ng-deep .frequency-dialog-footer{padding:0 2rem}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "isResponsibility", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "component", type: i5.FrequencyDailyComponent, selector: "app-frequency-daily", inputs: ["mode", "frequencyData", "startDate", "pageType"], outputs: ["frequencyDetails"] }, { kind: "component", type: i6.FrequencyWeeklyComponent, selector: "app-frequency-weekly", inputs: ["mode", "pageType", "startDate", "frequencyData"], outputs: ["frequencyDetails"] }, { kind: "component", type: i7.FrequencyMonthlyComponent, selector: "app-frequency-monthly", inputs: ["mode", "pageType", "startDate", "frequencyData"], outputs: ["frequencyDetails"] }, { kind: "component", type: i8.FrequencyQuarterlyComponent, selector: "app-frequency-quarterly", inputs: ["mode", "startDate", "frequencyData", "pageType"], outputs: ["frequencyDetails"] }, { kind: "component", type: i9.FrequencyBiannualComponent, selector: "app-frequency-biannual", inputs: ["mode", "pageType", "startDate", "frequencyData"], outputs: ["frequencyDetails"] }, { kind: "component", type: i10.FrequencyAnnualComponent, selector: "app-frequency-annual", inputs: ["pageType", "frequencyData", "mode", "startDate"], outputs: ["frequencyDetails"] }, { kind: "component", type: i11.FrequencyOneTimeComponent, selector: "app-frequency-one-time", inputs: ["pageType", "frequencyData", "mode"], outputs: ["frequencyDetails"] }, { kind: "component", type: i12.FrequencyRandomComponent, selector: "app-frequency-random", inputs: ["mode", "startDate", "frequencyData"], outputs: ["frequencyDetails"] }, { kind: "component", type: i13.FrequencyOnCompletionOfComponent, selector: "app-frequency-on-completion-of", inputs: ["mode", "feature", "onCompletionResponsibility", "startDate", "frequencyData"], outputs: ["frequencyDetails", "radioForm"] }, { kind: "component", type: i14.FrequencyOngoingComponent, selector: "app-frequency-ongoing", inputs: ["selectedType", "selectedOngoingType", "frequencyData", "startDate"], outputs: ["frequencyDetails"] }] }); }
286
286
  }
287
287
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrequencyContainerComponent, decorators: [{
288
288
  type: Component,
289
- args: [{ selector: 'app-frequency-container', template: "<ng-container *ngIf=\"mode !== 'policy'\">\n <div class=\"frequency-dialog\" *ngIf=\"mode !== 'policy'\">\n <div class=\"frequency-dialog-head vx-p-3 vx-mb-4 vx-d-flex vx-align-center vx-justify-between\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Set a Frequency</div>\n </div>\n <div class=\"frequency-dialog-body vx-pl-4 vx-pr-4\">\n <div class=\"frequency-dialog-body-inner\" [ngSwitch]=\"frequencyTab\">\n <div class=\"frequency-tab vx-d-flex vx-align-center\">\n <ng-container *ngFor=\"let frequencyType of frequencyList; let i = index\">\n <button (click)=\"changeFrequencyTab(frequencyType)\"\n class=\"tab-btn vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-pb-2 vx-m-0\"\n [class.active]=\"frequencyType?.type == frequencyTab\">{{ frequencyType?.name }}</button>\n </ng-container>\n </div>\n <div class=\"frequency-tab-bottom vx-pl-4 vx-pr-4\">\n <!-- Daily Frequency Start -->\n <app-frequency-daily *ngSwitchCase=\"'daily'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-daily>\n <!-- Daily Frequency End -->\n <!-- Weekly Frequency Start -->\n <app-frequency-weekly *ngSwitchCase=\"'weekly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-weekly>\n <!-- Weekly Frequency End -->\n <!-- Monthly Frequency Start -->\n <app-frequency-monthly *ngSwitchCase=\"'monthly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-monthly>\n <!-- Monthly Frequency End -->\n <!-- Quarterly Frequency Start -->\n <app-frequency-quarterly *ngSwitchCase=\"'quarterly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-quarterly>\n <!-- Quarterly Frequency End -->\n <!-- Biannual Frequency Start -->\n <app-frequency-biannual *ngSwitchCase=\"'biannual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-biannual>\n <!-- Biannual Frequency End -->\n <!-- Annual Frequency Start -->\n <app-frequency-annual *ngSwitchCase=\"'annual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-annual>\n <!-- Annual Frequency End -->\n <!-- One Time Frequency Start -->\n <app-frequency-one-time *ngSwitchCase=\"'oneTime'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-one-time>\n <!-- One Time Frequency End -->\n <!-- Random Frequency Start -->\n <app-frequency-random *ngSwitchCase=\"'random'\" [mode]=\"mode\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-random>\n <!-- Random Frequency End -->\n <!-- On Completion Frequency Start -->\n <app-frequency-on-completion-of *ngSwitchCase=\"'on_complete'\" [mode]=\"mode\" [feature]=\"feature\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"\n (radioForm)=\"openedRadio($event)\"></app-frequency-on-completion-of>\n <!-- On Completion Frequency End -->\n <!-- Ongoing Frequency Start -->\n <app-frequency-ongoing *ngSwitchCase=\"'ongoing'\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-ongoing>\n <!-- Ongoing Frequency End -->\n </div>\n </div>\n </div>\n\n <div class=\"frequency-dialog-footer\" *ngIf=\"!openedRadioForm\">\n <app-floating-bar [showFrequencyText]=\"true\" [currentFrequency]=\"currentTabName\" [isDisabled]=\"isNextDisabled\"\n (closeEvent)=\"save()\" (closeList)=\"close()\"></app-floating-bar>\n </div>\n </div>\n</ng-container>\n<!-- When responsibility list show then hide frequency-dialog html -->\n\n<!-- For Policy -->\n<div class=\"frequency-dialog\" *ngIf=\"mode === 'policy'\">\n <div class=\"frequency-dialog-head vx-p-3 vx-mb-4 vx-d-flex vx-align-center vx-justify-between\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Set a Frequency</div>\n </div>\n <div class=\"frequency-dialog-body vx-pl-4 vx-pr-4\">\n <div class=\"frequency-dialog-body-inner\" [ngSwitch]=\"frequencyTab\">\n <div class=\"frequency-tab vx-d-flex vx-align-center\">\n <ng-container *ngFor=\"let frequencyType of frequencyList; let i = index\">\n <button (click)=\"changeFrequencyTab(frequencyType)\"\n class=\"tab-btn vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-pb-2 vx-m-0\"\n [class.active]=\"frequencyType?.type == frequencyTab\">{{ frequencyType?.name }}</button>\n </ng-container>\n </div>\n <div class=\"frequency-tab-bottom vx-pl-4 vx-pr-4\">\n <!-- Daily Frequency Start -->\n <app-frequency-daily *ngSwitchCase=\"'daily'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-daily>\n <!-- Daily Frequency End -->\n <!-- Weekly Frequency Start -->\n <app-frequency-weekly *ngSwitchCase=\"'weekly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-weekly>\n <!-- Weekly Frequency End -->\n <!-- Monthly Frequency Start -->\n <app-frequency-monthly *ngSwitchCase=\"'monthly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-monthly>\n <!-- Monthly Frequency End -->\n <!-- Quarterly Frequency Start -->\n <app-frequency-quarterly *ngSwitchCase=\"'quarterly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-quarterly>\n <!-- Quarterly Frequency End -->\n <!-- Biannual Frequency Start -->\n <app-frequency-biannual *ngSwitchCase=\"'biannual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-biannual>\n <!-- Biannual Frequency End -->\n <!-- Annual Frequency Start -->\n <app-frequency-annual *ngSwitchCase=\"'annual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-annual>\n <!-- Annual Frequency End -->\n <!-- One Time Frequency Start -->\n <app-frequency-one-time *ngSwitchCase=\"'oneTime'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-one-time>\n <!-- One Time Frequency End -->\n <!-- Random Frequency Start -->\n <app-frequency-random *ngSwitchCase=\"'random'\" [mode]=\"mode\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-random>\n <!-- Random Frequency End -->\n <!-- On Completion Frequency Start -->\n <app-frequency-on-completion-of *ngSwitchCase=\"'on_complete'\" [mode]=\"mode\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-on-completion-of>\n <!-- On Completion Frequency End -->\n <!-- Ongoing Frequency Start -->\n <app-frequency-ongoing *ngSwitchCase=\"'ongoing'\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-ongoing>\n <!-- Ongoing Frequency End -->\n </div>\n </div>\n </div>\n <div class=\"frequency-dialog-footer\">\n <app-floating-bar [showFrequencyText]=\"true\" [currentFrequency]=\"currentTabName\" [isDisabled]=\"isNextDisabled\"\n (closeEvent)=\"save()\" (closeList)=\"close()\"></app-floating-bar>\n </div>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .frequency-dialog{position:fixed;inset:0 500px 0 0;z-index:11}::ng-deep .frequency-dialog:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}@media screen and (max-width: 1280px){::ng-deep .frequency-dialog{right:30px}::ng-deep .frequency-dialog .frequency-dialog-body .frequency-dialog-body-inner .frequency-tab-bottom app-frequency-on-completion-of .frequency-completion .frequency-completion-inner .frequency-completion-bottom app-frequency-responsibility-list .frequency-responsibility-list{right:0;z-index:9999}}::ng-deep .frequency-dialog-head{background:#fbfbfb;border-radius:.125rem .125rem 0 0;border-bottom:1px solid #f1f1f1}::ng-deep .frequency-dialog-head button.back-btn{background:transparent;border-radius:0;border:none}::ng-deep .frequency-dialog-body{height:calc(100vh - 9.75rem);margin:0 auto 1rem;overflow:hidden;overflow-y:auto;width:calc(100% - 2.5rem)}::ng-deep .frequency-dialog-body::-webkit-scrollbar-track{background-color:transparent}::ng-deep .frequency-dialog-body-inner{width:54.5rem;margin:0 auto}@media screen and (min-width: 1366px){::ng-deep .frequency-dialog-body-inner{width:auto}}::ng-deep .frequency-dialog-body .frequency-tab{border:none!important;border-bottom:1px solid #f1f1f1!important;margin-bottom:1.5rem}::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn{background:transparent;border-radius:0;border:none;border-bottom:.125rem solid transparent;height:1.5rem;margin-right:1.5rem!important}::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn:last-of-type{margin-right:0!important}@media screen and (max-width: 1366px){::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn{margin-right:1rem!important}}@media screen and (max-width: 1280px){::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn{margin-right:.75rem!important}}::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn.active{color:#1e5dd3!important;border-color:#1e5dd3}::ng-deep .frequency-dialog-footer{padding:0 2rem}\n"] }]
289
+ args: [{ selector: 'app-frequency-container', template: "<ng-container *ngIf=\"mode !== 'policy'\">\n <div class=\"frequency-dialog\" *ngIf=\"mode !== 'policy'\">\n <div class=\"frequency-dialog-head vx-p-3 vx-mb-4 vx-d-flex vx-align-center vx-justify-between\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Set a Frequency</div>\n </div>\n <div class=\"frequency-dialog-body vx-pl-4 vx-pr-4\">\n <div class=\"frequency-dialog-body-inner\" [ngSwitch]=\"frequencyTab\">\n <div class=\"frequency-tab vx-d-flex vx-align-center\">\n <ng-container *ngFor=\"let frequencyType of frequencyList; let i = index\">\n <button (click)=\"changeFrequencyTab(frequencyType)\"\n class=\"tab-btn vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-pb-2 vx-m-0\"\n [class.active]=\"frequencyType?.type == frequencyTab\">{{ frequencyType?.name }}</button>\n </ng-container>\n </div>\n <div class=\"frequency-tab-bottom vx-pl-4 vx-pr-4\">\n <!-- Daily Frequency Start -->\n <app-frequency-daily *ngSwitchCase=\"'daily'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-daily>\n <!-- Daily Frequency End -->\n <!-- Weekly Frequency Start -->\n <app-frequency-weekly *ngSwitchCase=\"'weekly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-weekly>\n <!-- Weekly Frequency End -->\n <!-- Monthly Frequency Start -->\n <app-frequency-monthly *ngSwitchCase=\"'monthly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-monthly>\n <!-- Monthly Frequency End -->\n <!-- Quarterly Frequency Start -->\n <app-frequency-quarterly *ngSwitchCase=\"'quarterly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-quarterly>\n <!-- Quarterly Frequency End -->\n <!-- Biannual Frequency Start -->\n <app-frequency-biannual *ngSwitchCase=\"'biannual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-biannual>\n <!-- Biannual Frequency End -->\n <!-- Annual Frequency Start -->\n <app-frequency-annual *ngSwitchCase=\"'annual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-annual>\n <!-- Annual Frequency End -->\n <!-- One Time Frequency Start -->\n <app-frequency-one-time *ngSwitchCase=\"'oneTime'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-one-time>\n <!-- One Time Frequency End -->\n <!-- Random Frequency Start -->\n <app-frequency-random *ngSwitchCase=\"'random'\" [mode]=\"mode\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-random>\n <!-- Random Frequency End -->\n <!-- On Completion Frequency Start -->\n <app-frequency-on-completion-of *ngSwitchCase=\"'on_complete'\" [mode]=\"mode\" [feature]=\"feature\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"\n [onCompletionResponsibility]=\"onCompletionResponsibility\"\n (radioForm)=\"openedRadio($event)\"></app-frequency-on-completion-of>\n <!-- On Completion Frequency End -->\n <!-- Ongoing Frequency Start -->\n <app-frequency-ongoing *ngSwitchCase=\"'ongoing'\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-ongoing>\n <!-- Ongoing Frequency End -->\n </div>\n </div>\n </div>\n\n <div class=\"frequency-dialog-footer\" *ngIf=\"!openedRadioForm\">\n <app-floating-bar [showFrequencyText]=\"true\" [currentFrequency]=\"currentTabName\" [isDisabled]=\"isNextDisabled\"\n (closeEvent)=\"save()\" (closeList)=\"close()\"></app-floating-bar>\n </div>\n </div>\n</ng-container>\n<!-- When responsibility list show then hide frequency-dialog html -->\n\n<!-- For Policy -->\n<div class=\"frequency-dialog\" *ngIf=\"mode === 'policy'\">\n <div class=\"frequency-dialog-head vx-p-3 vx-mb-4 vx-d-flex vx-align-center vx-justify-between\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Set a Frequency</div>\n </div>\n <div class=\"frequency-dialog-body vx-pl-4 vx-pr-4\">\n <div class=\"frequency-dialog-body-inner\" [ngSwitch]=\"frequencyTab\">\n <div class=\"frequency-tab vx-d-flex vx-align-center\">\n <ng-container *ngFor=\"let frequencyType of frequencyList; let i = index\">\n <button (click)=\"changeFrequencyTab(frequencyType)\"\n class=\"tab-btn vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-p-0 vx-pb-2 vx-m-0\"\n [class.active]=\"frequencyType?.type == frequencyTab\">{{ frequencyType?.name }}</button>\n </ng-container>\n </div>\n <div class=\"frequency-tab-bottom vx-pl-4 vx-pr-4\">\n <!-- Daily Frequency Start -->\n <app-frequency-daily *ngSwitchCase=\"'daily'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-daily>\n <!-- Daily Frequency End -->\n <!-- Weekly Frequency Start -->\n <app-frequency-weekly *ngSwitchCase=\"'weekly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-weekly>\n <!-- Weekly Frequency End -->\n <!-- Monthly Frequency Start -->\n <app-frequency-monthly *ngSwitchCase=\"'monthly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-monthly>\n <!-- Monthly Frequency End -->\n <!-- Quarterly Frequency Start -->\n <app-frequency-quarterly *ngSwitchCase=\"'quarterly'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-quarterly>\n <!-- Quarterly Frequency End -->\n <!-- Biannual Frequency Start -->\n <app-frequency-biannual *ngSwitchCase=\"'biannual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-biannual>\n <!-- Biannual Frequency End -->\n <!-- Annual Frequency Start -->\n <app-frequency-annual *ngSwitchCase=\"'annual'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-annual>\n <!-- Annual Frequency End -->\n <!-- One Time Frequency Start -->\n <app-frequency-one-time *ngSwitchCase=\"'oneTime'\" [mode]=\"mode\" [pageType]=\"pageType\"\n (frequencyDetails)=\"onFrequencySelected($event)\" [frequencyData]=\"frequencyDetails\"></app-frequency-one-time>\n <!-- One Time Frequency End -->\n <!-- Random Frequency Start -->\n <app-frequency-random *ngSwitchCase=\"'random'\" [mode]=\"mode\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-random>\n <!-- Random Frequency End -->\n <!-- On Completion Frequency Start -->\n <app-frequency-on-completion-of *ngSwitchCase=\"'on_complete'\" [mode]=\"mode\"\n (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-on-completion-of>\n <!-- On Completion Frequency End -->\n <!-- Ongoing Frequency Start -->\n <app-frequency-ongoing *ngSwitchCase=\"'ongoing'\" (frequencyDetails)=\"onFrequencySelected($event)\"\n [frequencyData]=\"frequencyDetails\"></app-frequency-ongoing>\n <!-- Ongoing Frequency End -->\n </div>\n </div>\n </div>\n <div class=\"frequency-dialog-footer\">\n <app-floating-bar [showFrequencyText]=\"true\" [currentFrequency]=\"currentTabName\" [isDisabled]=\"isNextDisabled\"\n (closeEvent)=\"save()\" (closeList)=\"close()\"></app-floating-bar>\n </div>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .frequency-dialog{position:fixed;inset:0 500px 0 0;z-index:11}::ng-deep .frequency-dialog:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}@media screen and (max-width: 1280px){::ng-deep .frequency-dialog{right:30px}::ng-deep .frequency-dialog .frequency-dialog-body .frequency-dialog-body-inner .frequency-tab-bottom app-frequency-on-completion-of .frequency-completion .frequency-completion-inner .frequency-completion-bottom app-frequency-responsibility-list .frequency-responsibility-list{right:0;z-index:9999}}::ng-deep .frequency-dialog-head{background:#fbfbfb;border-radius:.125rem .125rem 0 0;border-bottom:1px solid #f1f1f1}::ng-deep .frequency-dialog-head button.back-btn{background:transparent;border-radius:0;border:none}::ng-deep .frequency-dialog-body{height:calc(100vh - 9.75rem);margin:0 auto 1rem;overflow:hidden;overflow-y:auto;width:calc(100% - 2.5rem)}::ng-deep .frequency-dialog-body::-webkit-scrollbar-track{background-color:transparent}::ng-deep .frequency-dialog-body-inner{width:54.5rem;margin:0 auto}@media screen and (min-width: 1366px){::ng-deep .frequency-dialog-body-inner{width:auto}}::ng-deep .frequency-dialog-body .frequency-tab{border:none!important;border-bottom:1px solid #f1f1f1!important;margin-bottom:1.5rem}::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn{background:transparent;border-radius:0;border:none;border-bottom:.125rem solid transparent;height:1.5rem;margin-right:1.5rem!important}::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn:last-of-type{margin-right:0!important}@media screen and (max-width: 1366px){::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn{margin-right:1rem!important}}@media screen and (max-width: 1280px){::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn{margin-right:.75rem!important}}::ng-deep .frequency-dialog-body .frequency-tab button.tab-btn.active{color:#1e5dd3!important;border-color:#1e5dd3}::ng-deep .frequency-dialog-footer{padding:0 2rem}\n"] }]
290
290
  }], ctorParameters: function () { return [{ type: i1.FrequencyService }, { type: i2.SnackBarService }]; }, propDecorators: { frequencyDetails: [{
291
291
  type: Input
292
292
  }], selectedFrequency: [{
@@ -299,5 +299,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
299
299
  type: Input
300
300
  }], pageType: [{
301
301
  type: Input
302
+ }], onCompletionResponsibility: [{
303
+ type: Input
302
304
  }] } });
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3ktY29udGFpbmVyL2ZyZXF1ZW5jeS1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LWNvbnRhaW5lci9mcmVxdWVuY3ktY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEdBRWIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBU25DLE1BQU0sT0FBTywyQkFBMkI7SUE0RHRDLFlBQ1UsZ0JBQWtDLEVBQ2xDLFFBQXlCO1FBRHpCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUE3RG5DLGlCQUFZLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLG1CQUFjLEdBQUcsU0FBUyxDQUFDO1FBR2pCLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDNUMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzFDLFNBQUksR0FBUSxFQUFFLENBQUM7UUFFZixhQUFRLEdBQWdDLGdCQUFnQixDQUFDO1FBSWxFLGtCQUFhLEdBQUc7WUFDZDtnQkFDRSxJQUFJLEVBQUUsT0FBTztnQkFDYixJQUFJLEVBQUUsT0FBTzthQUNkO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLFFBQVE7YUFDZjtZQUNEO2dCQUNFLElBQUksRUFBRSxTQUFTO2dCQUNmLElBQUksRUFBRSxTQUFTO2FBQ2hCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLElBQUksRUFBRSxXQUFXO2FBQ2xCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLElBQUksRUFBRSxVQUFVO2FBQ2pCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLFFBQVE7YUFDZjtZQUNEO2dCQUNFLElBQUksRUFBRSxVQUFVO2dCQUNoQixJQUFJLEVBQUUsU0FBUzthQUNoQjtZQUNEO2dCQUNFLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxRQUFRO2FBQ2Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixJQUFJLEVBQUUsYUFBYTthQUNwQjtZQUNEO2dCQUNFLElBQUksRUFBRSxTQUFTO2dCQUNmLElBQUksRUFBRSxTQUFTO2FBQ2hCO1NBQ0YsQ0FBQztRQUdGLG1CQUFjLEdBQVEsS0FBSyxDQUFDO1FBRTVCLG9CQUFlLEdBQVksS0FBSyxDQUFDO0lBSTlCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQy9ELCtCQUErQixDQUNoQyxDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjtRQUNELE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxFQUFFO1lBQ3pCLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtnQkFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQ3hDLENBQUMsWUFBaUIsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxPQUFPLENBQ3BELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxtQkFBbUIsRUFBRTtZQUNwQyxJQUFJLENBQUMsWUFBWTtnQkFDZixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxjQUFjO2dCQUNqQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBRTFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtnQkFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQ3hDLENBQUMsWUFBaUIsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxPQUFPLENBQ3BELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM1QyxDQUFDO1FBRUYsUUFBUSxnQkFBZ0IsRUFBRTtZQUN4QixLQUFLLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDO2dCQUNuQyxNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO2dCQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztnQkFDaEMsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUM7Z0JBQ2pDLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO2dCQUM3QixJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQztnQkFDbkMsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7Z0JBQ2hDLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUcscUJBQXFCLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7Z0JBQ3BFLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO2dCQUNwQyxNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO2dCQUM3QixJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQztnQkFDakMsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUM7Z0JBQ25DLE1BQU07WUFDUixLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDO2dCQUNuQyxNQUFNO1NBQ1Q7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsa0JBQWtCLENBQUMsU0FBYztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFFbkMsSUFBSSxTQUFTLENBQUMsSUFBSSxJQUFJLFVBQVUsRUFBRTtZQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQztTQUNwQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWM7Z0JBQ2pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDL0IsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxRQUFRO29CQUN2QyxDQUFDLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJO29CQUN4QixDQUFDLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN0QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRSxRQUFRLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDekIsS0FBSyxPQUFPO2dCQUNWLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLEVBQUU7b0JBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUNyRSxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUNsQjtxQkFBTTtvQkFDTCxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztpQkFDN0I7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxFQUFFO29CQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDckUsU0FBUyxHQUFHLElBQUksQ0FBQztvQkFDakIsTUFBTTtpQkFDUDtxQkFBTTtvQkFDTCxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztpQkFDN0I7Z0JBRUQsSUFDRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO29CQUN6QixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztvQkFDcEIsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDM0I7b0JBQ0EsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDbEI7cUJBQU07b0JBQ0wsU0FBUyxHQUFHLEtBQUssQ0FBQztpQkFDbkI7Z0JBRUQsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxFQUFFO29CQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDckUsU0FBUyxHQUFHLElBQUksQ0FBQztvQkFDakIsTUFBTTtpQkFDUDtxQkFBTTtvQkFDTCxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztpQkFDN0I7Z0JBRUQsSUFDRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO29CQUN6QixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztvQkFDcEIsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDM0I7b0JBQ0EsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDbEI7cUJBQU07b0JBQ0wsU0FBUyxHQUFHLEtBQUssQ0FBQztpQkFDbkI7Z0JBRUQsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixJQUNFLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDO29CQUM3QixnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFO29CQUMxQixnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFDMUM7b0JBQ0EsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDbEI7cUJBQU07b0JBQ0wsU0FBUyxHQUFHLEtBQUssQ0FBQztpQkFDbkI7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixJQUFJLGdCQUFnQixFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ2hDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FDekIsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxFQUN2RyxvQkFBb0IsQ0FDckIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDVCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsWUFBWSxFQUFFO3dCQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFDekQsU0FBUyxHQUFHLElBQUksQ0FBQzt3QkFDakIsTUFBTTtxQkFDUDt5QkFBTTt3QkFDTCxTQUFTLEdBQUcsS0FBSyxDQUFDO3dCQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztxQkFDN0I7aUJBQ0Y7cUJBQU07b0JBQ0wsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDbEI7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssYUFBYTtnQkFDaEIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxjQUFjLEdBQUcsQ0FBQyxFQUFFO29CQUN2RCxTQUFTLEdBQUcsS0FBSyxDQUFDO2lCQUNuQjtxQkFBTTtvQkFDTCxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUNsQjtnQkFDRCxNQUFNO1lBRVIsS0FBSyxRQUFRO2dCQUNYLElBQ0UsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDbEMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO3dCQUN4QixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQzt3QkFDcEIsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUM5QjtvQkFDQSxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUNsQjtxQkFBTTtvQkFDTCxTQUFTLEdBQUcsS0FBSyxDQUFDO2lCQUNuQjtnQkFDRCxNQUFNO1lBQ1I7Z0JBQ0UsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUNyQjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFVO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLElBQUk7SUFFSixJQUFJO0lBRUosSUFBSTtRQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDOytHQTVTVSwyQkFBMkI7bUdBQTNCLDJCQUEyQixxUkNqQnhDLG9uUkFzSU07OzRGRHJITywyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UseUJBQXlCO3FJQVExQixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0UsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25DaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vZnJlcXVlbmN5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1mcmVxdWVuY3ktY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZyZXF1ZW5jeS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mcmVxdWVuY3ktY29udGFpbmVyLmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZyZXF1ZW5jeUNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgZnJlcXVlbmN5VGFiID0gJ2RhaWx5JztcbiAgY3VycmVudFRhYk5hbWUgPSAnYSBEYWlseSc7XG5cbiAgQElucHV0KCkgZnJlcXVlbmN5RGV0YWlsczogYW55O1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRGcmVxdWVuY3kgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNsb3NlRnJlcXVlbmN5ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIG1vZGU6IGFueSA9ICcnO1xuICBASW5wdXQoKSBmZWF0dXJlOiBhbnk7XG4gIEBJbnB1dCgpIHBhZ2VUeXBlOiAncmVzcG9uc2liaWxpdHknIHwgJ3BvbGljeScgPSAncmVzcG9uc2liaWxpdHknO1xuXG4gIGZyZXF1ZW5jeURhdGE6IGFueTtcblxuICBmcmVxdWVuY3lMaXN0ID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICdEYWlseScsXG4gICAgICB0eXBlOiAnZGFpbHknLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ1dlZWtseScsXG4gICAgICB0eXBlOiAnd2Vla2x5JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdNb250aGx5JyxcbiAgICAgIHR5cGU6ICdtb250aGx5JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdRdWFydGVybHknLFxuICAgICAgdHlwZTogJ3F1YXJ0ZXJseScsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnQmlhbm51YWwnLFxuICAgICAgdHlwZTogJ2JpYW5udWFsJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdBbm51YWwnLFxuICAgICAgdHlwZTogJ2FubnVhbCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnT25lIFRpbWUnLFxuICAgICAgdHlwZTogJ29uZVRpbWUnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ1JhbmRvbScsXG4gICAgICB0eXBlOiAncmFuZG9tJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdPbiBDb21wbGV0aW9uIE9mJyxcbiAgICAgIHR5cGU6ICdvbl9jb21wbGV0ZScsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnT25nb2luZycsXG4gICAgICB0eXBlOiAnb25nb2luZycsXG4gICAgfSxcbiAgXTtcblxuICBzZWxlY3RlZEZyZXF1ZW5jeURhdGE6IGFueTtcbiAgaXNOZXh0RGlzYWJsZWQ6IGFueSA9IGZhbHNlO1xuICBmZWF0dXJlRmxhZ19vbl9jb21wbGV0aW9uX29mOiBhbnk7XG4gIG9wZW5lZFJhZGlvRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja2JhcjogU25hY2tCYXJTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZlYXR1cmVGbGFnX29uX2NvbXBsZXRpb25fb2YgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9mcmVxdWVuY3lfb25fY29tcGxldGlvbl9vZidcbiAgICApO1xuICAgIGlmICh0aGlzLmZyZXF1ZW5jeURldGFpbHMucGF0dGVybiAhPSAnJykge1xuICAgICAgdGhpcy5wb3B1bGF0ZUZyZXF1ZW5jeSgpO1xuICAgIH1cbiAgICBjb25zdCBoaWRlRWxlbWVudHMgPSBbJ3JhbmRvbScsICdvbl9jb21wbGV0ZScsICdvbmdvaW5nJ107XG4gICAgaWYgKHRoaXMubW9kZSA9PSAncG9saWN5Jykge1xuICAgICAgaGlkZUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZnJlcXVlbmN5TGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgKGVsZW1lbnRJbmRleDogYW55KSA9PiBlbGVtZW50SW5kZXgudHlwZSA9PSBlbGVtZW50XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5TGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGhpZGVFbGVtZW50czIgPSBbJ2RhaWx5JywgJ3JhbmRvbScsICdvbl9jb21wbGV0ZScsICdvbmdvaW5nJ107XG4gICAgaWYgKHRoaXMubW9kZSA9PSAncmV2aWV3ZXJGcmVxdWVuY3knKSB7XG4gICAgICB0aGlzLmZyZXF1ZW5jeVRhYiA9XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscz8ucGF0dGVybiA9PSAnJyA/ICd3ZWVrbHknIDogdGhpcy5mcmVxdWVuY3lUYWI7XG4gICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID1cbiAgICAgICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzPy5wYXR0ZXJuID09ICcnID8gJ2Egd2Vla2x5JyA6IHRoaXMuY3VycmVudFRhYk5hbWU7XG5cbiAgICAgIGhpZGVFbGVtZW50czIuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5mcmVxdWVuY3lMaXN0LmZpbmRJbmRleChcbiAgICAgICAgICAoZWxlbWVudEluZGV4OiBhbnkpID0+IGVsZW1lbnRJbmRleC50eXBlID09IGVsZW1lbnRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lMaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLnNlbGVjdGVkRnJlcXVlbmN5RGF0YSA9IE9iamVjdC5hc3NpZ24oeyAuLi50aGlzLmZyZXF1ZW5jeURldGFpbHMgfSk7XG4gICAgdGhpcy5mcmVxdWVuY3lEYXRhID0gT2JqZWN0LmFzc2lnbih7IC4uLnRoaXMuZnJlcXVlbmN5RGV0YWlscyB9KTtcbiAgfVxuXG4gIHBvcHVsYXRlRnJlcXVlbmN5KCkge1xuICAgIGNvbnN0IGZyZXF1ZW5jeVBhdHRlcm4gPSBwYXJzZUludChcbiAgICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5wYXR0ZXJuLnNwbGl0KCd+JylbMF1cbiAgICApO1xuXG4gICAgc3dpdGNoIChmcmVxdWVuY3lQYXR0ZXJuKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ29uZVRpbWUnO1xuICAgICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID0gJ2Egb25lIHRpbWUnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnZGFpbHknO1xuICAgICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID0gJ2EgZGFpbHknO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnd2Vla2x5JztcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhIHdlZWtseSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVRhYiA9ICdtb250aGx5JztcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhIG1vbnRobHknO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnYW5udWFsJztcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhbiBhbm51YWwgJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDU6XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ2RhaWx5JztcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhIGRhaWx5JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDY6XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ29uX2NvbXBsZXRlJztcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhbiBvbiBjb21wbGV0aW9uIG9mJztcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhLnJlcG9ydF9pZCA9IHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zZWxlY3RlZFJlcG9ydDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDc6XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ3F1YXJ0ZXJseSc7XG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYSBxdWFydGVybHknO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgODpcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAncmFuZG9tJztcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhIHJhbmRvbSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA5OlxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVRhYiA9ICdiaWFubnVhbCc7XG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYSBiaWFubnVhbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDpcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnb25nb2luZyc7XG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYW4gb25nb2luZyc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLmlzTmV4dERpc2FibGVkID0gZmFsc2U7XG4gIH1cblxuICBjaGFuZ2VGcmVxdWVuY3lUYWIoZnJlcXVlbmN5OiBhbnkpIHtcbiAgICB0aGlzLmZyZXF1ZW5jeVRhYiA9IGZyZXF1ZW5jeS50eXBlO1xuXG4gICAgaWYgKGZyZXF1ZW5jeS5uYW1lID09ICdPbmUgVGltZScpIHtcbiAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYSBvbmUgdGltZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPVxuICAgICAgICBmcmVxdWVuY3kubmFtZS5zdGFydHNXaXRoKCdPbicpIHx8XG4gICAgICAgIGZyZXF1ZW5jeS5uYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdhbm51YWwnXG4gICAgICAgICAgPyAnYW4gJyArIGZyZXF1ZW5jeS5uYW1lXG4gICAgICAgICAgOiAnYSAnICsgZnJlcXVlbmN5Lm5hbWU7XG4gICAgfVxuICB9XG5cbiAgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIGxldCBpc0ludmFsaWQgPSBmYWxzZTtcbiAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzID0gdGhpcy5mcmVxdWVuY3lEYXRhPy5wYXR0ZXJuPy5zcGxpdCgnficpO1xuICAgIHN3aXRjaCAodGhpcy5mcmVxdWVuY3lUYWIpIHtcbiAgICAgIGNhc2UgJ2RhaWx5JzpcbiAgICAgICAgaWYgKHRoaXMuZnJlcXVlbmN5RGF0YS5jb250aW51b3VzX2ZhaWxlZF9kYXlzIDwgMikge1xuICAgICAgICAgIHRoaXMuc25hY2tiYXIuc2hvdygnSW5wdXQgdmFsdWUgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAxLicsICdhbGVydCcpO1xuICAgICAgICAgIGlzSW52YWxpZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc05leHREaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnd2Vla2x5JzpcbiAgICAgICAgaWYgKHRoaXMuZnJlcXVlbmN5RGF0YS5jb250aW51b3VzX2ZhaWxlZF9kYXlzIDwgMikge1xuICAgICAgICAgIHRoaXMuc25hY2tiYXIuc2hvdygnSW5wdXQgdmFsdWUgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAxLicsICdhbGVydCcpO1xuICAgICAgICAgIGlzSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc05leHREaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHNbMV0gPT0gJycgfHxcbiAgICAgICAgICAhZnJlcXVlbmN5RGV0YWlsc1sxXSB8fFxuICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHMubGVuZ3RoIDwgNFxuICAgICAgICApIHtcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzSW52YWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtb250aGx5JzpcbiAgICAgICAgaWYgKHRoaXMuZnJlcXVlbmN5RGF0YS5jb250aW51b3VzX2ZhaWxlZF9kYXlzIDwgMikge1xuICAgICAgICAgIHRoaXMuc25hY2tiYXIuc2hvdygnSW5wdXQgdmFsdWUgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAxLicsICdhbGVydCcpO1xuICAgICAgICAgIGlzSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc05leHREaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHNbMl0gPT0gJycgfHxcbiAgICAgICAgICAhZnJlcXVlbmN5RGV0YWlsc1syXSB8fFxuICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHMubGVuZ3RoIDwgNFxuICAgICAgICApIHtcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzSW52YWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdiaWFubnVhbCc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHNbMl0gPT09ICcnIHx8XG4gICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpPy5sZW5ndGggPCAyXG4gICAgICAgICkge1xuICAgICAgICAgIGlzSW52YWxpZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvbmVUaW1lJzpcbiAgICAgICAgaWYgKGZyZXF1ZW5jeURldGFpbHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZFRpbWUgPSBtb21lbnQoXG4gICAgICAgICAgICBgJHtmcmVxdWVuY3lEZXRhaWxzWzNdfS0ke2ZyZXF1ZW5jeURldGFpbHNbMl19LSR7ZnJlcXVlbmN5RGV0YWlsc1sxXX0gJHt0aGlzLmZyZXF1ZW5jeURhdGEudGltZUluMTJocn1gLFxuICAgICAgICAgICAgJ0RELU1NLVlZWVkgSEg6bW0gYSdcbiAgICAgICAgICApLnVuaXgoKTtcbiAgICAgICAgICBpZiAoRGF0ZS5ub3coKSAvIDEwMDAgPiBzZWxlY3RlZFRpbWUpIHtcbiAgICAgICAgICAgIHRoaXMuc25hY2tiYXIuc2hvdygnUGxlYXNlIHNldCBhIGZ1dHVyZSBkYXRlLicsICdhbGVydCcpO1xuICAgICAgICAgICAgaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpc0ludmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaXNOZXh0RGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29uX2NvbXBsZXRlJzpcbiAgICAgICAgaWYgKHRoaXMuZnJlcXVlbmN5RGF0YS5vbkNvbXBsZXRpb24/LnJlc3BvbnNpYmlsaXR5ID4gMCkge1xuICAgICAgICAgIGlzSW52YWxpZCA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzSW52YWxpZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3JhbmRvbSc6XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PSAyICYmXG4gICAgICAgICAgKGZyZXF1ZW5jeURldGFpbHNbMl0gPT0gJycgfHxcbiAgICAgICAgICAgICFmcmVxdWVuY3lEZXRhaWxzWzJdIHx8XG4gICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzLmxlbmd0aCA8IDQpXG4gICAgICAgICkge1xuICAgICAgICAgIGlzSW52YWxpZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpc0ludmFsaWQgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzSW52YWxpZDtcbiAgfVxuXG4gIG9uRnJlcXVlbmN5U2VsZWN0ZWQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZnJlcXVlbmN5RGF0YSA9IGV2ZW50O1xuICAgIHRoaXMuaXNOZXh0RGlzYWJsZWQgPSB0aGlzLmlzSW52YWxpZCgpO1xuICB9XG5cbiAgb3BlbmVkUmFkaW8oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMub3BlbmVkUmFkaW9Gb3JtID0gZXZlbnQ7XG4gIH1cblxuICAvLyAgIGNoZWNrTmV4dFZhbGlkaXR5KClcbiAgLy8ge1xuXG4gIC8vIH1cblxuICBzYXZlKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRGcmVxdWVuY3kuZW1pdCh0aGlzLmZyZXF1ZW5jeURhdGEpO1xuICB9XG4gIGNsb3NlKCkge1xuICAgIHRoaXMuY2xvc2VGcmVxdWVuY3kuZW1pdCgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZSAhPT0gJ3BvbGljeSdcIj5cbiAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2dcIiAqbmdJZj1cIm1vZGUgIT09ICdwb2xpY3knXCI+XG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctaGVhZCB2eC1wLTMgdngtbWItNCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTE0IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj5TZXQgYSBGcmVxdWVuY3k8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1ib2R5IHZ4LXBsLTQgdngtcHItNFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctYm9keS1pbm5lclwiIFtuZ1N3aXRjaF09XCJmcmVxdWVuY3lUYWJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS10YWIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZyZXF1ZW5jeVR5cGUgb2YgZnJlcXVlbmN5TGlzdDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2hhbmdlRnJlcXVlbmN5VGFiKGZyZXF1ZW5jeVR5cGUpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWItYnRuIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtcGItMiB2eC1tLTBcIlxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImZyZXF1ZW5jeVR5cGU/LnR5cGUgPT0gZnJlcXVlbmN5VGFiXCI+e3sgZnJlcXVlbmN5VHlwZT8ubmFtZSB9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS10YWItYm90dG9tIHZ4LXBsLTQgdngtcHItNFwiPlxuICAgICAgICAgIDwhLS0gRGFpbHkgRnJlcXVlbmN5IFN0YXJ0IC0tPlxuICAgICAgICAgIDxhcHAtZnJlcXVlbmN5LWRhaWx5ICpuZ1N3aXRjaENhc2U9XCInZGFpbHknXCIgW21vZGVdPVwibW9kZVwiIFtwYWdlVHlwZV09XCJwYWdlVHlwZVwiXG4gICAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIiBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+PC9hcHAtZnJlcXVlbmN5LWRhaWx5PlxuICAgICAgICAgIDwhLS0gRGFpbHkgRnJlcXVlbmN5IEVuZCAtLT5cbiAgICAgICAgICA8IS0tIFdlZWtseSBGcmVxdWVuY3kgU3RhcnQgLS0+XG4gICAgICAgICAgPGFwcC1mcmVxdWVuY3ktd2Vla2x5ICpuZ1N3aXRjaENhc2U9XCInd2Vla2x5J1wiIFttb2RlXT1cIm1vZGVcIiBbcGFnZVR5cGVdPVwicGFnZVR5cGVcIlxuICAgICAgICAgICAgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCIgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiPjwvYXBwLWZyZXF1ZW5jeS13ZWVrbHk+XG4gICAgICAgICAgPCEtLSBXZWVrbHkgRnJlcXVlbmN5IEVuZCAtLT5cbiAgICAgICAgICA8IS0tIE1vbnRobHkgRnJlcXVlbmN5IFN0YXJ0IC0tPlxuICAgICAgICAgIDxhcHAtZnJlcXVlbmN5LW1vbnRobHkgKm5nU3dpdGNoQ2FzZT1cIidtb250aGx5J1wiIFttb2RlXT1cIm1vZGVcIiBbcGFnZVR5cGVdPVwicGFnZVR5cGVcIlxuICAgICAgICAgICAgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCIgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiPjwvYXBwLWZyZXF1ZW5jeS1tb250aGx5PlxuICAgICAgICAgIDwhLS0gTW9udGhseSBGcmVxdWVuY3kgRW5kIC0tPlxuICAgICAgICAgIDwhLS0gUXVhcnRlcmx5IEZyZXF1ZW5jeSBTdGFydCAtLT5cbiAgICAgICAgICA8YXBwLWZyZXF1ZW5jeS1xdWFydGVybHkgKm5nU3dpdGNoQ2FzZT1cIidxdWFydGVybHknXCIgW21vZGVdPVwibW9kZVwiIFtwYWdlVHlwZV09XCJwYWdlVHlwZVwiXG4gICAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiPjwvYXBwLWZyZXF1ZW5jeS1xdWFydGVybHk+XG4gICAgICAgICAgPCEtLSBRdWFydGVybHkgRnJlcXVlbmN5IEVuZCAtLT5cbiAgICAgICAgICA8IS0tIEJpYW5udWFsIEZyZXF1ZW5jeSBTdGFydCAtLT5cbiAgICAgICAgICA8YXBwLWZyZXF1ZW5jeS1iaWFubnVhbCAqbmdTd2l0Y2hDYXNlPVwiJ2JpYW5udWFsJ1wiIFttb2RlXT1cIm1vZGVcIiBbcGFnZVR5cGVdPVwicGFnZVR5cGVcIlxuICAgICAgICAgICAgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj48L2FwcC1mcmVxdWVuY3ktYmlhbm51YWw+XG4gICAgICAgICAgPCEtLSBCaWFubnVhbCBGcmVxdWVuY3kgRW5kIC0tPlxuICAgICAgICAgIDwhLS0gQW5udWFsIEZyZXF1ZW5jeSBTdGFydCAtLT5cbiAgICAgICAgICA8YXBwLWZyZXF1ZW5jeS1hbm51YWwgKm5nU3dpdGNoQ2FzZT1cIidhbm51YWwnXCIgW21vZGVdPVwibW9kZVwiIFtwYWdlVHlwZV09XCJwYWdlVHlwZVwiXG4gICAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIiBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+PC9hcHAtZnJlcXVlbmN5LWFubnVhbD5cbiAgICAgICAgICA8IS0tIEFubnVhbCBGcmVxdWVuY3kgRW5kIC0tPlxuICAgICAgICAgIDwhLS0gT25lIFRpbWUgRnJlcXVlbmN5IFN0YXJ0IC0tPlxuICAgICAgICAgIDxhcHAtZnJlcXVlbmN5LW9uZS10aW1lICpuZ1N3aXRjaENhc2U9XCInb25lVGltZSdcIiBbbW9kZV09XCJtb2RlXCIgW3BhZ2VUeXBlXT1cInBhZ2VUeXBlXCJcbiAgICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+PC9hcHAtZnJlcXVlbmN5LW9uZS10aW1lPlxuICAgICAgICAgIDwhLS0gT25lIFRpbWUgRnJlcXVlbmN5IEVuZCAtLT5cbiAgICAgICAgICA8IS0tIFJhbmRvbSBGcmVxdWVuY3kgU3RhcnQgLS0+XG4gICAgICAgICAgPGFwcC1mcmVxdWVuY3ktcmFuZG9tICpuZ1N3aXRjaENhc2U9XCIncmFuZG9tJ1wiIFttb2RlXT1cIm1vZGVcIiAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiPjwvYXBwLWZyZXF1ZW5jeS1yYW5kb20+XG4gICAgICAgICAgPCEtLSBSYW5kb20gRnJlcXVlbmN5IEVuZCAtLT5cbiAgICAgICAgICA8IS0tIE9uIENvbXBsZXRpb24gRnJlcXVlbmN5IFN0YXJ0IC0tPlxuICAgICAgICAgIDxhcHAtZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2YgKm5nU3dpdGNoQ2FzZT1cIidvbl9jb21wbGV0ZSdcIiBbbW9kZV09XCJtb2RlXCIgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiXG4gICAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIiBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCJcbiAgICAgICAgICAgIChyYWRpb0Zvcm0pPVwib3BlbmVkUmFkaW8oJGV2ZW50KVwiPjwvYXBwLWZyZXF1ZW5jeS1vbi1jb21wbGV0aW9uLW9mPlxuICAgICAgICAgIDwhLS0gT24gQ29tcGxldGlvbiBGcmVxdWVuY3kgRW5kIC0tPlxuICAgICAgICAgIDwhLS0gT25nb2luZyBGcmVxdWVuY3kgU3RhcnQgLS0+XG4gICAgICAgICAgPGFwcC1mcmVxdWVuY3ktb25nb2luZyAqbmdTd2l0Y2hDYXNlPVwiJ29uZ29pbmcnXCIgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj48L2FwcC1mcmVxdWVuY3ktb25nb2luZz5cbiAgICAgICAgICA8IS0tIE9uZ29pbmcgRnJlcXVlbmN5IEVuZCAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLWZvb3RlclwiICpuZ0lmPVwiIW9wZW5lZFJhZGlvRm9ybVwiPlxuICAgICAgPGFwcC1mbG9hdGluZy1iYXIgW3Nob3dGcmVxdWVuY3lUZXh0XT1cInRydWVcIiBbY3VycmVudEZyZXF1ZW5jeV09XCJjdXJyZW50VGFiTmFtZVwiIFtpc0Rpc2FibGVkXT1cImlzTmV4dERpc2FibGVkXCJcbiAgICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZSgpXCIgKGNsb3NlTGlzdCk9XCJjbG9zZSgpXCI+PC9hcHAtZmxvYXRpbmctYmFyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPCEtLSBXaGVuIHJlc3BvbnNpYmlsaXR5IGxpc3Qgc2hvdyB0aGVuIGhpZGUgZnJlcXVlbmN5LWRpYWxvZyBodG1sIC0tPlxuXG48IS0tIEZvciBQb2xpY3kgLS0+XG48ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZ1wiICpuZ0lmPVwibW9kZSA9PT0gJ3BvbGljeSdcIj5cbiAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctaGVhZCB2eC1wLTMgdngtbWItNCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiPlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+U2V0IGEgRnJlcXVlbmN5PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1ib2R5IHZ4LXBsLTQgdngtcHItNFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLWJvZHktaW5uZXJcIiBbbmdTd2l0Y2hdPVwiZnJlcXVlbmN5VGFiXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LXRhYiB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZyZXF1ZW5jeVR5cGUgb2YgZnJlcXVlbmN5TGlzdDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNoYW5nZUZyZXF1ZW5jeVRhYihmcmVxdWVuY3lUeXBlKVwiXG4gICAgICAgICAgICBjbGFzcz1cInRhYi1idG4gdngtZnMtMTEgdngtZnctNTAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1wYi0yIHZ4LW0tMFwiXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImZyZXF1ZW5jeVR5cGU/LnR5cGUgPT0gZnJlcXVlbmN5VGFiXCI+e3sgZnJlcXVlbmN5VHlwZT8ubmFtZSB9fTwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS10YWItYm90dG9tIHZ4LXBsLTQgdngtcHItNFwiPlxuICAgICAgICA8IS0tIERhaWx5IEZyZXF1ZW5jeSBTdGFydCAtLT5cbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGFpbHkgKm5nU3dpdGNoQ2FzZT1cIidkYWlseSdcIiBbbW9kZV09XCJtb2RlXCIgW3BhZ2VUeXBlXT1cInBhZ2VUeXBlXCJcbiAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIiBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+PC9hcHAtZnJlcXVlbmN5LWRhaWx5PlxuICAgICAgICA8IS0tIERhaWx5IEZyZXF1ZW5jeSBFbmQgLS0+XG4gICAgICAgIDwhLS0gV2Vla2x5IEZyZXF1ZW5jeSBTdGFydCAtLT5cbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktd2Vla2x5ICpuZ1N3aXRjaENhc2U9XCInd2Vla2x5J1wiIFttb2RlXT1cIm1vZGVcIiBbcGFnZVR5cGVdPVwicGFnZVR5cGVcIlxuICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj48L2FwcC1mcmVxdWVuY3ktd2Vla2x5PlxuICAgICAgICA8IS0tIFdlZWtseSBGcmVxdWVuY3kgRW5kIC0tPlxuICAgICAgICA8IS0tIE1vbnRobHkgRnJlcXVlbmN5IFN0YXJ0IC0tPlxuICAgICAgICA8YXBwLWZyZXF1ZW5jeS1tb250aGx5ICpuZ1N3aXRjaENhc2U9XCInbW9udGhseSdcIiBbbW9kZV09XCJtb2RlXCIgW3BhZ2VUeXBlXT1cInBhZ2VUeXBlXCJcbiAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIiBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+PC9hcHAtZnJlcXVlbmN5LW1vbnRobHk+XG4gICAgICAgIDwhLS0gTW9udGhseSBGcmVxdWVuY3kgRW5kIC0tPlxuICAgICAgICA8IS0tIFF1YXJ0ZXJseSBGcmVxdWVuY3kgU3RhcnQgLS0+XG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LXF1YXJ0ZXJseSAqbmdTd2l0Y2hDYXNlPVwiJ3F1YXJ0ZXJseSdcIiBbbW9kZV09XCJtb2RlXCIgW3BhZ2VUeXBlXT1cInBhZ2VUeXBlXCJcbiAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIiBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+PC9hcHAtZnJlcXVlbmN5LXF1YXJ0ZXJseT5cbiAgICAgICAgPCEtLSBRdWFydGVybHkgRnJlcXVlbmN5IEVuZCAtLT5cbiAgICAgICAgPCEtLSBCaWFubnVhbCBGcmVxdWVuY3kgU3RhcnQgLS0+XG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LWJpYW5udWFsICpuZ1N3aXRjaENhc2U9XCInYmlhbm51YWwnXCIgW21vZGVdPVwibW9kZVwiIFtwYWdlVHlwZV09XCJwYWdlVHlwZVwiXG4gICAgICAgICAgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCIgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiPjwvYXBwLWZyZXF1ZW5jeS1iaWFubnVhbD5cbiAgICAgICAgPCEtLSBCaWFubnVhbCBGcmVxdWVuY3kgRW5kIC0tPlxuICAgICAgICA8IS0tIEFubnVhbCBGcmVxdWVuY3kgU3RhcnQgLS0+XG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LWFubnVhbCAqbmdTd2l0Y2hDYXNlPVwiJ2FubnVhbCdcIiBbbW9kZV09XCJtb2RlXCIgW3BhZ2VUeXBlXT1cInBhZ2VUeXBlXCJcbiAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIiBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+PC9hcHAtZnJlcXVlbmN5LWFubnVhbD5cbiAgICAgICAgPCEtLSBBbm51YWwgRnJlcXVlbmN5IEVuZCAtLT5cbiAgICAgICAgPCEtLSBPbmUgVGltZSBGcmVxdWVuY3kgU3RhcnQgLS0+XG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LW9uZS10aW1lICpuZ1N3aXRjaENhc2U9XCInb25lVGltZSdcIiBbbW9kZV09XCJtb2RlXCIgW3BhZ2VUeXBlXT1cInBhZ2VUeXBlXCJcbiAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIiBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+PC9hcHAtZnJlcXVlbmN5LW9uZS10aW1lPlxuICAgICAgICA8IS0tIE9uZSBUaW1lIEZyZXF1ZW5jeSBFbmQgLS0+XG4gICAgICAgIDwhLS0gUmFuZG9tIEZyZXF1ZW5jeSBTdGFydCAtLT5cbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktcmFuZG9tICpuZ1N3aXRjaENhc2U9XCIncmFuZG9tJ1wiIFttb2RlXT1cIm1vZGVcIiAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj48L2FwcC1mcmVxdWVuY3ktcmFuZG9tPlxuICAgICAgICA8IS0tIFJhbmRvbSBGcmVxdWVuY3kgRW5kIC0tPlxuICAgICAgICA8IS0tIE9uIENvbXBsZXRpb24gRnJlcXVlbmN5IFN0YXJ0IC0tPlxuICAgICAgICA8YXBwLWZyZXF1ZW5jeS1vbi1jb21wbGV0aW9uLW9mICpuZ1N3aXRjaENhc2U9XCInb25fY29tcGxldGUnXCIgW21vZGVdPVwibW9kZVwiXG4gICAgICAgICAgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+PC9hcHAtZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2Y+XG4gICAgICAgIDwhLS0gT24gQ29tcGxldGlvbiBGcmVxdWVuY3kgRW5kIC0tPlxuICAgICAgICA8IS0tIE9uZ29pbmcgRnJlcXVlbmN5IFN0YXJ0IC0tPlxuICAgICAgICA8YXBwLWZyZXF1ZW5jeS1vbmdvaW5nICpuZ1N3aXRjaENhc2U9XCInb25nb2luZydcIiAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj48L2FwcC1mcmVxdWVuY3ktb25nb2luZz5cbiAgICAgICAgPCEtLSBPbmdvaW5nIEZyZXF1ZW5jeSBFbmQgLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLWZvb3RlclwiPlxuICAgIDxhcHAtZmxvYXRpbmctYmFyIFtzaG93RnJlcXVlbmN5VGV4dF09XCJ0cnVlXCIgW2N1cnJlbnRGcmVxdWVuY3ldPVwiY3VycmVudFRhYk5hbWVcIiBbaXNEaXNhYmxlZF09XCJpc05leHREaXNhYmxlZFwiXG4gICAgICAoY2xvc2VFdmVudCk9XCJzYXZlKClcIiAoY2xvc2VMaXN0KT1cImNsb3NlKClcIj48L2FwcC1mbG9hdGluZy1iYXI+XG4gIDwvZGl2PlxuPC9kaXY+Il19
305
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3ktY29udGFpbmVyL2ZyZXF1ZW5jeS1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvc2hhcmVkQ29tcG9uZW50cy9mcmVxdWVuY3kvZnJlcXVlbmN5LWNvbnRhaW5lci9mcmVxdWVuY3ktY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEdBRWIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBU25DLE1BQU0sT0FBTywyQkFBMkI7SUE2RHRDLFlBQ1UsZ0JBQWtDLEVBQ2xDLFFBQXlCO1FBRHpCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUE5RG5DLGlCQUFZLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLG1CQUFjLEdBQUcsU0FBUyxDQUFDO1FBR2pCLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDNUMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzFDLFNBQUksR0FBUSxFQUFFLENBQUM7UUFFZixhQUFRLEdBQWdDLGdCQUFnQixDQUFDO1FBS2xFLGtCQUFhLEdBQUc7WUFDZDtnQkFDRSxJQUFJLEVBQUUsT0FBTztnQkFDYixJQUFJLEVBQUUsT0FBTzthQUNkO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLFFBQVE7YUFDZjtZQUNEO2dCQUNFLElBQUksRUFBRSxTQUFTO2dCQUNmLElBQUksRUFBRSxTQUFTO2FBQ2hCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLElBQUksRUFBRSxXQUFXO2FBQ2xCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLElBQUksRUFBRSxVQUFVO2FBQ2pCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLFFBQVE7YUFDZjtZQUNEO2dCQUNFLElBQUksRUFBRSxVQUFVO2dCQUNoQixJQUFJLEVBQUUsU0FBUzthQUNoQjtZQUNEO2dCQUNFLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxRQUFRO2FBQ2Y7WUFDRDtnQkFDRSxJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixJQUFJLEVBQUUsYUFBYTthQUNwQjtZQUNEO2dCQUNFLElBQUksRUFBRSxTQUFTO2dCQUNmLElBQUksRUFBRSxTQUFTO2FBQ2hCO1NBQ0YsQ0FBQztRQUdGLG1CQUFjLEdBQVEsS0FBSyxDQUFDO1FBRTVCLG9CQUFlLEdBQVksS0FBSyxDQUFDO0lBSTlCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQy9ELCtCQUErQixDQUNoQyxDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjtRQUNELE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxFQUFFO1lBQ3pCLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtnQkFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQ3hDLENBQUMsWUFBaUIsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxPQUFPLENBQ3BELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxtQkFBbUIsRUFBRTtZQUNwQyxJQUFJLENBQUMsWUFBWTtnQkFDZixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxjQUFjO2dCQUNqQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBRTFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtnQkFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQ3hDLENBQUMsWUFBaUIsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxPQUFPLENBQ3BELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM1QyxDQUFDO1FBRUYsUUFBUSxnQkFBZ0IsRUFBRTtZQUN4QixLQUFLLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDO2dCQUNuQyxNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO2dCQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztnQkFDaEMsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUM7Z0JBQ2pDLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO2dCQUM3QixJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQztnQkFDbkMsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7Z0JBQ2hDLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUcscUJBQXFCLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7Z0JBQ3BFLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO2dCQUNwQyxNQUFNO1lBQ1IsS0FBSyxDQUFDO2dCQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO2dCQUM3QixJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQztnQkFDakMsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUM7Z0JBQ25DLE1BQU07WUFDUixLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDO2dCQUNuQyxNQUFNO1NBQ1Q7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsa0JBQWtCLENBQUMsU0FBYztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFFbkMsSUFBSSxTQUFTLENBQUMsSUFBSSxJQUFJLFVBQVUsRUFBRTtZQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQztTQUNwQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWM7Z0JBQ2pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDL0IsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxRQUFRO29CQUN2QyxDQUFDLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJO29CQUN4QixDQUFDLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN0QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRSxRQUFRLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDekIsS0FBSyxPQUFPO2dCQUNWLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLEVBQUU7b0JBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUNyRSxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUNsQjtxQkFBTTtvQkFDTCxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztpQkFDN0I7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxFQUFFO29CQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDckUsU0FBUyxHQUFHLElBQUksQ0FBQztvQkFDakIsTUFBTTtpQkFDUDtxQkFBTTtvQkFDTCxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztpQkFDN0I7Z0JBRUQsSUFDRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO29CQUN6QixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztvQkFDcEIsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDM0I7b0JBQ0EsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDbEI7cUJBQU07b0JBQ0wsU0FBUyxHQUFHLEtBQUssQ0FBQztpQkFDbkI7Z0JBRUQsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxFQUFFO29CQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDckUsU0FBUyxHQUFHLElBQUksQ0FBQztvQkFDakIsTUFBTTtpQkFDUDtxQkFBTTtvQkFDTCxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztpQkFDN0I7Z0JBRUQsSUFDRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO29CQUN6QixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztvQkFDcEIsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDM0I7b0JBQ0EsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDbEI7cUJBQU07b0JBQ0wsU0FBUyxHQUFHLEtBQUssQ0FBQztpQkFDbkI7Z0JBRUQsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixJQUNFLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDO29CQUM3QixnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFO29CQUMxQixnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFDMUM7b0JBQ0EsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDbEI7cUJBQU07b0JBQ0wsU0FBUyxHQUFHLEtBQUssQ0FBQztpQkFDbkI7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixJQUFJLGdCQUFnQixFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ2hDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FDekIsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxFQUN2RyxvQkFBb0IsQ0FDckIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDVCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsWUFBWSxFQUFFO3dCQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFDekQsU0FBUyxHQUFHLElBQUksQ0FBQzt3QkFDakIsTUFBTTtxQkFDUDt5QkFBTTt3QkFDTCxTQUFTLEdBQUcsS0FBSyxDQUFDO3dCQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztxQkFDN0I7aUJBQ0Y7cUJBQU07b0JBQ0wsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDbEI7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssYUFBYTtnQkFDaEIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxjQUFjLEdBQUcsQ0FBQyxFQUFFO29CQUN2RCxTQUFTLEdBQUcsS0FBSyxDQUFDO2lCQUNuQjtxQkFBTTtvQkFDTCxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUNsQjtnQkFDRCxNQUFNO1lBRVIsS0FBSyxRQUFRO2dCQUNYLElBQ0UsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDbEMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO3dCQUN4QixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQzt3QkFDcEIsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUM5QjtvQkFDQSxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUNsQjtxQkFBTTtvQkFDTCxTQUFTLEdBQUcsS0FBSyxDQUFDO2lCQUNuQjtnQkFDRCxNQUFNO1lBQ1I7Z0JBQ0UsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUNyQjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFVO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLElBQUk7SUFFSixJQUFJO0lBRUosSUFBSTtRQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDOytHQTdTVSwyQkFBMkI7bUdBQTNCLDJCQUEyQiwrVUNqQnhDLDZyUkF1SU07OzRGRHRITywyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UseUJBQXlCO3FJQVExQixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0UsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC9tb21lbnQnO1xuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uL2ZyZXF1ZW5jeS5zZXJ2aWNlJztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZnJlcXVlbmN5LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mcmVxdWVuY3ktY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZnJlcXVlbmN5LWNvbnRhaW5lci5jb21wb25lbnQubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGcmVxdWVuY3lDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIGZyZXF1ZW5jeVRhYiA9ICdkYWlseSc7XG4gIGN1cnJlbnRUYWJOYW1lID0gJ2EgRGFpbHknO1xuXG4gIEBJbnB1dCgpIGZyZXF1ZW5jeURldGFpbHM6IGFueTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkRnJlcXVlbmN5ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjbG9zZUZyZXF1ZW5jeSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBtb2RlOiBhbnkgPSAnJztcbiAgQElucHV0KCkgZmVhdHVyZTogYW55O1xuICBASW5wdXQoKSBwYWdlVHlwZTogJ3Jlc3BvbnNpYmlsaXR5JyB8ICdwb2xpY3knID0gJ3Jlc3BvbnNpYmlsaXR5JztcbiAgQElucHV0KCkgb25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHk6IGFueTtcblxuICBmcmVxdWVuY3lEYXRhOiBhbnk7XG5cbiAgZnJlcXVlbmN5TGlzdCA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnRGFpbHknLFxuICAgICAgdHlwZTogJ2RhaWx5JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdXZWVrbHknLFxuICAgICAgdHlwZTogJ3dlZWtseScsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnTW9udGhseScsXG4gICAgICB0eXBlOiAnbW9udGhseScsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnUXVhcnRlcmx5JyxcbiAgICAgIHR5cGU6ICdxdWFydGVybHknLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0JpYW5udWFsJyxcbiAgICAgIHR5cGU6ICdiaWFubnVhbCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnQW5udWFsJyxcbiAgICAgIHR5cGU6ICdhbm51YWwnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ09uZSBUaW1lJyxcbiAgICAgIHR5cGU6ICdvbmVUaW1lJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdSYW5kb20nLFxuICAgICAgdHlwZTogJ3JhbmRvbScsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnT24gQ29tcGxldGlvbiBPZicsXG4gICAgICB0eXBlOiAnb25fY29tcGxldGUnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ09uZ29pbmcnLFxuICAgICAgdHlwZTogJ29uZ29pbmcnLFxuICAgIH0sXG4gIF07XG5cbiAgc2VsZWN0ZWRGcmVxdWVuY3lEYXRhOiBhbnk7XG4gIGlzTmV4dERpc2FibGVkOiBhbnkgPSBmYWxzZTtcbiAgZmVhdHVyZUZsYWdfb25fY29tcGxldGlvbl9vZjogYW55O1xuICBvcGVuZWRSYWRpb0Zvcm06IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tiYXI6IFNuYWNrQmFyU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mZWF0dXJlRmxhZ19vbl9jb21wbGV0aW9uX29mID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfZnJlcXVlbmN5X29uX2NvbXBsZXRpb25fb2YnXG4gICAgKTtcbiAgICBpZiAodGhpcy5mcmVxdWVuY3lEZXRhaWxzLnBhdHRlcm4gIT0gJycpIHtcbiAgICAgIHRoaXMucG9wdWxhdGVGcmVxdWVuY3koKTtcbiAgICB9XG4gICAgY29uc3QgaGlkZUVsZW1lbnRzID0gWydyYW5kb20nLCAnb25fY29tcGxldGUnLCAnb25nb2luZyddO1xuICAgIGlmICh0aGlzLm1vZGUgPT0gJ3BvbGljeScpIHtcbiAgICAgIGhpZGVFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZyZXF1ZW5jeUxpc3QuZmluZEluZGV4KFxuICAgICAgICAgIChlbGVtZW50SW5kZXg6IGFueSkgPT4gZWxlbWVudEluZGV4LnR5cGUgPT0gZWxlbWVudFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeUxpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBoaWRlRWxlbWVudHMyID0gWydkYWlseScsICdyYW5kb20nLCAnb25fY29tcGxldGUnLCAnb25nb2luZyddO1xuICAgIGlmICh0aGlzLm1vZGUgPT0gJ3Jldmlld2VyRnJlcXVlbmN5Jykge1xuICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPVxuICAgICAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHM/LnBhdHRlcm4gPT0gJycgPyAnd2Vla2x5JyA6IHRoaXMuZnJlcXVlbmN5VGFiO1xuICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscz8ucGF0dGVybiA9PSAnJyA/ICdhIHdlZWtseScgOiB0aGlzLmN1cnJlbnRUYWJOYW1lO1xuXG4gICAgICBoaWRlRWxlbWVudHMyLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZnJlcXVlbmN5TGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgKGVsZW1lbnRJbmRleDogYW55KSA9PiBlbGVtZW50SW5kZXgudHlwZSA9PSBlbGVtZW50XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5TGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5zZWxlY3RlZEZyZXF1ZW5jeURhdGEgPSBPYmplY3QuYXNzaWduKHsgLi4udGhpcy5mcmVxdWVuY3lEZXRhaWxzIH0pO1xuICAgIHRoaXMuZnJlcXVlbmN5RGF0YSA9IE9iamVjdC5hc3NpZ24oeyAuLi50aGlzLmZyZXF1ZW5jeURldGFpbHMgfSk7XG4gIH1cblxuICBwb3B1bGF0ZUZyZXF1ZW5jeSgpIHtcbiAgICBjb25zdCBmcmVxdWVuY3lQYXR0ZXJuID0gcGFyc2VJbnQoXG4gICAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMucGF0dGVybi5zcGxpdCgnficpWzBdXG4gICAgKTtcblxuICAgIHN3aXRjaCAoZnJlcXVlbmN5UGF0dGVybikge1xuICAgICAgY2FzZSAwOlxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVRhYiA9ICdvbmVUaW1lJztcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhIG9uZSB0aW1lJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ2RhaWx5JztcbiAgICAgICAgdGhpcy5jdXJyZW50VGFiTmFtZSA9ICdhIGRhaWx5JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ3dlZWtseSc7XG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYSB3ZWVrbHknO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnbW9udGhseSc7XG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYSBtb250aGx5JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ2FubnVhbCc7XG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYW4gYW5udWFsICc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA1OlxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVRhYiA9ICdkYWlseSc7XG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYSBkYWlseSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA2OlxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVRhYiA9ICdvbl9jb21wbGV0ZSc7XG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYW4gb24gY29tcGxldGlvbiBvZic7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5RGF0YS5yZXBvcnRfaWQgPSB0aGlzLmZyZXF1ZW5jeURldGFpbHMuc2VsZWN0ZWRSZXBvcnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA3OlxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVRhYiA9ICdxdWFydGVybHknO1xuICAgICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID0gJ2EgcXVhcnRlcmx5JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDg6XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ3JhbmRvbSc7XG4gICAgICAgIHRoaXMuY3VycmVudFRhYk5hbWUgPSAnYSByYW5kb20nO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgOTpcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lUYWIgPSAnYmlhbm51YWwnO1xuICAgICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID0gJ2EgYmlhbm51YWwnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTA6XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VGFiID0gJ29uZ29pbmcnO1xuICAgICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID0gJ2FuIG9uZ29pbmcnO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5pc05leHREaXNhYmxlZCA9IGZhbHNlO1xuICB9XG5cbiAgY2hhbmdlRnJlcXVlbmN5VGFiKGZyZXF1ZW5jeTogYW55KSB7XG4gICAgdGhpcy5mcmVxdWVuY3lUYWIgPSBmcmVxdWVuY3kudHlwZTtcblxuICAgIGlmIChmcmVxdWVuY3kubmFtZSA9PSAnT25lIFRpbWUnKSB7XG4gICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID0gJ2Egb25lIHRpbWUnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRUYWJOYW1lID1cbiAgICAgICAgZnJlcXVlbmN5Lm5hbWUuc3RhcnRzV2l0aCgnT24nKSB8fFxuICAgICAgICBmcmVxdWVuY3kubmFtZS50b0xvd2VyQ2FzZSgpID09PSAnYW5udWFsJ1xuICAgICAgICAgID8gJ2FuICcgKyBmcmVxdWVuY3kubmFtZVxuICAgICAgICAgIDogJ2EgJyArIGZyZXF1ZW5jeS5uYW1lO1xuICAgIH1cbiAgfVxuXG4gIGlzSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICBsZXQgaXNJbnZhbGlkID0gZmFsc2U7XG4gICAgY29uc3QgZnJlcXVlbmN5RGV0YWlscyA9IHRoaXMuZnJlcXVlbmN5RGF0YT8ucGF0dGVybj8uc3BsaXQoJ34nKTtcbiAgICBzd2l0Y2ggKHRoaXMuZnJlcXVlbmN5VGFiKSB7XG4gICAgICBjYXNlICdkYWlseSc6XG4gICAgICAgIGlmICh0aGlzLmZyZXF1ZW5jeURhdGEuY29udGludW91c19mYWlsZWRfZGF5cyA8IDIpIHtcbiAgICAgICAgICB0aGlzLnNuYWNrYmFyLnNob3coJ0lucHV0IHZhbHVlIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMS4nLCAnYWxlcnQnKTtcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzSW52YWxpZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNOZXh0RGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3dlZWtseSc6XG4gICAgICAgIGlmICh0aGlzLmZyZXF1ZW5jeURhdGEuY29udGludW91c19mYWlsZWRfZGF5cyA8IDIpIHtcbiAgICAgICAgICB0aGlzLnNuYWNrYmFyLnNob3coJ0lucHV0IHZhbHVlIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMS4nLCAnYWxlcnQnKTtcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzSW52YWxpZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNOZXh0RGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzFdID09ICcnIHx8XG4gICAgICAgICAgIWZyZXF1ZW5jeURldGFpbHNbMV0gfHxcbiAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzLmxlbmd0aCA8IDRcbiAgICAgICAgKSB7XG4gICAgICAgICAgaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc0ludmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbW9udGhseSc6XG4gICAgICAgIGlmICh0aGlzLmZyZXF1ZW5jeURhdGEuY29udGludW91c19mYWlsZWRfZGF5cyA8IDIpIHtcbiAgICAgICAgICB0aGlzLnNuYWNrYmFyLnNob3coJ0lucHV0IHZhbHVlIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMS4nLCAnYWxlcnQnKTtcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzSW52YWxpZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNOZXh0RGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzJdID09ICcnIHx8XG4gICAgICAgICAgIWZyZXF1ZW5jeURldGFpbHNbMl0gfHxcbiAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzLmxlbmd0aCA8IDRcbiAgICAgICAgKSB7XG4gICAgICAgICAgaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc0ludmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYmlhbm51YWwnOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgZnJlcXVlbmN5RGV0YWlscy5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzJdID09PSAnJyB8fFxuICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKT8ubGVuZ3RoIDwgMlxuICAgICAgICApIHtcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzSW52YWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb25lVGltZSc6XG4gICAgICAgIGlmIChmcmVxdWVuY3lEZXRhaWxzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRUaW1lID0gbW9tZW50KFxuICAgICAgICAgICAgYCR7ZnJlcXVlbmN5RGV0YWlsc1szXX0tJHtmcmVxdWVuY3lEZXRhaWxzWzJdfS0ke2ZyZXF1ZW5jeURldGFpbHNbMV19ICR7dGhpcy5mcmVxdWVuY3lEYXRhLnRpbWVJbjEyaHJ9YCxcbiAgICAgICAgICAgICdERC1NTS1ZWVlZIEhIOm1tIGEnXG4gICAgICAgICAgKS51bml4KCk7XG4gICAgICAgICAgaWYgKERhdGUubm93KCkgLyAxMDAwID4gc2VsZWN0ZWRUaW1lKSB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrYmFyLnNob3coJ1BsZWFzZSBzZXQgYSBmdXR1cmUgZGF0ZS4nLCAnYWxlcnQnKTtcbiAgICAgICAgICAgIGlzSW52YWxpZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmlzTmV4dERpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzSW52YWxpZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvbl9jb21wbGV0ZSc6XG4gICAgICAgIGlmICh0aGlzLmZyZXF1ZW5jeURhdGEub25Db21wbGV0aW9uPy5yZXNwb25zaWJpbGl0eSA+IDApIHtcbiAgICAgICAgICBpc0ludmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyYW5kb20nOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT0gMiAmJlxuICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzWzJdID09ICcnIHx8XG4gICAgICAgICAgICAhZnJlcXVlbmN5RGV0YWlsc1syXSB8fFxuICAgICAgICAgICAgZnJlcXVlbmN5RGV0YWlscy5sZW5ndGggPCA0KVxuICAgICAgICApIHtcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzSW52YWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaXNJbnZhbGlkID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBpc0ludmFsaWQ7XG4gIH1cblxuICBvbkZyZXF1ZW5jeVNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZyZXF1ZW5jeURhdGEgPSBldmVudDtcbiAgICB0aGlzLmlzTmV4dERpc2FibGVkID0gdGhpcy5pc0ludmFsaWQoKTtcbiAgfVxuXG4gIG9wZW5lZFJhZGlvKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9wZW5lZFJhZGlvRm9ybSA9IGV2ZW50O1xuICB9XG5cbiAgLy8gICBjaGVja05leHRWYWxpZGl0eSgpXG4gIC8vIHtcblxuICAvLyB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLnNlbGVjdGVkRnJlcXVlbmN5LmVtaXQodGhpcy5mcmVxdWVuY3lEYXRhKTtcbiAgfVxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmNsb3NlRnJlcXVlbmN5LmVtaXQoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgIT09ICdwb2xpY3knXCI+XG4gIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nXCIgKm5nSWY9XCJtb2RlICE9PSAncG9saWN5J1wiPlxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLWhlYWQgdngtcC0zIHZ4LW1iLTQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+U2V0IGEgRnJlcXVlbmN5PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctYm9keSB2eC1wbC00IHZ4LXByLTRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLWJvZHktaW5uZXJcIiBbbmdTd2l0Y2hdPVwiZnJlcXVlbmN5VGFiXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktdGFiIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmcmVxdWVuY3lUeXBlIG9mIGZyZXF1ZW5jeUxpc3Q7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNoYW5nZUZyZXF1ZW5jeVRhYihmcmVxdWVuY3lUeXBlKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidGFiLWJ0biB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGFyYWdyYXBoLXR4dCB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LXBiLTIgdngtbS0wXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJmcmVxdWVuY3lUeXBlPy50eXBlID09IGZyZXF1ZW5jeVRhYlwiPnt7IGZyZXF1ZW5jeVR5cGU/Lm5hbWUgfX08L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktdGFiLWJvdHRvbSB2eC1wbC00IHZ4LXByLTRcIj5cbiAgICAgICAgICA8IS0tIERhaWx5IEZyZXF1ZW5jeSBTdGFydCAtLT5cbiAgICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kYWlseSAqbmdTd2l0Y2hDYXNlPVwiJ2RhaWx5J1wiIFttb2RlXT1cIm1vZGVcIiBbcGFnZVR5cGVdPVwicGFnZVR5cGVcIlxuICAgICAgICAgICAgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCIgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiPjwvYXBwLWZyZXF1ZW5jeS1kYWlseT5cbiAgICAgICAgICA8IS0tIERhaWx5IEZyZXF1ZW5jeSBFbmQgLS0+XG4gICAgICAgICAgPCEtLSBXZWVrbHkgRnJlcXVlbmN5IFN0YXJ0IC0tPlxuICAgICAgICAgIDxhcHAtZnJlcXVlbmN5LXdlZWtseSAqbmdTd2l0Y2hDYXNlPVwiJ3dlZWtseSdcIiBbbW9kZV09XCJtb2RlXCIgW3BhZ2VUeXBlXT1cInBhZ2VUeXBlXCJcbiAgICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj48L2FwcC1mcmVxdWVuY3ktd2Vla2x5PlxuICAgICAgICAgIDwhLS0gV2Vla2x5IEZyZXF1ZW5jeSBFbmQgLS0+XG4gICAgICAgICAgPCEtLSBNb250aGx5IEZyZXF1ZW5jeSBTdGFydCAtLT5cbiAgICAgICAgICA8YXBwLWZyZXF1ZW5jeS1tb250aGx5ICpuZ1N3aXRjaENhc2U9XCInbW9udGhseSdcIiBbbW9kZV09XCJtb2RlXCIgW3BhZ2VUeXBlXT1cInBhZ2VUeXBlXCJcbiAgICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj48L2FwcC1mcmVxdWVuY3ktbW9udGhseT5cbiAgICAgICAgICA8IS0tIE1vbnRobHkgRnJlcXVlbmN5IEVuZCAtLT5cbiAgICAgICAgICA8IS0tIFF1YXJ0ZXJseSBGcmVxdWVuY3kgU3RhcnQgLS0+XG4gICAgICAgICAgPGFwcC1mcmVxdWVuY3ktcXVhcnRlcmx5ICpuZ1N3aXRjaENhc2U9XCIncXVhcnRlcmx5J1wiIFttb2RlXT1cIm1vZGVcIiBbcGFnZVR5cGVdPVwicGFnZVR5cGVcIlxuICAgICAgICAgICAgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj48L2FwcC1mcmVxdWVuY3ktcXVhcnRlcmx5PlxuICAgICAgICAgIDwhLS0gUXVhcnRlcmx5IEZyZXF1ZW5jeSBFbmQgLS0+XG4gICAgICAgICAgPCEtLSBCaWFubnVhbCBGcmVxdWVuY3kgU3RhcnQgLS0+XG4gICAgICAgICAgPGFwcC1mcmVxdWVuY3ktYmlhbm51YWwgKm5nU3dpdGNoQ2FzZT1cIidiaWFubnVhbCdcIiBbbW9kZV09XCJtb2RlXCIgW3BhZ2VUeXBlXT1cInBhZ2VUeXBlXCJcbiAgICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+PC9hcHAtZnJlcXVlbmN5LWJpYW5udWFsPlxuICAgICAgICAgIDwhLS0gQmlhbm51YWwgRnJlcXVlbmN5IEVuZCAtLT5cbiAgICAgICAgICA8IS0tIEFubnVhbCBGcmVxdWVuY3kgU3RhcnQgLS0+XG4gICAgICAgICAgPGFwcC1mcmVxdWVuY3ktYW5udWFsICpuZ1N3aXRjaENhc2U9XCInYW5udWFsJ1wiIFttb2RlXT1cIm1vZGVcIiBbcGFnZVR5cGVdPVwicGFnZVR5cGVcIlxuICAgICAgICAgICAgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCIgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiPjwvYXBwLWZyZXF1ZW5jeS1hbm51YWw+XG4gICAgICAgICAgPCEtLSBBbm51YWwgRnJlcXVlbmN5IEVuZCAtLT5cbiAgICAgICAgICA8IS0tIE9uZSBUaW1lIEZyZXF1ZW5jeSBTdGFydCAtLT5cbiAgICAgICAgICA8YXBwLWZyZXF1ZW5jeS1vbmUtdGltZSAqbmdTd2l0Y2hDYXNlPVwiJ29uZVRpbWUnXCIgW21vZGVdPVwibW9kZVwiIFtwYWdlVHlwZV09XCJwYWdlVHlwZVwiXG4gICAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiPjwvYXBwLWZyZXF1ZW5jeS1vbmUtdGltZT5cbiAgICAgICAgICA8IS0tIE9uZSBUaW1lIEZyZXF1ZW5jeSBFbmQgLS0+XG4gICAgICAgICAgPCEtLSBSYW5kb20gRnJlcXVlbmN5IFN0YXJ0IC0tPlxuICAgICAgICAgIDxhcHAtZnJlcXVlbmN5LXJhbmRvbSAqbmdTd2l0Y2hDYXNlPVwiJ3JhbmRvbSdcIiBbbW9kZV09XCJtb2RlXCIgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj48L2FwcC1mcmVxdWVuY3ktcmFuZG9tPlxuICAgICAgICAgIDwhLS0gUmFuZG9tIEZyZXF1ZW5jeSBFbmQgLS0+XG4gICAgICAgICAgPCEtLSBPbiBDb21wbGV0aW9uIEZyZXF1ZW5jeSBTdGFydCAtLT5cbiAgICAgICAgICA8YXBwLWZyZXF1ZW5jeS1vbi1jb21wbGV0aW9uLW9mICpuZ1N3aXRjaENhc2U9XCInb25fY29tcGxldGUnXCIgW21vZGVdPVwibW9kZVwiIFtmZWF0dXJlXT1cImZlYXR1cmVcIlxuICAgICAgICAgICAgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCIgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiXG4gICAgICAgICAgICBbb25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHldPVwib25Db21wbGV0aW9uUmVzcG9uc2liaWxpdHlcIlxuICAgICAgICAgICAgKHJhZGlvRm9ybSk9XCJvcGVuZWRSYWRpbygkZXZlbnQpXCI+PC9hcHAtZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2Y+XG4gICAgICAgICAgPCEtLSBPbiBDb21wbGV0aW9uIEZyZXF1ZW5jeSBFbmQgLS0+XG4gICAgICAgICAgPCEtLSBPbmdvaW5nIEZyZXF1ZW5jeSBTdGFydCAtLT5cbiAgICAgICAgICA8YXBwLWZyZXF1ZW5jeS1vbmdvaW5nICpuZ1N3aXRjaENhc2U9XCInb25nb2luZydcIiAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiPjwvYXBwLWZyZXF1ZW5jeS1vbmdvaW5nPlxuICAgICAgICAgIDwhLS0gT25nb2luZyBGcmVxdWVuY3kgRW5kIC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctZm9vdGVyXCIgKm5nSWY9XCIhb3BlbmVkUmFkaW9Gb3JtXCI+XG4gICAgICA8YXBwLWZsb2F0aW5nLWJhciBbc2hvd0ZyZXF1ZW5jeVRleHRdPVwidHJ1ZVwiIFtjdXJyZW50RnJlcXVlbmN5XT1cImN1cnJlbnRUYWJOYW1lXCIgW2lzRGlzYWJsZWRdPVwiaXNOZXh0RGlzYWJsZWRcIlxuICAgICAgICAoY2xvc2VFdmVudCk9XCJzYXZlKClcIiAoY2xvc2VMaXN0KT1cImNsb3NlKClcIj48L2FwcC1mbG9hdGluZy1iYXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48IS0tIFdoZW4gcmVzcG9uc2liaWxpdHkgbGlzdCBzaG93IHRoZW4gaGlkZSBmcmVxdWVuY3ktZGlhbG9nIGh0bWwgLS0+XG5cbjwhLS0gRm9yIFBvbGljeSAtLT5cbjxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nXCIgKm5nSWY9XCJtb2RlID09PSAncG9saWN5J1wiPlxuICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1oZWFkIHZ4LXAtMyB2eC1tYi00IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTE0IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj5TZXQgYSBGcmVxdWVuY3k8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLWJvZHkgdngtcGwtNCB2eC1wci00XCI+XG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctYm9keS1pbm5lclwiIFtuZ1N3aXRjaF09XCJmcmVxdWVuY3lUYWJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktdGFiIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZnJlcXVlbmN5VHlwZSBvZiBmcmVxdWVuY3lMaXN0OyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2hhbmdlRnJlcXVlbmN5VGFiKGZyZXF1ZW5jeVR5cGUpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGFiLWJ0biB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGFyYWdyYXBoLXR4dCB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LXBiLTIgdngtbS0wXCJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiZnJlcXVlbmN5VHlwZT8udHlwZSA9PSBmcmVxdWVuY3lUYWJcIj57eyBmcmVxdWVuY3lUeXBlPy5uYW1lIH19PC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LXRhYi1ib3R0b20gdngtcGwtNCB2eC1wci00XCI+XG4gICAgICAgIDwhLS0gRGFpbHkgRnJlcXVlbmN5IFN0YXJ0IC0tPlxuICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kYWlseSAqbmdTd2l0Y2hDYXNlPVwiJ2RhaWx5J1wiIFttb2RlXT1cIm1vZGVcIiBbcGFnZVR5cGVdPVwicGFnZVR5cGVcIlxuICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj48L2FwcC1mcmVxdWVuY3ktZGFpbHk+XG4gICAgICAgIDwhLS0gRGFpbHkgRnJlcXVlbmN5IEVuZCAtLT5cbiAgICAgICAgPCEtLSBXZWVrbHkgRnJlcXVlbmN5IFN0YXJ0IC0tPlxuICAgICAgICA8YXBwLWZyZXF1ZW5jeS13ZWVrbHkgKm5nU3dpdGNoQ2FzZT1cIid3ZWVrbHknXCIgW21vZGVdPVwibW9kZVwiIFtwYWdlVHlwZV09XCJwYWdlVHlwZVwiXG4gICAgICAgICAgKGZyZXF1ZW5jeURldGFpbHMpPVwib25GcmVxdWVuY3lTZWxlY3RlZCgkZXZlbnQpXCIgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiPjwvYXBwLWZyZXF1ZW5jeS13ZWVrbHk+XG4gICAgICAgIDwhLS0gV2Vla2x5IEZyZXF1ZW5jeSBFbmQgLS0+XG4gICAgICAgIDwhLS0gTW9udGhseSBGcmVxdWVuY3kgU3RhcnQgLS0+XG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LW1vbnRobHkgKm5nU3dpdGNoQ2FzZT1cIidtb250aGx5J1wiIFttb2RlXT1cIm1vZGVcIiBbcGFnZVR5cGVdPVwicGFnZVR5cGVcIlxuICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj48L2FwcC1mcmVxdWVuY3ktbW9udGhseT5cbiAgICAgICAgPCEtLSBNb250aGx5IEZyZXF1ZW5jeSBFbmQgLS0+XG4gICAgICAgIDwhLS0gUXVhcnRlcmx5IEZyZXF1ZW5jeSBTdGFydCAtLT5cbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktcXVhcnRlcmx5ICpuZ1N3aXRjaENhc2U9XCIncXVhcnRlcmx5J1wiIFttb2RlXT1cIm1vZGVcIiBbcGFnZVR5cGVdPVwicGFnZVR5cGVcIlxuICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj48L2FwcC1mcmVxdWVuY3ktcXVhcnRlcmx5PlxuICAgICAgICA8IS0tIFF1YXJ0ZXJseSBGcmVxdWVuY3kgRW5kIC0tPlxuICAgICAgICA8IS0tIEJpYW5udWFsIEZyZXF1ZW5jeSBTdGFydCAtLT5cbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktYmlhbm51YWwgKm5nU3dpdGNoQ2FzZT1cIidiaWFubnVhbCdcIiBbbW9kZV09XCJtb2RlXCIgW3BhZ2VUeXBlXT1cInBhZ2VUeXBlXCJcbiAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIiBbZnJlcXVlbmN5RGF0YV09XCJmcmVxdWVuY3lEZXRhaWxzXCI+PC9hcHAtZnJlcXVlbmN5LWJpYW5udWFsPlxuICAgICAgICA8IS0tIEJpYW5udWFsIEZyZXF1ZW5jeSBFbmQgLS0+XG4gICAgICAgIDwhLS0gQW5udWFsIEZyZXF1ZW5jeSBTdGFydCAtLT5cbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktYW5udWFsICpuZ1N3aXRjaENhc2U9XCInYW5udWFsJ1wiIFttb2RlXT1cIm1vZGVcIiBbcGFnZVR5cGVdPVwicGFnZVR5cGVcIlxuICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj48L2FwcC1mcmVxdWVuY3ktYW5udWFsPlxuICAgICAgICA8IS0tIEFubnVhbCBGcmVxdWVuY3kgRW5kIC0tPlxuICAgICAgICA8IS0tIE9uZSBUaW1lIEZyZXF1ZW5jeSBTdGFydCAtLT5cbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktb25lLXRpbWUgKm5nU3dpdGNoQ2FzZT1cIidvbmVUaW1lJ1wiIFttb2RlXT1cIm1vZGVcIiBbcGFnZVR5cGVdPVwicGFnZVR5cGVcIlxuICAgICAgICAgIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj48L2FwcC1mcmVxdWVuY3ktb25lLXRpbWU+XG4gICAgICAgIDwhLS0gT25lIFRpbWUgRnJlcXVlbmN5IEVuZCAtLT5cbiAgICAgICAgPCEtLSBSYW5kb20gRnJlcXVlbmN5IFN0YXJ0IC0tPlxuICAgICAgICA8YXBwLWZyZXF1ZW5jeS1yYW5kb20gKm5nU3dpdGNoQ2FzZT1cIidyYW5kb20nXCIgW21vZGVdPVwibW9kZVwiIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiPjwvYXBwLWZyZXF1ZW5jeS1yYW5kb20+XG4gICAgICAgIDwhLS0gUmFuZG9tIEZyZXF1ZW5jeSBFbmQgLS0+XG4gICAgICAgIDwhLS0gT24gQ29tcGxldGlvbiBGcmVxdWVuY3kgU3RhcnQgLS0+XG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LW9uLWNvbXBsZXRpb24tb2YgKm5nU3dpdGNoQ2FzZT1cIidvbl9jb21wbGV0ZSdcIiBbbW9kZV09XCJtb2RlXCJcbiAgICAgICAgICAoZnJlcXVlbmN5RGV0YWlscyk9XCJvbkZyZXF1ZW5jeVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgIFtmcmVxdWVuY3lEYXRhXT1cImZyZXF1ZW5jeURldGFpbHNcIj48L2FwcC1mcmVxdWVuY3ktb24tY29tcGxldGlvbi1vZj5cbiAgICAgICAgPCEtLSBPbiBDb21wbGV0aW9uIEZyZXF1ZW5jeSBFbmQgLS0+XG4gICAgICAgIDwhLS0gT25nb2luZyBGcmVxdWVuY3kgU3RhcnQgLS0+XG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LW9uZ29pbmcgKm5nU3dpdGNoQ2FzZT1cIidvbmdvaW5nJ1wiIChmcmVxdWVuY3lEZXRhaWxzKT1cIm9uRnJlcXVlbmN5U2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgW2ZyZXF1ZW5jeURhdGFdPVwiZnJlcXVlbmN5RGV0YWlsc1wiPjwvYXBwLWZyZXF1ZW5jeS1vbmdvaW5nPlxuICAgICAgICA8IS0tIE9uZ29pbmcgRnJlcXVlbmN5IEVuZCAtLT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctZm9vdGVyXCI+XG4gICAgPGFwcC1mbG9hdGluZy1iYXIgW3Nob3dGcmVxdWVuY3lUZXh0XT1cInRydWVcIiBbY3VycmVudEZyZXF1ZW5jeV09XCJjdXJyZW50VGFiTmFtZVwiIFtpc0Rpc2FibGVkXT1cImlzTmV4dERpc2FibGVkXCJcbiAgICAgIChjbG9zZUV2ZW50KT1cInNhdmUoKVwiIChjbG9zZUxpc3QpPVwiY2xvc2UoKVwiPjwvYXBwLWZsb2F0aW5nLWJhcj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=