vcomply-workflow-engine 3.4.22 → 3.4.24

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 (101) hide show
  1. package/esm2020/lib/add-multiple-responsibility/add-multiple-responsibility.component.mjs +2 -4
  2. package/esm2020/lib/add-multiple-risk/add-multiple-risk.component.mjs +2 -3
  3. package/esm2020/lib/formgroup/cs-select/cs-select.component.mjs +5 -5
  4. package/esm2020/lib/formgroup/cs-switch/cs-switch.component.mjs +1 -4
  5. package/esm2020/lib/log-an-issue/log-an-issue.component.mjs +1 -11
  6. package/esm2020/lib/more-option/more-option.component.mjs +5 -6
  7. package/esm2020/lib/pipes/filter.pipe.mjs +1 -2
  8. package/esm2020/lib/pipes/search.pipe.mjs +3 -5
  9. package/esm2020/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +3 -7
  10. package/esm2020/lib/sharedComponents/approval-workflow/approval-workflow-list/approval-workflow-list.component.mjs +1 -5
  11. package/esm2020/lib/sharedComponents/approval-workflow/approval-workflow.component.mjs +1 -7
  12. package/esm2020/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.mjs +80 -36
  13. package/esm2020/lib/sharedComponents/assessment-list/assessment-list.component.mjs +27 -21
  14. package/esm2020/lib/sharedComponents/assessment-preview/preview/preview.component.mjs +7 -4
  15. package/esm2020/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +3 -4
  16. package/esm2020/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +3 -9
  17. package/esm2020/lib/sharedComponents/bulk-view/bulk-view.component.mjs +9 -7
  18. package/esm2020/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +6 -8
  19. package/esm2020/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.mjs +93 -27
  20. package/esm2020/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.mjs +11 -9
  21. package/esm2020/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.mjs +13 -12
  22. package/esm2020/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.mjs +28 -19
  23. package/esm2020/lib/sharedComponents/floating-bar/floating-bar.component.mjs +8 -8
  24. package/esm2020/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +35 -37
  25. package/esm2020/lib/sharedComponents/framework-list/parent-table/parent-table.component.mjs +7 -7
  26. package/esm2020/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +1 -12
  27. package/esm2020/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +1 -3
  28. package/esm2020/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +1 -13
  29. package/esm2020/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.mjs +1 -7
  30. package/esm2020/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.mjs +1 -26
  31. package/esm2020/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +1 -15
  32. package/esm2020/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +1 -14
  33. package/esm2020/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +14 -8
  34. package/esm2020/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +1 -13
  35. package/esm2020/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.mjs +1 -2
  36. package/esm2020/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +1 -18
  37. package/esm2020/lib/sharedComponents/frequency/frequency-top/frequency-top.component.mjs +2 -2
  38. package/esm2020/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +1 -12
  39. package/esm2020/lib/sharedComponents/frequency/frequency.service.mjs +2 -11
  40. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.mjs +1 -2
  41. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.mjs +1 -2
  42. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.mjs +1 -2
  43. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.mjs +1 -2
  44. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.mjs +1 -2
  45. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.mjs +1 -2
  46. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.mjs +2 -2
  47. package/esm2020/lib/sharedComponents/group-users-list/group-users-list.component.mjs +1 -3
  48. package/esm2020/lib/sharedComponents/link-program/link-program/link-program.component.mjs +48 -38
  49. package/esm2020/lib/sharedComponents/link-program/restapi.service.mjs +31 -16
  50. package/esm2020/lib/sharedComponents/no-data/no-data.component.mjs +2 -4
  51. package/esm2020/lib/sharedComponents/owner-list/owner-list.component.mjs +12 -10
  52. package/esm2020/lib/sharedComponents/program-listing/program-listing.component.mjs +127 -58
  53. package/esm2020/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +4 -7
  54. package/esm2020/lib/sharedComponents/risk-classification/risk-classification.component.mjs +11 -6
  55. package/esm2020/lib/sharedComponents/select-approvers/select-approvers.component.mjs +1 -2
  56. package/esm2020/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +2 -3
  57. package/esm2020/lib/ui-kit/formgroup/cs-switch/cs-switch.component.mjs +1 -4
  58. package/esm2020/lib/ui-kit/popover/popover-longpress.directive.mjs +1 -3
  59. package/esm2020/lib/ui-kit/popover/popover.component.mjs +26 -12
  60. package/esm2020/lib/ui-kit/tooltip/tooltip.directive.mjs +8 -5
  61. package/esm2020/lib/workflow/shared/components/attributes/attributes.component.mjs +1 -2
  62. package/esm2020/lib/workflow/shared/components/edit-mode/edit-mode.component.mjs +1 -4
  63. package/esm2020/lib/workflow/shared/components/grc-object-list/grc-object-list.component.mjs +1 -2
  64. package/esm2020/lib/workflow/shared/components/list-popup/list-popup.component.mjs +1 -4
  65. package/esm2020/lib/workflow/shared/components/table-card/table-card.component.mjs +4 -8
  66. package/esm2020/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.mjs +245 -108
  67. package/esm2020/lib/workflow-assessment/workflow-assessment.component.mjs +2 -4
  68. package/esm2020/lib/workflow-compliance/workflow-compliance.component.mjs +10 -8
  69. package/esm2020/lib/workflow-engine-container/workflow-engine-container.component.mjs +1 -5
  70. package/esm2020/lib/workflow-policy/workflow-policy.component.mjs +5 -5
  71. package/esm2020/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.mjs +45 -45
  72. package/esm2020/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.mjs +43 -25
  73. package/esm2020/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.mjs +4 -4
  74. package/esm2020/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.mjs +1 -2
  75. package/esm2020/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.mjs +25 -14
  76. package/esm2020/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.mjs +6 -3
  77. package/esm2020/lib/workflow-program/create-program-ui/role-list/role-list.component.mjs +25 -19
  78. package/esm2020/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +1 -4
  79. package/esm2020/lib/workflow-program/workflow-program.component.mjs +232 -110
  80. package/esm2020/lib/workflow-services/add-risk.service.mjs +1 -2
  81. package/esm2020/lib/workflow-services/assessment.service.mjs +1 -5
  82. package/esm2020/lib/workflow-services/programs.service.mjs +173 -57
  83. package/fesm2015/vcomply-workflow-engine.mjs +1380 -938
  84. package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
  85. package/fesm2020/vcomply-workflow-engine.mjs +1390 -943
  86. package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
  87. package/lib/formgroup/cs-switch/cs-switch.component.d.ts +2 -3
  88. package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +4 -5
  89. package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +2 -3
  90. package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts +2 -3
  91. package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts +2 -4
  92. package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts +1 -1
  93. package/lib/sharedComponents/link-program/restapi.service.d.ts +3 -3
  94. package/lib/sharedComponents/no-data/no-data.component.d.ts +2 -4
  95. package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts +2 -3
  96. package/lib/workflow/shared/components/edit-mode/edit-mode.component.d.ts +2 -3
  97. package/lib/workflow/shared/components/list-popup/list-popup.component.d.ts +2 -3
  98. package/lib/workflow/shared/components/table-card/table-card.component.d.ts +2 -5
  99. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +8 -9
  100. package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +2 -4
  101. package/package.json +1 -1
@@ -25,11 +25,6 @@ export class PaginationComponent {
25
25
  this.displayArrayUpdate(page);
26
26
  this.startArray();
27
27
  }
28
- ngOnChanges(changes) {
29
- console.log("change", changes);
30
- //this.displayArrayUpdate(this.currPage);
31
- //this.startArray();
32
- }
33
28
  //Function responsible to generate the array to display the pagination at the beginning
