vcomply-workflow-engine 6.0.51 → 6.0.53

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 (120) hide show
  1. package/esm2022/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.mjs +2 -2
  2. package/esm2022/lib/add-multiple-risk/add-multiple-risk.component.mjs +2 -2
  3. package/esm2022/lib/constants/assets.constants.mjs +57 -0
  4. package/esm2022/lib/constants/link-responsibility.constants.mjs +2 -2
  5. package/esm2022/lib/interfaces/responsibilty.interface.mjs +1 -1
  6. package/esm2022/lib/log-an-issue/log-an-issue.component.mjs +2 -2
  7. package/esm2022/lib/more-option/more-option.component.mjs +49 -6
  8. package/esm2022/lib/report-a-case/components/assignee/assignee.component.mjs +2 -2
  9. package/esm2022/lib/report-a-case/components/case-assignees/case-assignees.component.mjs +2 -2
  10. package/esm2022/lib/report-a-case/components/case-category/case-category.component.mjs +2 -2
  11. package/esm2022/lib/report-a-case/components/case-details/case-details.component.mjs +2 -2
  12. package/esm2022/lib/report-a-case/components/case-owners/case-owners.component.mjs +2 -2
  13. package/esm2022/lib/report-a-case/components/case-priority/case-priority.component.mjs +2 -2
  14. package/esm2022/lib/report-a-case/components/case-resolution-deadline/case-resolution-deadline.component.mjs +2 -2
  15. package/esm2022/lib/report-a-case/components/case-type-dropdown/case-dropdown.component.mjs +2 -2
  16. package/esm2022/lib/report-a-case/components/due-date/due-date.component.mjs +2 -2
  17. package/esm2022/lib/report-a-case/components/field-holder/field-holder.component.mjs +2 -2
  18. package/esm2022/lib/report-a-case/components/linked assessment/linked-assessment.component.mjs +2 -2
  19. package/esm2022/lib/report-a-case/components/linked-responsibilities/linked-responsibilities.component.mjs +2 -2
  20. package/esm2022/lib/report-a-case/components/rc-details/rc-details.component.mjs +2 -2
  21. package/esm2022/lib/report-a-case/components/report-date/report-date.component.mjs +2 -2
  22. package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +2 -2
  23. package/esm2022/lib/services/report-case-permission.service.mjs +3 -5
  24. package/esm2022/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +2 -2
  25. package/esm2022/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.mjs +2 -2
  26. package/esm2022/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.mjs +2 -2
  27. package/esm2022/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.mjs +2 -2
  28. package/esm2022/lib/sharedComponents/assessment-editor/components/logic/logic.component.mjs +2 -2
  29. package/esm2022/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.mjs +2 -2
  30. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.mjs +2 -2
  31. package/esm2022/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.mjs +2 -2
  32. package/esm2022/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.mjs +2 -2
  33. package/esm2022/lib/sharedComponents/assessment-list/assessment-list.component.mjs +2 -2
  34. package/esm2022/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +2 -2
  35. package/esm2022/lib/sharedComponents/category-list/category-list.component.mjs +2 -2
  36. package/esm2022/lib/sharedComponents/category-list-selection/category-list-selection/category-list-selection.component.mjs +2 -2
  37. package/esm2022/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +2 -2
  38. package/esm2022/lib/sharedComponents/checkbox-list/checkbox-list.component.mjs +2 -2
  39. package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +2 -2
  40. package/esm2022/lib/sharedComponents/framework-list/framework-list.component.mjs +2 -2
  41. package/esm2022/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.mjs +1 -5
  42. package/esm2022/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +1 -5
  43. package/esm2022/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +1 -2
  44. package/esm2022/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +2 -6
  45. package/esm2022/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +1 -2
  46. package/esm2022/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +1 -3
  47. package/esm2022/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +1 -5
  48. package/esm2022/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +1 -3
  49. package/esm2022/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.mjs +2 -2
  50. package/esm2022/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +2 -4
  51. package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +1 -185
  52. package/esm2022/lib/sharedComponents/group-users-list/group-users-list.component.mjs +4 -4
  53. package/esm2022/lib/sharedComponents/link-program/link-program/link-program.component.mjs +2 -2
  54. package/esm2022/lib/sharedComponents/owner-list/owner-list.component.mjs +2 -2
  55. package/esm2022/lib/sharedComponents/policy-access/policy-access.component.mjs +2 -2
  56. package/esm2022/lib/sharedComponents/policy-template/constants/template.constant.mjs +2 -2
  57. package/esm2022/lib/sharedComponents/program-listing/program-listing.component.mjs +2 -2
  58. package/esm2022/lib/sharedComponents/radio-list/radio-list.component.mjs +2 -2
  59. package/esm2022/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +2 -2
  60. package/esm2022/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.mjs +2 -2
  61. package/esm2022/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.mjs +2 -2
  62. package/esm2022/lib/sharedComponents/review-frequency/review-frequency.component.mjs +2 -2
  63. package/esm2022/lib/sharedComponents/roles-list/roles-list.component.mjs +2 -2
  64. package/esm2022/lib/sharedComponents/select-approvers/select-approvers.component.mjs +2 -2
  65. package/esm2022/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +2 -2
  66. package/esm2022/lib/ui-kit/pagination/pagination/pagination.component.mjs +2 -2
  67. package/esm2022/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.mjs +2 -2
  68. package/esm2022/lib/workflow/shared/constants/cdn-link.constant.mjs +2 -2
  69. package/esm2022/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.mjs +2 -2
  70. package/esm2022/lib/workflow-assessment/workflow-assessment.component.mjs +2 -2
  71. package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +133 -275
  72. package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +3 -5
  73. package/esm2022/lib/workflow-engine.module.mjs +6 -13
  74. package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +2 -2
  75. package/esm2022/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.mjs +2 -2
  76. package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.mjs +2 -2
  77. package/esm2022/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.mjs +2 -2
  78. package/esm2022/lib/workflow-program/create-program-ui/role-list/role-list.component.mjs +2 -2
  79. package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +2 -2
  80. package/esm2022/lib/workflow-program/workflow-program.component.mjs +241 -84
  81. package/esm2022/lib/workflow-risk/workflow-risk.component.mjs +2 -2
  82. package/esm2022/lib/workflow-services/programs.service.mjs +112 -28
  83. package/esm2022/lib/workflow-services/responsibility.service.mjs +9 -9
  84. package/esm2022/lib/workflow-survey-form/workflow-survey-form.component.mjs +2 -2
  85. package/fesm2022/vcomply-workflow-engine.mjs +598 -1130
  86. package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
  87. package/lib/interfaces/responsibilty.interface.d.ts +1 -1
  88. package/lib/services/report-case-permission.service.d.ts +1 -3
  89. package/lib/sharedComponents/frequency/frequency.service.d.ts +0 -30
  90. package/lib/workflow-compliance/workflow-compliance.component.d.ts +4 -29
  91. package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +1 -2
  92. package/lib/workflow-engine.module.d.ts +40 -42
  93. package/lib/workflow-program/workflow-program.component.d.ts +4 -6
  94. package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
  95. package/lib/workflow-services/programs.service.d.ts +53 -13
  96. package/package.json +1 -1
  97. package/esm2022/lib/constants/assessts.constants.mjs +0 -57
  98. package/esm2022/lib/constants/mock.mjs +0 -130
  99. package/esm2022/lib/interfaces/frequency.interface.mjs +0 -2
  100. package/esm2022/lib/sharedComponents/list-container/list-container.component.mjs +0 -52
  101. package/esm2022/lib/sharedComponents/program-list/constant.mjs +0 -16
  102. package/esm2022/lib/sharedComponents/program-list/interfaces/data-source.interface.mjs +0 -2
  103. package/esm2022/lib/sharedComponents/program-list/interfaces/list-item.interface.mjs +0 -2
  104. package/esm2022/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.mjs +0 -20
  105. package/esm2022/lib/sharedComponents/program-list/program-list/program-list.component.mjs +0 -171
  106. package/esm2022/lib/sharedComponents/program-list/program-list.module.mjs +0 -43
  107. package/esm2022/lib/sharedComponents/program-list/services/list-utils.service.mjs +0 -27
  108. package/esm2022/lib/sharedComponents/program-list/services/program-list-api.service.mjs +0 -32
  109. package/lib/constants/mock.d.ts +0 -15
  110. package/lib/interfaces/frequency.interface.d.ts +0 -37
  111. package/lib/sharedComponents/list-container/list-container.component.d.ts +0 -9
  112. package/lib/sharedComponents/program-list/constant.d.ts +0 -9
  113. package/lib/sharedComponents/program-list/interfaces/data-source.interface.d.ts +0 -4
  114. package/lib/sharedComponents/program-list/interfaces/list-item.interface.d.ts +0 -5
  115. package/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.d.ts +0 -7
  116. package/lib/sharedComponents/program-list/program-list/program-list.component.d.ts +0 -46
  117. package/lib/sharedComponents/program-list/program-list.module.d.ts +0 -13
  118. package/lib/sharedComponents/program-list/services/list-utils.service.d.ts +0 -7
  119. package/lib/sharedComponents/program-list/services/program-list-api.service.d.ts +0 -14
  120. /package/lib/constants/{assessts.constants.d.ts → assets.constants.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { ASSETS } from '../../../constants/assessts.constants';
2
+ import { ASSETS } from '../../../constants/assets.constants';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
5
  import * as i2 from "../../../ui-kit/tooltip/tooltip.directive";
@@ -239,4 +239,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
239
239
  type: Input,
240
240
  args: ['selected']
241
241
  }] } });
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXByb2dyYW0vY3JlYXRlLXByb2dyYW0tdWkvcm9sZS1saXN0L3JvbGUtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL2NyZWF0ZS1wcm9ncmFtLXVpL3JvbGUtbGlzdC9yb2xlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7Ozs7OztBQU8vRCxNQUFNLE9BQU8saUJBQWlCO0lBUTVCO1FBUFUsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJdEMsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixXQUFNLEdBQUcsTUFBTSxDQUFDO1FBU2hCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsdUJBQXVCO1FBQ3ZCLG1CQUFjLEdBQVEsRUFBRSxDQUFDO1FBQ3pCLHdCQUF3QjtRQUN4QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUN0QixtQ0FBbUM7UUFDbkMsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFDeEIsd0NBQXdDO1FBQ3hDLGlCQUFZLEdBQVEsRUFBRSxDQUFDO1FBRXZCLGlDQUFpQztRQUNqQyxjQUFTLEdBQVEsRUFBRSxDQUFDO1FBRXBCLG9CQUFlLEdBQVEsSUFBSSxDQUFDO1FBQzVCLHFCQUFnQixHQUFHLEtB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bnRlbnQiOlsiaW1wb3J0IHsgSWZTdG10IH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Fzc2Vzc3RzLmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGUtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yb2xlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yb2xlLWxpc3QuY29tcG9uZW50Lmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUm9sZUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAT3V0cHV0KCkgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgZmVhdHVyZWZsYWdyb2xlITogYm9vbGVhbjtcbiAgQElucHV0KCkgZmVhdHVyZWZsYWdHcm91cCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGZmX3JjX2xpc3RpbmchOiBib29sZWFuO1xuICBhbmltYXRpb24gPSB0cnVlO1xuICBBU1NFVFMgPSBBU1NFVFM7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFuaW1hdGlvbiA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0sIDMwMCk7XG4gIH1cbiAgc2VhcmNoS2V5OiBhbnkgPSAnJztcbiAgLy9Vc2VkIHRvIGRpc2FibGUgaXRlbXNcbiAgc3lzdGVtUm9sZXNJZHM6IGFueSA9IFtdO1xuICAvL3VzZWQgdG8gY2hlY2sgY2hlY2tib3hcbiAgc2VsZWN0ZWRJZHM6IGFueSA9IFtdO1xuICAvL2NvbXBsZXRlIG9iamVjdCBvZiBzZWxlY3RlZCBpdGVtc1xuICBzZWxlY3RlZFJvbGVzOiBhbnkgPSBbXTtcbiAgLy9jb250YWlucyBpZCdzIG9mIGFsbCB0aGUgZXhwYW5kZWQgcm93c1xuICBleHBhbmRlZFJvd3M6IGFueSA9IFtdO1xuXG4gIC8vbGlzdCBvZiBhbGwgdGhlIGF2YWlsYWJsZSByb2xlc1xuICByb2xlc0xpc3Q6IGFueSA9IFtdO1xuXG4gIGluaXRpYWxTZWxlY3RlZDogYW55ID0gbnVsbDtcbiAgc2hvd0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xuICAvLyBvbmx5IHVzZWQgaW4gc2VsZWN0IGFsbCBmdW5jdGlvblxuICBhbGxMaXN0SWRzID0gW107XG4gIC8vaXNBbGxJdGVtc1xuICBhbGxTZWxlY3RlZCA9IGZhbHNlO1xuICBASW5wdXQoJ2xpc3QnKSBzZXQgc2V0TGlzdCh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlICYmIHZhbHVlPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMucm9sZXNMaXN0ID0gWy4uLnZhbHVlXTtcbiAgICAgIHRoaXMuc2V0U3lzdGVtUm9sZSh0aGlzLnJvbGVzTGlzdCk7XG4gICAgICB0aGlzLmFsbExpc3RJZHMgPSB0aGlzLnJvbGVzTGlzdC5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XG4gICAgICB0aGlzLnNldEFsbFNlbGVjdGVkU3RhdHVzKCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcbiAgQElucHV0KCdzZWxlY3RlZCcpIHNldCBzZWxlY3RlZFJvbGVzVmFsKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkUm9sZXMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcbiAgICAgIFsuLi50aGlzLnNlbGVjdGVkUm9sZXMsIC4uLnZhbHVlXSxcbiAgICAgICdfaWQnXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGVkSWRzID0gdGhpcy5zZWxlY3RlZFJvbGVzLm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbFNlbGVjdGVkIHx8ICF0aGlzLmluaXRpYWxTZWxlY3RlZD8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmluaXRpYWxTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRJZHM7XG4gICAgfVxuICAgIHRoaXMuc2V0QWxsU2VsZWN0ZWRTdGF0dXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAjIyMjIERlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV4cGFuZHMgb3IgY29sbGFwc2UgdGhlIHJvd1xuICAgKiBAcGFyYW0gdHlwZVxuICAgKiBAcGFyYW0gW2lkXVxuICAgKi9cbiAgZXhwYW5kT3JDb2xsYXBzZSh0eXBlOiAnRVhQQU5EJyB8ICdDT0xMQVBTRScgfCAnQ09MTEFQU0VfQUxMJywgaWQ/OiBhbnkpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ0NPTExBUFNFJzoge1xuICAgICAgICB0aGlzLmV4cGFuZGVkUm93cyA9IHRoaXMuZXhwYW5kZWRSb3dzLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZSAhPT0gaWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0VYUEFORCc6IHtcbiAgICAgICAgdGhpcy5leHBhbmRlZFJvd3MgPSBBcnJheS5mcm9tKFxuICAgICAgICAgIG5ldyBTZXQ8YW55W10+KFsuLi50aGlzLmV4cGFuZGVkUm93cywgLi4uW2lkXV0pXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQ09MTEFQU0VfQUxMJzoge1xuICAgICAgICB0aGlzLmV4cGFuZGVkUm93cyA9IFtdO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZWxlY3RBbGwoZXZ0OiBhbnkpIHtcbiAgICBpZiAoZXZ0Py50YXJnZXQ/LmNoZWNrZWQgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb2xlcyA9IHRoaXMucm9sZXNMaXN0O1xuICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IHRoaXMucm9sZXNMaXN0Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvbGVzID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkSWRzID0gW107XG4gICAgICB0aGlzLnNldFN5c3RlbVJvbGUodGhpcy5yb2xlc0xpc3QpO1xuICAgIH1cbiAgICB0aGlzLnNldEFsbFNlbGVjdGVkU3RhdHVzKCk7XG4gIH1cblxuICBzZXRBbGxTZWxlY3RlZFN0YXR1cygpIHtcbiAgICB0aGlzLmFsbFNlbGVjdGVkID1cbiAgICAgIHRoaXMuYWxsTGlzdElkcy5zb3J0KCkudG9TdHJpbmcoKSA9PT0gdGhpcy5zZWxlY3RlZElkcy5zb3J0KCk/LnRvU3RyaW5nKCk7XG4gIH1cbiAgLyoqXG4gICAqICMjIyMgRGVzY3JpcHRpb25cbiAgICpcbiAgICogU2V0cyBzeXN0ZW0gcm9sZSBmb3IgYWRtaW5zIGFuZCBrZXkgYWRtaW5zXG4gICAqIEBwYXJhbSByb2xlc1xuICAgKi9cbiAgc2V0U3lzdGVtUm9sZShyb2xlczogYW55KSB7XG4gICAgY29uc3Qgc3lzdGVtUm9sZXMgPSByb2xlcy5maWx0ZXIoXG4gICAgICAoZWxlOiBhbnkpID0+XG4gICAgICAgIGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8XG4gICAgICAgIGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdhZG1pbidcbiAgICApO1xuICAgIHRoaXMuc3lzdGVtUm9sZXNJZHMgPSBBcnJheS5mcm9tKFxuICAgICAgbmV3IFNldDxhbnlbXT4oW1xuICAgICAgICAuLi50aGlzLnN5c3RlbVJvbGVzSWRzLFxuICAgICAgICAuLi5zeXN0ZW1Sb2xlcy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCksXG4gICAgICBdKVxuICAgICk7XG4gICAgdGhpcy5zZWxlY3RlZElkcyA9IEFycmF5LmZyb20oXG4gICAgICBuZXcgU2V0PGFueVtdPihbLi4udGhpcy5zZWxlY3RlZElkcywgLi4udGhpcy5zeXN0ZW1Sb2xlc0lkc10pXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGVkUm9sZXMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcbiAgICAgIFsuLi5zeXN0ZW1Sb2xlcywgLi4udGhpcy5zZWxlY3RlZFJvbGVzXSxcbiAgICAgICdfaWQnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAjIyMjIERlc2NyaXB0aW9uXG4gICAqIFNlbGVjdHMgaXRlbSBvciBkZXNlbGVjdCBhIGl0bWVcbiAgICogQHBhcmFtIGV2dFxuICAgKiBAcGFyYW0gcGF5bG9hZFxuICAgKi9cbiAgc2VsZWN0SXRlbShldnQ6IGFueSwgcGF5bG9hZDogYW55KSB7XG4gICAgZXZ0Py50YXJnZXQ/LmNoZWNrZWQgPT09IHRydWVcbiAgICAgID8gdGhpcy5tYW5pcHVsYXRlU2VsZWN0ZWRJdGVtcygnQUREJywgcGF5bG9hZClcbiAgICAgIDogdGhpcy5tYW5pcHVsYXRlU2VsZWN0ZWRJdGVtcygnREVMRVRFJywgcGF5bG9hZCk7XG4gIH1cblxuICAvKipcbiAgICogIyMjIyBEZXNjcmlwdGlvblxuICAgKlxuICAgKiBNYW5pcHVsYXRlcyBzZWxlY3RlZCBpdGVtcyBpbiByb2xlIGxpc3RcbiAgICogQHBhcmFtIGFjdGlvbiA6J0FERCcgfCAnREVMRVRFJ1xuICAgKiBAcGFyYW0gcGF5bG9hZFxuICAgKi9cbiAgbWFuaXB1bGF0ZVNlbGVjdGVkSXRlbXMoYWN0aW9uOiAnQUREJyB8ICdERUxFVEUnLCBwYXlsb2FkOiBhbnkpIHtcbiAgICBpZiAoYWN0aW9uID09PSAnQUREJykge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvbGVzID0gdGhpcy51bmlxdWVCeVByb3AoXG4gICAgICAgIFsuLi50aGlzLnNlbGVjdGVkUm9sZXMsIC4uLltwYXlsb2FkXV0sXG4gICAgICAgICdfaWQnXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZElkcyA9IHRoaXMuc2VsZWN0ZWRSb2xlcy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XG4gICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICdERUxFVEUnKSB7XG4gICAgICBsZXQgaW5kZXggPSB0aGlzLnNlbGVjdGVkUm9sZXMuZmluZEluZGV4KFxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uX2lkID09PSBwYXlsb2FkPy5faWRcbiAgICAgICk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm9sZXMgPSB0aGlzLnNlbGVjdGVkUm9sZXMuZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5faWQgIT09IHBheWxvYWQ/Ll9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSWRzID0gdGhpcy5zZWxlY3RlZElkcy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGUgIT09IHBheWxvYWQ/Ll9pZFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNldEFsbFNlbGVjdGVkU3RhdHVzKCk7XG4gIH1cblxuICBzYXZlTGlzdCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmluaXRpYWxTZWxlY3RlZD8uc29ydCgpPy50b1N0cmluZygpICE9PVxuICAgICAgdGhpcy5zZWxlY3RlZElkcy5zb3J0KCk/LnRvU3RyaW5nKClcbiAgICApIHtcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2F2ZS5lbWl0KHRoaXMuc2VsZWN0ZWRSb2xlcyk7XG4gICAgfVxuICB9XG4gIGNvbmZpcm1BY3Rpb24oZXZ0OiAnWUVTJyB8ICdOTycpIHtcbiAgICBpZiAoZXZ0ID09PSAnWUVTJykge1xuICAgICAgdGhpcy5zYXZlLmVtaXQodGhpcy5zZWxlY3RlZFJvbGVzKTtcbiAgICB9IGVsc2UgaWYgKGV2dCA9PT0gJ05PJykge1xuICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VMaXN0KCkge1xuICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAjIyMjIERlc2NyaXB0aW9uXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHVuaXF1ZSBhcnJheSBvZiBvYmplY3QgYmFzZWQgb24gdW5pcXVlIGtleVxuICAgKiBAcGFyYW0gYXJyYXlcbiAgICogQHBhcmFtIGtleVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdW5pcXVlQnlQcm9wKGFycmF5OiBhbnksIGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgICBhcnJheVxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgIChhY2M6IGFueSwgaXRlbTogYW55KSA9PiAoXG4gICAgICAgICAgICBpdGVtICYmIGl0ZW1ba2V5XSAmJiBhY2Muc2V0KGl0ZW1ba2V5XSwgaXRlbSksIGFjY1xuICAgICAgICAgICksXG4gICAgICAgICAgbmV3IE1hcCgpXG4gICAgICAgIClcbiAgICAgICAgLnZhbHVlcygpXG4gICAgKTtcbiAgfVxuXG4gIC8vdmlldyBhbmQgbWFuYWdlIHJvbGVzIGFuZCBncm91cHMgdGV4dCBjaGFuZ2VkIHdpdGggZmVhdHVyZWZsYWdcbiAgcGVybWlzc2lvblRleHQocGVybWlzc2lvbjogYW55KTogc3RyaW5nIHtcbiAgICBpZiAocGVybWlzc2lvbiA9PSAndmlldyByb2xlcycpIHtcbiAgICAgIGlmICh0aGlzLmZmX3JjX2xpc3RpbmcpIHtcbiAgICAgICAgcmV0dXJuICd2aWV3IHBlcm1pc3Npb25zJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAndmlldyBwZXJtaXNzaW9uIGdyb3Vwcyc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwZXJtaXNzaW9uID09ICdtYW5hZ2Ugcm9sZXMnKSB7XG4gICAgICBpZiAodGhpcy5mZl9yY19saXN0aW5nKSB7XG4gICAgICAgIHJldHVybiAnTWFuYWdlIHBlcm1pc3Npb25zJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAnTWFuYWdlIHBlcm1pc3Npb24gZ3JvdXBzJztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBlcm1pc3Npb24gPT0gJ3ZpZXcgZ3JvdXBzJykge1xuICAgICAgaWYgKHRoaXMuZmVhdHVyZWZsYWdHcm91cCkge1xuICAgICAgICByZXR1cm4gJ3ZpZXcgdXNlciBncm91cHMnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb247XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwZXJtaXNzaW9uID09ICdtYW5hZ2UgZ3JvdXBzJykge1xuICAgICAgaWYgKHRoaXMuZmVhdHVyZWZsYWdHcm91cCkge1xuICAgICAgICByZXR1cm4gJ01hbmFnZSB1c2VyIGdyb3Vwcyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcGVybWlzc2lvbjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBlcm1pc3Npb247XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb2xlcy1saXN0XCIgW2NsYXNzLmFuaW1hdGVdPVwiYW5pbWF0aW9uXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInJvbGVzLWxpc3QtaGVhZCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC00IHZ4LXByLTRcIlxuICA+XG4gICAgPGRpdiBpZD1cInRpdGxlbmFtZVwiIGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlxuICAgICAge3sgZmZfcmNfbGlzdGluZyA/IFwiU2VsZWN0IFBlcm1pc3Npb25zXCIgOiBcIlNlbGVjdCBQZXJtaXNzaW9uIEdyb3VwKHMpXCIgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInJvbGVzLWxpc3QtYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2sgdngtbWItMVwiIFtjbGFzcy5kaXNhYmxlZF09XCIhcm9sZXNMaXN0Py5sZW5ndGhcIj5cbiAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBiOzwvaT5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICBmZl9yY19saXN0aW5nID8gJ1NlYXJjaCBQZXJtaXNzaW9ucycgOiAnU2VhcmNoIFBlcm1pc3Npb24gR3JvdXBzJ1xuICAgICAgICBcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaEtleVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1tdC00XCIgKm5nSWY9XCJsb2FkaW5nXCI+PHJvbGUtbG9hZGVyPjwvcm9sZS1sb2FkZXI+PC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJyb2xlc0xpc3QgfCBzZWFyY2ggOiBzZWFyY2hLZXkgOiAncm9sZU5hbWUnIGFzIHJvbGVzXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiAqbmdJZj1cInJvbGVzPy5sZW5ndGggPiAwXCIgY2xhc3M9XCJyb2xlcy1saXN0LW1pZCB2eC1tYi00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvbGUtYm94LXNlbGVjdCB2eC1wYi0yXCI+XG4gICAgICAgICAgICA8dnVpLWNoZWNrYm94XG4gICAgICAgICAgICAgIFtpbmRldGVybWluYXRlRW5hYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICNjaGVja1xuICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdEFsbCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhbGxTZWxlY3RlZFwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbFNlbGVjdGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItbmFtZSB2eC1mcy0xMiB2eC1mdy02MDAgdngtbGFiZWwtdHh0XCI+XG4gICAgICAgICAgICAgICAge3sgIWNoZWNrLmNoZWNrZWQgPyBcIlNlbGVjdCBBbGxcIiA6IFwiRGVzZWxlY3QgQWxsXCIgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L3Z1aS1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicm9sZS1ib3ggdngtbWItMlwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcm9sZSBvZiByb2xlczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgIWV4cGFuZGVkUm93cy5pbmNsdWRlcyhyb2xlPy5faWQpXG4gICAgICAgICAgICAgICAgICA/IGV4cGFuZE9yQ29sbGFwc2UoJ0VYUEFORCcsIHJvbGU/Ll9pZClcbiAgICAgICAgICAgICAgICAgIDogZXhwYW5kT3JDb2xsYXBzZSgnQ09MTEFQU0UnLCByb2xlPy5faWQpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicm9sZS1ib3gtaGVhZGluZyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wLTNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTRcIj5cbiAgICAgICAgICAgICAgICA8dnVpLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic3lzdGVtUm9sZXNJZHMuaW5jbHVkZXMocm9sZT8uX2lkKVwiXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZElkcy5pbmNsdWRlcyhyb2xlPy5faWQpXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0SXRlbSgkZXZlbnQsIHJvbGUpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC92dWktY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYW1lIHZ4LWZzLTEyIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCInUm9sZSBuYW1lJ1wiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlZmxhZ3JvbGUgJiYgcm9sZT8ucGVybWlzc2lvbkdyb3VwTmFtZVxuICAgICAgICAgICAgICAgICAgICAgID8gcm9sZT8ucGVybWlzc2lvbkdyb3VwTmFtZVxuICAgICAgICAgICAgICAgICAgICAgIDogcm9sZT8ucm9sZU5hbWVcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm9sZT8ucm9sZUFjdGlvbnM/Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudCB2eC1mcy05IHZ4LWZ3LTYwMCB2eC1saC0zIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtbWwtMlwiXG4gICAgICAgICAgICAgICAgICA+e3sgcm9sZT8ucm9sZUFjdGlvbnM/Lmxlbmd0aCB9fSBQRVJNSVNTSU9OUzwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm9sZT8ubGljZW5zZVR5cGUgPT09ICdwb3dlciB1c2VycydcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdGF0dXMtbGFiZWwgdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTFcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnBvd2VyLXVzZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuYWxsLXVzZXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIFBvd2VyIFVzZXJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInJvbGU/LmxpY2Vuc2VUeXBlID09PSAnbGlnaHQgdXNlcnMnXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3RhdHVzLWxhYmVsIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5wb3dlci11c2VyXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5hbGwtdXNlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBMaWdodCBVc2VyXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcnJvdy1idG4gdngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tLTAgdngtcC0wIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIWV4cGFuZGVkUm93cy5pbmNsdWRlcyhyb2xlPy5faWQpXCIgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTcwOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJleHBhbmRlZFJvd3MuaW5jbHVkZXMocm9sZT8uX2lkKVwiIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTllODs8L2lcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb2xlLWJveC1saXN0XCIgKm5nSWY9XCJleHBhbmRlZFJvd3MuaW5jbHVkZXMocm9sZT8uX2lkKVwiPlxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ2eC1wLTAgdngtbS0wXCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LXAtMyB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwZXJtaXNzaW9uIG9mIHJvbGU/LnJvbGVBY3Rpb25zXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUgdngtZnMtMTIgdngtbGFiZWwtdHh0XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHBlcm1pc3Npb25UZXh0KHBlcm1pc3Npb24pIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwhLS0gPGxpIGNsYXNzPVwidngtcC0zIHZ4LWxoLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyIHZ4LWxhYmVsLXR4dFwiPlZpZXcgVXNlciBMaXN0PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1wLTMgdngtbGgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUgdngtZnMtMTIgdngtbGFiZWwtdHh0XCI+TWFuYWdlIFVzZXJzIDxzcGFuIGNsYXNzPVwidngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dFwiPihDcmVhdGUvRWRpdC9EZWxldGUvRGVhY3RpdmF0ZSk8L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1wLTMgdngtbGgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUgdngtZnMtMTIgdngtbGFiZWwtdHh0XCI+T3Zlci1yaWRlIExvZyBJbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidngtcC0zIHZ4LWxoLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyIHZ4LWxhYmVsLXR4dFwiPlZpZXcgU3RhdHV0b3J5IEhvbGlkYXlzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1wLTMgdngtbGgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUgdngtZnMtMTIgdngtbGFiZWwtdHh0XCI+TWFuYWdlIFN0YXR1dG9yeSBIb2xpZGF5czwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+IC0tPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxhcHAtbm8tZGF0YVxuICAgICAgICAgICpuZ0lmPVwicm9sZXM/Lmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgW25vRGF0YUltYWdlXT1cIkFTU0VUUy5zZWFyY2hfZGF0YVwiXG4gICAgICAgICAgW25vRGF0YVRleHRdPVwiXG4gICAgICAgICAgICBzZWFyY2hLZXk/Lmxlbmd0aCA+IDAgPyAnTm8gbWF0Y2ggZm91bmQuJyA6ICdObyBSb2xlcyBGb3VuZCdcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9hcHAtbm8tZGF0YT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cInJvbGVzLWxpc3QtZm9vdGVyXCIgKm5nSWY9XCIhc2hvd0NvbmZpcm1hdGlvblwiPlxuICAgICAgPHZ1aS1mbG9hdGluZy1iYXIgKGNsb3NlRXZlbnQpPVwic2F2ZUxpc3QoKVwiIChjbG9zZUxpc3QpPVwiY2xvc2VMaXN0KClcIj5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY291bnRlclwiICpuZ0lmPVwic2VsZWN0ZWRSb2xlcz8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCI+e3tzZWxlY3RlZFJvbGVzPy5sZW5ndGh9fTwvZGl2PiAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRSb2xlcz8ubGVuZ3RoXCJcbiAgICAgICAgICBjbGFzcz1cImNvdW50ZXIgcm9sZS1saXN0LWNvdW50ZXJcIlxuICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAoY2xpY2spPVwicm9sZS5wb3BvdmVyKClcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc2VsZWN0ZWRSb2xlcz8ubGVuZ3RoIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJuYW1lXCJcbiAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkUm9sZXM/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgIGlkPVwicGVybWlzc2lvbnNlbGVjdGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRSb2xlcz8ubGVuZ3RoID09PSAxXCI+e3tcbiAgICAgICAgICAgIGZlYXR1cmVmbGFncm9sZSA/IFwiUGVybWlzc2lvbiBzZWxlY3RlZFwiIDogXCJSb2xlIHNlbGVjdGVkXCJcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdGVkUm9sZXM/Lmxlbmd0aCA+IDFcIj57e1xuICAgICAgICAgICAgZmVhdHVyZWZsYWdyb2xlID8gXCJQZXJtaXNzaW9ucyBzZWxlY3RlZFwiIDogXCJSb2xlcyBzZWxlY3RlZFwiXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC92dWktZmxvYXRpbmctYmFyPlxuXG4gICAgICA8YXBwLXBvcG92ZXIgI3JvbGUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIHNlbGVjdGVkUm9sZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc3lzdGVtUm9sZXNJZHMuaW5jbHVkZXMoZGF0YT8uX2lkKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0SXRlbSh7IHRhcmdldDogeyBjaGVja2VkOiBmYWxzZSB9IH0sIGRhdGEpXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlZmxhZ3JvbGUgJiYgZGF0YT8ucGVybWlzc2lvbkdyb3VwTmFtZVxuICAgICAgICAgICAgICAgICAgICAgID8gZGF0YT8ucGVybWlzc2lvbkdyb3VwTmFtZVxuICAgICAgICAgICAgICAgICAgICAgIDogZGF0YT8ucm9sZU5hbWVcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicm9sZXMtbGlzdC1jb25maXJtYXRpb25cIiAqbmdJZj1cInNob3dDb25maXJtYXRpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLXRvcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImljb24tYmxvY2tcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkzMDs8L2k+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dFwiIGlkPVwiY29uZmlybWF0aW9ubWVzc2FnZVwiPlxuICAgICAgICB7e1xuICAgICAgICAgIGZlYXR1cmVmbGFncm9sZVxuICAgICAgICAgICAgPyBcIlRoaXMgYWN0aW9uIHdpbGwgdXBkYXRlIHRoZSBQZXJtaXNzaW9uIHNldHRpbmdzIGFuZCBpbXBhY3QgdGhlIG93bmVycyBzZWxlY3RlZCBmb3IgdGhlIFByb2dyYW0uXCJcbiAgICAgICAgICAgIDogXCJUaGlzIGFjdGlvbiB3aWxsIHVwZGF0ZSB0aGUgUm9sZSBzZXR0aW5ncyBhbmQgaW1wYWN0IHRoZSBvd25lcnMgc2VsZWN0ZWQgZm9yIHRoZSBQcm9ncmFtLlwiXG4gICAgICAgIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLWJvdHRvbVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIj5BcmUgeW91IHN1cmUgeW91IHdvdWxkIGxpa2UgdG8gcHJvY2VlZD88L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm5vLWJ0blwiIChjbGljayk9XCJjb25maXJtQWN0aW9uKCdOTycpXCI+Tk88L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInllcy1idG5cIiAoY2xpY2spPVwiY29uZmlybUFjdGlvbignWUVTJylcIj5ZRVM8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXByb2dyYW0vY3JlYXRlLXByb2dyYW0tdWkvcm9sZS1saXN0L3JvbGUtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL2NyZWF0ZS1wcm9ncmFtLXVpL3JvbGUtbGlzdC9yb2xlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7OztBQU83RCxNQUFNLE9BQU8saUJBQWlCO0lBUTVCO1FBUFUsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJdEMsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixXQUFNLEdBQUcsTUFBTSxDQUFDO1FBU2hCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsdUJBQXVCO1FBQ3ZCLG1CQUFjLEdBQVEsRUFBRSxDQUFDO1FBQ3pCLHdCQUF3QjtRQUN4QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUN0QixtQ0FBbUM7UUFDbkMsa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFDeEIsd0NBQXdDO1FBQ3hDLGlCQUFZLEdBQVEsRUFBRSxDQUFDO1FBRXZCLGlDQUFpQztRQUNqQyxjQUFTLEdBQVEsRUFBRSxDQUFDO1FBRXBCLG9CQUFlLEdBQVEsSUFBSSxDQUFDO1FBQzVCLHFCQUFnQixHQUFHLEtB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bnRlbnQiOlsiaW1wb3J0IHsgSWZTdG10IH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyb2xlLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcm9sZS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcm9sZS1saXN0LmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJvbGVMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIGZlYXR1cmVmbGFncm9sZSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGZlYXR1cmVmbGFnR3JvdXAhOiBib29sZWFuO1xuICBASW5wdXQoKSBmZl9yY19saXN0aW5nITogYm9vbGVhbjtcbiAgYW5pbWF0aW9uID0gdHJ1ZTtcbiAgQVNTRVRTID0gQVNTRVRTO1xuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYW5pbWF0aW9uID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XG4gICAgfSwgMzAwKTtcbiAgfVxuICBzZWFyY2hLZXk6IGFueSA9ICcnO1xuICAvL1VzZWQgdG8gZGlzYWJsZSBpdGVtc1xuICBzeXN0ZW1Sb2xlc0lkczogYW55ID0gW107XG4gIC8vdXNlZCB0byBjaGVjayBjaGVja2JveFxuICBzZWxlY3RlZElkczogYW55ID0gW107XG4gIC8vY29tcGxldGUgb2JqZWN0IG9mIHNlbGVjdGVkIGl0ZW1zXG4gIHNlbGVjdGVkUm9sZXM6IGFueSA9IFtdO1xuICAvL2NvbnRhaW5zIGlkJ3Mgb2YgYWxsIHRoZSBleHBhbmRlZCByb3dzXG4gIGV4cGFuZGVkUm93czogYW55ID0gW107XG5cbiAgLy9saXN0IG9mIGFsbCB0aGUgYXZhaWxhYmxlIHJvbGVzXG4gIHJvbGVzTGlzdDogYW55ID0gW107XG5cbiAgaW5pdGlhbFNlbGVjdGVkOiBhbnkgPSBudWxsO1xuICBzaG93Q29uZmlybWF0aW9uID0gZmFsc2U7XG4gIC8vIG9ubHkgdXNlZCBpbiBzZWxlY3QgYWxsIGZ1bmN0aW9uXG4gIGFsbExpc3RJZHMgPSBbXTtcbiAgLy9pc0FsbEl0ZW1zXG4gIGFsbFNlbGVjdGVkID0gZmFsc2U7XG4gIEBJbnB1dCgnbGlzdCcpIHNldCBzZXRMaXN0KHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWU/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5yb2xlc0xpc3QgPSBbLi4udmFsdWVdO1xuICAgICAgdGhpcy5zZXRTeXN0ZW1Sb2xlKHRoaXMucm9sZXNMaXN0KTtcbiAgICAgIHRoaXMuYWxsTGlzdElkcyA9IHRoaXMucm9sZXNMaXN0Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcbiAgICAgIHRoaXMuc2V0QWxsU2VsZWN0ZWRTdGF0dXMoKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuICBASW5wdXQoJ3NlbGVjdGVkJykgc2V0IHNlbGVjdGVkUm9sZXNWYWwodmFsdWU6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRSb2xlcyA9IHRoaXMudW5pcXVlQnlQcm9wKFxuICAgICAgWy4uLnRoaXMuc2VsZWN0ZWRSb2xlcywgLi4udmFsdWVdLFxuICAgICAgJ19pZCdcbiAgICApO1xuICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSB0aGlzLnNlbGVjdGVkUm9sZXMubWFwKChlbGU6IGFueSkgPT4gZWxlPy5faWQpO1xuICAgIGlmICghdGhpcy5pbml0aWFsU2VsZWN0ZWQgfHwgIXRoaXMuaW5pdGlhbFNlbGVjdGVkPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaW5pdGlhbFNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZElkcztcbiAgICB9XG4gICAgdGhpcy5zZXRBbGxTZWxlY3RlZFN0YXR1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqICMjIyMgRGVzY3JpcHRpb25cbiAgICpcbiAgICogRXhwYW5kcyBvciBjb2xsYXBzZSB0aGUgcm93XG4gICAqIEBwYXJhbSB0eXBlXG4gICAqIEBwYXJhbSBbaWRdXG4gICAqL1xuICBleHBhbmRPckNvbGxhcHNlKHR5cGU6ICdFWFBBTkQnIHwgJ0NPTExBUFNFJyB8ICdDT0xMQVBTRV9BTEwnLCBpZD86IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnQ09MTEFQU0UnOiB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRSb3dzID0gdGhpcy5leHBhbmRlZFJvd3MuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlICE9PSBpZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnRVhQQU5EJzoge1xuICAgICAgICB0aGlzLmV4cGFuZGVkUm93cyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgbmV3IFNldDxhbnlbXT4oWy4uLnRoaXMuZXhwYW5kZWRSb3dzLCAuLi5baWRdXSlcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdDT0xMQVBTRV9BTEwnOiB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRSb3dzID0gW107XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEFsbChldnQ6IGFueSkge1xuICAgIGlmIChldnQ/LnRhcmdldD8uY2hlY2tlZCA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvbGVzID0gdGhpcy5yb2xlc0xpc3Q7XG4gICAgICB0aGlzLnNlbGVjdGVkSWRzID0gdGhpcy5yb2xlc0xpc3QubWFwKChlbGU6IGFueSkgPT4gZWxlPy5faWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm9sZXMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBbXTtcbiAgICAgIHRoaXMuc2V0U3lzdGVtUm9sZSh0aGlzLnJvbGVzTGlzdCk7XG4gICAgfVxuICAgIHRoaXMuc2V0QWxsU2VsZWN0ZWRTdGF0dXMoKTtcbiAgfVxuXG4gIHNldEFsbFNlbGVjdGVkU3RhdHVzKCkge1xuICAgIHRoaXMuYWxsU2VsZWN0ZWQgPVxuICAgICAgdGhpcy5hbGxMaXN0SWRzLnNvcnQoKS50b1N0cmluZygpID09PSB0aGlzLnNlbGVjdGVkSWRzLnNvcnQoKT8udG9TdHJpbmcoKTtcbiAgfVxuICAvKipcbiAgICogIyMjIyBEZXNjcmlwdGlvblxuICAgKlxuICAgKiBTZXRzIHN5c3RlbSByb2xlIGZvciBhZG1pbnMgYW5kIGtleSBhZG1pbnNcbiAgICogQHBhcmFtIHJvbGVzXG4gICAqL1xuICBzZXRTeXN0ZW1Sb2xlKHJvbGVzOiBhbnkpIHtcbiAgICBjb25zdCBzeXN0ZW1Sb2xlcyA9IHJvbGVzLmZpbHRlcihcbiAgICAgIChlbGU6IGFueSkgPT5cbiAgICAgICAgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2tleSBhZG1pbicgfHxcbiAgICAgICAgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2FkbWluJ1xuICAgICk7XG4gICAgdGhpcy5zeXN0ZW1Sb2xlc0lkcyA9IEFycmF5LmZyb20oXG4gICAgICBuZXcgU2V0PGFueVtdPihbXG4gICAgICAgIC4uLnRoaXMuc3lzdGVtUm9sZXNJZHMsXG4gICAgICAgIC4uLnN5c3RlbVJvbGVzLm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKSxcbiAgICAgIF0pXG4gICAgKTtcbiAgICB0aGlzLnNlbGVjdGVkSWRzID0gQXJyYXkuZnJvbShcbiAgICAgIG5ldyBTZXQ8YW55W10+KFsuLi50aGlzLnNlbGVjdGVkSWRzLCAuLi50aGlzLnN5c3RlbVJvbGVzSWRzXSlcbiAgICApO1xuICAgIHRoaXMuc2VsZWN0ZWRSb2xlcyA9IHRoaXMudW5pcXVlQnlQcm9wKFxuICAgICAgWy4uLnN5c3RlbVJvbGVzLCAuLi50aGlzLnNlbGVjdGVkUm9sZXNdLFxuICAgICAgJ19pZCdcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqICMjIyMgRGVzY3JpcHRpb25cbiAgICogU2VsZWN0cyBpdGVtIG9yIGRlc2VsZWN0IGEgaXRtZVxuICAgKiBAcGFyYW0gZXZ0XG4gICAqIEBwYXJhbSBwYXlsb2FkXG4gICAqL1xuICBzZWxlY3RJdGVtKGV2dDogYW55LCBwYXlsb2FkOiBhbnkpIHtcbiAgICBldnQ/LnRhcmdldD8uY2hlY2tlZCA9PT0gdHJ1ZVxuICAgICAgPyB0aGlzLm1hbmlwdWxhdGVTZWxlY3RlZEl0ZW1zKCdBREQnLCBwYXlsb2FkKVxuICAgICAgOiB0aGlzLm1hbmlwdWxhdGVTZWxlY3RlZEl0ZW1zKCdERUxFVEUnLCBwYXlsb2FkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAjIyMjIERlc2NyaXB0aW9uXG4gICAqXG4gICAqIE1hbmlwdWxhdGVzIHNlbGVjdGVkIGl0ZW1zIGluIHJvbGUgbGlzdFxuICAgKiBAcGFyYW0gYWN0aW9uIDonQUREJyB8ICdERUxFVEUnXG4gICAqIEBwYXJhbSBwYXlsb2FkXG4gICAqL1xuICBtYW5pcHVsYXRlU2VsZWN0ZWRJdGVtcyhhY3Rpb246ICdBREQnIHwgJ0RFTEVURScsIHBheWxvYWQ6IGFueSkge1xuICAgIGlmIChhY3Rpb24gPT09ICdBREQnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm9sZXMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcbiAgICAgICAgWy4uLnRoaXMuc2VsZWN0ZWRSb2xlcywgLi4uW3BheWxvYWRdXSxcbiAgICAgICAgJ19pZCdcbiAgICAgICk7XG4gICAgICB0aGlzLnNlbGVjdGVkSWRzID0gdGhpcy5zZWxlY3RlZFJvbGVzLm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcbiAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PT0gJ0RFTEVURScpIHtcbiAgICAgIGxldCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRSb2xlcy5maW5kSW5kZXgoXG4gICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5faWQgPT09IHBheWxvYWQ/Ll9pZFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb2xlcyA9IHRoaXMuc2VsZWN0ZWRSb2xlcy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Ll9pZCAhPT0gcGF5bG9hZD8uX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSB0aGlzLnNlbGVjdGVkSWRzLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZSAhPT0gcGF5bG9hZD8uX2lkXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2V0QWxsU2VsZWN0ZWRTdGF0dXMoKTtcbiAgfVxuXG4gIHNhdmVMaXN0KCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuaW5pdGlhbFNlbGVjdGVkPy5zb3J0KCk/LnRvU3RyaW5nKCkgIT09XG4gICAgICB0aGlzLnNlbGVjdGVkSWRzLnNvcnQoKT8udG9TdHJpbmcoKVxuICAgICkge1xuICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zYXZlLmVtaXQodGhpcy5zZWxlY3RlZFJvbGVzKTtcbiAgICB9XG4gIH1cbiAgY29uZmlybUFjdGlvbihldnQ6ICdZRVMnIHwgJ05PJykge1xuICAgIGlmIChldnQgPT09ICdZRVMnKSB7XG4gICAgICB0aGlzLnNhdmUuZW1pdCh0aGlzLnNlbGVjdGVkUm9sZXMpO1xuICAgIH0gZWxzZSBpZiAoZXZ0ID09PSAnTk8nKSB7XG4gICAgICB0aGlzLnNob3dDb25maXJtYXRpb24gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjbG9zZUxpc3QoKSB7XG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqICMjIyMgRGVzY3JpcHRpb25cbiAgICpcbiAgICogUmV0dXJucyB0aGUgdW5pcXVlIGFycmF5IG9mIG9iamVjdCBiYXNlZCBvbiB1bmlxdWUga2V5XG4gICAqIEBwYXJhbSBhcnJheVxuICAgKiBAcGFyYW0ga2V5XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICB1bmlxdWVCeVByb3AoYXJyYXk6IGFueSwga2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShcbiAgICAgIGFycmF5XG4gICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgKGFjYzogYW55LCBpdGVtOiBhbnkpID0+IChcbiAgICAgICAgICAgIGl0ZW0gJiYgaXRlbVtrZXldICYmIGFjYy5zZXQoaXRlbVtrZXldLCBpdGVtKSwgYWNjXG4gICAgICAgICAgKSxcbiAgICAgICAgICBuZXcgTWFwKClcbiAgICAgICAgKVxuICAgICAgICAudmFsdWVzKClcbiAgICApO1xuICB9XG5cbiAgLy92aWV3IGFuZCBtYW5hZ2Ugcm9sZXMgYW5kIGdyb3VwcyB0ZXh0IGNoYW5nZWQgd2l0aCBmZWF0dXJlZmxhZ1xuICBwZXJtaXNzaW9uVGV4dChwZXJtaXNzaW9uOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChwZXJtaXNzaW9uID09ICd2aWV3IHJvbGVzJykge1xuICAgICAgaWYgKHRoaXMuZmZfcmNfbGlzdGluZykge1xuICAgICAgICByZXR1cm4gJ3ZpZXcgcGVybWlzc2lvbnMnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICd2aWV3IHBlcm1pc3Npb24gZ3JvdXBzJztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBlcm1pc3Npb24gPT0gJ21hbmFnZSByb2xlcycpIHtcbiAgICAgIGlmICh0aGlzLmZmX3JjX2xpc3RpbmcpIHtcbiAgICAgICAgcmV0dXJuICdNYW5hZ2UgcGVybWlzc2lvbnMnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICdNYW5hZ2UgcGVybWlzc2lvbiBncm91cHMnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocGVybWlzc2lvbiA9PSAndmlldyBncm91cHMnKSB7XG4gICAgICBpZiAodGhpcy5mZWF0dXJlZmxhZ0dyb3VwKSB7XG4gICAgICAgIHJldHVybiAndmlldyB1c2VyIGdyb3Vwcyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcGVybWlzc2lvbjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBlcm1pc3Npb24gPT0gJ21hbmFnZSBncm91cHMnKSB7XG4gICAgICBpZiAodGhpcy5mZWF0dXJlZmxhZ0dyb3VwKSB7XG4gICAgICAgIHJldHVybiAnTWFuYWdlIHVzZXIgZ3JvdXBzJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9uO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGVybWlzc2lvbjtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJvbGVzLWxpc3RcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicm9sZXMtbGlzdC1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNFwiXG4gID5cbiAgICA8ZGl2IGlkPVwidGl0bGVuYW1lXCIgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+XG4gICAgICB7eyBmZl9yY19saXN0aW5nID8gXCJTZWxlY3QgUGVybWlzc2lvbnNcIiA6IFwiU2VsZWN0IFBlcm1pc3Npb24gR3JvdXAocylcIiB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicm9sZXMtbGlzdC1ib2R5XCI+XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaC1ibG9jayB2eC1tYi0xXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFyb2xlc0xpc3Q/Lmxlbmd0aFwiPlxuICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGI7PC9pPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgIGZmX3JjX2xpc3RpbmcgPyAnU2VhcmNoIFBlcm1pc3Npb25zJyA6ICdTZWFyY2ggUGVybWlzc2lvbiBHcm91cHMnXG4gICAgICAgIFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoS2V5XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInZ4LW10LTRcIiAqbmdJZj1cImxvYWRpbmdcIj48cm9sZS1sb2FkZXI+PC9yb2xlLWxvYWRlcj48L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cInJvbGVzTGlzdCB8IHNlYXJjaCA6IHNlYXJjaEtleSA6ICdyb2xlTmFtZScgYXMgcm9sZXNcIlxuICAgICAgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicm9sZXM/Lmxlbmd0aCA+IDBcIiBjbGFzcz1cInJvbGVzLWxpc3QtbWlkIHZ4LW1iLTRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm9sZS1ib3gtc2VsZWN0IHZ4LXBiLTJcIj5cbiAgICAgICAgICAgIDx2dWktY2hlY2tib3hcbiAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVFbmFibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgI2NoZWNrXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0QWxsKCRldmVudClcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImFsbFNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYWxsU2VsZWN0ZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1uYW1lIHZ4LWZzLTEyIHZ4LWZ3LTYwMCB2eC1sYWJlbC10eHRcIj5cbiAgICAgICAgICAgICAgICB7eyAhY2hlY2suY2hlY2tlZCA/IFwiU2VsZWN0IEFsbFwiIDogXCJEZXNlbGVjdCBBbGxcIiB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdnVpLWNoZWNrYm94PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJyb2xlLWJveCB2eC1tYi0yXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCByb2xlIG9mIHJvbGVzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAhZXhwYW5kZWRSb3dzLmluY2x1ZGVzKHJvbGU/Ll9pZClcbiAgICAgICAgICAgICAgICAgID8gZXhwYW5kT3JDb2xsYXBzZSgnRVhQQU5EJywgcm9sZT8uX2lkKVxuICAgICAgICAgICAgICAgICAgOiBleHBhbmRPckNvbGxhcHNlKCdDT0xMQVBTRScsIHJvbGU/Ll9pZClcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyb2xlLWJveC1oZWFkaW5nIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXAtM1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtbGgtNFwiPlxuICAgICAgICAgICAgICAgIDx2dWktY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzeXN0ZW1Sb2xlc0lkcy5pbmNsdWRlcyhyb2xlPy5faWQpXCJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkSWRzLmluY2x1ZGVzKHJvbGU/Ll9pZClcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RJdGVtKCRldmVudCwgcm9sZSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3Z1aS1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hbWUgdngtZnMtMTIgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIidSb2xlIG5hbWUnXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVmbGFncm9sZSAmJiByb2xlPy5wZXJtaXNzaW9uR3JvdXBOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgPyByb2xlPy5wZXJtaXNzaW9uR3JvdXBOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgOiByb2xlPy5yb2xlTmFtZVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb2xlPy5yb2xlQWN0aW9ucz8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50IHZ4LWZzLTkgdngtZnctNjAwIHZ4LWxoLTMgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1tbC0yXCJcbiAgICAgICAgICAgICAgICAgID57eyByb2xlPy5yb2xlQWN0aW9ucz8ubGVuZ3RoIH19IFBFUk1JU1NJT05TPC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb2xlPy5saWNlbnNlVHlwZSA9PT0gJ3Bvd2VyIHVzZXJzJ1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInN0YXR1cy1sYWJlbCB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MucG93ZXItdXNlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5hbGwtdXNlcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgUG93ZXIgVXNlclxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm9sZT8ubGljZW5zZVR5cGUgPT09ICdsaWdodCB1c2VycydcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdGF0dXMtbGFiZWwgdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTFcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnBvd2VyLXVzZXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmFsbC11c2VyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIExpZ2h0IFVzZXJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImFycm93LWJ0biB2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW0tMCB2eC1wLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhZXhwYW5kZWRSb3dzLmluY2x1ZGVzKHJvbGU/Ll9pZClcIiBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5NzA7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImV4cGFuZGVkUm93cy5pbmNsdWRlcyhyb2xlPy5faWQpXCIgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOWU4OzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvbGUtYm94LWxpc3RcIiAqbmdJZj1cImV4cGFuZGVkUm93cy5pbmNsdWRlcyhyb2xlPy5faWQpXCI+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cInZ4LXAtMCB2eC1tLTBcIj5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtcC0zIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHBlcm1pc3Npb24gb2Ygcm9sZT8ucm9sZUFjdGlvbnNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xMiB2eC1sYWJlbC10eHRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcGVybWlzc2lvblRleHQocGVybWlzc2lvbikgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPCEtLSA8bGkgY2xhc3M9XCJ2eC1wLTMgdngtbGgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUgdngtZnMtMTIgdngtbGFiZWwtdHh0XCI+VmlldyBVc2VyIExpc3Q8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInZ4LXAtMyB2eC1saC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xMiB2eC1sYWJlbC10eHRcIj5NYW5hZ2UgVXNlcnMgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0XCI+KENyZWF0ZS9FZGl0L0RlbGV0ZS9EZWFjdGl2YXRlKTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInZ4LXAtMyB2eC1saC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xMiB2eC1sYWJlbC10eHRcIj5PdmVyLXJpZGUgTG9nIEluPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1wLTMgdngtbGgtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUgdngtZnMtMTIgdngtbGFiZWwtdHh0XCI+VmlldyBTdGF0dXRvcnkgSG9saWRheXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInZ4LXAtMyB2eC1saC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xMiB2eC1sYWJlbC10eHRcIj5NYW5hZ2UgU3RhdHV0b3J5IEhvbGlkYXlzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4gLS0+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGFwcC1uby1kYXRhXG4gICAgICAgICAgKm5nSWY9XCJyb2xlcz8ubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICBbbm9EYXRhSW1hZ2VdPVwiQVNTRVRTLnNlYXJjaF9kYXRhXCJcbiAgICAgICAgICBbbm9EYXRhVGV4dF09XCJcbiAgICAgICAgICAgIHNlYXJjaEtleT8ubGVuZ3RoID4gMCA/ICdObyBtYXRjaCBmb3VuZC4nIDogJ05vIFJvbGVzIEZvdW5kJ1xuICAgICAgICAgIFwiXG4gICAgICAgID48L2FwcC1uby1kYXRhPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwicm9sZXMtbGlzdC1mb290ZXJcIiAqbmdJZj1cIiFzaG93Q29uZmlybWF0aW9uXCI+XG4gICAgICA8dnVpLWZsb2F0aW5nLWJhciAoY2xvc2VFdmVudCk9XCJzYXZlTGlzdCgpXCIgKGNsb3NlTGlzdCk9XCJjbG9zZUxpc3QoKVwiPlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb3VudGVyXCIgKm5nSWY9XCJzZWxlY3RlZFJvbGVzPy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIj57e3NlbGVjdGVkUm9sZXM/Lmxlbmd0aH19PC9kaXY+IC0tPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZFJvbGVzPy5sZW5ndGhcIlxuICAgICAgICAgIGNsYXNzPVwiY291bnRlciByb2xlLWxpc3QtY291bnRlclwiXG4gICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgIChjbGljayk9XCJyb2xlLnBvcG92ZXIoKVwiXG4gICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzZWxlY3RlZFJvbGVzPy5sZW5ndGggfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm5hbWVcIlxuICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRSb2xlcz8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgaWQ9XCJwZXJtaXNzaW9uc2VsZWN0ZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZFJvbGVzPy5sZW5ndGggPT09IDFcIj57e1xuICAgICAgICAgICAgZmVhdHVyZWZsYWdyb2xlID8gXCJQZXJtaXNzaW9uIHNlbGVjdGVkXCIgOiBcIlJvbGUgc2VsZWN0ZWRcIlxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRSb2xlcz8ubGVuZ3RoID4gMVwiPnt7XG4gICAgICAgICAgICBmZWF0dXJlZmxhZ3JvbGUgPyBcIlBlcm1pc3Npb25zIHNlbGVjdGVkXCIgOiBcIlJvbGVzIHNlbGVjdGVkXCJcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3Z1aS1mbG9hdGluZy1iYXI+XG5cbiAgICAgIDxhcHAtcG9wb3ZlciAjcm9sZSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc2VsZWN0ZWRSb2xlc1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFzeXN0ZW1Sb2xlc0lkcy5pbmNsdWRlcyhkYXRhPy5faWQpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RJdGVtKHsgdGFyZ2V0OiB7IGNoZWNrZWQ6IGZhbHNlIH0gfSwgZGF0YSlcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVmbGFncm9sZSAmJiBkYXRhPy5wZXJtaXNzaW9uR3JvdXBOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgPyBkYXRhPy5wZXJtaXNzaW9uR3JvdXBOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgOiBkYXRhPy5yb2xlTmFtZVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJyb2xlcy1saXN0LWNvbmZpcm1hdGlvblwiICpuZ0lmPVwic2hvd0NvbmZpcm1hdGlvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24tdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1ibG9ja1wiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTMwOzwvaT48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCIgaWQ9XCJjb25maXJtYXRpb25tZXNzYWdlXCI+XG4gICAgICAgIHt7XG4gICAgICAgICAgZmVhdHVyZWZsYWdyb2xlXG4gICAgICAgICAgICA/IFwiVGhpcyBhY3Rpb24gd2lsbCB1cGRhdGUgdGhlIFBlcm1pc3Npb24gc2V0dGluZ3MgYW5kIGltcGFjdCB0aGUgb3duZXJzIHNlbGVjdGVkIGZvciB0aGUgUHJvZ3JhbS5cIlxuICAgICAgICAgICAgOiBcIlRoaXMgYWN0aW9uIHdpbGwgdXBkYXRlIHRoZSBSb2xlIHNldHRpbmdzIGFuZCBpbXBhY3QgdGhlIG93bmVycyBzZWxlY3RlZCBmb3IgdGhlIFByb2dyYW0uXCJcbiAgICAgICAgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24tYm90dG9tXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPkFyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBwcm9jZWVkPzwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm8tYnRuXCIgKGNsaWNrKT1cImNvbmZpcm1BY3Rpb24oJ05PJylcIj5OTzwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwieWVzLWJ0blwiIChjbGljayk9XCJjb25maXJtQWN0aW9uKCdZRVMnKVwiPllFUzwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { SearchPipe } from '../pipes/search.pipe';
3
- import { ASSETS } from '../../../constants/assessts.constants';
3
+ import { ASSETS } from '../../../constants/assets.constants';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
6
6
  import * as i2 from "../../../ui-kit/tooltip/tooltip.directive";