34
29
  startArray() {
35
30
  this.displayArray = [];
@@ -47,7 +42,10 @@ export class PaginationComponent {
47
42
  //Function responsible for update the current page while clicking prev or next button
48
43
  currentIndexUpdate(value) {
49
44
  this.currPage += value;
50
- if (this.currPage <= this.totalPage && this.currPage > this.pageInSingleView - Math.floor(this.pageInSingleView / 2) && this.totalPage > this.pageInSingleView) {
45
+ if (this.currPage <= this.totalPage &&
46
+ this.currPage >
47
+ this.pageInSingleView - Math.floor(this.pageInSingleView / 2) &&
48
+ this.totalPage > this.pageInSingleView) {
51
49
  this.displayArrayUpdate(this.currPage);
52
50
  }
53
51
  else if (this.currPage <= this.pageInSingleView) {
@@ -61,7 +59,10 @@ export class PaginationComponent {
61
59
  //Function responsible for updating the current page while clicking on any page number
62
60
  currentIndexAssign(value) {
63
61
  this.currPage = value;
64
- if (this.currPage <= this.totalPage && this.currPage > this.pageInSingleView - Math.floor(this.pageInSingleView / 2) && this.totalPage > this.pageInSingleView) {
62
+ if (this.currPage <= this.totalPage &&
63
+ this.currPage >
64
+ this.pageInSingleView - Math.floor(this.pageInSingleView / 2) &&
65
+ this.totalPage > this.pageInSingleView) {
65
66
  this.displayArrayUpdate(this.currPage);
66
67
  }
67
68
  else if (this.currPage <= this.pageInSingleView) {
@@ -81,9 +82,15 @@ export class PaginationComponent {
81
82
  onEnterPress(event) {
82
83
  if (event.key.toLowerCase() === 'enter') {
83
84
  this.enterPressed = true;
84
- if (this.enterPageNo <= this.totalPage && this.enterPageNo > 0 && this.enterPageNo && this.validateNumber(this.enterPageNo)) {
85
+ if (this.enterPageNo <= this.totalPage &&
86
+ this.enterPageNo > 0 &&
87
+ this.enterPageNo &&
88
+ this.validateNumber(this.enterPageNo)) {
85
89
  this.currPage = this.enterPageNo;
86
- if (this.currPage <= this.totalPage && this.currPage > this.pageInSingleView - Math.floor(this.pageInSingleView / 2) && this.totalPage > this.pageInSingleView) {
90
+ if (this.currPage <= this.totalPage &&
91
+ this.currPage >
92
+ this.pageInSingleView - Math.floor(this.pageInSingleView / 2) &&
93
+ this.totalPage > this.pageInSingleView) {
87
94
  this.displayArrayUpdate(this.currPage);
88
95
  }
89
96
  else if (this.currPage <= this.pageInSingleView) {
@@ -96,7 +103,10 @@ export class PaginationComponent {
96
103
  }
97
104
  //Function responsible for manipulating the displayArray
98
105
  displayArrayUpdate(index) {
99
- if (this.currPage > this.pageInSingleView - Math.floor(this.pageInSingleView / 2) && this.currPage <= this.totalPage - Math.floor(this.pageInSingleView / 2) && this.totalPage > this.pageInSingleView) {
106
+ if (this.currPage >
107
+ this.pageInSingleView - Math.floor(this.pageInSingleView / 2) &&
108
+ this.currPage <= this.totalPage - Math.floor(this.pageInSingleView / 2) &&
109
+ this.totalPage > this.pageInSingleView) {
100
110
  if (this.pageInSingleView % 2 != 0) {
101
111
  let appendElement = this.pageInSingleView / 2;
102
112
  appendElement = Math.floor(appendElement);
@@ -117,7 +127,8 @@ export class PaginationComponent {
117
127
  }
118
128
  }
119
129
  }
120
- else if (this.currPage > this.totalPage - Math.floor(this.pageInSingleView / 2)) {
130
+ else if (this.currPage >
131
+ this.totalPage - Math.floor(this.pageInSingleView / 2)) {
121
132
  this.displayArray = [];
122
133
  for (let i = this.totalPage - this.pageInSingleView + 1; i <= this.totalPage; ++i) {
123
134
  this.displayArray.push(i);
@@ -127,11 +138,11 @@ export class PaginationComponent {
127
138
  }
128
139
  }
129
140
  PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
130
- PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PaginationComponent, selector: "vui-pagination", inputs: { from: "from", to: "to", total: "total", showPageDetail: "showPageDetail", totalPage: "totalPage", setPage: ["currentPage", "setPage"], setTotalPage: ["totalPage", "setTotalPage"], pageInSingleView: "pageInSingleView" }, outputs: { pageChanged: "pageChanged" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"pagination-sec-ds vx-d-flex vx-align-center vx-pb-2\" [class.right-align]=\"false\">\r\n <div class=\"left vx-label-txt vx-fs-12 vx-fw-400 vx-tt-uppercase vx-lh-6\">\r\n <ng-container *ngIf=\"showPageDetail\">SHOWING {{ from }} - {{to}} OF {{total}} RECORDS</ng-container>\r\n <div class=\"pagination-box\" *ngIf=\"false\">\r\n <ul class=\"vx-d-flex vx-align-center vx-m-0 vx-p-0\">\r\n <li class=\"vx-d-flex\"><button class=\"vx-d-inline-flex vx-align-center vx-justify-center vx-label-txt vx-fw-400 vx-fs-11 vx-tt-uppercase vx-pl-2 vx-pr-2 vx-m-0\" [class.active]=\"true\">All</button></li>\r\n <li class=\"vx-d-flex\">\r\n <button class=\"vx-d-inline-flex vx-align-center vx-justify-center vx-label-txt vx-fw-400 vx-fs-11 vx-tt-uppercase vx-pl-2 vx-pr-2 vx-m-0\" [class.active]=\"false\">A</button>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"right vx-d-flex vx-align-center\" *ngIf=\"totalPage > 1\">\r\n <div class=\"pagination-box\">\r\n <ul class=\"vx-d-flex vx-align-center vx-m-0 vx-p-0\">\r\n <li class=\"vx-d-flex vx-mr-1\">\r\n <button class=\"vx-m-0\" [class.disabled]=\"currPage === 1\" (click)=\"currentIndexUpdate(-1)\">\r\n <i class=\"icons vx-fs-10\">&#xe96b;</i>\r\n </button>\r\n </li>\r\n\r\n <li class=\"vx-d-flex\" *ngFor=\"let page of displayArray; let i = index \">\r\n <button (click)=\"currentIndexAssign(page)\" class=\"vx-label-txt vx-fs-11 vx-fw-400 vx-pl-1 vx-pr-1 vx-d-inline-flex vx-align-center vx-justify-center vx-m-0 vx-ml-1\"\r\n [class.active]=\"currPage == page\">\r\n {{page}}\r\n </button>\r\n </li>\r\n\r\n <li class=\"vx-d-flex vx-ml-2\">\r\n <button class=\"vx-m-0\" [class.disabled]=\"currPage === totalPage\" (click)=\"currentIndexUpdate(1)\">\r\n <i class=\"icons vx-fs-10\">&#xe970;</i>\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div class=\"goto-page vx-d-flex vx-align-center vx-ml-2\">\r\n <div class=\"goto-page-text vx-label-txt vx-fs-11 vx-tt-uppercase vx-d-block vx-pl-2 vx-pr-2\">GO TO</div>\r\n <div class=\"goto-page-input\">\r\n <input (ngModelChange)=\"enterPressed = false\" [class.invalid]=\"enterPageNo > totalPage && enterPressed\"\r\n type=\"number\"\r\n [(ngModel)]=\"enterPageNo\"\r\n (keyup)=\"onEnterPress($event)\"\r\n placeholder=\"Page No.\" />\r\n <button>\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/enter-icon.svg\" alt=\"\" />\r\n </button>\r\n </div>\r\n <div class=\"goto-page-text vx-label-txt vx-fs-11 vx-tt-uppercase vx-d-block vx-pl-2 vx-pr-2\">OF {{totalPage}}</div>\r\n </div>\r\n </div>\r\n</div>\r\n", 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/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.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-right.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/margin/margin.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\";.pagination-sec-ds{border-radius:.125rem .125rem 0 0;justify-content:space-between}.pagination-sec-ds.right-align{justify-content:flex-end}.pagination-sec-ds .left{width:auto}.pagination-sec-ds .left .pagination-box ul li{list-style:none}.pagination-sec-ds .left .pagination-box ul li+li{margin-left:1rem}.pagination-sec-ds .left .pagination-box ul li button{border:1px solid #BCBCBC;background:#fff;border-radius:.125rem;height:1.25rem;min-width:1.25rem;outline:none;cursor:pointer;line-height:1.125rem}.pagination-sec-ds .left .pagination-box ul li button.active,.pagination-sec-ds .left .pagination-box ul li button:hover{border-color:#1e5dd3;background:#1E5DD3;color:#fff}.pagination-sec-ds .left .pagination-box ul li button.disabled{filter:grayscale(100%);pointer-events:none;opacity:1;color:unset!important;border:1px solid #BCBCBC}.pagination-sec-ds .left .pagination-box ul li button i{font-size:.5rem;width:.8125rem;height:.8125rem;line-height:.8125rem}.pagination-sec-ds .right{width:auto}.pagination-sec-ds .right .pagination-box ul li{list-style:none}.pagination-sec-ds .right .pagination-box ul li:first-child{height:1.5rem}.pagination-sec-ds .right .pagination-box ul li:first-child button{color:#4681ef;position:relative}.pagination-sec-ds .right .pagination-box ul li:first-child button.disabled{color:#bcbcbc!important}.pagination-sec-ds .right .pagination-box ul li:last-child{height:1.5rem}.pagination-sec-ds .right .pagination-box ul li:last-child button{color:#4681ef;position:relative}.pagination-sec-ds .right .pagination-box ul li:last-child button.disabled{color:#bcbcbc!important}.pagination-sec-ds .right .pagination-box ul li button{border:1px solid #BCBCBC;background:#fff;border-radius:.125rem;height:1.5rem;min-width:1.5rem;outline:none;cursor:pointer;line-height:.75rem}.pagination-sec-ds .right .pagination-box ul li button.active,.pagination-sec-ds .right .pagination-box ul li button:hover{border-color:#1e5dd3;color:#4681ef}.pagination-sec-ds .right .pagination-box ul li button.disabled{filter:grayscale(100%);pointer-events:none;opacity:1;color:unset!important;border:1px solid #BCBCBC}.pagination-sec-ds .right .pagination-box ul li button.disable{pointer-events:none}.pagination-sec-ds .right .goto-page{background:#fff;border:1px solid #BCBCBC;border-radius:.125rem;height:1.5625rem}.pagination-sec-ds .right .goto-page .goto-page-text{border-right:1px solid #BCBCBC;height:1.4375rem;line-height:1.4375rem}.pagination-sec-ds .right .goto-page .goto-page-text:last-of-type{border-right:none;border-left:1px solid #BCBCBC}.pagination-sec-ds .right .goto-page .goto-page-input{position:relative}.pagination-sec-ds .right .goto-page .goto-page-input input{-moz-appearance:textfield;background:transparent;border:none;color:#161b2f;font-size:.6875rem;text-transform:uppercase;padding:0 1.5625rem 0 .3125rem;width:5.9375rem;height:1.4375rem;position:relative;top:-.0625rem}.pagination-sec-ds .right .goto-page .goto-page-input input::-webkit-inner-spin-button,.pagination-sec-ds .right .goto-page .goto-page-input input::-webkit-outer-spin-button{-webkit-appearance:none}.pagination-sec-ds .right .goto-page .goto-page-input input:focus{outline:none}.pagination-sec-ds .right .goto-page .goto-page-input input.invalid{border:1px solid #d93b41;position:relative;top:-1px;height:1.5625rem}.pagination-sec-ds .right .goto-page .goto-page-input button{background:transparent;border:none;position:absolute;right:.1875rem;top:.25rem;cursor:pointer;padding:0;height:1.125rem;width:1.1875rem;line-height:1.375rem}.pagination-sec-ds .right .goto-page .goto-page-input button img{width:.75rem;height:.75rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
141
+ PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PaginationComponent, selector: "vui-pagination", inputs: { from: "from", to: "to", total: "total", showPageDetail: "showPageDetail", totalPage: "totalPage", setPage: ["currentPage", "setPage"], setTotalPage: ["totalPage", "setTotalPage"], pageInSingleView: "pageInSingleView" }, outputs: { pageChanged: "pageChanged" }, ngImport: i0, template: "<div class=\"pagination-sec-ds vx-d-flex vx-align-center vx-pb-2\" [class.right-align]=\"false\">\r\n <div class=\"left vx-label-txt vx-fs-12 vx-fw-400 vx-tt-uppercase vx-lh-6\">\r\n <ng-container *ngIf=\"showPageDetail\">SHOWING {{ from }} - {{to}} OF {{total}} RECORDS</ng-container>\r\n <div class=\"pagination-box\" *ngIf=\"false\">\r\n <ul class=\"vx-d-flex vx-align-center vx-m-0 vx-p-0\">\r\n <li class=\"vx-d-flex\"><button class=\"vx-d-inline-flex vx-align-center vx-justify-center vx-label-txt vx-fw-400 vx-fs-11 vx-tt-uppercase vx-pl-2 vx-pr-2 vx-m-0\" [class.active]=\"true\">All</button></li>\r\n <li class=\"vx-d-flex\">\r\n <button class=\"vx-d-inline-flex vx-align-center vx-justify-center vx-label-txt vx-fw-400 vx-fs-11 vx-tt-uppercase vx-pl-2 vx-pr-2 vx-m-0\" [class.active]=\"false\">A</button>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"right vx-d-flex vx-align-center\" *ngIf=\"totalPage > 1\">\r\n <div class=\"pagination-box\">\r\n <ul class=\"vx-d-flex vx-align-center vx-m-0 vx-p-0\">\r\n <li class=\"vx-d-flex vx-mr-1\">\r\n <button class=\"vx-m-0\" [class.disabled]=\"currPage === 1\" (click)=\"currentIndexUpdate(-1)\">\r\n <i class=\"icons vx-fs-10\">&#xe96b;</i>\r\n </button>\r\n </li>\r\n\r\n <li class=\"vx-d-flex\" *ngFor=\"let page of displayArray; let i = index \">\r\n <button (click)=\"currentIndexAssign(page)\" class=\"vx-label-txt vx-fs-11 vx-fw-400 vx-pl-1 vx-pr-1 vx-d-inline-flex vx-align-center vx-justify-center vx-m-0 vx-ml-1\"\r\n [class.active]=\"currPage == page\">\r\n {{page}}\r\n </button>\r\n </li>\r\n\r\n <li class=\"vx-d-flex vx-ml-2\">\r\n <button class=\"vx-m-0\" [class.disabled]=\"currPage === totalPage\" (click)=\"currentIndexUpdate(1)\">\r\n <i class=\"icons vx-fs-10\">&#xe970;</i>\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div class=\"goto-page vx-d-flex vx-align-center vx-ml-2\">\r\n <div class=\"goto-page-text vx-label-txt vx-fs-11 vx-tt-uppercase vx-d-block vx-pl-2 vx-pr-2\">GO TO</div>\r\n <div class=\"goto-page-input\">\r\n <input (ngModelChange)=\"enterPressed = false\" [class.invalid]=\"enterPageNo > totalPage && enterPressed\"\r\n type=\"number\"\r\n [(ngModel)]=\"enterPageNo\"\r\n (keyup)=\"onEnterPress($event)\"\r\n placeholder=\"Page No.\" />\r\n <button>\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/enter-icon.svg\" alt=\"\" />\r\n </button>\r\n </div>\r\n <div class=\"goto-page-text vx-label-txt vx-fs-11 vx-tt-uppercase vx-d-block vx-pl-2 vx-pr-2\">OF {{totalPage}}</div>\r\n </div>\r\n </div>\r\n</div>\r\n", 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/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.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-right.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/margin/margin.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\";.pagination-sec-ds{border-radius:.125rem .125rem 0 0;justify-content:space-between}.pagination-sec-ds.right-align{justify-content:flex-end}.pagination-sec-ds .left{width:auto}.pagination-sec-ds .left .pagination-box ul li{list-style:none}.pagination-sec-ds .left .pagination-box ul li+li{margin-left:1rem}.pagination-sec-ds .left .pagination-box ul li button{border:1px solid #BCBCBC;background:#fff;border-radius:.125rem;height:1.25rem;min-width:1.25rem;outline:none;cursor:pointer;line-height:1.125rem}.pagination-sec-ds .left .pagination-box ul li button.active,.pagination-sec-ds .left .pagination-box ul li button:hover{border-color:#1e5dd3;background:#1E5DD3;color:#fff}.pagination-sec-ds .left .pagination-box ul li button.disabled{filter:grayscale(100%);pointer-events:none;opacity:1;color:unset!important;border:1px solid #BCBCBC}.pagination-sec-ds .left .pagination-box ul li button i{font-size:.5rem;width:.8125rem;height:.8125rem;line-height:.8125rem}.pagination-sec-ds .right{width:auto}.pagination-sec-ds .right .pagination-box ul li{list-style:none}.pagination-sec-ds .right .pagination-box ul li:first-child{height:1.5rem}.pagination-sec-ds .right .pagination-box ul li:first-child button{color:#4681ef;position:relative}.pagination-sec-ds .right .pagination-box ul li:first-child button.disabled{color:#bcbcbc!important}.pagination-sec-ds .right .pagination-box ul li:last-child{height:1.5rem}.pagination-sec-ds .right .pagination-box ul li:last-child button{color:#4681ef;position:relative}.pagination-sec-ds .right .pagination-box ul li:last-child button.disabled{color:#bcbcbc!important}.pagination-sec-ds .right .pagination-box ul li button{border:1px solid #BCBCBC;background:#fff;border-radius:.125rem;height:1.5rem;min-width:1.5rem;outline:none;cursor:pointer;line-height:.75rem}.pagination-sec-ds .right .pagination-box ul li button.active,.pagination-sec-ds .right .pagination-box ul li button:hover{border-color:#1e5dd3;color:#4681ef}.pagination-sec-ds .right .pagination-box ul li button.disabled{filter:grayscale(100%);pointer-events:none;opacity:1;color:unset!important;border:1px solid #BCBCBC}.pagination-sec-ds .right .pagination-box ul li button.disable{pointer-events:none}.pagination-sec-ds .right .goto-page{background:#fff;border:1px solid #BCBCBC;border-radius:.125rem;height:1.5625rem}.pagination-sec-ds .right .goto-page .goto-page-text{border-right:1px solid #BCBCBC;height:1.4375rem;line-height:1.4375rem}.pagination-sec-ds .right .goto-page .goto-page-text:last-of-type{border-right:none;border-left:1px solid #BCBCBC}.pagination-sec-ds .right .goto-page .goto-page-input{position:relative}.pagination-sec-ds .right .goto-page .goto-page-input input{-moz-appearance:textfield;background:transparent;border:none;color:#161b2f;font-size:.6875rem;text-transform:uppercase;padding:0 1.5625rem 0 .3125rem;width:5.9375rem;height:1.4375rem;position:relative;top:-.0625rem}.pagination-sec-ds .right .goto-page .goto-page-input input::-webkit-inner-spin-button,.pagination-sec-ds .right .goto-page .goto-page-input input::-webkit-outer-spin-button{-webkit-appearance:none}.pagination-sec-ds .right .goto-page .goto-page-input input:focus{outline:none}.pagination-sec-ds .right .goto-page .goto-page-input input.invalid{border:1px solid #d93b41;position:relative;top:-1px;height:1.5625rem}.pagination-sec-ds .right .goto-page .goto-page-input button{background:transparent;border:none;position:absolute;right:.1875rem;top:.25rem;cursor:pointer;padding:0;height:1.125rem;width:1.1875rem;line-height:1.375rem}.pagination-sec-ds .right .goto-page .goto-page-input button img{width:.75rem;height:.75rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
131
142
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PaginationComponent, decorators: [{
132
143
  type: Component,
133
144
  args: [{ selector: 'vui-pagination', template: "<div class=\"pagination-sec-ds vx-d-flex vx-align-center vx-pb-2\" [class.right-align]=\"false\">\r\n <div class=\"left vx-label-txt vx-fs-12 vx-fw-400 vx-tt-uppercase vx-lh-6\">\r\n <ng-container *ngIf=\"showPageDetail\">SHOWING {{ from }} - {{to}} OF {{total}} RECORDS</ng-container>\r\n <div class=\"pagination-box\" *ngIf=\"false\">\r\n <ul class=\"vx-d-flex vx-align-center vx-m-0 vx-p-0\">\r\n <li class=\"vx-d-flex\"><button class=\"vx-d-inline-flex vx-align-center vx-justify-center vx-label-txt vx-fw-400 vx-fs-11 vx-tt-uppercase vx-pl-2 vx-pr-2 vx-m-0\" [class.active]=\"true\">All</button></li>\r\n <li class=\"vx-d-flex\">\r\n <button class=\"vx-d-inline-flex vx-align-center vx-justify-center vx-label-txt vx-fw-400 vx-fs-11 vx-tt-uppercase vx-pl-2 vx-pr-2 vx-m-0\" [class.active]=\"false\">A</button>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"right vx-d-flex vx-align-center\" *ngIf=\"totalPage > 1\">\r\n <div class=\"pagination-box\">\r\n <ul class=\"vx-d-flex vx-align-center vx-m-0 vx-p-0\">\r\n <li class=\"vx-d-flex vx-mr-1\">\r\n <button class=\"vx-m-0\" [class.disabled]=\"currPage === 1\" (click)=\"currentIndexUpdate(-1)\">\r\n <i class=\"icons vx-fs-10\">&#xe96b;</i>\r\n </button>\r\n </li>\r\n\r\n <li class=\"vx-d-flex\" *ngFor=\"let page of displayArray; let i = index \">\r\n <button (click)=\"currentIndexAssign(page)\" class=\"vx-label-txt vx-fs-11 vx-fw-400 vx-pl-1 vx-pr-1 vx-d-inline-flex vx-align-center vx-justify-center vx-m-0 vx-ml-1\"\r\n [class.active]=\"currPage == page\">\r\n {{page}}\r\n </button>\r\n </li>\r\n\r\n <li class=\"vx-d-flex vx-ml-2\">\r\n <button class=\"vx-m-0\" [class.disabled]=\"currPage === totalPage\" (click)=\"currentIndexUpdate(1)\">\r\n <i class=\"icons vx-fs-10\">&#xe970;</i>\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div class=\"goto-page vx-d-flex vx-align-center vx-ml-2\">\r\n <div class=\"goto-page-text vx-label-txt vx-fs-11 vx-tt-uppercase vx-d-block vx-pl-2 vx-pr-2\">GO TO</div>\r\n <div class=\"goto-page-input\">\r\n <input (ngModelChange)=\"enterPressed = false\" [class.invalid]=\"enterPageNo > totalPage && enterPressed\"\r\n type=\"number\"\r\n [(ngModel)]=\"enterPageNo\"\r\n (keyup)=\"onEnterPress($event)\"\r\n placeholder=\"Page No.\" />\r\n <button>\r\n <img src=\"https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/enter-icon.svg\" alt=\"\" />\r\n </button>\r\n </div>\r\n <div class=\"goto-page-text vx-label-txt vx-fs-11 vx-tt-uppercase vx-d-block vx-pl-2 vx-pr-2\">OF {{totalPage}}</div>\r\n </div>\r\n </div>\r\n</div>\r\n", 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/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.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-right.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/margin/margin.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\";.pagination-sec-ds{border-radius:.125rem .125rem 0 0;justify-content:space-between}.pagination-sec-ds.right-align{justify-content:flex-end}.pagination-sec-ds .left{width:auto}.pagination-sec-ds .left .pagination-box ul li{list-style:none}.pagination-sec-ds .left .pagination-box ul li+li{margin-left:1rem}.pagination-sec-ds .left .pagination-box ul li button{border:1px solid #BCBCBC;background:#fff;border-radius:.125rem;height:1.25rem;min-width:1.25rem;outline:none;cursor:pointer;line-height:1.125rem}.pagination-sec-ds .left .pagination-box ul li button.active,.pagination-sec-ds .left .pagination-box ul li button:hover{border-color:#1e5dd3;background:#1E5DD3;color:#fff}.pagination-sec-ds .left .pagination-box ul li button.disabled{filter:grayscale(100%);pointer-events:none;opacity:1;color:unset!important;border:1px solid #BCBCBC}.pagination-sec-ds .left .pagination-box ul li button i{font-size:.5rem;width:.8125rem;height:.8125rem;line-height:.8125rem}.pagination-sec-ds .right{width:auto}.pagination-sec-ds .right .pagination-box ul li{list-style:none}.pagination-sec-ds .right .pagination-box ul li:first-child{height:1.5rem}.pagination-sec-ds .right .pagination-box ul li:first-child button{color:#4681ef;position:relative}.pagination-sec-ds .right .pagination-box ul li:first-child button.disabled{color:#bcbcbc!important}.pagination-sec-ds .right .pagination-box ul li:last-child{height:1.5rem}.pagination-sec-ds .right .pagination-box ul li:last-child button{color:#4681ef;position:relative}.pagination-sec-ds .right .pagination-box ul li:last-child button.disabled{color:#bcbcbc!important}.pagination-sec-ds .right .pagination-box ul li button{border:1px solid #BCBCBC;background:#fff;border-radius:.125rem;height:1.5rem;min-width:1.5rem;outline:none;cursor:pointer;line-height:.75rem}.pagination-sec-ds .right .pagination-box ul li button.active,.pagination-sec-ds .right .pagination-box ul li button:hover{border-color:#1e5dd3;color:#4681ef}.pagination-sec-ds .right .pagination-box ul li button.disabled{filter:grayscale(100%);pointer-events:none;opacity:1;color:unset!important;border:1px solid #BCBCBC}.pagination-sec-ds .right .pagination-box ul li button.disable{pointer-events:none}.pagination-sec-ds .right .goto-page{background:#fff;border:1px solid #BCBCBC;border-radius:.125rem;height:1.5625rem}.pagination-sec-ds .right .goto-page .goto-page-text{border-right:1px solid #BCBCBC;height:1.4375rem;line-height:1.4375rem}.pagination-sec-ds .right .goto-page .goto-page-text:last-of-type{border-right:none;border-left:1px solid #BCBCBC}.pagination-sec-ds .right .goto-page .goto-page-input{position:relative}.pagination-sec-ds .right .goto-page .goto-page-input input{-moz-appearance:textfield;background:transparent;border:none;color:#161b2f;font-size:.6875rem;text-transform:uppercase;padding:0 1.5625rem 0 .3125rem;width:5.9375rem;height:1.4375rem;position:relative;top:-.0625rem}.pagination-sec-ds .right .goto-page .goto-page-input input::-webkit-inner-spin-button,.pagination-sec-ds .right .goto-page .goto-page-input input::-webkit-outer-spin-button{-webkit-appearance:none}.pagination-sec-ds .right .goto-page .goto-page-input input:focus{outline:none}.pagination-sec-ds .right .goto-page .goto-page-input input.invalid{border:1px solid #d93b41;position:relative;top:-1px;height:1.5625rem}.pagination-sec-ds .right .goto-page .goto-page-input button{background:transparent;border:none;position:absolute;right:.1875rem;top:.25rem;cursor:pointer;padding:0;height:1.125rem;width:1.1875rem;line-height:1.375rem}.pagination-sec-ds .right .goto-page .goto-page-input button img{width:.75rem;height:.75rem}\n"] }]
134
- }], ctorParameters: function () { return []; }, propDecorators: { from: [{
145
+ }], propDecorators: { from: [{
135
146
  type: Input
136
147
  }], to: [{
137
148
  type: Input
@@ -152,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
152
163
  }], pageChanged: [{
153
164
  type: Output
154
165
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL2NyZWF0ZS1wcm9ncmFtLXVpL3BhZ2luYXRpb24vcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXByb2dyYW0vY3JlYXRlLXByb2dyYW0tdWkvcGFnaW5hdGlvbi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7O0FBT3pHLE1BQU0sT0FBTyxtQkFBbUI7SUF1QjlCO1FBdEJBLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDSixTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ2pCLE9BQUUsR0FBVyxFQUFFLENBQUM7UUFDaEIsVUFBSyxHQUFRLEdBQUcsQ0FBQztRQUNqQixtQkFBYyxHQUFZLElBQUksQ0FBQTtRQUM5QixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBVXZCLHFCQUFnQixHQUFXLENBQUMsQ0FBQztRQUM1QixnQkFBVyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFBO1FBQ2pFLGlCQUFZLEdBQVEsRUFBRSxDQUFBO1FBRTdCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLG1CQUFjLEdBQVksS0FBSyxDQUFDO0lBRWhCLENBQUM7SUFoQmpCLElBQTBCLE9BQU8sQ0FBQyxJQUFTO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJ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Q0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ29CLE9BQU87c0JBQWhDLEtBQUs7dUJBQUMsYUFBYTtnQkFJSSxZQUFZO3NCQUFuQyxLQUFLO3VCQUFDLFdBQVc7Z0JBS1QsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndnVpLXBhZ2luYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIGN1cnJQYWdlID0gMTtcclxuICBASW5wdXQoKSBmcm9tOiBudW1iZXIgPSAxO1xyXG4gIEBJbnB1dCgpIHRvOiBudW1iZXIgPSAzMDtcclxuICBASW5wdXQoKSB0b3RhbDogYW55ID0gMTAwO1xyXG4gIEBJbnB1dCgpIHNob3dQYWdlRGV0YWlsOiBib29sZWFuID0gdHJ1ZVxyXG4gIEBJbnB1dCgpIHRvdGFsUGFnZTogbnVtYmVyID0gMTU7XHJcbiAgQElucHV0KCdjdXJyZW50UGFnZScpIHNldCBzZXRQYWdlKHBhZ2U6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyUGFnZSA9IHBhZ2U7XHJcbiAgICB0aGlzLmRpc3BsYXlBcnJheVVwZGF0ZShwYWdlKTtcclxuICB9XHJcbiAgQElucHV0KCd0b3RhbFBhZ2UnKSBzZXQgc2V0VG90YWxQYWdlKHBhZ2U6IGFueSkge1xyXG4gICAgdGhpcy50b3RhbFBhZ2UgPSBwYWdlO1xyXG4gICAgdGhpcy5kaXNwbGF5QXJyYXlVcGRhdGUocGFnZSk7XHJcbiAgICB0aGlzLnN0YXJ0QXJyYXkoKTtcclxuICB9XHJcbiAgQElucHV0KCkgcGFnZUluU2luZ2xlVmlldzogbnVtYmVyID0gNTtcclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KClcclxuICBwdWJsaWMgZGlzcGxheUFycmF5OiBhbnkgPSBbXVxyXG4gIGVudGVyUGFnZU5vITogbnVtYmVyIHwgYW55O1xyXG4gIGVudGVyUHJlc3NlZCA9IGZhbHNlO1xyXG4gIGlzSW52YWxpZElucHV0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcImNoYW5nZVwiLCBjaGFuZ2VzKVxyXG4gICAgLy90aGlzLmRpc3BsYXlBcnJheVVwZGF0ZSh0aGlzLmN1cnJQYWdlKTtcclxuICAgIC8vdGhpcy5zdGFydEFycmF5KCk7XHJcbiAgfVxyXG5cclxuICAvL0Z1bmN0aW9uIHJlc3BvbnNpYmxlIHRvIGdlbmVyYXRlIHRoZSBhcnJheSB0byBkaXNwbGF5IHRoZSBwYWdpbmF0aW9uIGF0IHRoZSBiZWdpbm5pbmdcclxuICBzdGFydEFycmF5KCkge1xyXG4gICAgdGhpcy5kaXNwbGF5QXJyYXkgPSBbXTtcclxuICAgIGlmICh0aGlzLnRvdGFsUGFnZSA8PSB0aGlzLnBhZ2VJblNpbmdsZVZpZXcpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy50b3RhbFBhZ2U7ICsraSkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUFycmF5LnB1c2goaSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5wYWdlSW5TaW5nbGVWaWV3IDwgdGhpcy50b3RhbFBhZ2UpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5wYWdlSW5TaW5nbGVWaWV3OyArK2kpIHtcclxuICAgICAgIHRoaXMuZGlzcGxheUFycmF5LnB1c2goaSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHVwZGF0ZSB0aGUgY3VycmVudCBwYWdlIHdoaWxlIGNsaWNraW5nIHByZXYgb3IgbmV4dCBidXR0b25cclxuICBjdXJyZW50SW5kZXhVcGRhdGUodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5jdXJyUGFnZSArPSB2YWx1ZVxyXG4gICAgaWYgKHRoaXMuY3VyclBhZ2UgPD0gdGhpcy50b3RhbFBhZ2UgJiYgdGhpcy5jdXJyUGFnZSA+IHRoaXMucGFnZUluU2luZ2xlVmlldyAtIE1hdGguZmxvb3IodGhpcy5wYWdlSW5TaW5nbGVWaWV3IC8gMikgJiYgdGhpcy50b3RhbFBhZ2UgPiB0aGlzLnBhZ2VJblNpbmdsZVZpZXcpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5QXJyYXlVcGRhdGUodGhpcy5jdXJyUGFnZSlcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyUGFnZSA8PSB0aGlzLnBhZ2VJblNpbmdsZVZpZXcpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5QXJyYXkgPSBbXTtcclxuICAgICAgdGhpcy5zdGFydEFycmF5KClcclxuICAgIH1cclxuICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdCh0aGlzLmN1cnJQYWdlKTtcclxuICAgIHRoaXMuZW50ZXJQYWdlTm89bnVsbDtcclxuICAgIHRoaXMuZW50ZXJQcmVzc2VkID0gZmFsc2U7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIC8vRnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHVwZGF0aW5nIHRoZSBjdXJyZW50IHBhZ2Ugd2hpbGUgY2xpY2tpbmcgb24gYW55IHBhZ2UgbnVtYmVyXHJcbiAgY3VycmVudEluZGV4QXNzaWduKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuY3VyclBhZ2UgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLmN1cnJQYWdlIDw9IHRoaXMudG90YWxQYWdlICYmIHRoaXMuY3VyclBhZ2UgPiB0aGlzLnBhZ2VJblNpbmdsZVZpZXcgLSBNYXRoLmZsb29yKHRoaXMucGFnZUluU2luZ2xlVmlldyAvIDIpICYmIHRoaXMudG90YWxQYWdlID4gdGhpcy5wYWdlSW5TaW5nbGVWaWV3KSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUFycmF5VXBkYXRlKHRoaXMuY3VyclBhZ2UpXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3VyclBhZ2UgPD0gdGhpcy5wYWdlSW5TaW5nbGVWaWV3KSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUFycmF5ID0gW107XHJcbiAgICAgIHRoaXMuc3RhcnRBcnJheSgpXHJcbiAgICB9XHJcbiAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQodGhpcy5jdXJyUGFnZSk7XHJcbiAgICB0aGlzLmVudGVyUGFnZU5vPW51bGw7XHJcbiAgICB0aGlzLmVudGVyUHJlc3NlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vTnVtYmVyIHZhbGlkYXRpb24gY2hlY2tcclxuICB2YWxpZGF0ZU51bWJlcihlOiBhbnkpIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSAvXi0/KDB8WzEtOV1cXGQqKT8kLztcclxuICAgIHJldHVybiBwYXR0ZXJuLnRlc3QoZSk7XHJcbiAgfVxyXG5cclxuICAvL0Z1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyB0aGUgY3VycmVudCBwYWdlIHdoaWxlIGVudGVyaW5nIHRoZSBwYWdlIG51bWJlclxyXG4gIG9uRW50ZXJQcmVzcyhldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdlbnRlcicpIHtcclxuICAgICAgdGhpcy5lbnRlclByZXNzZWQgPSB0cnVlO1xyXG4gICAgICBpZiAodGhpcy5lbnRlclBhZ2VObyA8PSB0aGlzLnRvdGFsUGFnZSAmJiB0aGlzLmVudGVyUGFnZU5vID4gMCAmJiB0aGlzLmVudGVyUGFnZU5vICYmIHRoaXMudmFsaWRhdGVOdW1iZXIodGhpcy5lbnRlclBhZ2VObykpIHtcclxuICAgICAgICB0aGlzLmN1cnJQYWdlID0gdGhpcy5lbnRlclBhZ2VObztcclxuICAgICAgICBpZiAodGhpcy5jdXJyUGFnZSA8PSB0aGlzLnRvdGFsUGFnZSAmJiB0aGlzLmN1cnJQYWdlID4gdGhpcy5wYWdlSW5TaW5nbGVWaWV3IC0gTWF0aC5mbG9vcih0aGlzLnBhZ2VJblNpbmdsZVZpZXcgLyAyKSAmJiB0aGlzLnRvdGFsUGFnZSA+IHRoaXMucGFnZUluU2luZ2xlVmlldykge1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5QXJyYXlVcGRhdGUodGhpcy5jdXJyUGFnZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmN1cnJQYWdlIDw9IHRoaXMucGFnZUluU2luZ2xlVmlldykge1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5QXJyYXkgPSBbXTtcclxuICAgICAgICAgIHRoaXMuc3RhcnRBcnJheSgpO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHRoaXMuY3VyclBhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0Z1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBtYW5pcHVsYXRpbmcgdGhlIGRpc3BsYXlBcnJheVxyXG4gIGRpc3BsYXlBcnJheVVwZGF0ZShpbmRleDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5jdXJyUGFnZSA+IHRoaXMucGFnZUluU2luZ2xlVmlldyAtIE1hdGguZmxvb3IodGhpcy5wYWdlSW5TaW5nbGVWaWV3IC8gMikgJiYgdGhpcy5jdXJyUGFnZSA8PSB0aGlzLnRvdGFsUGFnZSAtIE1hdGguZmxvb3IodGhpcy5wYWdlSW5TaW5nbGVWaWV3IC8gMikgJiYgdGhpcy50b3RhbFBhZ2UgPiB0aGlzLnBhZ2VJblNpbmdsZVZpZXcpIHtcclxuICAgICAgaWYgKHRoaXMucGFnZUluU2luZ2xlVmlldyAlIDIgIT0gMCkge1xyXG4gICAgICAgIGxldCBhcHBlbmRFbGVtZW50ID0gdGhpcy5wYWdlSW5TaW5nbGVWaWV3IC8gMjtcclxuICAgICAgICBhcHBlbmRFbGVtZW50ID0gTWF0aC5mbG9vcihhcHBlbmRFbGVtZW50KTtcclxuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IHRoaXMuY3VyclBhZ2UgLSBhcHBlbmRFbGVtZW50O1xyXG4gICAgICAgIGxldCBlbmRJbmRleCA9IHRoaXMuY3VyclBhZ2UgKyBhcHBlbmRFbGVtZW50O1xyXG5cclxuICAgICAgICB0aGlzLmRpc3BsYXlBcnJheSA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpIDw9IGVuZEluZGV4OyArK2kpIHtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheUFycmF5LnB1c2goaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucGFnZUluU2luZ2xlVmlldyAlIDIgPT09IDApIHtcclxuICAgICAgICBsZXQgYXBwZW5kRWxlbWVudCA9IHRoaXMucGFnZUluU2luZ2xlVmlldyAvIDI7XHJcbiAgICAgICAgbGV0IHN0YXJ0SW5kZXggPSB0aGlzLmN1cnJQYWdlIC0gYXBwZW5kRWxlbWVudDtcclxuICAgICAgICBsZXQgZW5kSW5kZXggPSB0aGlzLmN1cnJQYWdlICsgYXBwZW5kRWxlbWVudCAtIDE7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5QXJyYXkgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnRJbmRleDsgaSA8PSBlbmRJbmRleDsgKytpKSB7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXlBcnJheS5wdXNoKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLmN1cnJQYWdlID4gdGhpcy50b3RhbFBhZ2UgLSBNYXRoLmZsb29yKHRoaXMucGFnZUluU2luZ2xlVmlldyAvIDIpKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUFycmF5ID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSB0aGlzLnRvdGFsUGFnZSAtIHRoaXMucGFnZUluU2luZ2xlVmlldyArIDE7IGkgPD0gdGhpcy50b3RhbFBhZ2U7ICsraSkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUFycmF5LnB1c2goaSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZGlzcGxheUFycmF5ID0gdGhpcy5kaXNwbGF5QXJyYXkuZmlsdGVyKChlbGU6YW55KT0+ZWxlID4gMClcclxuICB9XHJcbiBcclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInBhZ2luYXRpb24tc2VjLWRzIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGItMlwiIFtjbGFzcy5yaWdodC1hbGlnbl09XCJmYWxzZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImxlZnQgdngtbGFiZWwtdHh0IHZ4LWZzLTEyIHZ4LWZ3LTQwMCB2eC10dC11cHBlcmNhc2UgdngtbGgtNlwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UGFnZURldGFpbFwiPlNIT1dJTkcge3sgZnJvbSB9fSAtIHt7dG99fSBPRiB7e3RvdGFsfX0gUkVDT1JEUzwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWJveFwiICpuZ0lmPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1tLTAgdngtcC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1kLWZsZXhcIj48YnV0dG9uIGNsYXNzPVwidngtZC1pbmxpbmUtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGFiZWwtdHh0IHZ4LWZ3LTQwMCB2eC1mcy0xMSB2eC10dC11cHBlcmNhc2UgdngtcGwtMiB2eC1wci0yIHZ4LW0tMFwiIFtjbGFzcy5hY3RpdmVdPVwidHJ1ZVwiPkFsbDwvYnV0dG9uPjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1kLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidngtZC1pbmxpbmUtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGFiZWwtdHh0IHZ4LWZ3LTQwMCB2eC1mcy0xMSB2eC10dC11cHBlcmNhc2UgdngtcGwtMiB2eC1wci0yIHZ4LW0tMFwiIFtjbGFzcy5hY3RpdmVdPVwiZmFsc2VcIj5BPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIiAqbmdJZj1cInRvdGFsUGFnZSA+IDFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1ib3hcIj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1tLTAgdngtcC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1kLWZsZXggdngtbXItMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ2eC1tLTBcIiAgW2NsYXNzLmRpc2FibGVkXT1cImN1cnJQYWdlID09PSAxXCIgKGNsaWNrKT1cImN1cnJlbnRJbmRleFVwZGF0ZSgtMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMFwiPiYjeGU5NmI7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1kLWZsZXhcIiAqbmdGb3I9XCJsZXQgcGFnZSBvZiBkaXNwbGF5QXJyYXk7IGxldCBpID0gaW5kZXggXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY3VycmVudEluZGV4QXNzaWduKHBhZ2UpXCIgIGNsYXNzPVwidngtbGFiZWwtdHh0IHZ4LWZzLTExIHZ4LWZ3LTQwMCB2eC1wbC0xIHZ4LXByLTEgdngtZC1pbmxpbmUtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbS0wIHZ4LW1sLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyUGFnZSA9PSBwYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3BhZ2V9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1kLWZsZXggdngtbWwtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gIGNsYXNzPVwidngtbS0wXCIgICBbY2xhc3MuZGlzYWJsZWRdPVwiY3VyclBhZ2UgPT09IHRvdGFsUGFnZVwiICAoY2xpY2spPVwiY3VycmVudEluZGV4VXBkYXRlKDEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTBcIj4mI3hlOTcwOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3RvLXBhZ2UgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1tbC0yXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3RvLXBhZ2UtdGV4dCB2eC1sYWJlbC10eHQgdngtZnMtMTEgdngtdHQtdXBwZXJjYXNlIHZ4LWQtYmxvY2sgdngtcGwtMiB2eC1wci0yXCI+R08gVE88L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdG8tcGFnZS1pbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IChuZ01vZGVsQ2hhbmdlKT1cImVudGVyUHJlc3NlZCA9IGZhbHNlXCIgW2NsYXNzLmludmFsaWRdPVwiZW50ZXJQYWdlTm8gPiB0b3RhbFBhZ2UgJiYgZW50ZXJQcmVzc2VkXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbnRlclBhZ2VOb1wiXHJcbiAgICAgICAgICAgICAgICAoa2V5dXApPVwib25FbnRlclByZXNzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQYWdlIE5vLlwiIC8+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2VudGVyLWljb24uc3ZnXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdG8tcGFnZS10ZXh0IHZ4LWxhYmVsLXR4dCB2eC1mcy0xMSB2eC10dC11cHBlcmNhc2UgdngtZC1ibG9jayB2eC1wbC0yIHZ4LXByLTJcIj5PRiB7e3RvdGFsUGFnZX19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL2NyZWF0ZS1wcm9ncmFtLXVpL3BhZ2luYXRpb24vcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXByb2dyYW0vY3JlYXRlLXByb2dyYW0tdWkvcGFnaW5hdGlvbi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU92RSxNQUFNLE9BQU8sbUJBQW1CO0lBTGhDO1FBTUUsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUNKLFNBQUksR0FBVyxDQUFDLENBQUM7UUFDakIsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQVEsR0FBRyxDQUFDO1FBQ2pCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQy9CLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFVdkIscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBQzVCLGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbEUsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFFOUIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsbUJBQWMsR0FBWSxLQUFLLENBQUM7S0FpSWpDO0lBL0lDLElBQTBCLE9BQU8sQ0FBQyxJQUFTO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FB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O3NCQUFoQyxLQUFLO3VCQUFDLGFBQWE7Z0JBSUksWUFBWTtzQkFBbkMsS0FBSzt1QkFBQyxXQUFXO2dCQUtULGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndnVpLXBhZ2luYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5sZXNzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uQ29tcG9uZW50IHtcclxuICBjdXJyUGFnZSA9IDE7XHJcbiAgQElucHV0KCkgZnJvbTogbnVtYmVyID0gMTtcclxuICBASW5wdXQoKSB0bzogbnVtYmVyID0gMzA7XHJcbiAgQElucHV0KCkgdG90YWw6IGFueSA9IDEwMDtcclxuICBASW5wdXQoKSBzaG93UGFnZURldGFpbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdG90YWxQYWdlOiBudW1iZXIgPSAxNTtcclxuICBASW5wdXQoJ2N1cnJlbnRQYWdlJykgc2V0IHNldFBhZ2UocGFnZTogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJQYWdlID0gcGFnZTtcclxuICAgIHRoaXMuZGlzcGxheUFycmF5VXBkYXRlKHBhZ2UpO1xyXG4gIH1cclxuICBASW5wdXQoJ3RvdGFsUGFnZScpIHNldCBzZXRUb3RhbFBhZ2UocGFnZTogYW55KSB7XHJcbiAgICB0aGlzLnRvdGFsUGFnZSA9IHBhZ2U7XHJcbiAgICB0aGlzLmRpc3BsYXlBcnJheVVwZGF0ZShwYWdlKTtcclxuICAgIHRoaXMuc3RhcnRBcnJheSgpO1xyXG4gIH1cclxuICBASW5wdXQoKSBwYWdlSW5TaW5nbGVWaWV3OiBudW1iZXIgPSA1O1xyXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBwdWJsaWMgZGlzcGxheUFycmF5OiBhbnkgPSBbXTtcclxuICBlbnRlclBhZ2VObyE6IG51bWJlciB8IGFueTtcclxuICBlbnRlclByZXNzZWQgPSBmYWxzZTtcclxuICBpc0ludmFsaWRJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL0Z1bmN0aW9uIHJlc3BvbnNpYmxlIHRvIGdlbmVyYXRlIHRoZSBhcnJheSB0byBkaXNwbGF5IHRoZSBwYWdpbmF0aW9uIGF0IHRoZSBiZWdpbm5pbmdcclxuICBzdGFydEFycmF5KCkge1xyXG4gICAgdGhpcy5kaXNwbGF5QXJyYXkgPSBbXTtcclxuICAgIGlmICh0aGlzLnRvdGFsUGFnZSA8PSB0aGlzLnBhZ2VJblNpbmdsZVZpZXcpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy50b3RhbFBhZ2U7ICsraSkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUFycmF5LnB1c2goaSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5wYWdlSW5TaW5nbGVWaWV3IDwgdGhpcy50b3RhbFBhZ2UpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5wYWdlSW5TaW5nbGVWaWV3OyArK2kpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlBcnJheS5wdXNoKGkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0Z1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciB1cGRhdGUgdGhlIGN1cnJlbnQgcGFnZSB3aGlsZSBjbGlja2luZyBwcmV2IG9yIG5leHQgYnV0dG9uXHJcbiAgY3VycmVudEluZGV4VXBkYXRlKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuY3VyclBhZ2UgKz0gdmFsdWU7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY3VyclBhZ2UgPD0gdGhpcy50b3RhbFBhZ2UgJiZcclxuICAgICAgdGhpcy5jdXJyUGFnZSA+XHJcbiAgICAgICAgdGhpcy5wYWdlSW5TaW5nbGVWaWV3IC0gTWF0aC5mbG9vcih0aGlzLnBhZ2VJblNpbmdsZVZpZXcgLyAyKSAmJlxyXG4gICAgICB0aGlzLnRvdGFsUGFnZSA+IHRoaXMucGFnZUluU2luZ2xlVmlld1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUFycmF5VXBkYXRlKHRoaXMuY3VyclBhZ2UpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmN1cnJQYWdlIDw9IHRoaXMucGFnZUluU2luZ2xlVmlldykge1xyXG4gICAgICB0aGlzLmRpc3BsYXlBcnJheSA9IFtdO1xyXG4gICAgICB0aGlzLnN0YXJ0QXJyYXkoKTtcclxuICAgIH1cclxuICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdCh0aGlzLmN1cnJQYWdlKTtcclxuICAgIHRoaXMuZW50ZXJQYWdlTm8gPSBudWxsO1xyXG4gICAgdGhpcy5lbnRlclByZXNzZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vRnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHVwZGF0aW5nIHRoZSBjdXJyZW50IHBhZ2Ugd2hpbGUgY2xpY2tpbmcgb24gYW55IHBhZ2UgbnVtYmVyXHJcbiAgY3VycmVudEluZGV4QXNzaWduKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuY3VyclBhZ2UgPSB2YWx1ZTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5jdXJyUGFnZSA8PSB0aGlzLnRvdGFsUGFnZSAmJlxyXG4gICAgICB0aGlzLmN1cnJQYWdlID5cclxuICAgICAgICB0aGlzLnBhZ2VJblNpbmdsZVZpZXcgLSBNYXRoLmZsb29yKHRoaXMucGFnZUluU2luZ2xlVmlldyAvIDIpICYmXHJcbiAgICAgIHRoaXMudG90YWxQYWdlID4gdGhpcy5wYWdlSW5TaW5nbGVWaWV3XHJcbiAgICApIHtcclxuICAgICAgdGhpcy5kaXNwbGF5QXJyYXlVcGRhdGUodGhpcy5jdXJyUGFnZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3VyclBhZ2UgPD0gdGhpcy5wYWdlSW5TaW5nbGVWaWV3KSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheUFycmF5ID0gW107XHJcbiAgICAgIHRoaXMuc3RhcnRBcnJheSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHRoaXMuY3VyclBhZ2UpO1xyXG4gICAgdGhpcy5lbnRlclBhZ2VObyA9IG51bGw7XHJcbiAgICB0aGlzLmVudGVyUHJlc3NlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy9OdW1iZXIgdmFsaWRhdGlvbiBjaGVja1xyXG4gIHZhbGlkYXRlTnVtYmVyKGU6IGFueSkge1xyXG4gICAgY29uc3QgcGF0dGVybiA9IC9eLT8oMHxbMS05XVxcZCopPyQvO1xyXG4gICAgcmV0dXJuIHBhdHRlcm4udGVzdChlKTtcclxuICB9XHJcblxyXG4gIC8vRnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHVwZGF0aW5nIHRoZSBjdXJyZW50IHBhZ2Ugd2hpbGUgZW50ZXJpbmcgdGhlIHBhZ2UgbnVtYmVyXHJcbiAgb25FbnRlclByZXNzKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2VudGVyJykge1xyXG4gICAgICB0aGlzLmVudGVyUHJlc3NlZCA9IHRydWU7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmVudGVyUGFnZU5vIDw9IHRoaXMudG90YWxQYWdlICYmXHJcbiAgICAgICAgdGhpcy5lbnRlclBhZ2VObyA+IDAgJiZcclxuICAgICAgICB0aGlzLmVudGVyUGFnZU5vICYmXHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZU51bWJlcih0aGlzLmVudGVyUGFnZU5vKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmN1cnJQYWdlID0gdGhpcy5lbnRlclBhZ2VObztcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLmN1cnJQYWdlIDw9IHRoaXMudG90YWxQYWdlICYmXHJcbiAgICAgICAgICB0aGlzLmN1cnJQYWdlID5cclxuICAgICAgICAgICAgdGhpcy5wYWdlSW5TaW5nbGVWaWV3IC0gTWF0aC5mbG9vcih0aGlzLnBhZ2VJblNpbmdsZVZpZXcgLyAyKSAmJlxyXG4gICAgICAgICAgdGhpcy50b3RhbFBhZ2UgPiB0aGlzLnBhZ2VJblNpbmdsZVZpZXdcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheUFycmF5VXBkYXRlKHRoaXMuY3VyclBhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyUGFnZSA8PSB0aGlzLnBhZ2VJblNpbmdsZVZpZXcpIHtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheUFycmF5ID0gW107XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0QXJyYXkoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHRoaXMuY3VyclBhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0Z1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBtYW5pcHVsYXRpbmcgdGhlIGRpc3BsYXlBcnJheVxyXG4gIGRpc3BsYXlBcnJheVVwZGF0ZShpbmRleDogYW55KSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY3VyclBhZ2UgPlxyXG4gICAgICAgIHRoaXMucGFnZUluU2luZ2xlVmlldyAtIE1hdGguZmxvb3IodGhpcy5wYWdlSW5TaW5nbGVWaWV3IC8gMikgJiZcclxuICAgICAgdGhpcy5jdXJyUGFnZSA8PSB0aGlzLnRvdGFsUGFnZSAtIE1hdGguZmxvb3IodGhpcy5wYWdlSW5TaW5nbGVWaWV3IC8gMikgJiZcclxuICAgICAgdGhpcy50b3RhbFBhZ2UgPiB0aGlzLnBhZ2VJblNpbmdsZVZpZXdcclxuICAgICkge1xyXG4gICAgICBpZiAodGhpcy5wYWdlSW5TaW5nbGVWaWV3ICUgMiAhPSAwKSB7XHJcbiAgICAgICAgbGV0IGFwcGVuZEVsZW1lbnQgPSB0aGlzLnBhZ2VJblNpbmdsZVZpZXcgLyAyO1xyXG4gICAgICAgIGFwcGVuZEVsZW1lbnQgPSBNYXRoLmZsb29yKGFwcGVuZEVsZW1lbnQpO1xyXG4gICAgICAgIGxldCBzdGFydEluZGV4ID0gdGhpcy5jdXJyUGFnZSAtIGFwcGVuZEVsZW1lbnQ7XHJcbiAgICAgICAgbGV0IGVuZEluZGV4ID0gdGhpcy5jdXJyUGFnZSArIGFwcGVuZEVsZW1lbnQ7XHJcblxyXG4gICAgICAgIHRoaXMuZGlzcGxheUFycmF5ID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXg7IGkgPD0gZW5kSW5kZXg7ICsraSkge1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5QXJyYXkucHVzaChpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wYWdlSW5TaW5nbGVWaWV3ICUgMiA9PT0gMCkge1xyXG4gICAgICAgIGxldCBhcHBlbmRFbGVtZW50ID0gdGhpcy5wYWdlSW5TaW5nbGVWaWV3IC8gMjtcclxuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IHRoaXMuY3VyclBhZ2UgLSBhcHBlbmRFbGVtZW50O1xyXG4gICAgICAgIGxldCBlbmRJbmRleCA9IHRoaXMuY3VyclBhZ2UgKyBhcHBlbmRFbGVtZW50IC0gMTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlBcnJheSA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpIDw9IGVuZEluZGV4OyArK2kpIHtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheUFycmF5LnB1c2goaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLmN1cnJQYWdlID5cclxuICAgICAgdGhpcy50b3RhbFBhZ2UgLSBNYXRoLmZsb29yKHRoaXMucGFnZUluU2luZ2xlVmlldyAvIDIpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5kaXNwbGF5QXJyYXkgPSBbXTtcclxuICAgICAgZm9yIChcclxuICAgICAgICBsZXQgaSA9IHRoaXMudG90YWxQYWdlIC0gdGhpcy5wYWdlSW5TaW5nbGVWaWV3ICsgMTtcclxuICAgICAgICBpIDw9IHRoaXMudG90YWxQYWdlO1xyXG4gICAgICAgICsraVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlBcnJheS5wdXNoKGkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpc3BsYXlBcnJheSA9IHRoaXMuZGlzcGxheUFycmF5LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZSA+IDApO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicGFnaW5hdGlvbi1zZWMtZHMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wYi0yXCIgW2NsYXNzLnJpZ2h0LWFsaWduXT1cImZhbHNlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGVmdCB2eC1sYWJlbC10eHQgdngtZnMtMTIgdngtZnctNDAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1saC02XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dQYWdlRGV0YWlsXCI+U0hPV0lORyB7eyBmcm9tIH19IC0ge3t0b319IE9GIHt7dG90YWx9fSBSRUNPUkRTPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2luYXRpb24tYm94XCIgKm5nSWY9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LW0tMCB2eC1wLTBcIj5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInZ4LWQtZmxleFwiPjxidXR0b24gY2xhc3M9XCJ2eC1kLWlubGluZS1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1sYWJlbC10eHQgdngtZnctNDAwIHZ4LWZzLTExIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0yIHZ4LXByLTIgdngtbS0wXCIgW2NsYXNzLmFjdGl2ZV09XCJ0cnVlXCI+QWxsPC9idXR0b24+PC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInZ4LWQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ2eC1kLWlubGluZS1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1sYWJlbC10eHQgdngtZnctNDAwIHZ4LWZzLTExIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0yIHZ4LXByLTIgdngtbS0wXCIgW2NsYXNzLmFjdGl2ZV09XCJmYWxzZVwiPkE8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicmlnaHQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiICpuZ0lmPVwidG90YWxQYWdlID4gMVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWdpbmF0aW9uLWJveFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LW0tMCB2eC1wLTBcIj5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInZ4LWQtZmxleCB2eC1tci0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZ4LW0tMFwiICBbY2xhc3MuZGlzYWJsZWRdPVwiY3VyclBhZ2UgPT09IDFcIiAoY2xpY2spPVwiY3VycmVudEluZGV4VXBkYXRlKC0xKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIHZ4LWZzLTEwXCI+JiN4ZTk2Yjs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInZ4LWQtZmxleFwiICpuZ0Zvcj1cImxldCBwYWdlIG9mIGRpc3BsYXlBcnJheTsgbGV0IGkgPSBpbmRleCBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjdXJyZW50SW5kZXhBc3NpZ24ocGFnZSlcIiAgY2xhc3M9XCJ2eC1sYWJlbC10eHQgdngtZnMtMTEgdngtZnctNDAwIHZ4LXBsLTEgdngtcHItMSB2eC1kLWlubGluZS1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1tLTAgdngtbWwtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImN1cnJQYWdlID09IHBhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7cGFnZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInZ4LWQtZmxleCB2eC1tbC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAgY2xhc3M9XCJ2eC1tLTBcIiAgIFtjbGFzcy5kaXNhYmxlZF09XCJjdXJyUGFnZSA9PT0gdG90YWxQYWdlXCIgIChjbGljayk9XCJjdXJyZW50SW5kZXhVcGRhdGUoMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMFwiPiYjeGU5NzA7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdG8tcGFnZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LW1sLTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdG8tcGFnZS10ZXh0IHZ4LWxhYmVsLXR4dCB2eC1mcy0xMSB2eC10dC11cHBlcmNhc2UgdngtZC1ibG9jayB2eC1wbC0yIHZ4LXByLTJcIj5HTyBUTzwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ290by1wYWdlLWlucHV0XCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgKG5nTW9kZWxDaGFuZ2UpPVwiZW50ZXJQcmVzc2VkID0gZmFsc2VcIiBbY2xhc3MuaW52YWxpZF09XCJlbnRlclBhZ2VObyA+IHRvdGFsUGFnZSAmJiBlbnRlclByZXNzZWRcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVudGVyUGFnZU5vXCJcclxuICAgICAgICAgICAgICAgIChrZXl1cCk9XCJvbkVudGVyUHJlc3MoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBhZ2UgTm8uXCIgLz5cclxuICAgICAgICAgICAgICAgIDxidXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvZW50ZXItaWNvbi5zdmdcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ290by1wYWdlLXRleHQgdngtbGFiZWwtdHh0IHZ4LWZzLTExIHZ4LXR0LXVwcGVyY2FzZSB2eC1kLWJsb2NrIHZ4LXBsLTIgdngtcHItMlwiPk9GIHt7dG90YWxQYWdlfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -2,10 +2,13 @@ import { Pipe } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class AssessmentResolverPipe {
4
4
  transform(value, ...args) {
5
- console.log("pipe value ====>", value, args);
6
5
  if (value && value?.length) {
7
6
  value = value.filter((ele) => ele?.assessmentIds?.length);
8
- const val = Object.assign(JSON.parse(JSON.stringify(value.map(((category) => category.assessmentIds.map((assessment) => { return { ...assessment, category_id: category.category_id }; })))?.flat())));
7
+ const val = Object.assign(JSON.parse(JSON.stringify(value
8
+ .map((category) => category.assessmentIds.map((assessment) => {
9
+ return { ...assessment, category_id: category.category_id };
10
+ }))
11
+ ?.flat())));
9
12
  return val;
10
13
  }
11
14
  else {
@@ -21,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
21
24
  name: 'assessmentResolver',
22
25
  }]
23
26
  }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1yZXNvbHZlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcHJvZ3JhbS9jcmVhdGUtcHJvZ3JhbS11aS9waXBlcy9hc3Nlc3NtZW50LXJlc29sdmVyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsU0FBUyxDQUFDLEtBQVUsRUFBRSxHQUFHLElBQVc7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDL0MsSUFBRyxLQUFLLElBQUksS0FBSyxFQUFFLE1BQU0sRUFBQztZQUN4QixLQUFLLEdBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMvRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFZLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBYyxFQUFFLEVBQUUsR0FBRSxPQUFPLEVBQUMsR0FBRyxVQUFVLEVBQUMsV0FBVyxFQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUMsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4TSxPQUFPLEdBQUcsQ0FBQztTQUNaO2FBQUk7WUFDSCxPQUFPLEVBQUUsQ0FBQTtTQUNWO0lBQ0EsQ0FBQzs7bUhBWFUsc0JBQXNCO2lIQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFIbEMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsb0JBQW9CO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnYXNzZXNzbWVudFJlc29sdmVyJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFzc2Vzc21lbnRSZXNvbHZlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIC4uLmFyZ3M6IGFueVtdKTogYW55IHtcclxuICAgIGNvbnNvbGUubG9nKFwicGlwZSB2YWx1ZSA9PT09PlwiLCB2YWx1ZSwgYXJncylcclxuIGlmKHZhbHVlICYmIHZhbHVlPy5sZW5ndGgpe1xyXG4gICB2YWx1ZSAgPSB2YWx1ZS5maWx0ZXIoKGVsZTphbnkpID0+IGVsZT8uYXNzZXNzbWVudElkcz8ubGVuZ3RoKTtcclxuICAgY29uc3QgdmFsID0gT2JqZWN0LmFzc2lnbihKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHZhbHVlLm1hcCgoKGNhdGVnb3J5OmFueSkgPT4gY2F0ZWdvcnkuYXNzZXNzbWVudElkcy5tYXAoKGFzc2Vzc21lbnQ6YW55KSA9PiB7cmV0dXJuIHsuLi5hc3Nlc3NtZW50LGNhdGVnb3J5X2lkOmNhdGVnb3J5LmNhdGVnb3J5X2lkfX0pKSk/LmZsYXQoKSkpKTtcclxuICAgcmV0dXJuIHZhbDtcclxuIH1lbHNle1xyXG4gICByZXR1cm4gW11cclxuIH1cclxuICB9XHJcbiAgfVxyXG5cclxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1yZXNvbHZlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcHJvZ3JhbS9jcmVhdGUtcHJvZ3JhbS11aS9waXBlcy9hc3Nlc3NtZW50LXJlc29sdmVyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsU0FBUyxDQUFDLEtBQVUsRUFBRSxHQUFHLElBQVc7UUFDbEMsSUFBSSxLQUFLLElBQUksS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUMxQixLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMvRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUN2QixJQUFJLENBQUMsS0FBSyxDQUNSLElBQUksQ0FBQyxTQUFTLENBQ1osS0FBSztpQkFDRixHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUNyQixRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQWUsRUFBRSxFQUFFO2dCQUM3QyxPQUFPLEVBQUUsR0FBRyxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5RCxDQUFDLENBQUMsQ0FDSDtnQkFDRCxFQUFFLElBQUksRUFBRSxDQUNYLENBQ0YsQ0FDRixDQUFDO1lBQ0YsT0FBTyxHQUFHLENBQUM7U0FDWjthQUFNO1lBQ0wsT0FBTyxFQUFFLENBQUM7U0FDWDtJQUNILENBQUM7O21IQXJCVSxzQkFBc0I7aUhBQXRCLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQUhsQyxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxvQkFBb0I7aUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdhc3Nlc3NtZW50UmVzb2x2ZXInLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXNzZXNzbWVudFJlc29sdmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCAuLi5hcmdzOiBhbnlbXSk6IGFueSB7XHJcbiAgICBpZiAodmFsdWUgJiYgdmFsdWU/Lmxlbmd0aCkge1xyXG4gICAgICB2YWx1ZSA9IHZhbHVlLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZT8uYXNzZXNzbWVudElkcz8ubGVuZ3RoKTtcclxuICAgICAgY29uc3QgdmFsID0gT2JqZWN0LmFzc2lnbihcclxuICAgICAgICBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoXHJcbiAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgICAgLm1hcCgoY2F0ZWdvcnk6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgIGNhdGVnb3J5LmFzc2Vzc21lbnRJZHMubWFwKChhc3Nlc3NtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uYXNzZXNzbWVudCwgY2F0ZWdvcnlfaWQ6IGNhdGVnb3J5LmNhdGVnb3J5X2lkIH07XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICA/LmZsYXQoKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIHZhbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -92,7 +92,8 @@ export class RoleListComponent {
92
92
  this.setAllSelectedStatus();
93
93
  }
94
94
  setAllSelectedStatus() {
95
- this.allSelected = this.allListIds.sort().toString() === this.selectedIds.sort()?.toString();
95
+ this.allSelected =
96
+ this.allListIds.sort().toString() === this.selectedIds.sort()?.toString();
96
97
  }
97
98
  /**
98
99
  * #### Description
@@ -101,8 +102,12 @@ export class RoleListComponent {
101
102
  * @param roles
102
103
  */
103
104
  setSystemRole(roles) {
104
- const systemRoles = roles.filter((ele) => (ele?.roleName?.toLowerCase() === 'key admin' || ele?.roleName?.toLowerCase() === 'admin'));
105
- this.systemRolesIds = Array.from(new Set([...this.systemRolesIds, ...systemRoles.map((ele) => ele?._id)]));
105
+ const systemRoles = roles.filter((ele) => ele?.roleName?.toLowerCase() === 'key admin' ||
106
+ ele?.roleName?.toLowerCase() === 'admin');
107
+ this.systemRolesIds = Array.from(new Set([
108
+ ...this.systemRolesIds,
109
+ ...systemRoles.map((ele) => ele?._id),
110
+ ]));
106
111
  this.selectedIds = Array.from(new Set([...this.selectedIds, ...this.systemRolesIds]));
107
112
  this.selectedRoles = this.uniqueByProp([...systemRoles, ...this.selectedRoles], '_id');
108
113
  }
@@ -113,7 +118,9 @@ export class RoleListComponent {
113
118
  * @param payload
114
119
  */
115
120
  selectItem(evt, payload) {
116
- evt?.target?.checked === true ? this.manipulateSelectedItems('ADD', payload) : this.manipulateSelectedItems('DELETE', payload);
121
+ evt?.target?.checked === true
122
+ ? this.manipulateSelectedItems('ADD', payload)
123
+ : this.manipulateSelectedItems('DELETE', payload);
117
124
  }
118
125
  /**
119
126
  * #### Description
@@ -137,7 +144,8 @@ export class RoleListComponent {
137
144
  this.setAllSelectedStatus();
138
145
  }
139
146
  saveList() {
140
- if (this.initialSelected?.sort()?.toString() !== this.selectedIds.sort()?.toString()) {
147
+ if (this.initialSelected?.sort()?.toString() !==
148
+ this.selectedIds.sort()?.toString()) {
141
149
  this.showConfirmation = true;
142
150
  }
143
151
  else {
@@ -165,40 +173,38 @@ export class RoleListComponent {
165
173
  */
166
174
  uniqueByProp(array, key) {
167
175
  return Array.from(array
168
- .reduce((acc, item) => (item && item[key] && acc.set(item[key], item),
169
- acc), new Map())
176
+ .reduce((acc, item) => (item && item[key] && acc.set(item[key], item), acc), new Map())
170
177
  .values());
171
178
  }
172
179
  //view and manage roles and groups text changed with featureflag
173
180
  permissionText(permission) {
174
- console.log("permission", permission);
175
- if (permission == "view roles") {
181
+ if (permission == 'view roles') {
176
182
  if (this.ff_rc_listing) {
177
- return "view permissions";
183
+ return 'view permissions';
178
184
  }
179
185
  else {
180
- return "view permission groups";
186
+ return 'view permission groups';
181
187
  }
182
188
  }
183
- if (permission == "manage roles") {
189
+ if (permission == 'manage roles') {
184
190
  if (this.ff_rc_listing) {
185
- return "Manage permissions";
191
+ return 'Manage permissions';
186
192
  }
187
193
  else {
188
- return "Manage permission groups";
194
+ return 'Manage permission groups';
189
195
  }
190
196
  }
191
- if (permission == "view groups") {
197
+ if (permission == 'view groups') {
192
198
  if (this.featureflagGroup) {
193
- return "view user groups";
199
+ return 'view user groups';
194
200
  }
195
201
  else {
196
202
  return permission;
197
203
  }
198
204
  }
199
- if (permission == "manage groups") {
205
+ if (permission == 'manage groups') {
200
206
  if (this.featureflagGroup) {
201
- return "Manage user groups";
207
+ return 'Manage user groups';
202
208
  }
203
209
  else {
204
210
  return permission;
@@ -231,4 +237,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
231
237
  type: Input,
232
238
  args: ['selected']
233
239
  }] } });
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXByb2dyYW0vY3JlYXRlLXByb2dyYW0tdWkvcm9sZS1saXN0L3JvbGUtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL2NyZWF0ZS1wcm9ncmFtLXVpL3JvbGUtbGlzdC9yb2xlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBUS9FLE1BQU0sT0FBTyxpQkFBaUI7SUFTNUI7UUFSVSxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUl0QyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBWWpCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsdUJBQXVCO1FBQ3ZCLG1CQUFjLEdBQVMsRUFBRSxDQUFDO1FBQzFCLHdCQUF3QjtRQUN4QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUN0QixtQ0FBbUM7UUFDbkMsa0JBQWEsR0FBUyxFQUFFLENBQUM7UUFDekIsd0NBQXdDO1FBQ3hDLGlCQUFZLEdBQVEsRUFBRSxDQUFDO1FBRXZCLGlDQUFpQztRQUNqQyxjQUFTLEdBQU8sRUFBRSxDQUFDO1FBRW5CLG9CQUFlLEdBQU8sSUFBSSxDQUFDO1FBQzNCLHFCQUFnQixHQUFJLEtBQUssQ0FBQztRQUMzQixtQ0FBbUM7UUFDbEMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNsQixZQUFZO1FBQ1gsZ0JBQVcs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ZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdyb2xlLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yb2xlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3JvbGUtbGlzdC5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSb2xlTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQE91dHB1dCgpIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBmZWF0dXJlZmxhZ3JvbGUgITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBmZWF0dXJlZmxhZ0dyb3VwICE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZmZfcmNfbGlzdGluZyE6IGJvb2xlYW5cclxuICBhbmltYXRpb24gPSB0cnVlO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFuaW1hdGlvbiA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcclxuICAgIH0sIDMwMCk7XHJcbiAgfVxyXG4gIHNlYXJjaEtleSA6YW55ID0gJyc7XHJcbiAgLy9Vc2VkIHRvIGRpc2FibGUgaXRlbXNcclxuICBzeXN0ZW1Sb2xlc0lkcyA6IGFueSA9IFtdO1xyXG4gIC8vdXNlZCB0byBjaGVjayBjaGVja2JveFxyXG4gIHNlbGVjdGVkSWRzIDphbnkgPSBbXTtcclxuICAvL2NvbXBsZXRlIG9iamVjdCBvZiBzZWxlY3RlZCBpdGVtc1xyXG4gIHNlbGVjdGVkUm9sZXMgOmFueSA9ICBbXTtcclxuICAvL2NvbnRhaW5zIGlkJ3Mgb2YgYWxsIHRoZSBleHBhbmRlZCByb3dzXHJcbiAgZXhwYW5kZWRSb3dzIDphbnkgPSBbXTtcclxuXHJcbiAgLy9saXN0IG9mIGFsbCB0aGUgYXZhaWxhYmxlIHJvbGVzXHJcbiAgcm9sZXNMaXN0OmFueSA9IFtdO1xyXG5cclxuICBpbml0aWFsU2VsZWN0ZWQgOmFueT0gbnVsbDtcclxuICBzaG93Q29uZmlybWF0aW9uICA9IGZhbHNlO1xyXG4gLy8gb25seSB1c2VkIGluIHNlbGVjdCBhbGwgZnVuY3Rpb25cclxuICBhbGxMaXN0SWRzID0gW107XHJcbi8vaXNBbGxJdGVtc1xyXG4gYWxsU2VsZWN0ZWQgPSBmYWxzZTtcclxuICBASW5wdXQoJ2xpc3QnKSBzZXQgc2V0TGlzdCh2YWx1ZTogYW55KSB7XHJcbiAgICBpZih2YWx1ZSAmJiB2YWx1ZT8ubGVuZ3RoKXtcclxuICAgICAgdGhpcy5yb2xlc0xpc3QgPSBbLi4udmFsdWVdO1xyXG4gICAgICB0aGlzLnNldFN5c3RlbVJvbGUodGhpcy5yb2xlc0xpc3QpO1xyXG4gICAgICB0aGlzLmFsbExpc3RJZHMgPSB0aGlzLnJvbGVzTGlzdC5tYXAoKGVsZTphbnkpID0+IGVsZT8uX2lkKTtcclxuICAgICAgdGhpcy5zZXRBbGxTZWxlY3RlZFN0YXR1cygpO1xyXG4gICAgfVxyXG5cclxufVxyXG5ASW5wdXQoKSBsb2FkaW5nICA9IGZhbHNlO1xyXG5ASW5wdXQoJ3NlbGVjdGVkJykgc2V0IHNlbGVjdGVkUm9sZXNWYWwodmFsdWU6YW55KXtcclxuXHJcbiAgdGhpcy5zZWxlY3RlZFJvbGVzID0gdGhpcy51bmlxdWVCeVByb3AoWy4uLnRoaXMuc2VsZWN0ZWRSb2xlcywuLi52YWx1ZV0sJ19pZCcpO1xyXG4gIHRoaXMuc2VsZWN0ZWRJZHMgPSAgdGhpcy5zZWxlY3RlZFJvbGVzLm1hcCgoZWxlOmFueSkgPT4gZWxlPy5faWQpO1xyXG4gIGlmKCF0aGlzLmluaXRpYWxTZWxlY3RlZCB8fCAhdGhpcy5pbml0aWFsU2VsZWN0ZWQ/Lmxlbmd0aCl7XHJcbiAgICB0aGlzLmluaXRpYWxTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJZHM7XHJcbiAgfVxyXG4gIHRoaXMuc2V0QWxsU2VsZWN0ZWRTdGF0dXMoKTtcclxufVxyXG5cclxuLyoqXHJcbiAqICMjIyMgRGVzY3JpcHRpb25cclxuICpcclxuICogRXhwYW5kcyBvciBjb2xsYXBzZSB0aGUgcm93XHJcbiAqIEBwYXJhbSB0eXBlXHJcbiAqIEBwYXJhbSBbaWRdXHJcbiAqL1xyXG5leHBhbmRPckNvbGxhcHNlKHR5cGU6J0VYUEFORCcgfCAnQ09MTEFQU0UnfCdDT0xMQVBTRV9BTEwnLGlkPzphbnkpe1xyXG4gIHN3aXRjaCh0eXBlKXtcclxuICAgICBjYXNlICdDT0xMQVBTRSc6eyB0aGlzLmV4cGFuZGVkUm93cyA9ICB0aGlzLmV4cGFuZGVkUm93cy5maWx0ZXIoKGVsZTphbnkpID0+IGVsZSAhPT0gaWQpOyBicmVha31cclxuICAgICBjYXNlICdFWFBBTkQnOnt0aGlzLmV4cGFuZGVkUm93cyA9ICBBcnJheS5mcm9tKG5ldyBTZXQ8YW55W10+KFsuLi50aGlzLmV4cGFuZGVkUm93cywuLi5baWRdXSkpOyAgYnJlYWt9XHJcbiAgICAgY2FzZSAnQ09MTEFQU0VfQUxMJyA6e3RoaXMuZXhwYW5kZWRSb3dzID0gW107IGJyZWFrfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbnNlbGVjdEFsbChldnQ6YW55KXtcclxuICBpZihldnQ/LnRhcmdldD8uY2hlY2tlZCA9PT0gdHJ1ZSl7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm9sZXMgPSB0aGlzLnJvbGVzTGlzdDtcclxuICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSAgdGhpcy5yb2xlc0xpc3QubWFwKChlbGU6YW55KSA9PiBlbGU/Ll9pZCk7XHJcblxyXG4gIH1lbHNlIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb2xlcyA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xyXG4gICAgdGhpcy5zZXRTeXN0ZW1Sb2xlKHRoaXMucm9sZXNMaXN0KTtcclxuICB9XHJcbiAgdGhpcy5zZXRBbGxTZWxlY3RlZFN0YXR1cygpO1xyXG59XHJcblxyXG5zZXRBbGxTZWxlY3RlZFN0YXR1cygpe1xyXG4gIHRoaXMuYWxsU2VsZWN0ZWQgPSB0aGlzLmFsbExpc3RJZHMuc29ydCgpLnRvU3RyaW5nKCkgPT09IHRoaXMuc2VsZWN0ZWRJZHMuc29ydCgpPy50b1N0cmluZygpO1xyXG59XHJcbi8qKlxyXG4gKiAjIyMjIERlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIFNldHMgc3lzdGVtIHJvbGUgZm9yIGFkbWlucyBhbmQga2V5IGFkbWluc1xyXG4gKiBAcGFyYW0gcm9sZXNcclxuICovXHJcbnNldFN5c3RlbVJvbGUocm9sZXM6YW55KXtcclxuICAgIGNvbnN0IHN5c3RlbVJvbGVzID0gcm9sZXMuZmlsdGVyKChlbGU6YW55KSA9PiAgKGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8IGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdhZG1pbicpKTtcclxuICAgIHRoaXMuc3lzdGVtUm9sZXNJZHMgID0gQXJyYXkuZnJvbShuZXcgU2V0PGFueVtdPihbLi4udGhpcy5zeXN0ZW1Sb2xlc0lkcyAsLi4uc3lzdGVtUm9sZXMubWFwKChlbGU6YW55KSA9PiBlbGU/Ll9pZCldKSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkSWRzID0gIEFycmF5LmZyb20obmV3IFNldDxhbnlbXT4oWy4uLnRoaXMuc2VsZWN0ZWRJZHMgLC4uLnRoaXMuc3lzdGVtUm9sZXNJZHNdKSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm9sZXMgID0gdGhpcy51bmlxdWVCeVByb3AoWy4uLnN5c3RlbVJvbGVzLC4uLnRoaXMuc2VsZWN0ZWRSb2xlc10sJ19pZCcpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiAjIyMjIERlc2NyaXB0aW9uXHJcbiAgICogU2VsZWN0cyBpdGVtIG9yIGRlc2VsZWN0IGEgaXRtZVxyXG4gICAqIEBwYXJhbSBldnRcclxuICAgKiBAcGFyYW0gcGF5bG9hZFxyXG4gICAqL1xyXG4gIHNlbGVjdEl0ZW0oZXZ0OmFueSxwYXlsb2FkOmFueSl7XHJcbiAgICBldnQ/LnRhcmdldD8uY2hlY2tlZCA9PT0gdHJ1ZSA/IHRoaXMubWFuaXB1bGF0ZVNlbGVjdGVkSXRlbXMoJ0FERCcscGF5bG9hZCkgOiB0aGlzLm1hbmlwdWxhdGVTZWxlY3RlZEl0ZW1zKCdERUxFVEUnLHBheWxvYWQpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiAjIyMjIERlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBNYW5pcHVsYXRlcyBzZWxlY3RlZCBpdGVtcyBpbiByb2xlIGxpc3RcclxuICAgKiBAcGFyYW0gYWN0aW9uIDonQUREJyB8ICdERUxFVEUnXHJcbiAgICogQHBhcmFtIHBheWxvYWRcclxuICAgKi9cclxuICBtYW5pcHVsYXRlU2VsZWN0ZWRJdGVtcyhhY3Rpb24gOidBREQnIHwgJ0RFTEVURScsIHBheWxvYWQ6YW55KXtcclxuICAgICAgaWYoYWN0aW9uID09PSAnQUREJyl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvbGVzID0gdGhpcy51bmlxdWVCeVByb3AoWy4uLnRoaXMuc2VsZWN0ZWRSb2xlcyAsLi4uW3BheWxvYWRdXSwnX2lkJyk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IHRoaXMuc2VsZWN0ZWRSb2xlcy5tYXAoKGVsZTphbnkpID0+IGVsZT8uX2lkKTtcclxuICAgICAgfWVsc2UgaWYoYWN0aW9uID09PSAnREVMRVRFJyl7XHJcbiAgICAgICBsZXQgaW5kZXggPSB0aGlzLnNlbGVjdGVkUm9sZXMuZmluZEluZGV4KChlbGUgOmFueSkgPT4gZWxlPy5faWQgPT09IHBheWxvYWQ/Ll9pZCk7XHJcbiAgICAgICBpZihpbmRleCA+IC0xKXtcclxuICAgICAgICAgdGhpcy5zZWxlY3RlZFJvbGVzID0gdGhpcy5zZWxlY3RlZFJvbGVzLmZpbHRlcigoZWxlIDphbnkpID0+IGVsZT8uX2lkICE9PSBwYXlsb2FkPy5faWQpO1xyXG4gICAgICAgICB0aGlzLnNlbGVjdGVkSWRzID0gdGhpcy5zZWxlY3RlZElkcy5maWx0ZXIoKGVsZTphbnkpPT4gZWxlICE9PSBwYXlsb2FkPy5faWQpXHJcbiAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRBbGxTZWxlY3RlZFN0YXR1cygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNhdmVMaXN0KCl7XHJcbiAgaWYodGhpcy5pbml0aWFsU2VsZWN0ZWQ/LnNvcnQoKT8udG9TdHJpbmcoKSAhPT0gdGhpcy5zZWxlY3RlZElkcy5zb3J0KCk/LnRvU3RyaW5nKCkpe1xyXG4gICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gdHJ1ZTtcclxuICB9ZWxzZXtcclxuICAgIHRoaXMuc2F2ZS5lbWl0KHRoaXMuc2VsZWN0ZWRSb2xlcyk7XHJcbiAgfVxyXG4gIH1cclxuICBjb25maXJtQWN0aW9uKGV2dDonWUVTJ3wnTk8nKXtcclxuICAgIGlmKGV2dCA9PT0gJ1lFUycpe1xyXG4gICAgICB0aGlzLnNhdmUuZW1pdCh0aGlzLnNlbGVjdGVkUm9sZXMpO1xyXG4gICAgfWVsc2UgaWYoZXZ0ID09PSAnTk8nKXtcclxuICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGNsb3NlTGlzdCgpe1xyXG4gIHRoaXMuY2FuY2VsLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIFJldHVybnMgdGhlIHVuaXF1ZSBhcnJheSBvZiBvYmplY3QgYmFzZWQgb24gdW5pcXVlIGtleVxyXG4gICAqIEBwYXJhbSBhcnJheVxyXG4gICAqIEBwYXJhbSBrZXlcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHVuaXF1ZUJ5UHJvcChhcnJheTphbnksa2V5OnN0cmluZyl7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbShcclxuICAgICAgYXJyYXlcclxuICAgICAgICAucmVkdWNlKFxyXG4gICAgICAgICAgKGFjYzphbnksIGl0ZW06YW55KSA9PiAoXHJcbiAgICAgICAgICAgIGl0ZW0gJiYgaXRlbVtrZXldICYmIGFjYy5zZXQoaXRlbVtrZXldLCBpdGVtKSxcclxuICAgICAgICAgICAgYWNjXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICAgbmV3IE1hcCgpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC52YWx1ZXMoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vdmlldyBhbmQgbWFuYWdlIHJvbGVzIGFuZCBncm91cHMgdGV4dCBjaGFuZ2VkIHdpdGggZmVhdHVyZWZsYWdcclxuICBwZXJtaXNzaW9uVGV4dChwZXJtaXNzaW9uOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc29sZS5sb2coXCJwZXJtaXNzaW9uXCIscGVybWlzc2lvbilcclxuICAgIGlmKHBlcm1pc3Npb24gPT0gXCJ2aWV3IHJvbGVzXCIpIHtcclxuICAgICAgaWYodGhpcy5mZl9yY19saXN0aW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIFwidmlldyBwZXJtaXNzaW9uc1wiO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBcInZpZXcgcGVybWlzc2lvbiBncm91cHNcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYocGVybWlzc2lvbiA9PSBcIm1hbmFnZSByb2xlc1wiKSB7XHJcbiAgICAgIGlmKHRoaXMuZmZfcmNfbGlzdGluZykge1xyXG4gICAgICAgIHJldHVybiBcIk1hbmFnZSBwZXJtaXNzaW9uc1wiO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBcIk1hbmFnZSBwZXJtaXNzaW9uIGdyb3Vwc1wiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZihwZXJtaXNzaW9uID09IFwidmlldyBncm91cHNcIikge1xyXG4gICAgICBpZih0aGlzLmZlYXR1cmVmbGFnR3JvdXApIHtcclxuICAgICAgICByZXR1cm4gXCJ2aWV3IHVzZXIgZ3JvdXBzXCI7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb247XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmKHBlcm1pc3Npb24gPT0gXCJtYW5hZ2UgZ3JvdXBzXCIpIHtcclxuICAgICAgaWYodGhpcy5mZWF0dXJlZmxhZ0dyb3VwKSB7XHJcbiAgICAgICAgcmV0dXJuIFwiTWFuYWdlIHVzZXIgZ3JvdXBzXCI7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb247XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwZXJtaXNzaW9uO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJvbGVzLWxpc3RcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb2xlcy1saXN0LWhlYWQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtNCB2eC1wci00XCI+XHJcbiAgICAgICAgPGRpdiBpZCA9XCJ0aXRsZW5hbWVcIiBjbGFzcz1cInZ4LWZzLTE0IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj57e2ZmX3JjX2xpc3RpbmcgPyAnU2VsZWN0IFBlcm1pc3Npb25zJzonU2VsZWN0IFBlcm1pc3Npb24gR3JvdXAocyknfX08L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb2xlcy1saXN0LWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJsb2NrIHZ4LW1iLTFcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIXJvbGVzTGlzdD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBiOzwvaT5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cImZmX3JjX2xpc3RpbmcgPydTZWFyY2ggUGVybWlzc2lvbnMnOidTZWFyY2ggUGVybWlzc2lvbiBHcm91cHMnXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hLZXlcIi8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LW10LTRcIiAqbmdJZj1cImxvYWRpbmdcIj48cm9sZS1sb2FkZXI+PC9yb2xlLWxvYWRlcj48L2Rpdj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIocm9sZXNMaXN0fHNlYXJjaDpzZWFyY2hLZXk6J3JvbGVOYW1lJykgYXMgcm9sZXNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb2xlcz8ubGVuZ3RoICA+IDBcIiBjbGFzcz1cInJvbGVzLWxpc3QtbWlkIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm9sZS1ib3gtc2VsZWN0IHZ4LXBiLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZ1aS1jaGVja2JveCBbaW5kZXRlcm1pbmF0ZUVuYWJsZWRdPVwiZmFsc2VcIiAjY2hlY2sgKGNoYW5nZSk9XCJzZWxlY3RBbGwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImFsbFNlbGVjdGVkXCIgW2NoZWNrZWRdPVwiYWxsU2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLW5hbWUgdngtZnMtMTIgdngtZnctNjAwIHZ4LWxhYmVsLXR4dFwiPnt7IWNoZWNrLmNoZWNrZWQgPyAnU2VsZWN0IEFsbCcgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEZXNlbGVjdCBBbGwnfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC92dWktY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLWJveCB2eC1tYi0yXCIgKm5nRm9yPVwibGV0IHJvbGUgb2Ygcm9sZXM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiIWV4cGFuZGVkUm93cy5pbmNsdWRlcyhyb2xlPy5faWQpID8gZXhwYW5kT3JDb2xsYXBzZSgnRVhQQU5EJyxyb2xlPy5faWQpOiAgZXhwYW5kT3JDb2xsYXBzZSgnQ09MTEFQU0UnLHJvbGU/Ll9pZCkgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm9sZS1ib3gtaGVhZGluZyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbGgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2dWktY2hlY2tib3ggW2Rpc2FibGVkXT1cInN5c3RlbVJvbGVzSWRzLmluY2x1ZGVzKHJvbGU/Ll9pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZElkcy5pbmNsdWRlcyhyb2xlPy5faWQpXCIgKGNoYW5nZSk9XCJzZWxlY3RJdGVtKCRldmVudCxyb2xlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdnVpLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lIHZ4LWZzLTEyIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cIidSb2xlIG5hbWUnXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7ZmVhdHVyZWZsYWdyb2xlICYmIHJvbGU/LnBlcm1pc3Npb25Hcm91cE5hbWUgPyByb2xlPy5wZXJtaXNzaW9uR3JvdXBOYW1lIDogcm9sZT8ucm9sZU5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm9sZT8ucm9sZUFjdGlvbnM/Lmxlbmd0aCAgPiAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudCB2eC1mcy05IHZ4LWZ3LTYwMCB2eC1saC0zIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtbWwtMlwiPnt7cm9sZT8ucm9sZUFjdGlvbnM/Lmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBFUk1JU1NJT05TPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm9sZT8ubGljZW5zZVR5cGUgPT09ICdwb3dlciB1c2VycydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN0YXR1cy1sYWJlbCB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5wb3dlci11c2VyXT1cInRydWVcIiBbY2xhc3MuYWxsLXVzZXJdPVwiZmFsc2VcIj4gUG93ZXIgVXNlcjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb2xlPy5saWNlbnNlVHlwZSA9PT0gJ2xpZ2h0IHVzZXJzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3RhdHVzLWxhYmVsIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnBvd2VyLXVzZXJdPVwiZmFsc2VcIiBbY2xhc3MuYWxsLXVzZXJdPVwidHJ1ZVwiPkxpZ2h0IFVzZXI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYXJyb3ctYnRuIHZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbS0wIHZ4LXAtMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIWV4cGFuZGVkUm93cy5pbmNsdWRlcyhyb2xlPy5faWQpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5NzA7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImV4cGFuZGVkUm93cy5pbmNsdWRlcyhyb2xlPy5faWQpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5ZTg7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm9sZS1ib3gtbGlzdFwiICpuZ0lmPVwiZXhwYW5kZWRSb3dzLmluY2x1ZGVzKHJvbGU/Ll9pZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInZ4LXAtMCB2eC1tLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1wLTMgdngtbGgtNFwiICpuZ0Zvcj1cImxldCBwZXJtaXNzaW9uICBvZiByb2xlPy5yb2xlQWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUgdngtZnMtMTIgdngtbGFiZWwtdHh0XCI+e3sgcGVybWlzc2lvblRleHQocGVybWlzc2lvbil9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGkgY2xhc3M9XCJ2eC1wLTMgdngtbGgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xMiB2eC1sYWJlbC10eHRcIj5WaWV3IFVzZXIgTGlzdDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInZ4LXAtMyB2eC1saC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyIHZ4LWxhYmVsLXR4dFwiPk1hbmFnZSBVc2VycyA8c3BhbiBjbGFzcz1cInZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHRcIj4oQ3JlYXRlL0VkaXQvRGVsZXRlL0RlYWN0aXZhdGUpPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInZ4LXAtMyB2eC1saC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyIHZ4LWxhYmVsLXR4dFwiPk92ZXItcmlkZSBMb2cgSW48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1wLTMgdngtbGgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xMiB2eC1sYWJlbC10eHRcIj5WaWV3IFN0YXR1dG9yeSBIb2xpZGF5czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInZ4LXAtMyB2eC1saC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyIHZ4LWxhYmVsLXR4dFwiPk1hbmFnZSBTdGF0dXRvcnkgSG9saWRheXM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8YXBwLW5vLWRhdGEgKm5nSWY9XCJyb2xlcz8ubGVuZ3RoID09PSAwXCIgW25vRGF0YUltYWdlXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvc2VhcmNoLWRhdGEuc3ZnJ1wiIFtub0RhdGFUZXh0XT1cInNlYXJjaEtleT8ubGVuZ3RoID4gMCA/J05vIG1hdGNoIGZvdW5kLic6ICdObyBSb2xlcyBGb3VuZCdcIj48L2FwcC1uby1kYXRhPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvbGVzLWxpc3QtZm9vdGVyXCIgICpuZ0lmPVwiIXNob3dDb25maXJtYXRpb25cIj5cclxuICAgICAgICAgICAgPHZ1aS1mbG9hdGluZy1iYXIgKGNsb3NlRXZlbnQpPVwic2F2ZUxpc3QoKVwiIChjbG9zZUxpc3QpPVwiY2xvc2VMaXN0KClcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvdW50ZXJcIiAqbmdJZj1cInNlbGVjdGVkUm9sZXM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCI+e3tzZWxlY3RlZFJvbGVzPy5sZW5ndGh9fTwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzZWxlY3RlZFJvbGVzPy5sZW5ndGhcImNsYXNzPVwiY291bnRlciByb2xlLWxpc3QtY291bnRlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJvbGUucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPnt7c2VsZWN0ZWRSb2xlcz8ubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiICpuZ0lmPVwic2VsZWN0ZWRSb2xlcz8ubGVuZ3RoPjFcIiBpZD1cInBlcm1pc3Npb25zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZFJvbGVzPy5sZW5ndGggPT09IDFcIj57e2ZlYXR1cmVmbGFncm9sZSA/ICdQZXJtaXNzaW9uIHNlbGVjdGVkJzonUm9sZSBzZWxlY3RlZCd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRSb2xlcz8ubGVuZ3RoID4gMVwiPnt7ZmVhdHVyZWZsYWdyb2xlID8gJ1Blcm1pc3Npb25zIHNlbGVjdGVkJzonUm9sZXMgc2VsZWN0ZWQnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdnVpLWZsb2F0aW5nLWJhcj5cclxuICAgIFxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3JvbGUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIHNlbGVjdGVkUm9sZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhc3lzdGVtUm9sZXNJZHMuaW5jbHVkZXMoZGF0YT8uX2lkKVwiIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oe3RhcmdldDp7Y2hlY2tlZDpmYWxzZX19LGRhdGEpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZlYXR1cmVmbGFncm9sZSAmJiBkYXRhPy5wZXJtaXNzaW9uR3JvdXBOYW1lID8gZGF0YT8ucGVybWlzc2lvbkdyb3VwTmFtZSA6IGRhdGE/LnJvbGVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm9sZXMtbGlzdC1jb25maXJtYXRpb25cIiAqbmdJZj1cInNob3dDb25maXJtYXRpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLXRvcFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1ibG9ja1wiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTMwOzwvaT48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIiBpZD1cImNvbmZpcm1hdGlvbm1lc3NhZ2VcIj57e2ZlYXR1cmVmbGFncm9sZSA/J1RoaXMgYWN0aW9uIHdpbGwgdXBkYXRlIHRoZSBQZXJtaXNzaW9uIHNldHRpbmdzIGFuZCBpbXBhY3QgdGhlIG93bmVycyBzZWxlY3RlZCBmb3IgdGhlIFByb2dyYW0uJzonVGhpcyBhY3Rpb24gd2lsbCB1cGRhdGUgdGhlIFJvbGUgc2V0dGluZ3MgYW5kIGltcGFjdCB0aGUgb3duZXJzIHNlbGVjdGVkIGZvciB0aGUgUHJvZ3JhbS4nfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPkFyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBwcm9jZWVkPzwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm8tYnRuXCIgKGNsaWNrKT1cImNvbmZpcm1BY3Rpb24oJ05PJylcIj5OTzwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInllcy1idG5cIiAgKGNsaWNrKT1cImNvbmZpcm1BY3Rpb24oJ1lFUycpXCI+WUVTPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXByb2dyYW0vY3JlYXRlLXByb2dyYW0tdWkvcm9sZS1saXN0L3JvbGUtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL2NyZWF0ZS1wcm9ncmFtLXVpL3JvbGUtbGlzdC9yb2xlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTy9FLE1BQU0sT0FBTyxpQkFBaUI7SUFRNUI7UUFQVSxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUl0QyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBVWpCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsdUJBQXVCO1FBQ3ZCLG1CQUFjLEdBQVEsRUFBRSxDQUFDO1FBQ3pCLHdCQUF3QjtRQUN4QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUN0QixtQ0FBbUM7UUFDbkMsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFDeEIsd0NBQXdDO1FBQ3hDLGlCQUFZLEdBQVEsRUFBRSxDQUFDO1FBRXZCLGlDQUFpQztRQUNqQyxjQUFTLEdBQVEsRUFBRSxDQUFDO1FBRXBCLG9CQUFlLEdBQVEsSUFBSSxDQUFDO1FBQzVCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixtQ0FBbUM7UUFDbkMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixZQUFZO1FBQ1osZ0JBQVcs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RUFBRTtZQUM5QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLE9BQU8sa0JBQWtCLENBQUM7YUFDM0I7aUJBQU07Z0JBQ0wsT0FBTyx3QkFBd0IsQ0FBQzthQUNqQztTQUNGO1FBQ0QsSUFBSSxVQUFVLElBQUksY0FBYyxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdEIsT0FBTyxvQkFBb0IsQ0FBQzthQUM3QjtpQkFBTTtnQkFDTCxPQUFPLDBCQUEwQixDQUFDO2FBQ25DO1NBQ0Y7UUFDRCxJQUFJLFVBQVUsSUFBSSxhQUFhLEVBQUU7WUFDL0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3pCLE9BQU8sa0JBQWtCLENBQUM7YUFDM0I7aUJBQU07Z0JBQ0wsT0FBTyxVQUFVLENBQUM7YUFDbkI7U0FDRjtRQUNELElBQUksVUFBVSxJQUFJLGVBQWUsRUFBRTtZQUNqQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDekIsT0FBTyxvQkFBb0IsQ0FBQzthQUM3QjtpQkFBTTtnQkFDTCxPQUFPLFVBQVUsQ0FBQzthQUNuQjtTQUNGO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzs7OEdBalBVLGlCQUFpQjtrR0FBakIsaUJBQWlCLDBUQ1I5Qiw4blJBeUhBOzJGRGpIYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsV0FBVzswRUFLWCxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNFLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBOEJhLE9BQU87c0JBQXpCLEtBQUs7dUJBQUMsTUFBTTtnQkFRSixPQUFPO3NCQUFmLEtBQUs7Z0JBQ2lCLGdCQUFnQjtzQkFBdEMsS0FBSzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWZTdG10IH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3JvbGUtbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JvbGUtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcm9sZS1saXN0LmNvbXBvbmVudC5sZXNzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSb2xlTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQE91dHB1dCgpIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBmZWF0dXJlZmxhZ3JvbGUhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZlYXR1cmVmbGFnR3JvdXAhOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZmX3JjX2xpc3RpbmchOiBib29sZWFuO1xyXG4gIGFuaW1hdGlvbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFuaW1hdGlvbiA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcclxuICAgIH0sIDMwMCk7XHJcbiAgfVxyXG4gIHNlYXJjaEtleTogYW55ID0gJyc7XHJcbiAgLy9Vc2VkIHRvIGRpc2FibGUgaXRlbXNcclxuICBzeXN0ZW1Sb2xlc0lkczogYW55ID0gW107XHJcbiAgLy91c2VkIHRvIGNoZWNrIGNoZWNrYm94XHJcbiAgc2VsZWN0ZWRJZHM6IGFueSA9IFtdO1xyXG4gIC8vY29tcGxldGUgb2JqZWN0IG9mIHNlbGVjdGVkIGl0ZW1zXHJcbiAgc2VsZWN0ZWRSb2xlczogYW55ID0gW107XHJcbiAgLy9jb250YWlucyBpZCdzIG9mIGFsbCB0aGUgZXhwYW5kZWQgcm93c1xyXG4gIGV4cGFuZGVkUm93czogYW55ID0gW107XHJcblxyXG4gIC8vbGlzdCBvZiBhbGwgdGhlIGF2YWlsYWJsZSByb2xlc1xyXG4gIHJvbGVzTGlzdDogYW55ID0gW107XHJcblxyXG4gIGluaXRpYWxTZWxlY3RlZDogYW55ID0gbnVsbDtcclxuICBzaG93Q29uZmlybWF0aW9uID0gZmFsc2U7XHJcbiAgLy8gb25seSB1c2VkIGluIHNlbGVjdCBhbGwgZnVuY3Rpb25cclxuICBhbGxMaXN0SWRzID0gW107XHJcbiAgLy9pc0FsbEl0ZW1zXHJcbiAgYWxsU2VsZWN0ZWQgPSBmYWxzZTtcclxuICBASW5wdXQoJ2xpc3QnKSBzZXQgc2V0TGlzdCh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodmFsdWUgJiYgdmFsdWU/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnJvbGVzTGlzdCA9IFsuLi52YWx1ZV07XHJcbiAgICAgIHRoaXMuc2V0U3lzdGVtUm9sZSh0aGlzLnJvbGVzTGlzdCk7XHJcbiAgICAgIHRoaXMuYWxsTGlzdElkcyA9IHRoaXMucm9sZXNMaXN0Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcclxuICAgICAgdGhpcy5zZXRBbGxTZWxlY3RlZFN0YXR1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCdzZWxlY3RlZCcpIHNldCBzZWxlY3RlZFJvbGVzVmFsKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb2xlcyA9IHRoaXMudW5pcXVlQnlQcm9wKFxyXG4gICAgICBbLi4udGhpcy5zZWxlY3RlZFJvbGVzLCAuLi52YWx1ZV0sXHJcbiAgICAgICdfaWQnXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWxlY3RlZElkcyA9IHRoaXMuc2VsZWN0ZWRSb2xlcy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XHJcbiAgICBpZiAoIXRoaXMuaW5pdGlhbFNlbGVjdGVkIHx8ICF0aGlzLmluaXRpYWxTZWxlY3RlZD8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbFNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZElkcztcclxuICAgIH1cclxuICAgIHRoaXMuc2V0QWxsU2VsZWN0ZWRTdGF0dXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIEV4cGFuZHMgb3IgY29sbGFwc2UgdGhlIHJvd1xyXG4gICAqIEBwYXJhbSB0eXBlXHJcbiAgICogQHBhcmFtIFtpZF1cclxuICAgKi9cclxuICBleHBhbmRPckNvbGxhcHNlKHR5cGU6ICdFWFBBTkQnIHwgJ0NPTExBUFNFJyB8ICdDT0xMQVBTRV9BTEwnLCBpZD86IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ0NPTExBUFNFJzoge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRSb3dzID0gdGhpcy5leHBhbmRlZFJvd3MuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlICE9PSBpZCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnRVhQQU5EJzoge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRSb3dzID0gQXJyYXkuZnJvbShcclxuICAgICAgICAgIG5ldyBTZXQ8YW55W10+KFsuLi50aGlzLmV4cGFuZGVkUm93cywgLi4uW2lkXV0pXHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdDT0xMQVBTRV9BTEwnOiB7XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZFJvd3MgPSBbXTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsKGV2dDogYW55KSB7XHJcbiAgICBpZiAoZXZ0Py50YXJnZXQ/LmNoZWNrZWQgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvbGVzID0gdGhpcy5yb2xlc0xpc3Q7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSB0aGlzLnJvbGVzTGlzdC5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm9sZXMgPSBbXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IFtdO1xyXG4gICAgICB0aGlzLnNldFN5c3RlbVJvbGUodGhpcy5yb2xlc0xpc3QpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRBbGxTZWxlY3RlZFN0YXR1cygpO1xyXG4gIH1cclxuXHJcbiAgc2V0QWxsU2VsZWN0ZWRTdGF0dXMoKSB7XHJcbiAgICB0aGlzLmFsbFNlbGVjdGVkID1cclxuICAgICAgdGhpcy5hbGxMaXN0SWRzLnNvcnQoKS50b1N0cmluZygpID09PSB0aGlzLnNlbGVjdGVkSWRzLnNvcnQoKT8udG9TdHJpbmcoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogIyMjIyBEZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogU2V0cyBzeXN0ZW0gcm9sZSBmb3IgYWRtaW5zIGFuZCBrZXkgYWRtaW5zXHJcbiAgICogQHBhcmFtIHJvbGVzXHJcbiAgICovXHJcbiAgc2V0U3lzdGVtUm9sZShyb2xlczogYW55KSB7XHJcbiAgICBjb25zdCBzeXN0ZW1Sb2xlcyA9IHJvbGVzLmZpbHRlcihcclxuICAgICAgKGVsZTogYW55KSA9PlxyXG4gICAgICAgIGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8XHJcbiAgICAgICAgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2FkbWluJ1xyXG4gICAgKTtcclxuICAgIHRoaXMuc3lzdGVtUm9sZXNJZHMgPSBBcnJheS5mcm9tKFxyXG4gICAgICBuZXcgU2V0PGFueVtdPihbXHJcbiAgICAgICAgLi4udGhpcy5zeXN0ZW1Sb2xlc0lkcyxcclxuICAgICAgICAuLi5zeXN0ZW1Sb2xlcy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCksXHJcbiAgICAgIF0pXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWxlY3RlZElkcyA9IEFycmF5LmZyb20oXHJcbiAgICAgIG5ldyBTZXQ8YW55W10+KFsuLi50aGlzLnNlbGVjdGVkSWRzLCAuLi50aGlzLnN5c3RlbVJvbGVzSWRzXSlcclxuICAgICk7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm9sZXMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcclxuICAgICAgWy4uLnN5c3RlbVJvbGVzLCAuLi50aGlzLnNlbGVjdGVkUm9sZXNdLFxyXG4gICAgICAnX2lkJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKiBTZWxlY3RzIGl0ZW0gb3IgZGVzZWxlY3QgYSBpdG1lXHJcbiAgICogQHBhcmFtIGV2dFxyXG4gICAqIEBwYXJhbSBwYXlsb2FkXHJcbiAgICovXHJcbiAgc2VsZWN0SXRlbShldnQ6IGFueSwgcGF5bG9hZDogYW55KSB7XHJcbiAgICBldnQ/LnRhcmdldD8uY2hlY2tlZCA9PT0gdHJ1ZVxyXG4gICAgICA/IHRoaXMubWFuaXB1bGF0ZVNlbGVjdGVkSXRlbXMoJ0FERCcsIHBheWxvYWQpXHJcbiAgICAgIDogdGhpcy5tYW5pcHVsYXRlU2VsZWN0ZWRJdGVtcygnREVMRVRFJywgcGF5bG9hZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiAjIyMjIERlc2NyaXB0aW9uXHJcbiAgICpcclxuICAgKiBNYW5pcHVsYXRlcyBzZWxlY3RlZCBpdGVtcyBpbiByb2xlIGxpc3RcclxuICAgKiBAcGFyYW0gYWN0aW9uIDonQUREJyB8ICdERUxFVEUnXHJcbiAgICogQHBhcmFtIHBheWxvYWRcclxuICAgKi9cclxuICBtYW5pcHVsYXRlU2VsZWN0ZWRJdGVtcyhhY3Rpb246ICdBREQnIHwgJ0RFTEVURScsIHBheWxvYWQ6IGFueSkge1xyXG4gICAgaWYgKGFjdGlvbiA9PT0gJ0FERCcpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvbGVzID0gdGhpcy51bmlxdWVCeVByb3AoXHJcbiAgICAgICAgWy4uLnRoaXMuc2VsZWN0ZWRSb2xlcywgLi4uW3BheWxvYWRdXSxcclxuICAgICAgICAnX2lkJ1xyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSWRzID0gdGhpcy5zZWxlY3RlZFJvbGVzLm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcclxuICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAnREVMRVRFJykge1xyXG4gICAgICBsZXQgaW5kZXggPSB0aGlzLnNlbGVjdGVkUm9sZXMuZmluZEluZGV4KFxyXG4gICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5faWQgPT09IHBheWxvYWQ/Ll9pZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb2xlcyA9IHRoaXMuc2VsZWN0ZWRSb2xlcy5maWx0ZXIoXHJcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uX2lkICE9PSBwYXlsb2FkPy5faWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSB0aGlzLnNlbGVjdGVkSWRzLmZpbHRlcihcclxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlICE9PSBwYXlsb2FkPy5faWRcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEFsbFNlbGVjdGVkU3RhdHVzKCk7XHJcbiAgfVxyXG5cclxuICBzYXZlTGlzdCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5pbml0aWFsU2VsZWN0ZWQ/LnNvcnQoKT8udG9TdHJpbmcoKSAhPT1cclxuICAgICAgdGhpcy5zZWxlY3RlZElkcy5zb3J0KCk/LnRvU3RyaW5nKClcclxuICAgICkge1xyXG4gICAgICB0aGlzLnNob3dDb25maXJtYXRpb24gPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zYXZlLmVtaXQodGhpcy5zZWxlY3RlZFJvbGVzKTtcclxuICAgIH1cclxuICB9XHJcbiAgY29uZmlybUFjdGlvbihldnQ6ICdZRVMnIHwgJ05PJykge1xyXG4gICAgaWYgKGV2dCA9PT0gJ1lFUycpIHtcclxuICAgICAgdGhpcy5zYXZlLmVtaXQodGhpcy5zZWxlY3RlZFJvbGVzKTtcclxuICAgIH0gZWxzZSBpZiAoZXZ0ID09PSAnTk8nKSB7XHJcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VMaXN0KCkge1xyXG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogIyMjIyBEZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogUmV0dXJucyB0aGUgdW5pcXVlIGFycmF5IG9mIG9iamVjdCBiYXNlZCBvbiB1bmlxdWUga2V5XHJcbiAgICogQHBhcmFtIGFycmF5XHJcbiAgICogQHBhcmFtIGtleVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgdW5pcXVlQnlQcm9wKGFycmF5OiBhbnksIGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbShcclxuICAgICAgYXJyYXlcclxuICAgICAgICAucmVkdWNlKFxyXG4gICAgICAgICAgKGFjYzogYW55LCBpdGVtOiBhbnkpID0+IChcclxuICAgICAgICAgICAgaXRlbSAmJiBpdGVtW2tleV0gJiYgYWNjLnNldChpdGVtW2tleV0sIGl0ZW0pLCBhY2NcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICBuZXcgTWFwKClcclxuICAgICAgICApXHJcbiAgICAgICAgLnZhbHVlcygpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy92aWV3IGFuZCBtYW5hZ2Ugcm9sZXMgYW5kIGdyb3VwcyB0ZXh0IGNoYW5nZWQgd2l0aCBmZWF0dXJlZmxhZ1xyXG4gIHBlcm1pc3Npb25UZXh0KHBlcm1pc3Npb246IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAocGVybWlzc2lvbiA9PSAndmlldyByb2xlcycpIHtcclxuICAgICAgaWYgKHRoaXMuZmZfcmNfbGlzdGluZykge1xyXG4gICAgICAgIHJldHVybiAndmlldyBwZXJtaXNzaW9ucyc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICd2aWV3IHBlcm1pc3Npb24gZ3JvdXBzJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHBlcm1pc3Npb24gPT0gJ21hbmFnZSByb2xlcycpIHtcclxuICAgICAgaWYgKHRoaXMuZmZfcmNfbGlzdGluZykge1xyXG4gICAgICAgIHJldHVybiAnTWFuYWdlIHBlcm1pc3Npb25zJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJ01hbmFnZSBwZXJtaXNzaW9uIGdyb3Vwcyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwZXJtaXNzaW9uID09ICd2aWV3IGdyb3VwcycpIHtcclxuICAgICAgaWYgKHRoaXMuZmVhdHVyZWZsYWdHcm91cCkge1xyXG4gICAgICAgIHJldHVybiAndmlldyB1c2VyIGdyb3Vwcyc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb247XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwZXJtaXNzaW9uID09ICdtYW5hZ2UgZ3JvdXBzJykge1xyXG4gICAgICBpZiAodGhpcy5mZWF0dXJlZmxhZ0dyb3VwKSB7XHJcbiAgICAgICAgcmV0dXJuICdNYW5hZ2UgdXNlciBncm91cHMnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9uO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGVybWlzc2lvbjtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJvbGVzLWxpc3RcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb2xlcy1saXN0LWhlYWQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtNCB2eC1wci00XCI+XHJcbiAgICAgICAgPGRpdiBpZCA9XCJ0aXRsZW5hbWVcIiBjbGFzcz1cInZ4LWZzLTE0IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj57e2ZmX3JjX2xpc3RpbmcgPyAnU2VsZWN0IFBlcm1pc3Npb25zJzonU2VsZWN0IFBlcm1pc3Npb24gR3JvdXAocyknfX08L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJyb2xlcy1saXN0LWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJsb2NrIHZ4LW1iLTFcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIXJvbGVzTGlzdD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBiOzwvaT5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cImZmX3JjX2xpc3RpbmcgPydTZWFyY2ggUGVybWlzc2lvbnMnOidTZWFyY2ggUGVybWlzc2lvbiBHcm91cHMnXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hLZXlcIi8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LW10LTRcIiAqbmdJZj1cImxvYWRpbmdcIj48cm9sZS1sb2FkZXI+PC9yb2xlLWxvYWRlcj48L2Rpdj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIocm9sZXNMaXN0fHNlYXJjaDpzZWFyY2hLZXk6J3JvbGVOYW1lJykgYXMgcm9sZXNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb2xlcz8ubGVuZ3RoICA+IDBcIiBjbGFzcz1cInJvbGVzLWxpc3QtbWlkIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm9sZS1ib3gtc2VsZWN0IHZ4LXBiLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHZ1aS1jaGVja2JveCBbaW5kZXRlcm1pbmF0ZUVuYWJsZWRdPVwiZmFsc2VcIiAjY2hlY2sgKGNoYW5nZSk9XCJzZWxlY3RBbGwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImFsbFNlbGVjdGVkXCIgW2NoZWNrZWRdPVwiYWxsU2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLW5hbWUgdngtZnMtMTIgdngtZnctNjAwIHZ4LWxhYmVsLXR4dFwiPnt7IWNoZWNrLmNoZWNrZWQgPyAnU2VsZWN0IEFsbCcgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEZXNlbGVjdCBBbGwnfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC92dWktY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLWJveCB2eC1tYi0yXCIgKm5nRm9yPVwibGV0IHJvbGUgb2Ygcm9sZXM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiIWV4cGFuZGVkUm93cy5pbmNsdWRlcyhyb2xlPy5faWQpID8gZXhwYW5kT3JDb2xsYXBzZSgnRVhQQU5EJyxyb2xlPy5faWQpOiAgZXhwYW5kT3JDb2xsYXBzZSgnQ09MTEFQU0UnLHJvbGU/Ll9pZCkgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm9sZS1ib3gtaGVhZGluZyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbGgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2dWktY2hlY2tib3ggW2Rpc2FibGVkXT1cInN5c3RlbVJvbGVzSWRzLmluY2x1ZGVzKHJvbGU/Ll9pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZElkcy5pbmNsdWRlcyhyb2xlPy5faWQpXCIgKGNoYW5nZSk9XCJzZWxlY3RJdGVtKCRldmVudCxyb2xlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdnVpLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lIHZ4LWZzLTEyIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cIidSb2xlIG5hbWUnXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7ZmVhdHVyZWZsYWdyb2xlICYmIHJvbGU/LnBlcm1pc3Npb25Hcm91cE5hbWUgPyByb2xlPy5wZXJtaXNzaW9uR3JvdXBOYW1lIDogcm9sZT8ucm9sZU5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm9sZT8ucm9sZUFjdGlvbnM/Lmxlbmd0aCAgPiAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudCB2eC1mcy05IHZ4LWZ3LTYwMCB2eC1saC0zIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtbWwtMlwiPnt7cm9sZT8ucm9sZUFjdGlvbnM/Lmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBFUk1JU1NJT05TPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm9sZT8ubGljZW5zZVR5cGUgPT09ICdwb3dlciB1c2VycydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN0YXR1cy1sYWJlbCB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5wb3dlci11c2VyXT1cInRydWVcIiBbY2xhc3MuYWxsLXVzZXJdPVwiZmFsc2VcIj4gUG93ZXIgVXNlcjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb2xlPy5saWNlbnNlVHlwZSA9PT0gJ2xpZ2h0IHVzZXJzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3RhdHVzLWxhYmVsIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnBvd2VyLXVzZXJdPVwiZmFsc2VcIiBbY2xhc3MuYWxsLXVzZXJdPVwidHJ1ZVwiPkxpZ2h0IFVzZXI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYXJyb3ctYnRuIHZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbS0wIHZ4LXAtMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIWV4cGFuZGVkUm93cy5pbmNsdWRlcyhyb2xlPy5faWQpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5NzA7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImV4cGFuZGVkUm93cy5pbmNsdWRlcyhyb2xlPy5faWQpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5ZTg7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm9sZS1ib3gtbGlzdFwiICpuZ0lmPVwiZXhwYW5kZWRSb3dzLmluY2x1ZGVzKHJvbGU/Ll9pZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInZ4LXAtMCB2eC1tLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1wLTMgdngtbGgtNFwiICpuZ0Zvcj1cImxldCBwZXJtaXNzaW9uICBvZiByb2xlPy5yb2xlQWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUgdngtZnMtMTIgdngtbGFiZWwtdHh0XCI+e3sgcGVybWlzc2lvblRleHQocGVybWlzc2lvbil9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGkgY2xhc3M9XCJ2eC1wLTMgdngtbGgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xMiB2eC1sYWJlbC10eHRcIj5WaWV3IFVzZXIgTGlzdDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInZ4LXAtMyB2eC1saC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyIHZ4LWxhYmVsLXR4dFwiPk1hbmFnZSBVc2VycyA8c3BhbiBjbGFzcz1cInZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHRcIj4oQ3JlYXRlL0VkaXQvRGVsZXRlL0RlYWN0aXZhdGUpPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInZ4LXAtMyB2eC1saC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyIHZ4LWxhYmVsLXR4dFwiPk92ZXItcmlkZSBMb2cgSW48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1wLTMgdngtbGgtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xMiB2eC1sYWJlbC10eHRcIj5WaWV3IFN0YXR1dG9yeSBIb2xpZGF5czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInZ4LXAtMyB2eC1saC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyIHZ4LWxhYmVsLXR4dFwiPk1hbmFnZSBTdGF0dXRvcnkgSG9saWRheXM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8YXBwLW5vLWRhdGEgKm5nSWY9XCJyb2xlcz8ubGVuZ3RoID09PSAwXCIgW25vRGF0YUltYWdlXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvc2VhcmNoLWRhdGEuc3ZnJ1wiIFtub0RhdGFUZXh0XT1cInNlYXJjaEtleT8ubGVuZ3RoID4gMCA/J05vIG1hdGNoIGZvdW5kLic6ICdObyBSb2xlcyBGb3VuZCdcIj48L2FwcC1uby1kYXRhPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvbGVzLWxpc3QtZm9vdGVyXCIgICpuZ0lmPVwiIXNob3dDb25maXJtYXRpb25cIj5cclxuICAgICAgICAgICAgPHZ1aS1mbG9hdGluZy1iYXIgKGNsb3NlRXZlbnQpPVwic2F2ZUxpc3QoKVwiIChjbG9zZUxpc3QpPVwiY2xvc2VMaXN0KClcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvdW50ZXJcIiAqbmdJZj1cInNlbGVjdGVkUm9sZXM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCI+e3tzZWxlY3RlZFJvbGVzPy5sZW5ndGh9fTwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzZWxlY3RlZFJvbGVzPy5sZW5ndGhcImNsYXNzPVwiY291bnRlciByb2xlLWxpc3QtY291bnRlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJvbGUucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPnt7c2VsZWN0ZWRSb2xlcz8ubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiICpuZ0lmPVwic2VsZWN0ZWRSb2xlcz8ubGVuZ3RoPjFcIiBpZD1cInBlcm1pc3Npb25zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZFJvbGVzPy5sZW5ndGggPT09IDFcIj57e2ZlYXR1cmVmbGFncm9sZSA/ICdQZXJtaXNzaW9uIHNlbGVjdGVkJzonUm9sZSBzZWxlY3RlZCd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRSb2xlcz8ubGVuZ3RoID4gMVwiPnt7ZmVhdHVyZWZsYWdyb2xlID8gJ1Blcm1pc3Npb25zIHNlbGVjdGVkJzonUm9sZXMgc2VsZWN0ZWQnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdnVpLWZsb2F0aW5nLWJhcj5cclxuICAgIFxyXG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3JvbGUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIHNlbGVjdGVkUm9sZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhc3lzdGVtUm9sZXNJZHMuaW5jbHVkZXMoZGF0YT8uX2lkKVwiIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oe3RhcmdldDp7Y2hlY2tlZDpmYWxzZX19LGRhdGEpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZlYXR1cmVmbGFncm9sZSAmJiBkYXRhPy5wZXJtaXNzaW9uR3JvdXBOYW1lID8gZGF0YT8ucGVybWlzc2lvbkdyb3VwTmFtZSA6IGRhdGE/LnJvbGVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm9sZXMtbGlzdC1jb25maXJtYXRpb25cIiAqbmdJZj1cInNob3dDb25maXJtYXRpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLXRvcFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1ibG9ja1wiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTMwOzwvaT48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIiBpZD1cImNvbmZpcm1hdGlvbm1lc3NhZ2VcIj57e2ZlYXR1cmVmbGFncm9sZSA/J1RoaXMgYWN0aW9uIHdpbGwgdXBkYXRlIHRoZSBQZXJtaXNzaW9uIHNldHRpbmdzIGFuZCBpbXBhY3QgdGhlIG93bmVycyBzZWxlY3RlZCBmb3IgdGhlIFByb2dyYW0uJzonVGhpcyBhY3Rpb24gd2lsbCB1cGRhdGUgdGhlIFJvbGUgc2V0dGluZ3MgYW5kIGltcGFjdCB0aGUgb3duZXJzIHNlbGVjdGVkIGZvciB0aGUgUHJvZ3JhbS4nfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPkFyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBwcm9jZWVkPzwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm8tYnRuXCIgKGNsaWNrKT1cImNvbmZpcm1BY3Rpb24oJ05PJylcIj5OTzwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInllcy1idG5cIiAgKGNsaWNrKT1cImNvbmZpcm1BY3Rpb24oJ1lFUycpXCI+WUVTPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=