@@ -434,4 +434,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
434
434
  type: Input,
435
435
  args: ['selectedGroups']
436
436
  }] } });
437
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ncm91cC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXByb2dyYW0vY3JlYXRlLXByb2dyYW0tdWkvdXNlci1ncm91cC1saXN0L3VzZXItZ3JvdXAtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL2NyZWF0ZS1wcm9ncmFtLXVpL3VzZXItZ3JvdXAtbGlzdC91c2VyLWdyb3VwLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQU8vRCxNQUFNLE9BQU8sc0JBQXNCO0lBMkJqQyxJQUFhLFlBQVksQ0FBQyxLQUE2QztRQUNyRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUE0QkQsSUFBdUIsV0FBVyxDQUFDLEtBQVU7UUFDM0MsSUFBSSxLQUFLLElBQUksS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLHFCQUFx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S0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ08sWUFBWTtzQkFBeEIsS0FBSztnQkFHRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUVFLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFNRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBVUcsT0FBTztzQkFBZixLQUFLO2dCQUVpQixXQUFXO3NCQUFqQyxLQUFLO3VCQUFDLFVBQVU7Z0JBU1csZUFBZTtzQkFBMUMsS0FBSzt1QkFBQyxlQUFlO2dCQWdCYSx1QkFBdUI7c0JBQXpELEtBQUs7dUJBQUMsc0JBQXNCO2dCQVNwQixRQUFRO3NCQUFoQixLQUFLO2dCQTBCa0IsWUFBWTtzQkFBbkMsS0FBSzt1QkFBQyxXQUFXO2dCQVNXLGdCQUFnQjtzQkFBNUMsS0FBSzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWFyY2hQaXBlIH0gZnJvbSAnLi4vcGlwZXMvc2VhcmNoLnBpcGUnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Fzc2Vzc3RzLmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VzZXItZ3JvdXAtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWdyb3VwLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi91c2VyLWdyb3VwLWxpc3QuY29tcG9uZW50Lmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVXNlckdyb3VwTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEFTU0VUUyA9IEFTU0VUUztcbiAgQE91dHB1dCgpIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIGdyb3VwRW5hYmxlZCE6IGZhbHNlO1xuICBASW5wdXQoKSBwYW5lbFRpdGxlID0gJ1NlbGVjdCBVc2VyKHMpJztcbiAgQElucHV0KCkgc2luZ2xlU2VsZWN0ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNlbGVjdGVkUmV2aWV3ZXIgPSBmYWxzZTtcbiAgQElucHV0KCkgZmVhdHVyZWZsYWcgPSBmYWxzZTtcbiAgQElucHV0KCkgcmV2aWV3ZXJXb3JrZmxvd1R5cGU6IHN0cmluZyA9ICdTRVFVRU5USUFMJztcbiAgQE91dHB1dCgpIHJldmlld2VyV29ya2Zsb3dUeXBlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBtb2RlOiBzdHJpbmcgPSAnQ1JFQVRFJztcbiAgQElucHV0KCkgZmllbGRUeXBlID0gJyc7XG4gIHNlYXJjaEtleSA9ICcnO1xuICBpc1BhZ2luYXRpb246IGFueTtcbiAgYXBwcm92YWxXb3JrZmxvd1R5cGU6ICdBTllPTkUnIHwgJ1JPVU5EUk9CSU4nIHwgJ1NFUVVFTlRJQUwnID0gJ1NFUVVFTlRJQUwnO1xuICB1c2Vyc0xpc3Q6IGFueSA9IFtdO1xuICBncm91cHNMaXN0OiBhbnkgPSBbXTtcbiAgQElucHV0KCkgZnJvbVJlc3BvbnNpYmlsaXR5OiBhbnk7XG4gIEBJbnB1dCgpIGFzc2lnbm9ySWQ6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGFzc2lnbmVlSWRzOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSByZXZpZXdlcklkczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgb3ZlcnNlZXJJZHM6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIEZyb21Qcm9ncmFtID0gZmFsc2U7XG4gIEBJbnB1dCgpIHVzZXJMaXN0SW5mbyE6IGFueTtcbiAgQElucHV0KCkgZ3JvdXBMaXN0SW5mbyE6IGFueTtcbiAgQElucHV0KCkgZnJvbUFwcHJvdmFsV29ya2Zsb3c6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IGFwcHJvdmFsVHlwZSh2YWx1ZTogJ0FOWU9ORScgfCAnUk9VTkRST0JJTicgfCAnU0VRVUVOVElBTCcpIHtcbiAgICB0aGlzLmFwcHJvdmFsV29ya2Zsb3dUeXBlID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KCkgc2hvd0Z1dHVyZVVzZXJzU3dpdGNoOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZ1dHVyZVVzZXJzV2lsbFNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0FsbERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzR3JvdXBUYWJTaG93OiBib29sZWFuID0gdHJ1ZTtcblxuICBAT3V0cHV0KCkgZmV0Y2hVc2VyRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASW5wdXQoKSBkaXNhYmxlZElkczogYW55ID0gW107XG4gIEBJbnB1dCgpIG5vblJlbW92YWJsZVVzZXJJZHM6IGFueSA9IFtdO1xuICBASW5wdXQoKSBhbGxVc2VyU2VsZWN0ZWREaXNhYmxlZCA9IGZhbHNlO1xuICBzZWxlY3RlZFVzZXJzOiBhbnkgPSBbXTtcbiAgc2VsZWN0ZWRVc2VySWRzOiBhbnkgPSBbXTtcbiAgYWxsVXNlcnNJZHM6IGFueSA9IFtdO1xuICBhbGxVc2VyU2VsZWN0ZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBub25SZW1vdmFibGVHcm91cElkczogYW55ID0gW107XG4gIHNlbGVjdGVkR3JvdXBzOiBhbnkgPSBbXTtcbiAgc2VsZWN0ZWRHcm91cElkczogYW55ID0gW107XG4gIGFsbEdyb3Vwc0lkczogYW55ID0gW107XG4gIGFsbEdyb3VwU2VsZWN0ZWQgPSBmYWxzZTtcbiAgYWxsR3JvdXBTZWxlY3RlZERpc2FibGVkID0gZmFsc2U7XG4gIHNlYXJjaFBpcGUgPSBuZXcgU2VhcmNoUGlwZSgpO1xuXG4gIHVzZXJDdXJyZW50UGFnZSA9IDE7XG4gIGdyb3VwQ3VycmVudFBhZ2UgPSAxO1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIG5vbkRpc2FibGVkVXNlcnM6IGFueVtdID0gW107XG4gIEBJbnB1dCgndXNlcmxpc3QnKSBzZXQgc2V0VXNlckxpc3QodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnVzZXJzTGlzdCA9IFsuLi52YWx1ZV07XG4gICAgICB0aGlzLmFsbFVzZXJzSWRzID0gdGhpcy51c2Vyc0xpc3QubWFwKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQpO1xuICAgICAgdGhpcy5hbGxVc2VyU2VsZWN0ZWRTdGF0dXMoKTtcbiAgICAgIHRoaXMuc2V0VXNlckxpc3RJbml0KCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCdzZWxlY3RlZFVzZXJzJykgc2V0IHNldFNlbGVjdGVkVXNlcih2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VycyA9IHRoaXMudW5pcXVlQnlQcm9wKFxuICAgICAgICBbLi4udGhpcy5zZWxlY3RlZFVzZXJzLCAuLi52YWx1ZV0sXG4gICAgICAgICdtZW1iZXJfaWQnXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJJZHMgPSB0aGlzLnNlbGVjdGVkVXNlcnMubWFwKFxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkXG4gICAgICApO1xuICAgICAgdGhpcy5hbGxVc2VyU2VsZWN0ZWRTdGF0dXMoKTtcbiAgICAgIHRoaXMuc2V0VXNlckxpc3RJbml0KCk7XG4gICAgfVxuICB9XG5cbiAgZGVmYXVsdFNlbGVjdGVkVXNlcnM6IGFueSA9IFtdO1xuICBkZWZhdWx0U2VsZWN0ZWRVc2VySWRzOiBhbnkgPSBbXTtcbiAgQElucHV0KCdkZWZhdWx0U2VsZWN0ZWRVc2VycycpIHNldCBzZXREZWZhdWx0U2VsZWN0ZWRVc2Vycyh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5kZWZhdWx0U2VsZWN0ZWRVc2VycyA9IHRoaXMudW5pcXVlQnlQcm9wKFxuICAgICAgWy4uLnRoaXMuZGVmYXVsdFNlbGVjdGVkVXNlcnMsIC4uLnZhbHVlXSxcbiAgICAgICdtZW1iZXJfaWQnXG4gICAgKTtcbiAgICB0aGlzLmRlZmF1bHRTZWxlY3RlZFVzZXJJZHMgPSB0aGlzLmRlZmF1bHRTZWxlY3RlZFVzZXJzLm1hcChcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWRcbiAgICApO1xuICB9XG4gIEBJbnB1dCgpIHVzZXJUeXBlOiBzdHJpbmcgPSAnYXNzaWduZWVzJztcbiAgc2hvd0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xuXG4gIHNldFVzZXJMaXN0SW5pdCgpIHtcbiAgICBpZiAodGhpcy51c2VyQ3VycmVudFBhZ2UgPT09IDEpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZFVzZXJzO1xuICAgICAgY29uc3Qgb3RoZXJVc2VyID0gdGhpcy51c2Vyc0xpc3QuZmlsdGVyKFxuICAgICAgICAoZWxlOiBhbnkpID0+ICF0aGlzLnNlbGVjdGVkVXNlcklkcy5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZClcbiAgICAgICk7XG4gICAgICB0aGlzLnVzZXJzTGlzdCA9IHRoaXMudW5pcXVlQnlQcm9wKFxuICAgICAgICBbLi4uc2VsZWN0ZWQ/LnNvcnQoKSwgLi4ub3RoZXJVc2VyPy5zb3J0KCldLFxuICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgYWxsVXNlclNlbGVjdGVkU3RhdHVzKCkge1xuICAgIHRoaXMuYWxsVXNlclNlbGVjdGVkID1cbiAgICAgIHRoaXMuYWxsVXNlcnNJZHMuc29ydCgpLnRvU3RyaW5nKCkgPT09XG4gICAgICB0aGlzLnNlbGVjdGVkVXNlcklkcy5zb3J0KCk/LnRvU3RyaW5nKCk7XG4gICAgdGhpcy5hbGxVc2VyU2VsZWN0ZWREaXNhYmxlZCA9XG4gICAgICB0aGlzLmFsbFVzZXJzSWRzLnNvcnQoKS50b1N0cmluZygpID09PVxuICAgICAgICB0aGlzLnNlbGVjdGVkVXNlcklkcy5zb3J0KCk/LnRvU3RyaW5nKCkgJiZcbiAgICAgIHRoaXMuYWxsVXNlcnNJZHMuc29ydCgpLnRvU3RyaW5nKCkgPT09XG4gICAgICAgIHRoaXMubm9uUmVtb3ZhYmxlVXNlcklkcy5zb3J0KCk/LnRvU3RyaW5nKCk7XG4gIH1cblxuICBASW5wdXQoJ2dyb3VwTGlzdCcpIHNldCBzZXRHcm91cExpc3QodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmdyb3Vwc0xpc3QgPSBbLi4udmFsdWVdO1xuICAgICAgdGhpcy5hbGxHcm91cHNJZHMgPSB0aGlzLmdyb3Vwc0xpc3QubWFwKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCk7XG4gICAgICB0aGlzLmFsbEdyb3VwU2VsZWN0ZWRTdGF0dXMoKTtcbiAgICAgIHRoaXMuc2V0R3JvdXBMaXN0SW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgnc2VsZWN0ZWRHcm91cHMnKSBzZXQgc2V0U2VsZWN0ZWRHcm91cCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwcyA9IHRoaXMudW5pcXVlQnlQcm9wKFxuICAgICAgWy4uLnRoaXMuc2VsZWN0ZWRHcm91cHMsIC4uLnZhbHVlXSxcbiAgICAgICdncm91cF9pZCdcbiAgICApO1xuICAgIHRoaXMuc2VsZWN0ZWRHcm91cElkcyA9IHRoaXMuc2VsZWN0ZWRHcm91cHMubWFwKFxuICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkXG4gICAgKTtcbiAgICB0aGlzLmFsbEdyb3VwU2VsZWN0ZWRTdGF0dXMoKTtcbiAgICB0aGlzLnNldEdyb3VwTGlzdEluaXQoKTtcbiAgfVxuXG4gIHNldEdyb3VwTGlzdEluaXQoKSB7XG4gICAgaWYgKHRoaXMudXNlckN1cnJlbnRQYWdlID09PSAxKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRHcm91cHM7XG4gICAgICBjb25zdCBvdGhlckdyb3VwID0gdGhpcy5ncm91cHNMaXN0LmZpbHRlcihcbiAgICAgICAgKGVsZTogYW55KSA9PiAhdGhpcy5zZWxlY3RlZEdyb3VwSWRzLmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpXG4gICAgICApO1xuICAgICAgdGhpcy5ncm91cHNMaXN0ID0gdGhpcy51bmlxdWVCeVByb3AoXG4gICAgICAgIFsuLi5zZWxlY3RlZD8uc29ydCgpLCAuLi5vdGhlckdyb3VwPy5zb3J0KCldLFxuICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBhbGxHcm91cFNlbGVjdGVkU3RhdHVzKCkge1xuICAgIHRoaXMuYWxsR3JvdXBTZWxlY3RlZCA9XG4gICAgICB0aGlzLmFsbEdyb3Vwc0lkcz8uc29ydCgpPy50b1N0cmluZygpID09PVxuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwSWRzPy5zb3J0KCk/LnRvU3RyaW5nKCk7XG4gICAgdGhpcy5hbGxHcm91cFNlbGVjdGVkRGlzYWJsZWQgPVxuICAgICAgdGhpcy5hbGxHcm91cHNJZHMuc29ydCgpLnRvU3RyaW5nKCkgPT09XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cElkcy5zb3J0KCk/LnRvU3RyaW5nKCkgJiZcbiAgICAgIHRoaXMuYWxsR3JvdXBzSWRzLnNvcnQoKS50b1N0cmluZygpID09PVxuICAgICAgICB0aGlzLm5vblJlbW92YWJsZUdyb3VwSWRzLnNvcnQoKT8udG9TdHJpbmcoKTtcbiAgfVxuXG4gIHVzZXJQYWdlQ2hhbmdlKHBhZ2U6IGFueSkge1xuICAgIHRoaXMudXNlckN1cnJlbnRQYWdlID0gcGFnZTtcbiAgICB0aGlzLmZldGNoVXNlckRhdGEuZW1pdCh7IHBhZ2UsIHNlYXJjaEtleTogdGhpcy5zZWFyY2hLZXkgfSk7XG4gIH1cblxuICAvKipcbiAgICogIyMjIyBEZXNjcmlwdGlvblxuICAgKiBTZWxlY3RzIGl0ZW0gb3IgZGVzZWxlY3QgYSBpdG1lXG4gICAqIEBwYXJhbSBldnRcbiAgICogQHBhcmFtIHBheWxvYWRcbiAgICovXG4gIHNlbGVjdEl0ZW0oZXZ0OiBhbnksIHBheWxvYWQ6IGFueSkge1xuICAgIGV2dD8udGFyZ2V0Py5jaGVja2VkID09PSB0cnVlXG4gICAgICA/IHRoaXMubWFuaXB1bGF0ZVNlbGVjdGVkVXNlcignQUREJywgcGF5bG9hZClcbiAgICAgIDogdGhpcy5tYW5pcHVsYXRlU2VsZWN0ZWRVc2VyKCdERUxFVEUnLCBwYXlsb2FkKTtcbiAgfVxuXG4gIHNlbGVjdEl0ZW1SYWRpbyhldnQ6IGFueSwgcGF5bG9hZDogYW55KSB7XG4gICAgaWYgKGV2dD8udGFyZ2V0Py5jaGVja2VkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVXNlcnMgPSBbXTtcbiAgICAgIHRoaXMubWFuaXB1bGF0ZVNlbGVjdGVkVXNlcignQUREJywgcGF5bG9hZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICMjIyMgRGVzY3JpcHRpb25cbiAgICpcbiAgICogTWFuaXB1bGF0ZXMgc2VsZWN0ZWQgaXRlbXMgaW4gcm9sZSBsaXN0XG4gICAqIEBwYXJhbSBhY3Rpb24gOidBREQnIHwgJ0RFTEVURSdcbiAgICogQHBhcmFtIHBheWxvYWRcbiAgICovXG4gIG1hbmlwdWxhdGVTZWxlY3RlZFVzZXIoYWN0aW9uOiAnQUREJyB8ICdERUxFVEUnLCBwYXlsb2FkOiBhbnkpIHtcbiAgICBpZiAoYWN0aW9uID09PSAnQUREJykge1xuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzID0gdGhpcy51bmlxdWVCeVByb3AoXG4gICAgICAgIFsuLi50aGlzLnNlbGVjdGVkVXNlcnMsIC4uLltwYXlsb2FkXV0sXG4gICAgICAgICdtZW1iZXJfaWQnXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJJZHMgPSB0aGlzLnNlbGVjdGVkVXNlcnMubWFwKFxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAnREVMRVRFJykge1xuICAgICAgbGV0IGluZGV4ID0gdGhpcy5zZWxlY3RlZFVzZXJzLmZpbmRJbmRleChcbiAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCA9PT0gcGF5bG9hZD8ubWVtYmVyX2lkXG4gICAgICApO1xuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzID0gdGhpcy5zZWxlY3RlZFVzZXJzLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBwYXlsb2FkPy5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJJZHMgPSB0aGlzLnNlbGVjdGVkVXNlcklkcy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGUgIT09IHBheWxvYWQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmFsbFVzZXJTZWxlY3RlZFN0YXR1cygpO1xuICB9XG4gIHNlbGVjdEFsbFVzZXIoZXZ0OiBhbnkpIHtcbiAgICBpZiAodGhpcy5mcm9tUmVzcG9uc2liaWxpdHkpIHtcbiAgICAgIHRoaXMubm9uRGlzYWJsZWRVc2VycyA9IHRoaXMuZGlzYWJsZVVzZXJzKCk7XG4gICAgfVxuICAgIGlmIChldnQ/LnRhcmdldD8uY2hlY2tlZCA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzID0gdGhpcy5mcm9tUmVzcG9uc2liaWxpdHlcbiAgICAgICAgPyB0aGlzLm5vbkRpc2FibGVkVXNlcnNcbiAgICAgICAgOiB0aGlzLnVzZXJzTGlzdDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VySWRzID0gdGhpcy5mcm9tUmVzcG9uc2liaWxpdHlcbiAgICAgICAgPyB0aGlzLm5vbkRpc2FibGVkVXNlcnMubWFwKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQpXG4gICAgICAgIDogdGhpcy51c2Vyc0xpc3QubWFwKChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVXNlcnMgPSB0aGlzLnVzZXJzTGlzdC5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICB0aGlzLm5vblJlbW92YWJsZVVzZXJJZHMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJJZHMgPSB0aGlzLnNlbGVjdGVkVXNlcnMubWFwKFxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmFsbFVzZXJTZWxlY3RlZFN0YXR1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqICMjIyMgRGVzY3JpcHRpb25cbiAgICogU2VsZWN0cyBpdGVtIG9yIGRlc2VsZWN0IGEgaXRtZVxuICAgKiBAcGFyYW0gZXZ0XG4gICAqIEBwYXJhbSBwYXlsb2FkXG4gICAqL1xuICBzZWxlY3RHcm91cChldnQ6IGFueSwgcGF5bG9hZDogYW55KSB7XG4gICAgZXZ0Py50YXJnZXQ/LmNoZWNrZWQgPT09IHRydWVcbiAgICAgID8gdGhpcy5tYW5pcHVsYXRlU2VsZWN0ZWRHcm91cCgnQUREJywgcGF5bG9hZClcbiAgICAgIDogdGhpcy5tYW5pcHVsYXRlU2VsZWN0ZWRHcm91cCgnREVMRVRFJywgcGF5bG9hZCk7XG4gIH1cblxuICAvKipcbiAgICogIyMjIyBEZXNjcmlwdGlvblxuICAgKlxuICAgKiBNYW5pcHVsYXRlcyBzZWxlY3RlZCBpdGVtcyBpbiByb2xlIGxpc3RcbiAgICogQHBhcmFtIGFjdGlvbiA6J0FERCcgfCAnREVMRVRFJ1xuICAgKiBAcGFyYW0gcGF5bG9hZFxuICAgKi9cbiAgbWFuaXB1bGF0ZVNlbGVjdGVkR3JvdXAoYWN0aW9uOiAnQUREJyB8ICdERUxFVEUnLCBwYXlsb2FkOiBhbnkpIHtcbiAgICBpZiAoYWN0aW9uID09PSAnQUREJykge1xuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwcyA9IHRoaXMudW5pcXVlQnlQcm9wKFxuICAgICAgICBbLi4udGhpcy5zZWxlY3RlZEdyb3VwcywgLi4uW3BheWxvYWRdXSxcbiAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cElkcyA9IHRoaXMuc2VsZWN0ZWRHcm91cHMubWFwKFxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWRcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICdERUxFVEUnKSB7XG4gICAgICBsZXQgaW5kZXggPSB0aGlzLnNlbGVjdGVkR3JvdXBzLmZpbmRJbmRleChcbiAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkID09PSBwYXlsb2FkPy5ncm91cF9pZFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cHMgPSB0aGlzLnNlbGVjdGVkR3JvdXBzLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IHBheWxvYWQ/Lmdyb3VwX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cElkcyA9IHRoaXMuc2VsZWN0ZWRHcm91cElkcy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGUgIT09IHBheWxvYWQ/Lmdyb3VwX2lkXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYWxsR3JvdXBTZWxlY3RlZFN0YXR1cygpO1xuICB9XG4gIHNlbGVjdEFsbEdyb3VwKGV2dDogYW55KSB7XG4gICAgY29uc3QgZ3JvdXBEYXRhID0gdGhpcy5zZWFyY2hQaXBlLnRyYW5zZm9ybShcbiAgICAgIHRoaXMuZ3JvdXBzTGlzdCxcbiAgICAgIHRoaXMuc2VhcmNoS2V5LFxuICAgICAgJ2dyb3VwX25hbWUnXG4gICAgKTtcbiAgICBpZiAoZXZ0Py50YXJnZXQ/LmNoZWNrZWQgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cHMgPSBncm91cERhdGE7XG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBJZHMgPSBncm91cERhdGEubWFwKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cHMgPSB0aGlzLmdyb3Vwc0xpc3QuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgdGhpcy5ub25SZW1vdmFibGVHcm91cElkcy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKVxuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cElkcyA9IHRoaXMuc2VsZWN0ZWRHcm91cHMubWFwKFxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWRcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuYWxsR3JvdXBTZWxlY3RlZFN0YXR1cygpO1xuICB9XG5cbiAgYW5pbWF0aW9uID0gdHJ1ZTtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGxldCBkaXNhYmxlZElkcyA9IFsuLi50aGlzLmRpc2FibGVkSWRzLCAuLi50aGlzLm5vblJlbW92YWJsZVVzZXJJZHNdO1xuICAgIHRoaXMuZGlzYWJsZWRJZHMgPSBbLi4ubmV3IFNldChkaXNhYmxlZElkcyldO1xuICAgIHRoaXMucGFnaW5hdGlvblZpc2libGUoKTtcbiAgICB0aGlzLmFuaW1hdGlvbiA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0sIDMwMCk7XG4gIH1cbiAgY3VycmVudFRhYiA9ICdVU0VSJztcbiAgc3dpdGNoVGFiKHRhYjogc3RyaW5nKSB7XG4gICAgdGhpcy5jdXJyZW50VGFiID0gdGFiO1xuICAgIHRoaXMuc2VhcmNoS2V5ID0gJyc7XG4gIH1cblxuICBzYXZlTGlzdCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmRlZmF1bHRTZWxlY3RlZFVzZXJJZHMgJiZcbiAgICAgIHRoaXMuZGVmYXVsdFNlbGVjdGVkVXNlcklkcz8ubGVuZ3RoICYmXG4gICAgICB0aGlzLnNlbGVjdGVkVXNlcklkcyAmJlxuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJJZHM/Lmxlbmd0aFxuICAgICkge1xuICAgICAgdGhpcy5kZWZhdWx0U2VsZWN0ZWRVc2VySWRzPy5mb3JFYWNoKChpZDogbnVtYmVyKTogYW55ID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVXNlcklkcz8uaW5jbHVkZXMoaWQpKSB7XG4gICAgICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc2hvd0NvbmZpcm1hdGlvbilcbiAgICAgIHRoaXMuc2F2ZS5lbWl0KHtcbiAgICAgICAgdXNlcnM6IHRoaXMuc2VsZWN0ZWRVc2VycyxcbiAgICAgICAgZ3JvdXBzOiB0aGlzLnNlbGVjdGVkR3JvdXBzLFxuICAgICAgICBmdXR1cmVVc2Vyc1dpbGxTZWxlY3Q6IHRoaXMuZnV0dXJlVXNlcnNXaWxsU2VsZWN0LFxuICAgICAgfSk7XG4gIH1cblxuICBjb25maXJtQWN0aW9uKGV2dDogJ1lFUycgfCAnTk8nKSB7XG4gICAgaWYgKGV2dCA9PT0gJ1lFUycpIHtcbiAgICAgIHRoaXMuc2F2ZS5lbWl0KHtcbiAgICAgICAgdXNlcnM6IHRoaXMuc2VsZWN0ZWRVc2VycyxcbiAgICAgICAgZ3JvdXBzOiB0aGlzLnNlbGVjdGVkR3JvdXBzLFxuICAgICAgICBmdXR1cmVVc2Vyc1dpbGxTZWxlY3Q6IHRoaXMuZnV0dXJlVXNlcnNXaWxsU2VsZWN0LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChldnQgPT09ICdOTycpIHtcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlTGlzdCgpIHtcbiAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICAvL1xuXG4gIC8qKlxuICAgKiAjIyMjIERlc2NyaXB0aW9uXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHVuaXF1ZSBhcnJheSBvZiBvYmplY3QgYmFzZWQgb24gdW5pcXVlIGtleVxuICAgKiBAcGFyYW0gYXJyYXlcbiAgICogQHBhcmFtIGtleVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdW5pcXVlQnlQcm9wKGFycmF5OiBhbnksIGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgICBhcnJheVxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgIChhY2M6IGFueSwgaXRlbTogYW55KSA9PiAoXG4gICAgICAgICAgICBpdGVtICYmIGl0ZW1ba2V5XSAmJiBhY2Muc2V0KGl0ZW1ba2V5XSwgaXRlbSksIGFjY1xuICAgICAgICAgICksXG4gICAgICAgICAgbmV3IE1hcCgpXG4gICAgICAgIClcbiAgICAgICAgLnZhbHVlcygpXG4gICAgKTtcbiAgfVxuXG4gIHBhZ2luYXRpb25WaXNpYmxlKCkge1xuICAgIGlmICh0aGlzLnVzZXJMaXN0SW5mbz8udG90YWxfcGFnZXMgPiAxKSB7XG4gICAgICB0aGlzLmlzUGFnaW5hdGlvbiA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNQYWdpbmF0aW9uID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdvcmtmbG93VHlwZUNoYW5nZWQoZXZlbnQ6IHN0cmluZykge1xuICAgIHRoaXMucmV2aWV3ZXJXb3JrZmxvd1R5cGUgPSBldmVudDtcbiAgICB0aGlzLnJldmlld2VyV29ya2Zsb3dUeXBlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgZGlzYWJsZVVzZXJzKCkge1xuICAgIHN3aXRjaCAodGhpcy5mcm9tUmVzcG9uc2liaWxpdHkpIHtcbiAgICAgIGNhc2UgJ0Fzc2lnbmVlJzpcbiAgICAgICAgdGhpcy5ub25EaXNhYmxlZFVzZXJzID0gdGhpcy51c2Vyc0xpc3QuZmlsdGVyKFxuICAgICAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgICAgICAhKFxuICAgICAgICAgICAgICB0aGlzLnJldmlld2VySWRzPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpIHx8XG4gICAgICAgICAgICAgIHRoaXMub3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdSZXZpZXdlcic6XG4gICAgICAgIHRoaXMubm9uRGlzYWJsZWRVc2VycyA9IHRoaXMudXNlcnNMaXN0LmZpbHRlcihcbiAgICAgICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgdGhpcy5vdmVyc2Vlcklkcz8uaW5jbHVkZXModXNlcj8ubWVtYmVyX2lkKSB8fFxuICAgICAgICAgICAgICB0aGlzLmFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnT3ZlcnNlZXInOlxuICAgICAgICB0aGlzLm5vbkRpc2FibGVkVXNlcnMgPSB0aGlzLnVzZXJzTGlzdC5maWx0ZXIoXG4gICAgICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgIHRoaXMuYXNzaWdub3JJZD8uaW5jbHVkZXModXNlcj8ubWVtYmVyX2lkKSB8fFxuICAgICAgICAgICAgICB0aGlzLnJldmlld2VySWRzPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpIHx8XG4gICAgICAgICAgICAgIHRoaXMuYXNzaWduZWVJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ub25EaXNhYmxlZFVzZXJzO1xuICB9XG5cbiAgc2V0QWxsVXNlcnNTZWxlY3RlZChldmVudDogYW55KSB7XG4gICAgdGhpcy5mdXR1cmVVc2Vyc1dpbGxTZWxlY3QgPSBldmVudDtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VycyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwcyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJJZHMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cElkcyA9IFtdO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInVzZXItZ3JvdXAtbGlzdFwiIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwidXNlci1ncm91cC1saXN0LWhlYWRcIj5cbiAgICA8aDMgY2xhc3M9XCJ1c2VyLWdyb3VwLWxpc3QtdGl0bGVcIj57eyBwYW5lbFRpdGxlIH19PC9oMz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ1c2VyLWdyb3VwLWxpc3QtYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWdyb3VwLWxpc3QtYm9keS1pbm5lclwiPlxuICAgICAgPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwibG9hZGluZ1wiPjwvYXBwLWxvYWRlci1pbmxpbmU+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidXNlci1ncm91cC1saXN0LXRhYiB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1tYi0yXCJcbiAgICAgICAgKm5nSWY9XCJncm91cEVuYWJsZWRcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUYWIoJ1VTRVInKVwiXG4gICAgICAgICAgICBjbGFzcz1cInRhYi1idG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1wYi0yIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50VGFiID09PSAnVVNFUidcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFVTRVJTXG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LW1sLTIgdngtbGgtNFwiXG4gICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgIHNlYXJjaEtleT8ubGVuZ3RoICYmIGN1cnJlbnRUYWIgPT09IFwiVVNFUlwiXG4gICAgICAgICAgICAgICAgICA/ICh1c2Vyc0xpc3QgfCBmaWx0ZXIgOiBzZWFyY2hLZXkpPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgIDogdXNlcnNMaXN0Py5sZW5ndGggfHwgdXNlckxpc3RJbmZvPy50b3RhbF9pdGVtc1xuICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiaXNHcm91cFRhYlNob3dcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFRhYignR1JPVVAnKVwiXG4gICAgICAgICAgICBjbGFzcz1cInRhYi1idG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1wYi0yIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50VGFiID09PSAnR1JPVVAnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmZWF0dXJlZmxhZyA/IFwiVVNFUiBHUk9VUFNcIiA6IFwiR1JPVVBTXCIgfX1cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbWwtMiB2eC1saC00XCJcbiAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgc2VhcmNoS2V5Py5sZW5ndGggJiYgY3VycmVudFRhYiA9PT0gXCJHUk9VUFwiXG4gICAgICAgICAgICAgICAgICA/IChncm91cHNMaXN0IHwgc2VhcmNoIDogc2VhcmNoS2V5IDogXCJncm91cF9uYW1lXCIpPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgIDogZ3JvdXBzTGlzdD8ubGVuZ3RoIHx8IGdyb3VwTGlzdEluZm8/LnRvdGFsX2l0ZW1zXG4gICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImZ1dHVyZS11c2VyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICpuZ0lmPVwic2hvd0Z1dHVyZVVzZXJzU3dpdGNoXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZVwiPlxuICAgICAgICAgICAgVmlzaWJsZSB0byBBbGwgQ3VycmVudCAmIEZ1dHVyZSBVc2Vyc1xuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMSB2eC1tci0xXCJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAnSWYgc2VsZWN0ZWQsIHRoaXMgcG9saWN5IHdpbGwgYmUgdmlzaWJsZSB0byBhbGwgdXNlcnMgdGhhdCBhcmUgY3VycmVudGx5IGFjdGl2ZSBpbiB5b3VyIFZDb21wbHkgYWNjb3VudCBhbmQgdXNlcnMgdGhhdCBtaWdodCBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgID5cbiAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgW25nVmFsdWVdPVwiZnV0dXJlVXNlcnNXaWxsU2VsZWN0XCJcbiAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNldEFsbFVzZXJzU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvYXBwLWNzLXN3aXRjaD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1ibG9jayB2eC1tYi0yXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBiOzwvaT5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgKm5nSWY9XCIhZmVhdHVyZWZsYWdcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoS2V5XCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xuICAgICAgICAgICAgY3VycmVudFRhYiA9PT0gJ1VTRVInID8gJ1NlYXJjaCBVc2VyJyA6ICdTZWFyY2ggR3JvdXAnXG4gICAgICAgICAgfX1cIlxuICAgICAgICAvPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAqbmdJZj1cImZlYXR1cmVmbGFnXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaEtleVwiXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcbiAgICAgICAgICAgIGN1cnJlbnRUYWIgPT09ICdVU0VSJyA/ICdTZWFyY2ggVXNlcicgOiAnU2VhcmNoIFVzZXIgR3JvdXAnXG4gICAgICAgICAgfX1cIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50VGFiID09PSAnVVNFUicgJiYgIWxvYWRpbmdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZXJzTGlzdCB8IGZpbHRlciA6IHNlYXJjaEtleSBhcyB1c2Vyc1wiPlxuICAgICAgICAgIDx2dWktcGFnaW5hdGlvblxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgdXNlckxpc3RJbmZvPy50b3RhbF9wYWdlcyA+IDEgJiZcbiAgICAgICAgICAgICAgdXNlcnNMaXN0Py5sZW5ndGggIT09IHVzZXJMaXN0SW5mbz8udG90YWxfaXRlbXNcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbY3VycmVudFBhZ2VdPVwidXNlckN1cnJlbnRQYWdlXCJcbiAgICAgICAgICAgIFt0b3RhbFBhZ2VdPVwidXNlckxpc3RJbmZvPy50b3RhbF9wYWdlc1wiXG4gICAgICAgICAgICAocGFnZUNoYW5nZWQpPVwidXNlclBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvdnVpLXBhZ2luYXRpb24+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJ1c2VyLWdyb3VwLWxpc3QtbWlkXCJcbiAgICAgICAgICAgIFtjbGFzcy53aXRoLXBhZ2luYXRpb25dPVwiaXNQYWdpbmF0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlcnM/Lmxlbmd0aCA+IDA7IGVsc2Ugbm91c2VyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWxpc3Qtc2VsZWN0IHZ4LW1iLTJcIj5cbiAgICAgICAgICAgICAgICA8dnVpLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIiFzaW5nbGVTZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgI3VzZXJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbFVzZXJTZWxlY3RlZCB8fCBmdXR1cmVVc2Vyc1dpbGxTZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICBhbGxVc2VyU2VsZWN0ZWREaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAgICAgICBmdXR1cmVVc2Vyc1dpbGxTZWxlY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgaXNBbGxEaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0QWxsVXNlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXNlci1uYW1lIHZ4LWZzLTEyIHZ4LWZ3LTYwMCB2eC1sYWJlbC10eHQgdngtdHQtbm9uZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICF1c2VyPy5jaGVja2VkID8gXCJTZWxlY3QgQWxsXCIgOiBcIkRlc2VsZWN0IEFsbFwiIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3Z1aS1jaGVja2JveD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInZ4LW0tMCB2eC1wLTAgdngtZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB1c2VyIG9mIHVzZXJzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtbWItM1wiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc2luZ2xlU2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b29sdGlwTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZnJvbVJlc3BvbnNpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByZXZpZXdlcklkc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogb3ZlcnNlZXJJZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFzc2lnbm9ySWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFzc2lnbmVlSWRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnbWVtYmVyX2lkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZGlzYWJsZWRJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEZyb21Qcm9ncmFtXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHZ1aS1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RJdGVtKCRldmVudCwgdXNlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZElkcz8uaW5jbHVkZXModXNlcj8ubWVtYmVyX2lkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmdXR1cmVVc2Vyc1dpbGxTZWxlY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBbGxEaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFVzZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnV0dXJlVXNlcnNXaWxsU2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJ1c2VyLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdXNlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvdnVpLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1tYi0zXCIgKm5nSWY9XCJzaW5nbGVTZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCIncmFkaW8tc2VsZWN0b3InXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2VsZWN0SXRlbVJhZGlvKCRldmVudCwgdXNlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3J4LWNhdGVnb3J5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFVzZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwidXNlcj8ubWVtYmVyX2VtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB1c2VyPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm91c2VyPlxuICAgICAgICAgICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFsb2FkaW5nXCJcbiAgICAgICAgICAgICAgICBbbm9EYXRhSW1hZ2VdPVwiQVNTRVRTLnNlYXJjaF9kYXRhXCJcbiAgICAgICAgICAgICAgICBbbm9EYXRhVGV4dF09XCJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEtleT8ubGVuZ3RoID4gMCA/ICdObyBtYXRjaCBmb3VuZC4nIDogJ05vIFVzZXJzIGZvdW5kLidcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+PC9hcHAtbm8tZGF0YT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50VGFiID09PSAnR1JPVVAnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cImdyb3Vwc0xpc3QgfCBzZWFyY2ggOiBzZWFyY2hLZXkgOiAnZ3JvdXBfbmFtZScgYXMgZ3JvdXBzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwidXNlci1ncm91cC1saXN0LW1pZFwiXG4gICAgICAgICAgICBbY2xhc3Mud2l0aC1wYWdpbmF0aW9uXT1cImlzUGFnaW5hdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3Vwcz8ubGVuZ3RoID4gMDsgZWxzZSBub2dyb3VwXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWxpc3Qtc2VsZWN0IHZ4LW1iLTJcIj5cbiAgICAgICAgICAgICAgICA8dnVpLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAjZ3JvdXBcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbEdyb3VwU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFsbEdyb3VwU2VsZWN0ZWREaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdEFsbEdyb3VwKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1c2VyLW5hbWUgdngtZnMtMTIgdngtZnctNjAwIHZ4LWxhYmVsLXR4dCB2eC10dC1ub25lXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgIWdyb3VwPy5jaGVja2VkID8gXCJTZWxlY3QgQWxsXCIgOiBcIkRlc2VsZWN0IEFsbFwiIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3Z1aS1jaGVja2JveD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInZ4LW0tMCB2eC1wLTAgdngtZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1tYi0zXCIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICA8dnVpLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RHcm91cCgkZXZlbnQsIGdyb3VwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbm9uUmVtb3ZhYmxlR3JvdXBJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkR3JvdXBJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1c2VyLW5hbWUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC13LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJncm91cD8uZ3JvdXBfbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLW5hbWVcIj57eyBncm91cD8uZ3JvdXBfbmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudGVyIHZ4LWZzLTkgdngtZnctNjAwIHZ4LXBsLTEgdngtcHItMSB2eC1saC0zIHZ4LXR0LXVwcGVyY2FzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID57eyBncm91cD8ubWVtYmVyX2NvdW50IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwPy5tZW1iZXJfY291bnQgPiAxID8gXCJVU0VSU1wiIDogXCJVU0VSXCIgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC92dWktY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vZ3JvdXA+XG4gICAgICAgICAgICAgIDxhcHAtbm8tZGF0YVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmdcIlxuICAgICAgICAgICAgICAgIFtub0RhdGFJbWFnZV09XCJBU1NFVFMuc2VhcmNoX2RhdGFcIlxuICAgICAgICAgICAgICAgIFtub0RhdGFUZXh0XT1cIlxuICAgICAgICAgICAgICAgICAgc2VhcmNoS2V5Py5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgID8gJ05vIG1hdGNoIGZvdW5kLidcbiAgICAgICAgICAgICAgICAgICAgOiAnTm8gZGF0YSB0byBkaXNwbGF5LidcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+PC9hcHAtbm8tZGF0YT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidXNlci1ncm91cC1saXN0LWZvb3RlclwiPlxuICAgICAgPHZ1aS1mbG9hdGluZy1iYXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAoIXNpbmdsZVNlbGVjdCB8fCAoIXNpbmdsZVNlbGVjdCAmJiBzZWxlY3RlZFJldmlld2VyKSkgJiYgIWxvYWRpbmdcbiAgICAgICAgXCJcbiAgICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZUxpc3QoKVwiXG4gICAgICAgIChjbG9zZUxpc3QpPVwiY2xvc2VMaXN0KClcIlxuICAgICAgICAod29ya2Zsb3dUeXBlQ2hhbmdlZCk9XCJ3b3JrZmxvd1R5cGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICBbc2VsZWN0ZWRXb3JrZmxvd109XCJyZXZpZXdlcldvcmtmbG93VHlwZVwiXG4gICAgICAgIFtzaG93V29ya2Zsb3ddPVwic2VsZWN0ZWRSZXZpZXdlclwiXG4gICAgICAgIFtncm91cFNlbGVjdGVkXT1cInNlbGVjdGVkR3JvdXBzXCJcbiAgICAgICAgW21vZGVdPVwibW9kZVwiXG4gICAgICAgIFtuZXh0RGlzYWJsZWRdPVwiZnJvbUFwcHJvdmFsV29ya2Zsb3cgJiYgc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoID09PSAwXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFncm91cEVuYWJsZWRcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTIgdngtbXItMlwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiBzZWxlY3RlZFVzZXJzPy5zbGljZSgwLCAxKTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFub25SZW1vdmFibGVVc2VySWRzPy5pbmNsdWRlcyhlbGVtZW50Py5tZW1iZXJfaWQpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oeyB0YXJnZXQ6IHsgY2hlY2tlZDogZmFsc2UgfSB9LCBlbGVtZW50KVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGZyb21BcHByb3ZhbFdvcmtmbG93ICYmXG4gICAgICAgICAgICAgICAgYXBwcm92YWxXb3JrZmxvd1R5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ3NlcXVlbnRpYWwnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwid29ya2Zsb3dMYXZlbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTQgdngtbXItMSB2eC10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IDEgPT0gc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoID8gXCJGaW5hbFwiIDogMSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImVsZW1lbnQ/Lm1lbWJlcl9uYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgID57eyBlbGVtZW50Py5tZW1iZXJfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkVXNlcnM/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdyb3VwRGlzYWJsZS5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHNlbGVjdGVkVXNlcnM/LnNsaWNlKDEpPy5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIHNlbGVjdGVkVXNlcnM/LnNsaWNlKDAsMSk7bGV0IGkgPSBpbmRleFwiPjxpICpuZ0lmPVwiIW5vblJlbW92YWJsZVVzZXJJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm1lbWJlcl9pZClcIiAoY2xpY2spPVwic2VsZWN0SXRlbSh7dGFyZ2V0OntjaGVja2VkOmZhbHNlfX0sZWxlbWVudClcIiBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+IDxzcGFuPnt7ZWxlbWVudD8ubWVtYmVyX25hbWV9fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50ZXJcIiAqbmdJZj1cInNlbGVjdGVkVXNlcnM/Lmxlbmd0aD4xXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXBEaXNhYmxlLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIj4re3tzZWxlY3RlZFVzZXJzPy5zbGljZSgxKT8ubGVuZ3RofX08L2Rpdj4gLS0+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ1c2VyLWdyb3VwLWNoaXBcIlxuICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRVc2Vycz8ubGVuZ3RoICYmIGdyb3VwRW5hYmxlZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zc1wiXG4gICAgICAgICAgICAqbmdJZj1cIiFub25SZW1vdmFibGVVc2VySWRzPy5pbmNsdWRlcyhzZWxlY3RlZFVzZXJzWzBdPy5tZW1iZXJfaWQpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgc2VsZWN0SXRlbSh7IHRhcmdldDogeyBjaGVja2VkOiBmYWxzZSB9IH0sIHNlbGVjdGVkVXNlcnNbMF0pXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWdyb3VwLW5hbWVcIj57eyBzZWxlY3RlZFVzZXJzWzBdPy5tZW1iZXJfbmFtZSB9fTwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cEVuYWJsZWRcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudGVyXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZFVzZXJzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAoY2xpY2spPVwidXNlckNvdW50LnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAre3sgc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZSB1c2VyR3JvdXAtbmFtZVwiPlxuICAgICAgICAgIDwhLS0ge3tzZWxlY3RlZEdyb3VwcyAmJiBzZWxlY3RlZEdyb3Vwcz8ubGVuZ3RoID4gMCA/JyAmICc6Jyd9fSAtLT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXJHcm91cC10ZXh0XCIgKm5nSWY9XCJzZWxlY3RlZFVzZXJzPy5sZW5ndGggPT09IDFcIlxuICAgICAgICAgICAgPlVzZXIge3sgc2VsZWN0ZWRHcm91cHM/Lmxlbmd0aCA+IDAgPyBcIiAmIFwiIDogXCIgc2VsZWN0ZWRcIiB9fTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXJHcm91cC10ZXh0XCIgKm5nSWY9XCJzZWxlY3RlZFVzZXJzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5Vc2VycyB7eyBzZWxlY3RlZEdyb3Vwcz8ubGVuZ3RoID4gMCA/IFwiICYgXCIgOiBcInNlbGVjdGVkXCIgfX08L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWdyb3VwLWNoaXBcIiAqbmdJZj1cInNlbGVjdGVkR3JvdXBzPy5sZW5ndGhcIj5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zc1wiXG4gICAgICAgICAgICAqbmdJZj1cIiFub25SZW1vdmFibGVHcm91cElkcz8uaW5jbHVkZXMoc2VsZWN0ZWRHcm91cHNbMF0/Lmdyb3VwX2lkKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgIHNlbGVjdEdyb3VwKHsgdGFyZ2V0OiB7IGNoZWNrZWQ6IGZhbHNlIH0gfSwgc2VsZWN0ZWRHcm91cHNbMF0pXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWdyb3VwLW5hbWVcIj57eyBzZWxlY3RlZEdyb3Vwc1swXT8uZ3JvdXBfbmFtZSB9fTwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY291bnRlciBncm91cFwiXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkR3JvdXBzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgIChjbGljayk9XCJncm91cENvdW50LnBvcG92ZXIoKVwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICAre3sgc2VsZWN0ZWRHcm91cHM/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lIHVzZXJHcm91cC1uYW1lXCI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZEdyb3Vwcz8ubGVuZ3RoID09PSAxXCI+e3tcbiAgICAgICAgICAgIGZlYXR1cmVmbGFnID8gXCJVc2VyIEdyb3VwIHNlbGVjdGVkXCIgOiBcIkdyb3VwIHNlbGVjdGVkXCJcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdGVkR3JvdXBzPy5sZW5ndGggPiAxXCI+e3tcbiAgICAgICAgICAgIGZlYXR1cmVmbGFnID8gXCJVc2VyIEdyb3VwcyBzZWxlY3RlZFwiIDogXCJHcm91cHMgc2VsZWN0ZWRcIlxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8YXBwLXBvcG92ZXIgI3VzZXJDb3VudCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiBzZWxlY3RlZFVzZXJzIHwgc2xpY2UgOiAxOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIW5vblJlbW92YWJsZVVzZXJJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm1lbWJlcl9pZClcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEl0ZW0oeyB0YXJnZXQ6IHsgY2hlY2tlZDogZmFsc2UgfSB9LCBlbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgZWxlbWVudD8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNncm91cERpc2FibGUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIHNlbGVjdGVkVXNlcnMuc2xpY2UoMSk7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFub25SZW1vdmFibGVVc2VySWRzPy5pbmNsdWRlcyhlbGVtZW50Py5tZW1iZXJfaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RJdGVtKHsgdGFyZ2V0OiB7IGNoZWNrZWQ6IGZhbHNlIH0gfSwgZWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb21BcHByb3ZhbFdvcmtmbG93ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbFdvcmtmbG93VHlwZS50b0xvd2VyQ2FzZSgpID09PSAnc2VxdWVudGlhbCdcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid29ya2Zsb3dMYXZlbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTQgdngtbXItMSB2eC10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICBpICsgMSA9PT0gc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoIC0gMSA/IFwiRmluYWxcIiA6IGkgKyAyXG4gICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBlbGVtZW50Py5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cblxuICAgICAgICA8YXBwLXBvcG92ZXIgI2dyb3VwQ291bnQgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCBvZiBzZWxlY3RlZEdyb3VwcyB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbm9uUmVtb3ZhYmxlR3JvdXBJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lmdyb3VwX2lkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0R3JvdXAoeyB0YXJnZXQ6IHsgY2hlY2tlZDogZmFsc2UgfSB9LCBlbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgZWxlbWVudD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDwvdnVpLWZsb2F0aW5nLWJhcj5cbiAgICAgIDx2dWktZmxvYXRpbmctYmFyXG4gICAgICAgICpuZ0lmPVwic2luZ2xlU2VsZWN0ICYmICFsb2FkaW5nXCJcbiAgICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZUxpc3QoKVwiXG4gICAgICAgIChjbG9zZUxpc3QpPVwiY2xvc2VMaXN0KClcIlxuICAgICAgICBbbmV4dERpc2FibGVkXT1cImZyb21BcHByb3ZhbFdvcmtmbG93ICYmIHNlbGVjdGVkVXNlcnM/Lmxlbmd0aCA9PT0gMFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwXCIgKm5nSWY9XCJzZWxlY3RlZFVzZXJzPy5sZW5ndGhcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICBzZWxlY3RJdGVtKHsgdGFyZ2V0OiB7IGNoZWNrZWQ6IGZhbHNlIH0gfSwgc2VsZWN0ZWRVc2Vyc1swXSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+IHt7IHNlbGVjdGVkVXNlcnNbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdnVpLWZsb2F0aW5nLWJhcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInVzZXItZ3JvdXAtbGlzdC1jb25maXJtYXRpb25cIiAqbmdJZj1cInNob3dDb25maXJtYXRpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLXRvcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImljb24tYmxvY2tcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkzMDs8L2k+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dFwiPlxuICAgICAgICBUaGlzIGFjdGlvbiB3aWxsIHJlc2V0IHRoZSBkZWZhdWx0IHt7IHVzZXJUeXBlIH19IHNlbGVjdGVkIGZvciB0aGVcbiAgICAgICAgUHJvZ3JhbS5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24tYm90dG9tXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPkFyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBwcm9jZWVkPzwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm8tYnRuXCIgKGNsaWNrKT1cImNvbmZpcm1BY3Rpb24oJ05PJylcIj5OTzwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwieWVzLWJ0blwiIChjbGljayk9XCJjb25maXJtQWN0aW9uKCdZRVMnKVwiPllFUzwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
437
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ncm91cC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3dvcmtmbG93LXByb2dyYW0vY3JlYXRlLXByb2dyYW0tdWkvdXNlci1ncm91cC1saXN0L3VzZXItZ3JvdXAtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL2NyZWF0ZS1wcm9ncmFtLXVpL3VzZXItZ3JvdXAtbGlzdC91c2VyLWdyb3VwLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQU83RCxNQUFNLE9BQU8sc0JBQXNCO0lBMkJqQyxJQUFhLFlBQVksQ0FBQyxLQUE2QztRQUNyRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUE0QkQsSUFBdUIsV0FBVyxDQUFDLEtBQVU7UUFDM0MsSUFBSSxLQUFLLElBQUksS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLHFCQUFx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S0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ08sWUFBWTtzQkFBeEIsS0FBSztnQkFHRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUVFLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFNRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBVUcsT0FBTztzQkFBZixLQUFLO2dCQUVpQixXQUFXO3NCQUFqQyxLQUFLO3VCQUFDLFVBQVU7Z0JBU1csZUFBZTtzQkFBMUMsS0FBSzt1QkFBQyxlQUFlO2dCQWdCYSx1QkFBdUI7c0JBQXpELEtBQUs7dUJBQUMsc0JBQXNCO2dCQVNwQixRQUFRO3NCQUFoQixLQUFLO2dCQTBCa0IsWUFBWTtzQkFBbkMsS0FBSzt1QkFBQyxXQUFXO2dCQVNXLGdCQUFnQjtzQkFBNUMsS0FBSzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWFyY2hQaXBlIH0gZnJvbSAnLi4vcGlwZXMvc2VhcmNoLnBpcGUnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1c2VyLWdyb3VwLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1ncm91cC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1ncm91cC1saXN0LmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJHcm91cExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBBU1NFVFMgPSBBU1NFVFM7XG4gIEBPdXRwdXQoKSBzYXZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBncm91cEVuYWJsZWQhOiBmYWxzZTtcbiAgQElucHV0KCkgcGFuZWxUaXRsZSA9ICdTZWxlY3QgVXNlcihzKSc7XG4gIEBJbnB1dCgpIHNpbmdsZVNlbGVjdCA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWxlY3RlZFJldmlld2VyID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZlYXR1cmVmbGFnID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJldmlld2VyV29ya2Zsb3dUeXBlOiBzdHJpbmcgPSAnU0VRVUVOVElBTCc7XG4gIEBPdXRwdXQoKSByZXZpZXdlcldvcmtmbG93VHlwZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgbW9kZTogc3RyaW5nID0gJ0NSRUFURSc7XG4gIEBJbnB1dCgpIGZpZWxkVHlwZSA9ICcnO1xuICBzZWFyY2hLZXkgPSAnJztcbiAgaXNQYWdpbmF0aW9uOiBhbnk7XG4gIGFwcHJvdmFsV29ya2Zsb3dUeXBlOiAnQU5ZT05FJyB8ICdST1VORFJPQklOJyB8ICdTRVFVRU5USUFMJyA9ICdTRVFVRU5USUFMJztcbiAgdXNlcnNMaXN0OiBhbnkgPSBbXTtcbiAgZ3JvdXBzTGlzdDogYW55ID0gW107XG4gIEBJbnB1dCgpIGZyb21SZXNwb25zaWJpbGl0eTogYW55O1xuICBASW5wdXQoKSBhc3NpZ25vcklkOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBhc3NpZ25lZUlkczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgcmV2aWV3ZXJJZHM6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIG92ZXJzZWVySWRzOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBGcm9tUHJvZ3JhbSA9IGZhbHNlO1xuICBASW5wdXQoKSB1c2VyTGlzdEluZm8hOiBhbnk7XG4gIEBJbnB1dCgpIGdyb3VwTGlzdEluZm8hOiBhbnk7XG4gIEBJbnB1dCgpIGZyb21BcHByb3ZhbFdvcmtmbG93OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNldCBhcHByb3ZhbFR5cGUodmFsdWU6ICdBTllPTkUnIHwgJ1JPVU5EUk9CSU4nIHwgJ1NFUVVFTlRJQUwnKSB7XG4gICAgdGhpcy5hcHByb3ZhbFdvcmtmbG93VHlwZSA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHNob3dGdXR1cmVVc2Vyc1N3aXRjaDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBmdXR1cmVVc2Vyc1dpbGxTZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaXNBbGxEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0dyb3VwVGFiU2hvdzogYm9vbGVhbiA9IHRydWU7XG5cbiAgQE91dHB1dCgpIGZldGNoVXNlckRhdGEgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQElucHV0KCkgZGlzYWJsZWRJZHM6IGFueSA9IFtdO1xuICBASW5wdXQoKSBub25SZW1vdmFibGVVc2VySWRzOiBhbnkgPSBbXTtcbiAgQElucHV0KCkgYWxsVXNlclNlbGVjdGVkRGlzYWJsZWQgPSBmYWxzZTtcbiAgc2VsZWN0ZWRVc2VyczogYW55ID0gW107XG4gIHNlbGVjdGVkVXNlcklkczogYW55ID0gW107XG4gIGFsbFVzZXJzSWRzOiBhbnkgPSBbXTtcbiAgYWxsVXNlclNlbGVjdGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgbm9uUmVtb3ZhYmxlR3JvdXBJZHM6IGFueSA9IFtdO1xuICBzZWxlY3RlZEdyb3VwczogYW55ID0gW107XG4gIHNlbGVjdGVkR3JvdXBJZHM6IGFueSA9IFtdO1xuICBhbGxHcm91cHNJZHM6IGFueSA9IFtdO1xuICBhbGxHcm91cFNlbGVjdGVkID0gZmFsc2U7XG4gIGFsbEdyb3VwU2VsZWN0ZWREaXNhYmxlZCA9IGZhbHNlO1xuICBzZWFyY2hQaXBlID0gbmV3IFNlYXJjaFBpcGUoKTtcblxuICB1c2VyQ3VycmVudFBhZ2UgPSAxO1xuICBncm91cEN1cnJlbnRQYWdlID0gMTtcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBub25EaXNhYmxlZFVzZXJzOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoJ3VzZXJsaXN0Jykgc2V0IHNldFVzZXJMaXN0KHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWU/Lmxlbmd0aCkge1xuICAgICAgdGhpcy51c2Vyc0xpc3QgPSBbLi4udmFsdWVdO1xuICAgICAgdGhpcy5hbGxVc2Vyc0lkcyA9IHRoaXMudXNlcnNMaXN0Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkKTtcbiAgICAgIHRoaXMuYWxsVXNlclNlbGVjdGVkU3RhdHVzKCk7XG4gICAgICB0aGlzLnNldFVzZXJMaXN0SW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgnc2VsZWN0ZWRVc2VycycpIHNldCBzZXRTZWxlY3RlZFVzZXIodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVXNlcnMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcbiAgICAgICAgWy4uLnRoaXMuc2VsZWN0ZWRVc2VycywgLi4udmFsdWVdLFxuICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VySWRzID0gdGhpcy5zZWxlY3RlZFVzZXJzLm1hcChcbiAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZFxuICAgICAgKTtcbiAgICAgIHRoaXMuYWxsVXNlclNlbGVjdGVkU3RhdHVzKCk7XG4gICAgICB0aGlzLnNldFVzZXJMaXN0SW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIGRlZmF1bHRTZWxlY3RlZFVzZXJzOiBhbnkgPSBbXTtcbiAgZGVmYXVsdFNlbGVjdGVkVXNlcklkczogYW55ID0gW107XG4gIEBJbnB1dCgnZGVmYXVsdFNlbGVjdGVkVXNlcnMnKSBzZXQgc2V0RGVmYXVsdFNlbGVjdGVkVXNlcnModmFsdWU6IGFueSkge1xuICAgIHRoaXMuZGVmYXVsdFNlbGVjdGVkVXNlcnMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcbiAgICAgIFsuLi50aGlzLmRlZmF1bHRTZWxlY3RlZFVzZXJzLCAuLi52YWx1ZV0sXG4gICAgICAnbWVtYmVyX2lkJ1xuICAgICk7XG4gICAgdGhpcy5kZWZhdWx0U2VsZWN0ZWRVc2VySWRzID0gdGhpcy5kZWZhdWx0U2VsZWN0ZWRVc2Vycy5tYXAoXG4gICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkXG4gICAgKTtcbiAgfVxuICBASW5wdXQoKSB1c2VyVHlwZTogc3RyaW5nID0gJ2Fzc2lnbmVlcyc7XG4gIHNob3dDb25maXJtYXRpb24gPSBmYWxzZTtcblxuICBzZXRVc2VyTGlzdEluaXQoKSB7XG4gICAgaWYgKHRoaXMudXNlckN1cnJlbnRQYWdlID09PSAxKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRVc2VycztcbiAgICAgIGNvbnN0IG90aGVyVXNlciA9IHRoaXMudXNlcnNMaXN0LmZpbHRlcihcbiAgICAgICAgKGVsZTogYW55KSA9PiAhdGhpcy5zZWxlY3RlZFVzZXJJZHMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpXG4gICAgICApO1xuICAgICAgdGhpcy51c2Vyc0xpc3QgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcbiAgICAgICAgWy4uLnNlbGVjdGVkPy5zb3J0KCksIC4uLm90aGVyVXNlcj8uc29ydCgpXSxcbiAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGFsbFVzZXJTZWxlY3RlZFN0YXR1cygpIHtcbiAgICB0aGlzLmFsbFVzZXJTZWxlY3RlZCA9XG4gICAgICB0aGlzLmFsbFVzZXJzSWRzLnNvcnQoKS50b1N0cmluZygpID09PVxuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJJZHMuc29ydCgpPy50b1N0cmluZygpO1xuICAgIHRoaXMuYWxsVXNlclNlbGVjdGVkRGlzYWJsZWQgPVxuICAgICAgdGhpcy5hbGxVc2Vyc0lkcy5zb3J0KCkudG9TdHJpbmcoKSA9PT1cbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VySWRzLnNvcnQoKT8udG9TdHJpbmcoKSAmJlxuICAgICAgdGhpcy5hbGxVc2Vyc0lkcy5zb3J0KCkudG9TdHJpbmcoKSA9PT1cbiAgICAgIHRoaXMubm9uUmVtb3ZhYmxlVXNlcklkcy5zb3J0KCk/LnRvU3RyaW5nKCk7XG4gIH1cblxuICBASW5wdXQoJ2dyb3VwTGlzdCcpIHNldCBzZXRHcm91cExpc3QodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmdyb3Vwc0xpc3QgPSBbLi4udmFsdWVdO1xuICAgICAgdGhpcy5hbGxHcm91cHNJZHMgPSB0aGlzLmdyb3Vwc0xpc3QubWFwKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCk7XG4gICAgICB0aGlzLmFsbEdyb3VwU2VsZWN0ZWRTdGF0dXMoKTtcbiAgICAgIHRoaXMuc2V0R3JvdXBMaXN0SW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgnc2VsZWN0ZWRHcm91cHMnKSBzZXQgc2V0U2VsZWN0ZWRHcm91cCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwcyA9IHRoaXMudW5pcXVlQnlQcm9wKFxuICAgICAgWy4uLnRoaXMuc2VsZWN0ZWRHcm91cHMsIC4uLnZhbHVlXSxcbiAgICAgICdncm91cF9pZCdcbiAgICApO1xuICAgIHRoaXMuc2VsZWN0ZWRHcm91cElkcyA9IHRoaXMuc2VsZWN0ZWRHcm91cHMubWFwKFxuICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkXG4gICAgKTtcbiAgICB0aGlzLmFsbEdyb3VwU2VsZWN0ZWRTdGF0dXMoKTtcbiAgICB0aGlzLnNldEdyb3VwTGlzdEluaXQoKTtcbiAgfVxuXG4gIHNldEdyb3VwTGlzdEluaXQoKSB7XG4gICAgaWYgKHRoaXMudXNlckN1cnJlbnRQYWdlID09PSAxKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRHcm91cHM7XG4gICAgICBjb25zdCBvdGhlckdyb3VwID0gdGhpcy5ncm91cHNMaXN0LmZpbHRlcihcbiAgICAgICAgKGVsZTogYW55KSA9PiAhdGhpcy5zZWxlY3RlZEdyb3VwSWRzLmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpXG4gICAgICApO1xuICAgICAgdGhpcy5ncm91cHNMaXN0ID0gdGhpcy51bmlxdWVCeVByb3AoXG4gICAgICAgIFsuLi5zZWxlY3RlZD8uc29ydCgpLCAuLi5vdGhlckdyb3VwPy5zb3J0KCldLFxuICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBhbGxHcm91cFNlbGVjdGVkU3RhdHVzKCkge1xuICAgIHRoaXMuYWxsR3JvdXBTZWxlY3RlZCA9XG4gICAgICB0aGlzLmFsbEdyb3Vwc0lkcz8uc29ydCgpPy50b1N0cmluZygpID09PVxuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwSWRzPy5zb3J0KCk/LnRvU3RyaW5nKCk7XG4gICAgdGhpcy5hbGxHcm91cFNlbGVjdGVkRGlzYWJsZWQgPVxuICAgICAgdGhpcy5hbGxHcm91cHNJZHMuc29ydCgpLnRvU3RyaW5nKCkgPT09XG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBJZHMuc29ydCgpPy50b1N0cmluZygpICYmXG4gICAgICB0aGlzLmFsbEdyb3Vwc0lkcy5zb3J0KCkudG9TdHJpbmcoKSA9PT1cbiAgICAgIHRoaXMubm9uUmVtb3ZhYmxlR3JvdXBJZHMuc29ydCgpPy50b1N0cmluZygpO1xuICB9XG5cbiAgdXNlclBhZ2VDaGFuZ2UocGFnZTogYW55KSB7XG4gICAgdGhpcy51c2VyQ3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIHRoaXMuZmV0Y2hVc2VyRGF0YS5lbWl0KHsgcGFnZSwgc2VhcmNoS2V5OiB0aGlzLnNlYXJjaEtleSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAjIyMjIERlc2NyaXB0aW9uXG4gICAqIFNlbGVjdHMgaXRlbSBvciBkZXNlbGVjdCBhIGl0bWVcbiAgICogQHBhcmFtIGV2dFxuICAgKiBAcGFyYW0gcGF5bG9hZFxuICAgKi9cbiAgc2VsZWN0SXRlbShldnQ6IGFueSwgcGF5bG9hZDogYW55KSB7XG4gICAgZXZ0Py50YXJnZXQ/LmNoZWNrZWQgPT09IHRydWVcbiAgICAgID8gdGhpcy5tYW5pcHVsYXRlU2VsZWN0ZWRVc2VyKCdBREQnLCBwYXlsb2FkKVxuICAgICAgOiB0aGlzLm1hbmlwdWxhdGVTZWxlY3RlZFVzZXIoJ0RFTEVURScsIHBheWxvYWQpO1xuICB9XG5cbiAgc2VsZWN0SXRlbVJhZGlvKGV2dDogYW55LCBwYXlsb2FkOiBhbnkpIHtcbiAgICBpZiAoZXZ0Py50YXJnZXQ/LmNoZWNrZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VycyA9IFtdO1xuICAgICAgdGhpcy5tYW5pcHVsYXRlU2VsZWN0ZWRVc2VyKCdBREQnLCBwYXlsb2FkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogIyMjIyBEZXNjcmlwdGlvblxuICAgKlxuICAgKiBNYW5pcHVsYXRlcyBzZWxlY3RlZCBpdGVtcyBpbiByb2xlIGxpc3RcbiAgICogQHBhcmFtIGFjdGlvbiA6J0FERCcgfCAnREVMRVRFJ1xuICAgKiBAcGFyYW0gcGF5bG9hZFxuICAgKi9cbiAgbWFuaXB1bGF0ZVNlbGVjdGVkVXNlcihhY3Rpb246ICdBREQnIHwgJ0RFTEVURScsIHBheWxvYWQ6IGFueSkge1xuICAgIGlmIChhY3Rpb24gPT09ICdBREQnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVXNlcnMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcbiAgICAgICAgWy4uLnRoaXMuc2VsZWN0ZWRVc2VycywgLi4uW3BheWxvYWRdXSxcbiAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICk7XG4gICAgICB0aGlzLnNlbGVjdGVkVXNlcklkcyA9IHRoaXMuc2VsZWN0ZWRVc2Vycy5tYXAoXG4gICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWRcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICdERUxFVEUnKSB7XG4gICAgICBsZXQgaW5kZXggPSB0aGlzLnNlbGVjdGVkVXNlcnMuZmluZEluZGV4KFxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkID09PSBwYXlsb2FkPy5tZW1iZXJfaWRcbiAgICAgICk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVXNlcnMgPSB0aGlzLnNlbGVjdGVkVXNlcnMuZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IHBheWxvYWQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVXNlcklkcyA9IHRoaXMuc2VsZWN0ZWRVc2VySWRzLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZSAhPT0gcGF5bG9hZD8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYWxsVXNlclNlbGVjdGVkU3RhdHVzKCk7XG4gIH1cbiAgc2VsZWN0QWxsVXNlcihldnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmZyb21SZXNwb25zaWJpbGl0eSkge1xuICAgICAgdGhpcy5ub25EaXNhYmxlZFVzZXJzID0gdGhpcy5kaXNhYmxlVXNlcnMoKTtcbiAgICB9XG4gICAgaWYgKGV2dD8udGFyZ2V0Py5jaGVja2VkID09PSB0cnVlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVXNlcnMgPSB0aGlzLmZyb21SZXNwb25zaWJpbGl0eVxuICAgICAgICA/IHRoaXMubm9uRGlzYWJsZWRVc2Vyc1xuICAgICAgICA6IHRoaXMudXNlcnNMaXN0O1xuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJJZHMgPSB0aGlzLmZyb21SZXNwb25zaWJpbGl0eVxuICAgICAgICA/IHRoaXMubm9uRGlzYWJsZWRVc2Vycy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZClcbiAgICAgICAgOiB0aGlzLnVzZXJzTGlzdC5tYXAoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VycyA9IHRoaXMudXNlcnNMaXN0LmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgIHRoaXMubm9uUmVtb3ZhYmxlVXNlcklkcy5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZClcbiAgICAgICk7XG4gICAgICB0aGlzLnNlbGVjdGVkVXNlcklkcyA9IHRoaXMuc2VsZWN0ZWRVc2Vycy5tYXAoXG4gICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWRcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuYWxsVXNlclNlbGVjdGVkU3RhdHVzKCk7XG4gIH1cblxuICAvKipcbiAgICogIyMjIyBEZXNjcmlwdGlvblxuICAgKiBTZWxlY3RzIGl0ZW0gb3IgZGVzZWxlY3QgYSBpdG1lXG4gICAqIEBwYXJhbSBldnRcbiAgICogQHBhcmFtIHBheWxvYWRcbiAgICovXG4gIHNlbGVjdEdyb3VwKGV2dDogYW55LCBwYXlsb2FkOiBhbnkpIHtcbiAgICBldnQ/LnRhcmdldD8uY2hlY2tlZCA9PT0gdHJ1ZVxuICAgICAgPyB0aGlzLm1hbmlwdWxhdGVTZWxlY3RlZEdyb3VwKCdBREQnLCBwYXlsb2FkKVxuICAgICAgOiB0aGlzLm1hbmlwdWxhdGVTZWxlY3RlZEdyb3VwKCdERUxFVEUnLCBwYXlsb2FkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAjIyMjIERlc2NyaXB0aW9uXG4gICAqXG4gICAqIE1hbmlwdWxhdGVzIHNlbGVjdGVkIGl0ZW1zIGluIHJvbGUgbGlzdFxuICAgKiBAcGFyYW0gYWN0aW9uIDonQUREJyB8ICdERUxFVEUnXG4gICAqIEBwYXJhbSBwYXlsb2FkXG4gICAqL1xuICBtYW5pcHVsYXRlU2VsZWN0ZWRHcm91cChhY3Rpb246ICdBREQnIHwgJ0RFTEVURScsIHBheWxvYWQ6IGFueSkge1xuICAgIGlmIChhY3Rpb24gPT09ICdBREQnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzID0gdGhpcy51bmlxdWVCeVByb3AoXG4gICAgICAgIFsuLi50aGlzLnNlbGVjdGVkR3JvdXBzLCAuLi5bcGF5bG9hZF1dLFxuICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwSWRzID0gdGhpcy5zZWxlY3RlZEdyb3Vwcy5tYXAoXG4gICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PT0gJ0RFTEVURScpIHtcbiAgICAgIGxldCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRHcm91cHMuZmluZEluZGV4KFxuICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgPT09IHBheWxvYWQ/Lmdyb3VwX2lkXG4gICAgICApO1xuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwcyA9IHRoaXMuc2VsZWN0ZWRHcm91cHMuZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gcGF5bG9hZD8uZ3JvdXBfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwSWRzID0gdGhpcy5zZWxlY3RlZEdyb3VwSWRzLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZSAhPT0gcGF5bG9hZD8uZ3JvdXBfaWRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5hbGxHcm91cFNlbGVjdGVkU3RhdHVzKCk7XG4gIH1cbiAgc2VsZWN0QWxsR3JvdXAoZXZ0OiBhbnkpIHtcbiAgICBjb25zdCBncm91cERhdGEgPSB0aGlzLnNlYXJjaFBpcGUudHJhbnNmb3JtKFxuICAgICAgdGhpcy5ncm91cHNMaXN0LFxuICAgICAgdGhpcy5zZWFyY2hLZXksXG4gICAgICAnZ3JvdXBfbmFtZSdcbiAgICApO1xuICAgIGlmIChldnQ/LnRhcmdldD8uY2hlY2tlZCA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwcyA9IGdyb3VwRGF0YTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cElkcyA9IGdyb3VwRGF0YS5tYXAoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwcyA9IHRoaXMuZ3JvdXBzTGlzdC5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICB0aGlzLm5vblJlbW92YWJsZUdyb3VwSWRzLmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpXG4gICAgICApO1xuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwSWRzID0gdGhpcy5zZWxlY3RlZEdyb3Vwcy5tYXAoXG4gICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5hbGxHcm91cFNlbGVjdGVkU3RhdHVzKCk7XG4gIH1cblxuICBhbmltYXRpb24gPSB0cnVlO1xuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGxldCBkaXNhYmxlZElkcyA9IFsuLi50aGlzLmRpc2FibGVkSWRzLCAuLi50aGlzLm5vblJlbW92YWJsZVVzZXJJZHNdO1xuICAgIHRoaXMuZGlzYWJsZWRJZHMgPSBbLi4ubmV3IFNldChkaXNhYmxlZElkcyldO1xuICAgIHRoaXMucGFnaW5hdGlvblZpc2libGUoKTtcbiAgICB0aGlzLmFuaW1hdGlvbiA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0sIDMwMCk7XG4gIH1cbiAgY3VycmVudFRhYiA9ICdVU0VSJztcbiAgc3dpdGNoVGFiKHRhYjogc3RyaW5nKSB7XG4gICAgdGhpcy5jdXJyZW50VGFiID0gdGFiO1xuICAgIHRoaXMuc2VhcmNoS2V5ID0gJyc7XG4gIH1cblxuICBzYXZlTGlzdCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmRlZmF1bHRTZWxlY3RlZFVzZXJJZHMgJiZcbiAgICAgIHRoaXMuZGVmYXVsdFNlbGVjdGVkVXNlcklkcz8ubGVuZ3RoICYmXG4gICAgICB0aGlzLnNlbGVjdGVkVXNlcklkcyAmJlxuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJJZHM/Lmxlbmd0aFxuICAgICkge1xuICAgICAgdGhpcy5kZWZhdWx0U2VsZWN0ZWRVc2VySWRzPy5mb3JFYWNoKChpZDogbnVtYmVyKTogYW55ID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVXNlcklkcz8uaW5jbHVkZXMoaWQpKSB7XG4gICAgICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc2hvd0NvbmZpcm1hdGlvbilcbiAgICAgIHRoaXMuc2F2ZS5lbWl0KHtcbiAgICAgICAgdXNlcnM6IHRoaXMuc2VsZWN0ZWRVc2VycyxcbiAgICAgICAgZ3JvdXBzOiB0aGlzLnNlbGVjdGVkR3JvdXBzLFxuICAgICAgICBmdXR1cmVVc2Vyc1dpbGxTZWxlY3Q6IHRoaXMuZnV0dXJlVXNlcnNXaWxsU2VsZWN0LFxuICAgICAgfSk7XG4gIH1cblxuICBjb25maXJtQWN0aW9uKGV2dDogJ1lFUycgfCAnTk8nKSB7XG4gICAgaWYgKGV2dCA9PT0gJ1lFUycpIHtcbiAgICAgIHRoaXMuc2F2ZS5lbWl0KHtcbiAgICAgICAgdXNlcnM6IHRoaXMuc2VsZWN0ZWRVc2VycyxcbiAgICAgICAgZ3JvdXBzOiB0aGlzLnNlbGVjdGVkR3JvdXBzLFxuICAgICAgICBmdXR1cmVVc2Vyc1dpbGxTZWxlY3Q6IHRoaXMuZnV0dXJlVXNlcnNXaWxsU2VsZWN0LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChldnQgPT09ICdOTycpIHtcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlTGlzdCgpIHtcbiAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICAvL1xuXG4gIC8qKlxuICAgKiAjIyMjIERlc2NyaXB0aW9uXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHVuaXF1ZSBhcnJheSBvZiBvYmplY3QgYmFzZWQgb24gdW5pcXVlIGtleVxuICAgKiBAcGFyYW0gYXJyYXlcbiAgICogQHBhcmFtIGtleVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdW5pcXVlQnlQcm9wKGFycmF5OiBhbnksIGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgICBhcnJheVxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgIChhY2M6IGFueSwgaXRlbTogYW55KSA9PiAoXG4gICAgICAgICAgICBpdGVtICYmIGl0ZW1ba2V5XSAmJiBhY2Muc2V0KGl0ZW1ba2V5XSwgaXRlbSksIGFjY1xuICAgICAgICAgICksXG4gICAgICAgICAgbmV3IE1hcCgpXG4gICAgICAgIClcbiAgICAgICAgLnZhbHVlcygpXG4gICAgKTtcbiAgfVxuXG4gIHBhZ2luYXRpb25WaXNpYmxlKCkge1xuICAgIGlmICh0aGlzLnVzZXJMaXN0SW5mbz8udG90YWxfcGFnZXMgPiAxKSB7XG4gICAgICB0aGlzLmlzUGFnaW5hdGlvbiA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNQYWdpbmF0aW9uID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdvcmtmbG93VHlwZUNoYW5nZWQoZXZlbnQ6IHN0cmluZykge1xuICAgIHRoaXMucmV2aWV3ZXJXb3JrZmxvd1R5cGUgPSBldmVudDtcbiAgICB0aGlzLnJldmlld2VyV29ya2Zsb3dUeXBlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgZGlzYWJsZVVzZXJzKCkge1xuICAgIHN3aXRjaCAodGhpcy5mcm9tUmVzcG9uc2liaWxpdHkpIHtcbiAgICAgIGNhc2UgJ0Fzc2lnbmVlJzpcbiAgICAgICAgdGhpcy5ub25EaXNhYmxlZFVzZXJzID0gdGhpcy51c2Vyc0xpc3QuZmlsdGVyKFxuICAgICAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgICAgICAhKFxuICAgICAgICAgICAgICB0aGlzLnJldmlld2VySWRzPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpIHx8XG4gICAgICAgICAgICAgIHRoaXMub3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdSZXZpZXdlcic6XG4gICAgICAgIHRoaXMubm9uRGlzYWJsZWRVc2VycyA9IHRoaXMudXNlcnNMaXN0LmZpbHRlcihcbiAgICAgICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgdGhpcy5vdmVyc2Vlcklkcz8uaW5jbHVkZXModXNlcj8ubWVtYmVyX2lkKSB8fFxuICAgICAgICAgICAgICB0aGlzLmFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnT3ZlcnNlZXInOlxuICAgICAgICB0aGlzLm5vbkRpc2FibGVkVXNlcnMgPSB0aGlzLnVzZXJzTGlzdC5maWx0ZXIoXG4gICAgICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgIHRoaXMuYXNzaWdub3JJZD8uaW5jbHVkZXModXNlcj8ubWVtYmVyX2lkKSB8fFxuICAgICAgICAgICAgICB0aGlzLnJldmlld2VySWRzPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpIHx8XG4gICAgICAgICAgICAgIHRoaXMuYXNzaWduZWVJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ub25EaXNhYmxlZFVzZXJzO1xuICB9XG5cbiAgc2V0QWxsVXNlcnNTZWxlY3RlZChldmVudDogYW55KSB7XG4gICAgdGhpcy5mdXR1cmVVc2Vyc1dpbGxTZWxlY3QgPSBldmVudDtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VycyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwcyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJJZHMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cElkcyA9IFtdO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInVzZXItZ3JvdXAtbGlzdFwiIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwidXNlci1ncm91cC1saXN0LWhlYWRcIj5cbiAgICA8aDMgY2xhc3M9XCJ1c2VyLWdyb3VwLWxpc3QtdGl0bGVcIj57eyBwYW5lbFRpdGxlIH19PC9oMz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ1c2VyLWdyb3VwLWxpc3QtYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWdyb3VwLWxpc3QtYm9keS1pbm5lclwiPlxuICAgICAgPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwibG9hZGluZ1wiPjwvYXBwLWxvYWRlci1pbmxpbmU+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidXNlci1ncm91cC1saXN0LXRhYiB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1tYi0yXCJcbiAgICAgICAgKm5nSWY9XCJncm91cEVuYWJsZWRcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUYWIoJ1VTRVInKVwiXG4gICAgICAgICAgICBjbGFzcz1cInRhYi1idG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1wYi0yIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50VGFiID09PSAnVVNFUidcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFVTRVJTXG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LW1sLTIgdngtbGgtNFwiXG4gICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgIHNlYXJjaEtleT8ubGVuZ3RoICYmIGN1cnJlbnRUYWIgPT09IFwiVVNFUlwiXG4gICAgICAgICAgICAgICAgICA/ICh1c2Vyc0xpc3QgfCBmaWx0ZXIgOiBzZWFyY2hLZXkpPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgIDogdXNlcnNMaXN0Py5sZW5ndGggfHwgdXNlckxpc3RJbmZvPy50b3RhbF9pdGVtc1xuICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiaXNHcm91cFRhYlNob3dcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFRhYignR1JPVVAnKVwiXG4gICAgICAgICAgICBjbGFzcz1cInRhYi1idG4gdngtZnMtMTEgdngtZnctNjAwIHZ4LXBhcmFncmFwaC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1wYi0yIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50VGFiID09PSAnR1JPVVAnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBmZWF0dXJlZmxhZyA/IFwiVVNFUiBHUk9VUFNcIiA6IFwiR1JPVVBTXCIgfX1cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbWwtMiB2eC1saC00XCJcbiAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgc2VhcmNoS2V5Py5sZW5ndGggJiYgY3VycmVudFRhYiA9PT0gXCJHUk9VUFwiXG4gICAgICAgICAgICAgICAgICA/IChncm91cHNMaXN0IHwgc2VhcmNoIDogc2VhcmNoS2V5IDogXCJncm91cF9uYW1lXCIpPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgIDogZ3JvdXBzTGlzdD8ubGVuZ3RoIHx8IGdyb3VwTGlzdEluZm8/LnRvdGFsX2l0ZW1zXG4gICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImZ1dHVyZS11c2VyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICpuZ0lmPVwic2hvd0Z1dHVyZVVzZXJzU3dpdGNoXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZVwiPlxuICAgICAgICAgICAgVmlzaWJsZSB0byBBbGwgQ3VycmVudCAmIEZ1dHVyZSBVc2Vyc1xuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMSB2eC1tci0xXCJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAnSWYgc2VsZWN0ZWQsIHRoaXMgcG9saWN5IHdpbGwgYmUgdmlzaWJsZSB0byBhbGwgdXNlcnMgdGhhdCBhcmUgY3VycmVudGx5IGFjdGl2ZSBpbiB5b3VyIFZDb21wbHkgYWNjb3VudCBhbmQgdXNlcnMgdGhhdCBtaWdodCBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgID5cbiAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgW25nVmFsdWVdPVwiZnV0dXJlVXNlcnNXaWxsU2VsZWN0XCJcbiAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNldEFsbFVzZXJzU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvYXBwLWNzLXN3aXRjaD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1ibG9jayB2eC1tYi0yXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBiOzwvaT5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgKm5nSWY9XCIhZmVhdHVyZWZsYWdcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoS2V5XCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xuICAgICAgICAgICAgY3VycmVudFRhYiA9PT0gJ1VTRVInID8gJ1NlYXJjaCBVc2VyJyA6ICdTZWFyY2ggR3JvdXAnXG4gICAgICAgICAgfX1cIlxuICAgICAgICAvPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAqbmdJZj1cImZlYXR1cmVmbGFnXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaEtleVwiXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcbiAgICAgICAgICAgIGN1cnJlbnRUYWIgPT09ICdVU0VSJyA/ICdTZWFyY2ggVXNlcicgOiAnU2VhcmNoIFVzZXIgR3JvdXAnXG4gICAgICAgICAgfX1cIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50VGFiID09PSAnVVNFUicgJiYgIWxvYWRpbmdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZXJzTGlzdCB8IGZpbHRlciA6IHNlYXJjaEtleSBhcyB1c2Vyc1wiPlxuICAgICAgICAgIDx2dWktcGFnaW5hdGlvblxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgdXNlckxpc3RJbmZvPy50b3RhbF9wYWdlcyA+IDEgJiZcbiAgICAgICAgICAgICAgdXNlcnNMaXN0Py5sZW5ndGggIT09IHVzZXJMaXN0SW5mbz8udG90YWxfaXRlbXNcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbY3VycmVudFBhZ2VdPVwidXNlckN1cnJlbnRQYWdlXCJcbiAgICAgICAgICAgIFt0b3RhbFBhZ2VdPVwidXNlckxpc3RJbmZvPy50b3RhbF9wYWdlc1wiXG4gICAgICAgICAgICAocGFnZUNoYW5nZWQpPVwidXNlclBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvdnVpLXBhZ2luYXRpb24+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJ1c2VyLWdyb3VwLWxpc3QtbWlkXCJcbiAgICAgICAgICAgIFtjbGFzcy53aXRoLXBhZ2luYXRpb25dPVwiaXNQYWdpbmF0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlcnM/Lmxlbmd0aCA+IDA7IGVsc2Ugbm91c2VyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWxpc3Qtc2VsZWN0IHZ4LW1iLTJcIj5cbiAgICAgICAgICAgICAgICA8dnVpLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIiFzaW5nbGVTZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgI3VzZXJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbFVzZXJTZWxlY3RlZCB8fCBmdXR1cmVVc2Vyc1dpbGxTZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICBhbGxVc2VyU2VsZWN0ZWREaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAgICAgICBmdXR1cmVVc2Vyc1dpbGxTZWxlY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgaXNBbGxEaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0QWxsVXNlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXNlci1uYW1lIHZ4LWZzLTEyIHZ4LWZ3LTYwMCB2eC1sYWJlbC10eHQgdngtdHQtbm9uZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICF1c2VyPy5jaGVja2VkID8gXCJTZWxlY3QgQWxsXCIgOiBcIkRlc2VsZWN0IEFsbFwiIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3Z1aS1jaGVja2JveD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInZ4LW0tMCB2eC1wLTAgdngtZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB1c2VyIG9mIHVzZXJzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtbWItM1wiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc2luZ2xlU2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0b29sdGlwTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZnJvbVJlc3BvbnNpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByZXZpZXdlcklkc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogb3ZlcnNlZXJJZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFzc2lnbm9ySWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGFzc2lnbmVlSWRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnbWVtYmVyX2lkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZGlzYWJsZWRJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEZyb21Qcm9ncmFtXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHZ1aS1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RJdGVtKCRldmVudCwgdXNlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZElkcz8uaW5jbHVkZXModXNlcj8ubWVtYmVyX2lkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmdXR1cmVVc2Vyc1dpbGxTZWxlY3QgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBbGxEaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFVzZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnV0dXJlVXNlcnNXaWxsU2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJ1c2VyLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdXNlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjwvdnVpLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1tYi0zXCIgKm5nSWY9XCJzaW5nbGVTZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCIncmFkaW8tc2VsZWN0b3InXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2VsZWN0SXRlbVJhZGlvKCRldmVudCwgdXNlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiJ3J4LWNhdGVnb3J5J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFVzZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwidXNlcj8ubWVtYmVyX2VtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB1c2VyPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm91c2VyPlxuICAgICAgICAgICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFsb2FkaW5nXCJcbiAgICAgICAgICAgICAgICBbbm9EYXRhSW1hZ2VdPVwiQVNTRVRTLnNlYXJjaF9kYXRhXCJcbiAgICAgICAgICAgICAgICBbbm9EYXRhVGV4dF09XCJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEtleT8ubGVuZ3RoID4gMCA/ICdObyBtYXRjaCBmb3VuZC4nIDogJ05vIFVzZXJzIGZvdW5kLidcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+PC9hcHAtbm8tZGF0YT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50VGFiID09PSAnR1JPVVAnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cImdyb3Vwc0xpc3QgfCBzZWFyY2ggOiBzZWFyY2hLZXkgOiAnZ3JvdXBfbmFtZScgYXMgZ3JvdXBzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwidXNlci1ncm91cC1saXN0LW1pZFwiXG4gICAgICAgICAgICBbY2xhc3Mud2l0aC1wYWdpbmF0aW9uXT1cImlzUGFnaW5hdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3Vwcz8ubGVuZ3RoID4gMDsgZWxzZSBub2dyb3VwXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWxpc3Qtc2VsZWN0IHZ4LW1iLTJcIj5cbiAgICAgICAgICAgICAgICA8dnVpLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAjZ3JvdXBcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbEdyb3VwU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFsbEdyb3VwU2VsZWN0ZWREaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdEFsbEdyb3VwKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1c2VyLW5hbWUgdngtZnMtMTIgdngtZnctNjAwIHZ4LWxhYmVsLXR4dCB2eC10dC1ub25lXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgIWdyb3VwPy5jaGVja2VkID8gXCJTZWxlY3QgQWxsXCIgOiBcIkRlc2VsZWN0IEFsbFwiIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3Z1aS1jaGVja2JveD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInZ4LW0tMCB2eC1wLTAgdngtZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ2eC1tYi0zXCIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICA8dnVpLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RHcm91cCgkZXZlbnQsIGdyb3VwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbm9uUmVtb3ZhYmxlR3JvdXBJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkR3JvdXBJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1c2VyLW5hbWUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC13LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJncm91cD8uZ3JvdXBfbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLW5hbWVcIj57eyBncm91cD8uZ3JvdXBfbmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudGVyIHZ4LWZzLTkgdngtZnctNjAwIHZ4LXBsLTEgdngtcHItMSB2eC1saC0zIHZ4LXR0LXVwcGVyY2FzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID57eyBncm91cD8ubWVtYmVyX2NvdW50IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwPy5tZW1iZXJfY291bnQgPiAxID8gXCJVU0VSU1wiIDogXCJVU0VSXCIgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC92dWktY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vZ3JvdXA+XG4gICAgICAgICAgICAgIDxhcHAtbm8tZGF0YVxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmdcIlxuICAgICAgICAgICAgICAgIFtub0RhdGFJbWFnZV09XCJBU1NFVFMuc2VhcmNoX2RhdGFcIlxuICAgICAgICAgICAgICAgIFtub0RhdGFUZXh0XT1cIlxuICAgICAgICAgICAgICAgICAgc2VhcmNoS2V5Py5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgID8gJ05vIG1hdGNoIGZvdW5kLidcbiAgICAgICAgICAgICAgICAgICAgOiAnTm8gZGF0YSB0byBkaXNwbGF5LidcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+PC9hcHAtbm8tZGF0YT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidXNlci1ncm91cC1saXN0LWZvb3RlclwiPlxuICAgICAgPHZ1aS1mbG9hdGluZy1iYXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAoIXNpbmdsZVNlbGVjdCB8fCAoIXNpbmdsZVNlbGVjdCAmJiBzZWxlY3RlZFJldmlld2VyKSkgJiYgIWxvYWRpbmdcbiAgICAgICAgXCJcbiAgICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZUxpc3QoKVwiXG4gICAgICAgIChjbG9zZUxpc3QpPVwiY2xvc2VMaXN0KClcIlxuICAgICAgICAod29ya2Zsb3dUeXBlQ2hhbmdlZCk9XCJ3b3JrZmxvd1R5cGVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICBbc2VsZWN0ZWRXb3JrZmxvd109XCJyZXZpZXdlcldvcmtmbG93VHlwZVwiXG4gICAgICAgIFtzaG93V29ya2Zsb3ddPVwic2VsZWN0ZWRSZXZpZXdlclwiXG4gICAgICAgIFtncm91cFNlbGVjdGVkXT1cInNlbGVjdGVkR3JvdXBzXCJcbiAgICAgICAgW21vZGVdPVwibW9kZVwiXG4gICAgICAgIFtuZXh0RGlzYWJsZWRdPVwiZnJvbUFwcHJvdmFsV29ya2Zsb3cgJiYgc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoID09PSAwXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFncm91cEVuYWJsZWRcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTIgdngtbXItMlwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiBzZWxlY3RlZFVzZXJzPy5zbGljZSgwLCAxKTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFub25SZW1vdmFibGVVc2VySWRzPy5pbmNsdWRlcyhlbGVtZW50Py5tZW1iZXJfaWQpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEl0ZW0oeyB0YXJnZXQ6IHsgY2hlY2tlZDogZmFsc2UgfSB9LCBlbGVtZW50KVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGZyb21BcHByb3ZhbFdvcmtmbG93ICYmXG4gICAgICAgICAgICAgICAgYXBwcm92YWxXb3JrZmxvd1R5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ3NlcXVlbnRpYWwnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwid29ya2Zsb3dMYXZlbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTQgdngtbXItMSB2eC10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IDEgPT0gc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoID8gXCJGaW5hbFwiIDogMSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImVsZW1lbnQ/Lm1lbWJlcl9uYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgID57eyBlbGVtZW50Py5tZW1iZXJfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkVXNlcnM/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5CZ1wiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdyb3VwRGlzYWJsZS5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHNlbGVjdGVkVXNlcnM/LnNsaWNlKDEpPy5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIHNlbGVjdGVkVXNlcnM/LnNsaWNlKDAsMSk7bGV0IGkgPSBpbmRleFwiPjxpICpuZ0lmPVwiIW5vblJlbW92YWJsZVVzZXJJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm1lbWJlcl9pZClcIiAoY2xpY2spPVwic2VsZWN0SXRlbSh7dGFyZ2V0OntjaGVja2VkOmZhbHNlfX0sZWxlbWVudClcIiBjbGFzcz1cImljb25zXCI+JiN4ZTkwZDs8L2k+IDxzcGFuPnt7ZWxlbWVudD8ubWVtYmVyX25hbWV9fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50ZXJcIiAqbmdJZj1cInNlbGVjdGVkVXNlcnM/Lmxlbmd0aD4xXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXBEaXNhYmxlLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIj4re3tzZWxlY3RlZFVzZXJzPy5zbGljZSgxKT8ubGVuZ3RofX08L2Rpdj4gLS0+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ1c2VyLWdyb3VwLWNoaXBcIlxuICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRVc2Vycz8ubGVuZ3RoICYmIGdyb3VwRW5hYmxlZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zc1wiXG4gICAgICAgICAgICAqbmdJZj1cIiFub25SZW1vdmFibGVVc2VySWRzPy5pbmNsdWRlcyhzZWxlY3RlZFVzZXJzWzBdPy5tZW1iZXJfaWQpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgc2VsZWN0SXRlbSh7IHRhcmdldDogeyBjaGVja2VkOiBmYWxzZSB9IH0sIHNlbGVjdGVkVXNlcnNbMF0pXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWdyb3VwLW5hbWVcIj57eyBzZWxlY3RlZFVzZXJzWzBdPy5tZW1iZXJfbmFtZSB9fTwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cEVuYWJsZWRcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudGVyXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZFVzZXJzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAoY2xpY2spPVwidXNlckNvdW50LnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAre3sgc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZSB1c2VyR3JvdXAtbmFtZVwiPlxuICAgICAgICAgIDwhLS0ge3tzZWxlY3RlZEdyb3VwcyAmJiBzZWxlY3RlZEdyb3Vwcz8ubGVuZ3RoID4gMCA/JyAmICc6Jyd9fSAtLT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXJHcm91cC10ZXh0XCIgKm5nSWY9XCJzZWxlY3RlZFVzZXJzPy5sZW5ndGggPT09IDFcIlxuICAgICAgICAgICAgPlVzZXIge3sgc2VsZWN0ZWRHcm91cHM/Lmxlbmd0aCA+IDAgPyBcIiAmIFwiIDogXCIgc2VsZWN0ZWRcIiB9fTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInVzZXJHcm91cC10ZXh0XCIgKm5nSWY9XCJzZWxlY3RlZFVzZXJzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5Vc2VycyB7eyBzZWxlY3RlZEdyb3Vwcz8ubGVuZ3RoID4gMCA/IFwiICYgXCIgOiBcInNlbGVjdGVkXCIgfX08L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWdyb3VwLWNoaXBcIiAqbmdJZj1cInNlbGVjdGVkR3JvdXBzPy5sZW5ndGhcIj5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zc1wiXG4gICAgICAgICAgICAqbmdJZj1cIiFub25SZW1vdmFibGVHcm91cElkcz8uaW5jbHVkZXMoc2VsZWN0ZWRHcm91cHNbMF0/Lmdyb3VwX2lkKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgIHNlbGVjdEdyb3VwKHsgdGFyZ2V0OiB7IGNoZWNrZWQ6IGZhbHNlIH0gfSwgc2VsZWN0ZWRHcm91cHNbMF0pXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWdyb3VwLW5hbWVcIj57eyBzZWxlY3RlZEdyb3Vwc1swXT8uZ3JvdXBfbmFtZSB9fTwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY291bnRlciBncm91cFwiXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkR3JvdXBzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgIChjbGljayk9XCJncm91cENvdW50LnBvcG92ZXIoKVwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICAre3sgc2VsZWN0ZWRHcm91cHM/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lIHVzZXJHcm91cC1uYW1lXCI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZEdyb3Vwcz8ubGVuZ3RoID09PSAxXCI+e3tcbiAgICAgICAgICAgIGZlYXR1cmVmbGFnID8gXCJVc2VyIEdyb3VwIHNlbGVjdGVkXCIgOiBcIkdyb3VwIHNlbGVjdGVkXCJcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdGVkR3JvdXBzPy5sZW5ndGggPiAxXCI+e3tcbiAgICAgICAgICAgIGZlYXR1cmVmbGFnID8gXCJVc2VyIEdyb3VwcyBzZWxlY3RlZFwiIDogXCJHcm91cHMgc2VsZWN0ZWRcIlxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8YXBwLXBvcG92ZXIgI3VzZXJDb3VudCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiBzZWxlY3RlZFVzZXJzIHwgc2xpY2UgOiAxOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIW5vblJlbW92YWJsZVVzZXJJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm1lbWJlcl9pZClcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEl0ZW0oeyB0YXJnZXQ6IHsgY2hlY2tlZDogZmFsc2UgfSB9LCBlbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgZWxlbWVudD8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNncm91cERpc2FibGUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIHNlbGVjdGVkVXNlcnMuc2xpY2UoMSk7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFub25SZW1vdmFibGVVc2VySWRzPy5pbmNsdWRlcyhlbGVtZW50Py5tZW1iZXJfaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RJdGVtKHsgdGFyZ2V0OiB7IGNoZWNrZWQ6IGZhbHNlIH0gfSwgZWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb21BcHByb3ZhbFdvcmtmbG93ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbFdvcmtmbG93VHlwZS50b0xvd2VyQ2FzZSgpID09PSAnc2VxdWVudGlhbCdcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid29ya2Zsb3dMYXZlbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTQgdngtbXItMSB2eC10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICBpICsgMSA9PT0gc2VsZWN0ZWRVc2Vycz8ubGVuZ3RoIC0gMSA/IFwiRmluYWxcIiA6IGkgKyAyXG4gICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBlbGVtZW50Py5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cblxuICAgICAgICA8YXBwLXBvcG92ZXIgI2dyb3VwQ291bnQgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCBvZiBzZWxlY3RlZEdyb3VwcyB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbm9uUmVtb3ZhYmxlR3JvdXBJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lmdyb3VwX2lkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0R3JvdXAoeyB0YXJnZXQ6IHsgY2hlY2tlZDogZmFsc2UgfSB9LCBlbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgZWxlbWVudD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDwvdnVpLWZsb2F0aW5nLWJhcj5cbiAgICAgIDx2dWktZmxvYXRpbmctYmFyXG4gICAgICAgICpuZ0lmPVwic2luZ2xlU2VsZWN0ICYmICFsb2FkaW5nXCJcbiAgICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZUxpc3QoKVwiXG4gICAgICAgIChjbG9zZUxpc3QpPVwiY2xvc2VMaXN0KClcIlxuICAgICAgICBbbmV4dERpc2FibGVkXT1cImZyb21BcHByb3ZhbFdvcmtmbG93ICYmIHNlbGVjdGVkVXNlcnM/Lmxlbmd0aCA9PT0gMFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwXCIgKm5nSWY9XCJzZWxlY3RlZFVzZXJzPy5sZW5ndGhcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICBzZWxlY3RJdGVtKHsgdGFyZ2V0OiB7IGNoZWNrZWQ6IGZhbHNlIH0gfSwgc2VsZWN0ZWRVc2Vyc1swXSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+IHt7IHNlbGVjdGVkVXNlcnNbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdnVpLWZsb2F0aW5nLWJhcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInVzZXItZ3JvdXAtbGlzdC1jb25maXJtYXRpb25cIiAqbmdJZj1cInNob3dDb25maXJtYXRpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29uZmlybWF0aW9uLXRvcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImljb24tYmxvY2tcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkzMDs8L2k+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dFwiPlxuICAgICAgICBUaGlzIGFjdGlvbiB3aWxsIHJlc2V0IHRoZSBkZWZhdWx0IHt7IHVzZXJUeXBlIH19IHNlbGVjdGVkIGZvciB0aGVcbiAgICAgICAgUHJvZ3JhbS5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb25maXJtYXRpb24tYm90dG9tXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZVwiPkFyZSB5b3Ugc3VyZSB5b3Ugd291bGQgbGlrZSB0byBwcm9jZWVkPzwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibm8tYnRuXCIgKGNsaWNrKT1cImNvbmZpcm1BY3Rpb24oJ05PJylcIj5OTzwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwieWVzLWJ0blwiIChjbGljayk9XCJjb25maXJtQWN0aW9uKCdZRVMnKVwiPllFUzwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=