@bnsights/bbsf-admin-portal 1.1.64 → 1.3.1

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 (217) hide show
  1. package/README.md +2 -0
  2. package/bnsights-bbsf-admin-portal-1.3.1.tgz +0 -0
  3. package/esm2022/lib/Pages/ActiveDirectories/active-directories.component.mjs +5 -5
  4. package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +5 -5
  5. package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +5 -5
  6. package/esm2022/lib/Pages/ActiveDirectories/active-directory-routing.module.mjs +5 -5
  7. package/esm2022/lib/Pages/ActiveDirectories/active-directory.module.mjs +5 -5
  8. package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +5 -5
  9. package/esm2022/lib/Pages/_layout/components/aside/aside.component.mjs +5 -5
  10. package/esm2022/lib/Pages/_layout/components/content/content.component.mjs +5 -5
  11. package/esm2022/lib/Pages/_layout/components/footer/footer.component.mjs +5 -5
  12. package/esm2022/lib/Pages/_layout/components/header/header.component.mjs +5 -5
  13. package/esm2022/lib/Pages/_layout/components/header/page-title/page-title.component.mjs +5 -5
  14. package/esm2022/lib/Pages/_layout/components/scripts-init/scripts-init.component.mjs +5 -5
  15. package/esm2022/lib/Pages/_layout/components/subheader/subheader.component.mjs +5 -5
  16. package/esm2022/lib/Pages/_layout/components/subheader/subheader.module.mjs +5 -5
  17. package/esm2022/lib/Pages/_layout/components/toolbar/toolbar.component.mjs +5 -5
  18. package/esm2022/lib/Pages/_layout/components/toolbar/toolbar.module.mjs +5 -5
  19. package/esm2022/lib/Pages/_layout/components/topbar/topbar.component.mjs +5 -5
  20. package/esm2022/lib/Pages/anonymouslayout/activation/activation.component.mjs +5 -5
  21. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout-routing.module.mjs +5 -5
  22. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +11 -6
  23. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +5 -5
  24. package/esm2022/lib/Pages/anonymouslayout/change-password/change-password.component.mjs +5 -5
  25. package/esm2022/lib/Pages/anonymouslayout/error/error.component.mjs +5 -5
  26. package/esm2022/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +5 -5
  27. package/esm2022/lib/Pages/anonymouslayout/login/login.component.mjs +5 -5
  28. package/esm2022/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +5 -5
  29. package/esm2022/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +5 -5
  30. package/esm2022/lib/Pages/anonymouslayout/verify-two-fa/verify-two-fa.component.mjs +5 -5
  31. package/esm2022/lib/Pages/authentication/auth-callback/auth-callback.component.mjs +5 -5
  32. package/esm2022/lib/Pages/authentication/authentication.component.mjs +5 -5
  33. package/esm2022/lib/Pages/authentication/authentication.module.mjs +5 -5
  34. package/esm2022/lib/Pages/authentication/authentication.routing.mjs +5 -5
  35. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +5 -5
  36. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +5 -5
  37. package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +5 -5
  38. package/esm2022/lib/Pages/configurations/configurations.component.mjs +5 -5
  39. package/esm2022/lib/Pages/configurations/configurations.module.mjs +5 -5
  40. package/esm2022/lib/Pages/configurations/configurations.routing.mjs +5 -5
  41. package/esm2022/lib/Pages/core/auth.module.mjs +5 -5
  42. package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +4 -4
  43. package/esm2022/lib/Pages/core/authentication/auth.guard.mjs +4 -4
  44. package/esm2022/lib/Pages/core/authentication/auth.service.mjs +4 -4
  45. package/esm2022/lib/Pages/departments/department/department.component.mjs +5 -5
  46. package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +5 -5
  47. package/esm2022/lib/Pages/departments/departments-routing.module.mjs +5 -5
  48. package/esm2022/lib/Pages/departments/departments.component.mjs +5 -5
  49. package/esm2022/lib/Pages/departments/departments.module.mjs +5 -5
  50. package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +5 -5
  51. package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +5 -5
  52. package/esm2022/lib/Pages/documents/document-template-info/document-template-info.component.mjs +5 -5
  53. package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +5 -5
  54. package/esm2022/lib/Pages/documents/documents.component.mjs +5 -5
  55. package/esm2022/lib/Pages/documents/documents.module.mjs +5 -5
  56. package/esm2022/lib/Pages/documents/documents.routing.mjs +5 -5
  57. package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +5 -5
  58. package/esm2022/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +5 -5
  59. package/esm2022/lib/Pages/empty-data/empty-data.component.mjs +5 -5
  60. package/esm2022/lib/Pages/empty-data/empty-data.module.mjs +5 -5
  61. package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +5 -5
  62. package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +5 -5
  63. package/esm2022/lib/Pages/helpCenter/help-center-routing.module.mjs +5 -5
  64. package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +5 -5
  65. package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +5 -5
  66. package/esm2022/lib/Pages/helpCenter/help-center.module.mjs +5 -5
  67. package/esm2022/lib/Pages/helpCenter/help-centers.component.mjs +5 -5
  68. package/esm2022/lib/Pages/home/filter-pipe.mjs +6 -5
  69. package/esm2022/lib/Pages/home/home.component.mjs +5 -5
  70. package/esm2022/lib/Pages/home/home.module.mjs +5 -5
  71. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +5 -5
  72. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +5 -5
  73. package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +5 -5
  74. package/esm2022/lib/Pages/jobs/jobs.module.mjs +5 -5
  75. package/esm2022/lib/Pages/license/license/license.component.mjs +5 -5
  76. package/esm2022/lib/Pages/license/license.module.mjs +5 -5
  77. package/esm2022/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +5 -5
  78. package/esm2022/lib/Pages/localizations/localizations.component.mjs +5 -5
  79. package/esm2022/lib/Pages/localizations/localizations.module.mjs +5 -5
  80. package/esm2022/lib/Pages/logs/log/log.component.mjs +5 -5
  81. package/esm2022/lib/Pages/logs/logs-routing.module.mjs +5 -5
  82. package/esm2022/lib/Pages/logs/logs.component.mjs +5 -5
  83. package/esm2022/lib/Pages/logs/logs.module.mjs +5 -5
  84. package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +5 -5
  85. package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +5 -5
  86. package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +5 -5
  87. package/esm2022/lib/Pages/lookups/lookups-routing.module.mjs +5 -5
  88. package/esm2022/lib/Pages/lookups/lookups.component.mjs +5 -5
  89. package/esm2022/lib/Pages/lookups/lookups.module.mjs +5 -5
  90. package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +5 -5
  91. package/esm2022/lib/Pages/notifications/edit-email/edit-email.component.mjs +5 -5
  92. package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +5 -5
  93. package/esm2022/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +5 -5
  94. package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +5 -5
  95. package/esm2022/lib/Pages/notifications/notifications.component.mjs +5 -5
  96. package/esm2022/lib/Pages/notifications/notifications.module.mjs +5 -5
  97. package/esm2022/lib/Pages/notifications/notifications.routing.mjs +5 -5
  98. package/esm2022/lib/Pages/notifications/template-info/template-info.component.mjs +5 -5
  99. package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +5 -5
  100. package/esm2022/lib/Pages/organization/add-organization/add-organization.component.mjs +5 -5
  101. package/esm2022/lib/Pages/organization/edit-organization/edit-organization.component.mjs +5 -5
  102. package/esm2022/lib/Pages/organization/list-organization/list-organization.component.mjs +5 -5
  103. package/esm2022/lib/Pages/organization/organization.component.mjs +5 -5
  104. package/esm2022/lib/Pages/organization/organization.module.mjs +5 -5
  105. package/esm2022/lib/Pages/organization/organization.routing.mjs +5 -5
  106. package/esm2022/lib/Pages/providers/provider/provider.component.mjs +5 -5
  107. package/esm2022/lib/Pages/providers/providers-routing.module.mjs +5 -5
  108. package/esm2022/lib/Pages/providers/providers.component.mjs +5 -5
  109. package/esm2022/lib/Pages/providers/providers.module.mjs +5 -5
  110. package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +5 -5
  111. package/esm2022/lib/Pages/publicHolidays/public-holidays-routing.module.mjs +5 -5
  112. package/esm2022/lib/Pages/publicHolidays/public-holidays.component.mjs +5 -5
  113. package/esm2022/lib/Pages/publicHolidays/public-holidays.module.mjs +5 -5
  114. package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +5 -5
  115. package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +5 -5
  116. package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +5 -5
  117. package/esm2022/lib/Pages/roles/roles-routing.module.mjs +5 -5
  118. package/esm2022/lib/Pages/roles/roles.component.mjs +5 -5
  119. package/esm2022/lib/Pages/roles/roles.module.mjs +5 -5
  120. package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +5 -5
  121. package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +5 -5
  122. package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +5 -5
  123. package/esm2022/lib/Pages/sectors/sectors-routing.module.mjs +5 -5
  124. package/esm2022/lib/Pages/sectors/sectors.component.mjs +5 -5
  125. package/esm2022/lib/Pages/sectors/sectors.module.mjs +5 -5
  126. package/esm2022/lib/Pages/shared/Pipes/survey-date.pipe.mjs +6 -5
  127. package/esm2022/lib/Pages/shared/Services/AccountService.service.mjs +4 -4
  128. package/esm2022/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +4 -4
  129. package/esm2022/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +4 -4
  130. package/esm2022/lib/Pages/shared/Services/ConfigurationsService.service.mjs +4 -4
  131. package/esm2022/lib/Pages/shared/Services/DepartmentService.service.mjs +4 -4
  132. package/esm2022/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +4 -4
  133. package/esm2022/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +4 -4
  134. package/esm2022/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +4 -4
  135. package/esm2022/lib/Pages/shared/Services/ErrorService.service.mjs +4 -4
  136. package/esm2022/lib/Pages/shared/Services/GlobalErrorHandler.service.mjs +4 -4
  137. package/esm2022/lib/Pages/shared/Services/HelpCenterService.service.mjs +4 -4
  138. package/esm2022/lib/Pages/shared/Services/HttpErrorInterceptor.service.mjs +4 -4
  139. package/esm2022/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +4 -4
  140. package/esm2022/lib/Pages/shared/Services/JobsService.service.mjs +4 -4
  141. package/esm2022/lib/Pages/shared/Services/LicenseService.service.mjs +4 -4
  142. package/esm2022/lib/Pages/shared/Services/LogsService.mjs +4 -4
  143. package/esm2022/lib/Pages/shared/Services/LookupGroupsService.service.mjs +4 -4
  144. package/esm2022/lib/Pages/shared/Services/LookupService.service.mjs +4 -4
  145. package/esm2022/lib/Pages/shared/Services/PermissionSetService.service.mjs +4 -4
  146. package/esm2022/lib/Pages/shared/Services/PermissionsService.service.mjs +4 -4
  147. package/esm2022/lib/Pages/shared/Services/PublicHolidayService.service.mjs +4 -4
  148. package/esm2022/lib/Pages/shared/Services/SectorService.service.mjs +4 -4
  149. package/esm2022/lib/Pages/shared/Services/TemplateService.service.mjs +4 -4
  150. package/esm2022/lib/Pages/shared/Services/WorkFlowVersionService.service.mjs +4 -4
  151. package/esm2022/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +4 -4
  152. package/esm2022/lib/Pages/shared/Services/WorkflowInstanceService.service.mjs +4 -4
  153. package/esm2022/lib/Pages/shared/Services/WorkflowLogVariablesService.service.mjs +4 -4
  154. package/esm2022/lib/Pages/shared/Services/WorkflowService.service.mjs +4 -4
  155. package/esm2022/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +4 -4
  156. package/esm2022/lib/Pages/shared/Services/data.service.mjs +4 -4
  157. package/esm2022/lib/Pages/shared/Services/injectionModuleService.service.mjs +4 -4
  158. package/esm2022/lib/Pages/shared/Services/localizationsService.service .mjs +4 -4
  159. package/esm2022/lib/Pages/shared/Services/organization.service.mjs +4 -4
  160. package/esm2022/lib/Pages/shared/Services/provider.service.mjs +4 -4
  161. package/esm2022/lib/Pages/shared/Services/survey-question.service.mjs +4 -4
  162. package/esm2022/lib/Pages/shared/Services/survey.service.mjs +4 -4
  163. package/esm2022/lib/Pages/shared/Services/userService.service.mjs +4 -4
  164. package/esm2022/lib/Pages/shared/components/AdDirective.mjs +5 -4
  165. package/esm2022/lib/Pages/shared/components/external-url/external-url.component.mjs +5 -5
  166. package/esm2022/lib/Pages/shared/components/no-results/no-results.component.mjs +5 -5
  167. package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +5 -5
  168. package/esm2022/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +5 -5
  169. package/esm2022/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +5 -5
  170. package/esm2022/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +5 -5
  171. package/esm2022/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +5 -5
  172. package/esm2022/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +5 -5
  173. package/esm2022/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +5 -5
  174. package/esm2022/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +5 -5
  175. package/esm2022/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +5 -5
  176. package/esm2022/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +5 -5
  177. package/esm2022/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +5 -5
  178. package/esm2022/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +5 -5
  179. package/esm2022/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +5 -5
  180. package/esm2022/lib/Pages/shared/components/survey/survey-info/survey-info.component.mjs +5 -5
  181. package/esm2022/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +5 -5
  182. package/esm2022/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +5 -5
  183. package/esm2022/lib/Pages/shared/components/survey/survey.component.mjs +5 -5
  184. package/esm2022/lib/Pages/shared/components/survey-form/survey-form.component.mjs +5 -5
  185. package/esm2022/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +5 -5
  186. package/esm2022/lib/Pages/shared/components/survey-layout/survey-layout.component.mjs +5 -5
  187. package/esm2022/lib/Pages/shared/config.service.mjs +4 -4
  188. package/esm2022/lib/Pages/shared/filter/filter.component.mjs +5 -5
  189. package/esm2022/lib/Pages/shared/modules/public-survey.module.mjs +5 -5
  190. package/esm2022/lib/Pages/shared/modules/survey-routing.module.mjs +5 -5
  191. package/esm2022/lib/Pages/shared/modules/survey.module.mjs +5 -5
  192. package/esm2022/lib/Pages/shared/shared.module.mjs +5 -5
  193. package/esm2022/lib/Pages/shared/stylesbundle.service.mjs +4 -4
  194. package/esm2022/lib/Pages/start/index/index.component.mjs +5 -5
  195. package/esm2022/lib/Pages/start/start-routing.module.mjs +5 -5
  196. package/esm2022/lib/Pages/start/start.module.mjs +5 -5
  197. package/esm2022/lib/Pages/users/users.component.mjs +5 -5
  198. package/esm2022/lib/Pages/users/users.module.mjs +5 -5
  199. package/esm2022/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +5 -5
  200. package/esm2022/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +5 -5
  201. package/esm2022/lib/Pages/workflows/instance-info/instance-info.component.mjs +5 -5
  202. package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +5 -5
  203. package/esm2022/lib/Pages/workflows/version-info/version-info.component.mjs +5 -5
  204. package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +5 -5
  205. package/esm2022/lib/Pages/workflows/workflows-routing.module.mjs +5 -5
  206. package/esm2022/lib/Pages/workflows/workflows.component.mjs +5 -5
  207. package/esm2022/lib/Pages/workflows/workflows.module.mjs +5 -5
  208. package/esm2022/lib/_metronic/core/services/layout-init.service.mjs +4 -4
  209. package/esm2022/lib/_metronic/core/services/layout.service.mjs +4 -4
  210. package/esm2022/lib/_metronic/core/services/page-info.service.mjs +4 -4
  211. package/esm2022/lib/masterlayout.component.mjs +5 -5
  212. package/esm2022/lib/masterlayout.module.mjs +5 -5
  213. package/esm2022/lib/masterlayout.routing.mjs +5 -5
  214. package/fesm2022/bnsights-bbsf-admin-portal.mjs +802 -796
  215. package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -1
  216. package/lib/Pages/anonymouslayout/anonymouslayout.component.d.ts +2 -0
  217. package/package.json +12 -12
@@ -525,11 +525,11 @@ export class WorkflowActivityAddComponent {
525
525
  ngOnDestroy() {
526
526
  this.requestHandlerService.destroyHandler();
527
527
  }
528
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WorkflowActivityAddComponent, deps: [{ token: i1.WorkflowActivityService }, { token: i2.UtilityService }, { token: i3.ActivatedRoute }, { token: i4.PageInfoService }, { token: i3.Router }, { token: i2.RequestHandlerService }, { token: i2.BBSFTranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
529
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WorkflowActivityAddComponent, selector: "lib-workflow-activity-add", ngImport: i0, template: "<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\" *ngIf=\"isAddFormLoaded\">\r\n <div class=\"card-body py-3\">\r\n <BBSF-Form [options]=\"addworkflowActivityFormOptions\">\r\n <!--Start shared controls container-->\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"name\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"sysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"activityType\" [group]=\"addworkflowActivityForm\" (OnChange)=\"activityTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <!--End shared controls container-->\r\n <!--Start participant container-->\r\n <div id=\"participantContainer\" *ngIf=\"showParticipantContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantTypes\" [group]=\"addworkflowActivityForm\" (OnChange)=\"participantTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showParticipantPermssionSet\" class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantPermissionSet\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End participant container-->\r\n <!--Start static controls-->\r\n <div *ngIf=\"showStaticControls\" id=\"staticContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"staticOutcomeName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"staticOutcomeSysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"staticOutcomeNextActivity\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"staticOutcomeCanAddComment\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End static controls-->\r\n <!--Start dynamic controls-->\r\n <div *ngIf=\"showDynamicControls\" id=\"dynamicContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"dynamicTaskName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"dynamicTaskDescription\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"dynamicTaskURL\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"dynamicTaskType\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"dynamicCanComplete\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End dynamic controls-->\r\n\r\n <!--Start condition controls-->\r\n <div *ngIf=\"showConditionControls\" id=\"conditionContainer\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"LeftHandSide\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Condition\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSideType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSide\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionLHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionsDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionRHSTypeDropDown\" [group]=\"addworkflowActivityForm\" (OnChange)=\"conditionRHSTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td *ngIf=\"showConditionRHSWFVariable; else conditionTxtValue\">\r\n <BBSF-DropdownList [options]=\"conditionRHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <ng-template #conditionTxtValue>\r\n <td>\r\n <BBSF-TextBox [options]=\"conditionRHSValue\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n </ng-template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!--End condition controls-->\r\n\r\n <!--Start outcomes container-->\r\n <div *ngIf=\"showOutcomesContainer\" id=\"outcomesContainer\" class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Decision\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--SysName-->\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden SysName-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--can edit SysName-->\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[7]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[3]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <!--CanAddComment-->\r\n <BBSF-CheckBox [options]=\"option[4]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n\r\n <td>\r\n <!--if outcome Can Edit-->\r\n <a *ngIf=\"option[5]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteOutcome(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"canAddOutcome\">\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFActivityOutcome()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n </div>\r\n <!--End outcomes container-->\r\n\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light me-3 btn-sm\" (click)=\"cancelAdd()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i6.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i6.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i6.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i6.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i6.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i6.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }] }); }
528
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkflowActivityAddComponent, deps: [{ token: i1.WorkflowActivityService }, { token: i2.UtilityService }, { token: i3.ActivatedRoute }, { token: i4.PageInfoService }, { token: i3.Router }, { token: i2.RequestHandlerService }, { token: i2.BBSFTranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
529
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: WorkflowActivityAddComponent, selector: "lib-workflow-activity-add", ngImport: i0, template: "<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\" *ngIf=\"isAddFormLoaded\">\r\n <div class=\"card-body py-3\">\r\n <BBSF-Form [options]=\"addworkflowActivityFormOptions\">\r\n <!--Start shared controls container-->\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"name\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"sysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"activityType\" [group]=\"addworkflowActivityForm\" (OnChange)=\"activityTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <!--End shared controls container-->\r\n <!--Start participant container-->\r\n <div id=\"participantContainer\" *ngIf=\"showParticipantContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantTypes\" [group]=\"addworkflowActivityForm\" (OnChange)=\"participantTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showParticipantPermssionSet\" class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantPermissionSet\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End participant container-->\r\n <!--Start static controls-->\r\n <div *ngIf=\"showStaticControls\" id=\"staticContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"staticOutcomeName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"staticOutcomeSysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"staticOutcomeNextActivity\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"staticOutcomeCanAddComment\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End static controls-->\r\n <!--Start dynamic controls-->\r\n <div *ngIf=\"showDynamicControls\" id=\"dynamicContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"dynamicTaskName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"dynamicTaskDescription\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"dynamicTaskURL\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"dynamicTaskType\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"dynamicCanComplete\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End dynamic controls-->\r\n\r\n <!--Start condition controls-->\r\n <div *ngIf=\"showConditionControls\" id=\"conditionContainer\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"LeftHandSide\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Condition\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSideType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSide\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionLHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionsDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionRHSTypeDropDown\" [group]=\"addworkflowActivityForm\" (OnChange)=\"conditionRHSTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td *ngIf=\"showConditionRHSWFVariable; else conditionTxtValue\">\r\n <BBSF-DropdownList [options]=\"conditionRHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <ng-template #conditionTxtValue>\r\n <td>\r\n <BBSF-TextBox [options]=\"conditionRHSValue\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n </ng-template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!--End condition controls-->\r\n\r\n <!--Start outcomes container-->\r\n <div *ngIf=\"showOutcomesContainer\" id=\"outcomesContainer\" class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Decision\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--SysName-->\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden SysName-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--can edit SysName-->\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[7]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[3]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <!--CanAddComment-->\r\n <BBSF-CheckBox [options]=\"option[4]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n\r\n <td>\r\n <!--if outcome Can Edit-->\r\n <a *ngIf=\"option[5]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteOutcome(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"canAddOutcome\">\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFActivityOutcome()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n </div>\r\n <!--End outcomes container-->\r\n\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light me-3 btn-sm\" (click)=\"cancelAdd()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i6.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i6.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i6.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i6.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i6.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i6.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }] }); }
530
530
  }
531
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WorkflowActivityAddComponent, decorators: [{
531
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkflowActivityAddComponent, decorators: [{
532
532
  type: Component,
533
- args: [{ selector: 'lib-workflow-activity-add', template: "<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\" *ngIf=\"isAddFormLoaded\">\r\n <div class=\"card-body py-3\">\r\n <BBSF-Form [options]=\"addworkflowActivityFormOptions\">\r\n <!--Start shared controls container-->\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"name\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"sysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"activityType\" [group]=\"addworkflowActivityForm\" (OnChange)=\"activityTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <!--End shared controls container-->\r\n <!--Start participant container-->\r\n <div id=\"participantContainer\" *ngIf=\"showParticipantContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantTypes\" [group]=\"addworkflowActivityForm\" (OnChange)=\"participantTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showParticipantPermssionSet\" class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantPermissionSet\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End participant container-->\r\n <!--Start static controls-->\r\n <div *ngIf=\"showStaticControls\" id=\"staticContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"staticOutcomeName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"staticOutcomeSysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"staticOutcomeNextActivity\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"staticOutcomeCanAddComment\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End static controls-->\r\n <!--Start dynamic controls-->\r\n <div *ngIf=\"showDynamicControls\" id=\"dynamicContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"dynamicTaskName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"dynamicTaskDescription\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"dynamicTaskURL\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"dynamicTaskType\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"dynamicCanComplete\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End dynamic controls-->\r\n\r\n <!--Start condition controls-->\r\n <div *ngIf=\"showConditionControls\" id=\"conditionContainer\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"LeftHandSide\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Condition\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSideType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSide\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionLHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionsDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionRHSTypeDropDown\" [group]=\"addworkflowActivityForm\" (OnChange)=\"conditionRHSTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td *ngIf=\"showConditionRHSWFVariable; else conditionTxtValue\">\r\n <BBSF-DropdownList [options]=\"conditionRHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <ng-template #conditionTxtValue>\r\n <td>\r\n <BBSF-TextBox [options]=\"conditionRHSValue\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n </ng-template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!--End condition controls-->\r\n\r\n <!--Start outcomes container-->\r\n <div *ngIf=\"showOutcomesContainer\" id=\"outcomesContainer\" class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Decision\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--SysName-->\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden SysName-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--can edit SysName-->\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[7]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[3]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <!--CanAddComment-->\r\n <BBSF-CheckBox [options]=\"option[4]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n\r\n <td>\r\n <!--if outcome Can Edit-->\r\n <a *ngIf=\"option[5]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteOutcome(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"canAddOutcome\">\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFActivityOutcome()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n </div>\r\n <!--End outcomes container-->\r\n\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light me-3 btn-sm\" (click)=\"cancelAdd()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n" }]
533
+ args: [{ selector: 'lib-workflow-activity-add', standalone: false, template: "<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\" *ngIf=\"isAddFormLoaded\">\r\n <div class=\"card-body py-3\">\r\n <BBSF-Form [options]=\"addworkflowActivityFormOptions\">\r\n <!--Start shared controls container-->\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"name\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"sysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"activityType\" [group]=\"addworkflowActivityForm\" (OnChange)=\"activityTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <!--End shared controls container-->\r\n <!--Start participant container-->\r\n <div id=\"participantContainer\" *ngIf=\"showParticipantContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantTypes\" [group]=\"addworkflowActivityForm\" (OnChange)=\"participantTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showParticipantPermssionSet\" class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantPermissionSet\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End participant container-->\r\n <!--Start static controls-->\r\n <div *ngIf=\"showStaticControls\" id=\"staticContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"staticOutcomeName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"staticOutcomeSysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"staticOutcomeNextActivity\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"staticOutcomeCanAddComment\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End static controls-->\r\n <!--Start dynamic controls-->\r\n <div *ngIf=\"showDynamicControls\" id=\"dynamicContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"dynamicTaskName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"dynamicTaskDescription\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"dynamicTaskURL\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"dynamicTaskType\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"dynamicCanComplete\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End dynamic controls-->\r\n\r\n <!--Start condition controls-->\r\n <div *ngIf=\"showConditionControls\" id=\"conditionContainer\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"LeftHandSide\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Condition\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSideType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSide\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionLHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionsDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionRHSTypeDropDown\" [group]=\"addworkflowActivityForm\" (OnChange)=\"conditionRHSTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td *ngIf=\"showConditionRHSWFVariable; else conditionTxtValue\">\r\n <BBSF-DropdownList [options]=\"conditionRHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <ng-template #conditionTxtValue>\r\n <td>\r\n <BBSF-TextBox [options]=\"conditionRHSValue\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n </ng-template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!--End condition controls-->\r\n\r\n <!--Start outcomes container-->\r\n <div *ngIf=\"showOutcomesContainer\" id=\"outcomesContainer\" class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Decision\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--SysName-->\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden SysName-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--can edit SysName-->\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[7]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[3]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <!--CanAddComment-->\r\n <BBSF-CheckBox [options]=\"option[4]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n\r\n <td>\r\n <!--if outcome Can Edit-->\r\n <a *ngIf=\"option[5]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteOutcome(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"canAddOutcome\">\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFActivityOutcome()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n </div>\r\n <!--End outcomes container-->\r\n\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light me-3 btn-sm\" (click)=\"cancelAdd()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n" }]
534
534
  }], ctorParameters: () => [{ type: i1.WorkflowActivityService }, { type: i2.UtilityService }, { type: i3.ActivatedRoute }, { type: i4.PageInfoService }, { type: i3.Router }, { type: i2.RequestHandlerService }, { type: i2.BBSFTranslateService }] });
535
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYWN0aXZpdHktYWRkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvd29ya2Zsb3dzL2FjdGl2aXR5L3dvcmtmbG93LWFjdGl2aXR5LWFkZC93b3JrZmxvdy1hY3Rpdml0eS1hZGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy93b3JrZmxvd3MvYWN0aXZpdHkvd29ya2Zsb3ctYWN0aXZpdHktYWRkL3dvcmtmbG93LWFjdGl2aXR5LWFkZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSwwQkFBMEIsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdqTyxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdURBQXVELENBQUM7Ozs7Ozs7O0FBTXhGLE1BQU0sT0FBTyw0QkFBNEI7SUFnRXZDLFlBQW9CLHVCQUFnRCxFQUFTLGNBQThCLEVBQ2pHLGNBQThCLEVBQVUsZUFBZ0MsRUFBVSxNQUFjLEVBQVUscUJBQTRDLEVBQ3RKLG9CQUEwQztRQUZoQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ2pHLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQ3RKLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFqRXBELG1CQUFtQjtRQUNuQixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUdqQyw4QkFBOEI7UUFDOUIsNEJBQXVCLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUMsbUNBQThCLEdBQUcsSUFBSSxXQUFXLENBQUM7UUFLakQsdUJBQXVCO1FBQ3ZCLHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUU3QixrQ0FBa0M7UUFDbEMsNkJBQXdCLEdBQVksS0FBSyxDQUFDO1FBQzFDLGdDQUEyQixHQUFZLEtBQUssQ0FBQztRQUk3Qyx1REFBdUQ7UUFDdkQsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBUXJDLHFDQUFxQztRQUNyQyxnREFBZ0Q7UUFDaEQsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBTXBDLHlCQUF5QjtRQUN6QiwwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFNdkMsK0JBQTBCLEdBQVksS0FBSyxDQUFDO1FBRTVDLDhCQUE4QjtRQUM5QixvQkFBZSxHQUFVLEVBQUUsQ0FBQztRQUM1QixrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUMxQiwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFFOUIsZUFBZTtRQUNmLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLHdCQUFtQixHQUFHLEVBQUUsQ0FBQztRQUN6Qix3QkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDekIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRXRCLDRCQUE0QjtRQUM1QiwrQkFBMEIsR0FBRyxFQUFFLENBQUM7UUFDaEMsK0JBQTBCLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLHlCQUFvQixHQUFHLEVBQUUsQ0FBQztRQUMxQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQXVFbkIsZUFBZTtRQUNmLDBCQUFxQixHQUFHLEdBQUcsRUFBRTtZQUMzQixJQUFJLFVBQVUsR0FBVSxFQUFFLENBQUM7WUFDM0IsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQVksQ0FBQztZQUM1RCxJQUFJLFFBQVEsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3JDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNqQyxRQUFRLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7WUFDdkMsUUFBUSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3pDLFFBQVEsQ0FBQyx1QkFBdUIsR0FBRyxXQUFXLENBQUMsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFFdEYsdUJBQXVCO1lBQ3ZCLElBQUksV0FBVyxDQUFDLDZDQUE2QyxDQUFDLElBQUksU0FBUyxFQUFFO2dCQUMzRSxRQUFRLENBQUMsY0FBYyxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDakQsUUFBUSxDQUFDLGNBQWMsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ2pELFFBQVEsQ0FBQyxjQUFjLENBQUMsNEJBQTRCLEdBQUcsV0FBVyxDQUFDLDZDQUE2QyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzdILElBQUksV0FBVyxDQUFDLDZDQUE2QyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsRUFBRTtvQkFDdEcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsR0FBRyxXQUFXLENBQUMsdUNBQXVDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDbEg7YUFDRjtZQUNELFFBQVEsUUFBUSxDQUFDLHVCQUF1QixFQUFFO2dCQUN4QyxLQUFLLFlBQVksQ0FBQyxRQUFRLENBQUM7Z0JBQzNCLEtBQUssWUFBWSxDQUFDLE1BQU0sQ0FBQztnQkFDekIsS0FBSyxZQUFZLENBQUMsY0FBYztvQkFDOUIsUUFBUSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO29CQUN6QyxRQUFRLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxlQUFlLENBQUM7b0JBQ3ZELFFBQVEsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztvQkFDdkMsUUFBUSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUM1RyxRQUFRLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDLGtCQUFrQixDQUFDO29CQUM3RCxNQUFNO2dCQUNSLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQztnQkFDeEIsS0FBSyxZQUFZLENBQUMsS0FBSztvQkFDckIsUUFBUSxDQUFDLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDM0QsUUFBUSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDO29CQUNyRCxRQUFRLENBQUMsbUJBQW1CLEdBQUcsV0FBVyxDQUFDLG1CQUFtQixDQUFDO29CQUMvRCxRQUFRLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7b0JBQ25ELE1BQU07Z0JBQ1IsS0FBSyxZQUFZLENBQUMsU0FBUztvQkFDekIsUUFBUSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDN0QsUUFBUSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDN0QsUUFBUSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDN0QsUUFBUSxDQUFDLHVCQUF1QixHQUFHLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDdkUsUUFBUSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNwRixNQUFNO2FBRVQ7WUFDRCx3Q0FBd0M7WUFDeEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzNDLElBQUksU0FBUyxHQUFHLFdBQVcsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksU0FBUyxJQUFJLFNBQVM7b0JBQ3hCLFNBQVM7Z0JBRVgsSUFBSSxXQUFXLEdBQUcsV0FBVyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFFakQsSUFBSSxjQUFzQixDQUFDO2dCQUMzQixJQUFJLHFCQUFxQixHQUFHLFdBQVcsQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDckUsSUFBSSxxQkFBcUI7b0JBQ3ZCLGNBQWMsR0FBRyxXQUFXLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLENBQUM7O29CQUUzRCxjQUFjLEdBQUcsV0FBVyxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUU1RCxJQUFJLGVBQWUsR0FBRyxXQUFXLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xFLElBQUksb0JBQW9CLEdBQUcsV0FBVyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUVuRSxJQUFJLGVBQWUsR0FBMkIsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO2dCQUMzRSxlQUFlLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztnQkFDcEMsZUFBZSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO2dCQUM3QyxlQUFlLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7Z0JBQzVDLGVBQWUsQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO2dCQUNoRCxlQUFlLENBQUMsbUJBQW1CLEdBQUcsZUFBZSxDQUFDO2dCQUN0RCxlQUFlLENBQUMsYUFBYSxHQUFHLG9CQUFvQixDQUFDO2dCQUVyRCxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUN6QztZQUdELFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUIsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBQ0YsNkJBQXdCLEdBQUcsQ0FBQyxRQUFRLEVBQW1CLEVBQUU7WUFDdkQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDO1FBQ0YsaUJBQVksR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUM7UUFySkEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osZUFBZSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDL0IsZUFBZSxDQUFDLGVBQWUsR0FBRyxFQUNqQyxDQUFDO1FBRUYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN6RCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxlQUFlLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN4RixlQUFlLENBQUMsZUFBZSxHQUFHO1lBQ2hDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7WUFDakgsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO1lBQzNELEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLDJCQUEyQixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtZQUNwSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7U0FDNUQsQ0FBQztRQUNGLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLGNBQWM7UUFDWixJQUFJLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNuRSxJQUFJLFNBQVMsR0FBRyxNQUFhLENBQUM7WUFDOUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7WUFFL0MsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyw4QkFBOEIsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1lBQzdFLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDbEYsSUFBSSxDQUFDLDhCQUE4QixDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztZQUMxRixJQUFJLENBQUMsOEJBQThCLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUV6RSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksMEJBQTBCLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1lBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztZQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1lBRTFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztZQUU3QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcseUJBQXlCLENBQUM7WUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDO1lBQzVDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBRXBDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBRTlCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQXVGRCxtQkFBbUI7SUFDbkIsMEJBQTBCLENBQUMsUUFBZTtRQUN4QyxJQUFJLGVBQWUsR0FBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxhQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRTlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hDLElBQUksY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxJQUFJLG9CQUFvQixHQUFVLEVBQUUsQ0FBQztZQUVyQyxJQUFJLFNBQVMsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ3JDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUNqQyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUMzQixTQUFTLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDaEMsU0FBUyxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDO1lBRXpDLElBQUksSUFBSSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7WUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO1lBRXBDLElBQUksV0FBVyxHQUFHLElBQUksMEJBQTBCLEVBQUUsQ0FBQztZQUNuRCxXQUFXLENBQUMsSUFBSSxHQUFHLGFBQWEsR0FBRyxDQUFDLENBQUM7WUFDckMsV0FBVyxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7WUFDNUMsV0FBVyxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7WUFDOUMsV0FBVyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDekIsV0FBVyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDOUIsV0FBVyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFFNUIsSUFBSSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ2xELHNCQUFzQixDQUFDLElBQUksR0FBRyx3QkFBd0IsR0FBRyxDQUFDLENBQUM7WUFDM0Qsc0JBQXNCLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDO1lBQ3BELHNCQUFzQixDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQzdDLHNCQUFzQixDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDO1lBQzdELHNCQUFzQixDQUFDLFVBQVUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUM7WUFDbkUsc0JBQXNCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN6QyxzQkFBc0IsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1lBRXZDLElBQUksd0JBQXdCLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNyRCx3QkFBd0IsQ0FBQyxJQUFJLEdBQUcsMEJBQTBCLEdBQUcsQ0FBQyxDQUFDO1lBQy9ELHdCQUF3QixDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7WUFDL0Msd0JBQXdCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUM1RCx3QkFBd0IsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQ2hELHdCQUF3QixDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUVsRCxJQUFJLG9CQUFvQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDakQsb0JBQW9CLENBQUMsSUFBSSxHQUFHLHNCQUFzQixHQUFHLENBQUMsQ0FBQztZQUN2RCxvQkFBb0IsQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQztZQUMxRCxvQkFBb0IsQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDO1lBRWhELElBQUksY0FBdUIsQ0FBQztZQUM1QixjQUFjLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQztZQUV4QyxJQUFJLHFCQUFxQixHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7WUFDakQscUJBQXFCLENBQUMsSUFBSSxHQUFHLHVCQUF1QixHQUFHLENBQUMsQ0FBQztZQUN6RCxxQkFBcUIsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztZQUM1QyxxQkFBcUIsQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDLGNBQWMsQ0FBQztZQUU1RCxJQUFJLHFCQUFxQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEQscUJBQXFCLENBQUMsSUFBSSxHQUFHLHVCQUF1QixHQUFHLENBQUMsQ0FBQztZQUN6RCxxQkFBcUIsQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDLGNBQWMsQ0FBQztZQUU1RCxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSx3QkFBd0IsRUFDaEcsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixDQUFDLENBQUM7WUFHdEYsZUFBZSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzNDLGFBQWEsSUFBSSxDQUFDLENBQUM7U0FFcEI7UUFDRCxPQUFPLENBQUMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxvQkFBb0I7UUFDbEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUUvQixJQUFJLG9CQUFvQixHQUFVLEVBQUUsQ0FBQztRQUVyQyxJQUFJLFNBQVMsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ3JDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUNyQyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUMzQixTQUFTLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDaEMsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFcEIsSUFBSSxXQUFXLEdBQUcsSUFBSSwwQkFBMEIsRUFBRSxDQUFDO1FBQ25ELFdBQVcsQ0FBQyxJQUFJLEdBQUcsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUN6QyxXQUFXLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUM1QyxXQUFXLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUM5QyxXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUU5QixJQUFJLHNCQUFzQixHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbEQsc0JBQXNCLENBQUMsSUFBSSxHQUFHLHdCQUF3QixHQUFHLEtBQUssQ0FBQztRQUMvRCxzQkFBc0IsQ0FBQyxRQUFRLEdBQUcsaUJBQWlCLENBQUM7UUFDcEQsc0JBQXNCLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDN0Msc0JBQXNCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUV6QyxJQUFJLHdCQUF3QixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDckQsd0JBQXdCLENBQUMsSUFBSSxHQUFHLDBCQUEwQixHQUFHLEtBQUssQ0FBQztRQUNuRSx3QkFBd0IsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQy9DLHdCQUF3QixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDNUQsd0JBQXdCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUNoRCx3QkFBd0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFFbEQsSUFBSSxvQkFBb0IsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ2pELG9CQUFvQixDQUFDLElBQUksR0FBRyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDM0Qsb0JBQW9CLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQztRQUVoRCxJQUFJLGNBQXVCLENBQUM7UUFDNUIsY0FBYyxHQUFHLElBQUksQ0FBQztRQUV0QixJQUFJLHFCQUFxQixHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDakQscUJBQXFCLENBQUMsSUFBSSxHQUFHLHVCQUF1QixHQUFHLEtBQUssQ0FBQztRQUM3RCxxQkFBcUIsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztRQUU1QyxJQUFJLHFCQUFxQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDbEQscUJBQXFCLENBQUMsSUFBSSxHQUFHLHVCQUF1QixHQUFHLEtBQUssQ0FBQztRQUM3RCxxQkFBcUIsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRW5DLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLG9CQUFvQixFQUN0SCxjQUFjLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDO0lBRTFCLENBQUM7SUFDRCxhQUFhLENBQUMsY0FBbUI7UUFDL0IsSUFBSSxtQkFBbUIsR0FBVyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvRSxJQUFJLG1CQUFtQixLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUM5QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNwRTtTQUNGO0lBQ0gsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixvQkFBb0IsQ0FBQyxZQUFZO1FBQy9CLFlBQVksR0FBRyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDM0Msb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLEtBQUssQ0FBQztRQUN4QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBRW5DLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2xHLElBQUksU0FBUyxHQUFHLE1BQWEsQ0FBQztZQUM5QixJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQzVCLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFFeEMsUUFBUSxZQUFZLEVBQUU7Z0JBQ3BCLEtBQUssWUFBWSxDQUFDLFFBQVEsQ0FBQztnQkFDM0IsS0FBSyxZQUFZLENBQUMsTUFBTSxDQUFDO2dCQUN6QixLQUFLLFlBQVksQ0FBQyxjQUFjO29CQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDO29CQUM5RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7b0JBRTdELDJDQUEyQztvQkFDM0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7b0JBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsNkNBQTZDLENBQUM7b0JBQzNFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUM7b0JBQ3BELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO29CQUM1RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztvQkFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztvQkFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7b0JBRXhDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSwwQkFBMEIsRUFBRSxDQUFDO29CQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxHQUFHLGtCQUFrQixDQUFDO29CQUN6RCxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQztvQkFDM0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO29CQUVyQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSwyQkFBMkIsRUFBRSxDQUFDO29CQUNoRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO29CQUNyRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxHQUFHLHlCQUF5QixDQUFDO29CQUN2RSxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxHQUFHLDBCQUEwQixDQUFDO29CQUN6RSxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztvQkFFNUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO29CQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztvQkFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztvQkFDMUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUVyQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7b0JBQzdDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO29CQUM5QyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7b0JBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7b0JBQ3BELElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztvQkFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7b0JBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFFdkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztvQkFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQztvQkFDcEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQztvQkFDeEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDO29CQUM1RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztvQkFFekQsSUFBSSxjQUFjLEdBQVEsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDMUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUV2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO29CQUNoQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO29CQUNyQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO29CQUNsQyxNQUFNO2dCQUNSLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQztnQkFDeEIsS0FBSyxZQUFZLENBQUMsS0FBSztvQkFDckIsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRTt3QkFDdEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUM7d0JBQzlELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQzt3QkFDN0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7d0JBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsNkNBQTZDLENBQUM7d0JBQzNFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUM7d0JBQ3BELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO3dCQUM1RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQzt3QkFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQzt3QkFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7d0JBQ3hDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7cUJBQ3RDO29CQUNELElBQUksSUFBSSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDO29CQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7b0JBRS9DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLDBCQUEwQixFQUFFLENBQUM7b0JBQzFELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUM7b0JBQ2xELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcscUJBQXFCLENBQUM7b0JBQzlELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEdBQUcsc0JBQXNCLENBQUM7b0JBQ2hFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO29CQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztvQkFDcEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7b0JBRXZDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO29CQUNqRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDO29CQUNsRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxHQUFHLGlCQUFpQixDQUFDO29CQUN2RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7b0JBQ2hELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO29CQUM1QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztvQkFFMUMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7b0JBQ3ZELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEdBQUcscUJBQXFCLENBQUM7b0JBQzVELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDO29CQUN6RCxJQUFJLENBQUMseUJBQXlCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDbEUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7b0JBQ3RELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7b0JBQ3hELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO29CQUVqRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO29CQUMzRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQztvQkFDdkQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUM7b0JBQzNELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQztvQkFDcEUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDO29CQUU1RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO29CQUMvQixNQUFNO2dCQUNSLEtBQUssWUFBWSxDQUFDLFNBQVM7b0JBQ3pCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO29CQUNuRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztvQkFDbkQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQzFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztvQkFFckMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7b0JBQ2xELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLENBQUM7b0JBQ3RELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUMzQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxHQUFHLG1CQUFtQixDQUFDO29CQUM1RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQztvQkFDdkUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7b0JBQ2pELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7b0JBQ25ELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO29CQUU1QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDaEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksR0FBRyx5QkFBeUIsQ0FBQztvQkFDekQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO29CQUNsRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7b0JBQ3hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO29CQUMvQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFFMUMsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMvSixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDdEQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQztvQkFDMUQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQy9DLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO29CQUNyRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztvQkFDckQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7b0JBQ2hELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLEdBQUcsZUFBZSxDQUFDO29CQUU5RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDbEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQztvQkFDdEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQzNDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUM7b0JBQzVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDO29CQUN2RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztvQkFDakQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7b0JBRTVDLElBQUksdUJBQXVCLEdBQVEsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDbkYsSUFBSSxDQUFDLGVBQWUsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFFaEQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztvQkFDbEMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztvQkFDdkMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztvQkFDbEMsTUFBTTthQUNUO1lBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUVoRixDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxJQUFJO1FBQzNCLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUIsSUFBSSxJQUFJLElBQUksaUJBQWlCLENBQUMsUUFBUSxFQUFFO1lBQ3RDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFdkQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQztZQUN0RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUMzQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxHQUFHLG1CQUFtQixDQUFDO1lBQzVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDO1lBQ3ZFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQ2pELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBRTVDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7U0FDeEM7YUFDSTtZQUNILElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUVqRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztZQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztZQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDN0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDekMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7WUFFdkMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLEtBQUssQ0FBQztTQUV6QztJQUNILENBQUM7SUFDRCx1QkFBdUIsQ0FBQyxlQUFlO1FBQ3JDLGVBQWUsR0FBRyxlQUFlLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDakQsSUFBSSxlQUFlLElBQUksZUFBZSxDQUFDLGFBQWEsRUFBRTtZQUNwRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxHQUFHLHVDQUF1QyxDQUFDO1lBQzdFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDO1lBQ3pELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQ3BFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQ3RELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFDdkQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQztTQUN6QzthQUNJO1lBQ0gsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1lBQ3BGLElBQUksQ0FBQywyQkFBMkIsR0FBRyxLQUFLLENBQUM7U0FDMUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtJQUNaLDRCQUE0QjtRQUMxQixJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLDZDQUE2QyxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFakUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV2RCwwQkFBMEI7UUFDMUIsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQztRQUNyRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQyxJQUFJLFNBQVMsR0FBRyxXQUFXLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzdDLElBQUksU0FBUyxJQUFJLFNBQVM7Z0JBQ3hCLFNBQVM7WUFFWCxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQywwQkFBMEIsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMzRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUVELFFBQVE7SUFDUixTQUFTO1FBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFlBQVk7SUFDWixXQUFXO1FBQ1QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzlDLENBQUM7K0dBL21CVSw0QkFBNEI7bUdBQTVCLDRCQUE0QixpRUNuQnpDLDQvVUF3T0E7OzRGRHJOYSw0QkFBNEI7a0JBSnhDLFNBQVM7K0JBQ0UsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ2hlY2tCb3hPcHRpb25zLCBDb250cm9sTGF5b3V0LCBEcm9wZG93bk9wdGlvbnMsIEVuZ2xpc2hBcmFiaWNEVE8sIEZvcm1PcHRpb25zLCBJbnB1dFR5cGUsIE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucywgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMsIFRleHRCb3hPcHRpb25zLCBUb2dnbGVTbGlkZU9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBY3Rpdml0eVR5cGUsIFBhcnRpY2lwYW50VHlwZSwgUmlnaHRoYW5kc2lkZXR5cGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ29uZGl0aW9uUkhTVHlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9FbnVtcy9jb25maWd1cmF0aW9uL0NvbmRpdGlvblJIU1R5cGUnO1xyXG5pbXBvcnQgeyBXRkFjdGl2aXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9FbnVtcy9XRkFjdGl2aXR5VHlwZSc7XHJcbmltcG9ydCB7IFBhcnRpY2lwYW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWxzL1BhcnRpY2lwYW50TW9kZWwnO1xyXG5pbXBvcnQgeyBXRkFjdGl2aXR5TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlNb2RlbCc7XHJcbmltcG9ydCB7IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlPdXRjb21lTW9kZWwnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd0FjdGl2aXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9Xb3JrZmxvd0FjdGl2aXR5U2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItd29ya2Zsb3ctYWN0aXZpdHktYWRkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctYWN0aXZpdHktYWRkLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dBY3Rpdml0eUFkZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIGlzQWRkRm9ybUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZlcnNpb25JRDogc3RyaW5nO1xyXG5cclxuICAvL0FkZCBBY3Rpdml0eSBzaGFyZWQgY29udHJvbHNcclxuICBhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBuYW1lOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBzeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBhY3Rpdml0eVR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBjYW5BZGRPdXRjb21lOiBib29sZWFuO1xyXG4gIC8vU2hhcmVkIHJlcXVpcmVkIGxpc3RzXHJcbiAgQWN0aXZpdHlUeXBlTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgLy9TaGFyZWQgUGFydGljaXBhbnQgdHlwZSBhbmQgZGF0YVxyXG4gIHNob3dQYXJ0aWNpcGFudENvbnRhaW5lcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dQYXJ0aWNpcGFudFBlcm1zc2lvblNldDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBhcnRpY2lwYW50VHlwZXM6IERyb3Bkb3duT3B0aW9ucztcclxuICBwYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQ6IERyb3Bkb3duT3B0aW9ucztcclxuXHJcbiAgLy9EeW5hbWljIFR5cGVzIENvbnRyb2xzIC8vKEFwcHJvdmFsLEFjdGlvbixQZXJjZW50YWdlKVxyXG4gIHNob3dEeW5hbWljQ29udHJvbHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkeW5hbWljVGFza05hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIGR5bmFtaWNUYXNrRGVzY3JpcHRpb246IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucztcclxuICBkeW5hbWljVGFza1VSTDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZHluYW1pY1Rhc2tUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgZHluYW1pY0NhbkNvbXBsZXRlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcblxyXG5cclxuICAvL1N0YXRpYyB0eXBlcyBjb250cm9scyAoRW1haWwsU2xlZXApXHJcbiAgLy9FbWFpbCBUeXBlIENvbnRyb2xzIC8vKyBpbml0aWFsaXplIHBhcnRpY2lwYW50XHJcbiAgc2hvd1N0YXRpY0NvbnRyb2xzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RhdGljT3V0Y29tZU5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIHN0YXRpY091dGNvbWVTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQ6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuXHJcbiAgLy9Db25kaXRpb24gdHlwZSBjb250cm9sc1xyXG4gIHNob3dDb25kaXRpb25Db250cm9sczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbmRpdGlvbkxIU0Ryb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uc0Ryb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uUkhTVHlwZURyb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uUkhTRHJvcERvd246IERyb3Bkb3duT3B0aW9ucztcclxuICBjb25kaXRpb25SSFNWYWx1ZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy9PdXRjb21lcyAoZHluYW1pYyxjb25kaXRpb24pXHJcbiAgb3V0Y29tZXNPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIG91dGNvbWVzQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgc2hvd091dGNvbWVzQ29udGFpbmVyID0gZmFsc2U7XHJcblxyXG4gIC8vUmVxdWlyZWRMaXN0c1xyXG4gIHRhc2tUeXBlTGlzdCA9IFtdO1xyXG4gIHBhcnRpY2lwYW50VHlwZUxpc3QgPSBbXTtcclxuICBwYXJ0aWNpcGFudERhdGFMaXN0ID0gW107XHJcbiAgbmV4dEFjdGl2aXR5TGlzdCA9IFtdO1xyXG5cclxuICAvL0NvbmRpdGlvblR5cGVSZXF1aXJlZExpc3RzXHJcbiAgY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3QgPSBbXTtcclxuICBjb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdCA9IFtdO1xyXG4gIGNvbmRpdGlvblJIU1R5cGVMaXN0ID0gW107XHJcbiAgY29uZGl0aW9uTGlzdCA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHdvcmtmbG93QWN0aXZpdHlTZXJ2aWNlOiBXb3JrZmxvd0FjdGl2aXR5U2VydmljZSwgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLnZlcnNpb25JRCA9IHBhcmFtc1sndmlkJ107XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSBcIlwiO1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgIF07XHJcblxyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRXb3JrZmxvd0FjdGl2aXR5XCIpO1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIldvcmtGbG93c1wiKSwgcGF0aDogJy9BZG1pbi9Xb3JrZmxvd3Mvd29ya2Zsb3cnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfVxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgLy9Jbml0aWFsaXplIGFkZCBwYWdlIGFuZCByZXF1aXJlZCBERExzXHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICB0aGlzLndvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLmxvYWRBZGREcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdGhpcy5BY3Rpdml0eVR5cGVMaXN0ID0gcmVzdWx0T2JqLmFjdGl2aXR5TGlzdDtcclxuXHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMuZm9ybUdyb3VwID0gdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybTtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMuZ2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkV0ZBY3Rpdml0eU1vZGVsO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEFkZFdGQWN0aXZpdHlGdW5jdGlvbjtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMub25TdWNjZXNzSGFuZGxlciA9IHRoaXMub25BZGRTdWNjZXNzO1xyXG5cclxuICAgICAgdGhpcy5uYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMubmFtZS5uYW1lID0gXCJOYW1lXCI7XHJcbiAgICAgIHRoaXMubmFtZS5hcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICAgIHRoaXMubmFtZS5lbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5uYW1lLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLm5hbWUubWF4TGVuZ3RoID0gMjU1O1xyXG5cclxuICAgICAgdGhpcy5zeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuc3lzTmFtZS5uYW1lID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgIHRoaXMuc3lzTmFtZS5sYWJlbEtleSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgICB0aGlzLnN5c05hbWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLnN5c05hbWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuc3lzTmFtZS5tYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICB0aGlzLmFjdGl2aXR5VHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hY3Rpdml0eVR5cGUubmFtZSA9IFwiQWN0aXZpdHlUeXBlSXRlbUlEX0dVSURcIjtcclxuICAgICAgdGhpcy5hY3Rpdml0eVR5cGUubGFiZWxLZXkgPSBcIkFjdGl2aXR5VHlwZVwiO1xyXG4gICAgICB0aGlzLmFjdGl2aXR5VHlwZS5kYXRhU291cmNlID0gdGhpcy5BY3Rpdml0eVR5cGVMaXN0O1xyXG4gICAgICB0aGlzLmFjdGl2aXR5VHlwZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmFjdGl2aXR5VHlwZS5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5pc0FkZEZvcm1Mb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9BZGQgZnVuY3Rpb25zXHJcbiAgZ2V0QWRkV0ZBY3Rpdml0eU1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIGxldCBhZGRNb2RlbCA9IG5ldyBXRkFjdGl2aXR5TW9kZWwoKTtcclxuICAgIGFkZE1vZGVsLk5hbWUgPSBSZXN1bHRNb2RlbC5OYW1lO1xyXG4gICAgYWRkTW9kZWwuU3lzTmFtZSA9IFJlc3VsdE1vZGVsLlN5c05hbWU7XHJcbiAgICBhZGRNb2RlbC5WZXJzaW9uSURfR1VJRCA9IHRoaXMudmVyc2lvbklEO1xyXG4gICAgYWRkTW9kZWwuQWN0aXZpdHlUeXBlSXRlbUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5BY3Rpdml0eVR5cGVJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAvL0lmIHBhcnRpY2lwYW50IGV4aXN0c1xyXG4gICAgaWYgKFJlc3VsdE1vZGVsW1wiUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ1wiXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgYWRkTW9kZWwuUGFydGljaXBhbnREVE8gPSBuZXcgUGFydGljaXBhbnRNb2RlbCgpO1xyXG4gICAgICBhZGRNb2RlbC5QYXJ0aWNpcGFudERUTyA9IG5ldyBQYXJ0aWNpcGFudE1vZGVsKCk7XHJcbiAgICAgIGFkZE1vZGVsLlBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmcgPSBSZXN1bHRNb2RlbFtcIlBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmdcIl0udG9TdHJpbmcoKTtcclxuICAgICAgaWYgKFJlc3VsdE1vZGVsW1wiUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ1wiXS5pbmNsdWRlcyhQYXJ0aWNpcGFudFR5cGUuUGVybWlzc2lvblNldCkpIHtcclxuICAgICAgICBhZGRNb2RlbC5QYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nID0gUmVzdWx0TW9kZWxbXCJQYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nXCJdLnRvU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHN3aXRjaCAoYWRkTW9kZWwuQWN0aXZpdHlUeXBlSXRlbUlEX0dVSUQpIHtcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQXBwcm92YWw6XHJcbiAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkFjdGlvbjpcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuUGVyY2VudGFnZVRhc2s6XHJcbiAgICAgICAgYWRkTW9kZWwuVGFza05hbWUgPSBSZXN1bHRNb2RlbC5UYXNrTmFtZTtcclxuICAgICAgICBhZGRNb2RlbC5UYXNrRGVzY3JpcHRpb24gPSBSZXN1bHRNb2RlbC5UYXNrRGVzY3JpcHRpb247XHJcbiAgICAgICAgYWRkTW9kZWwuVGFza1VSTCA9IFJlc3VsdE1vZGVsLlRhc2tVUkw7XHJcbiAgICAgICAgYWRkTW9kZWwuVGFza0NvcnJsVHlwZUlEID0gUmVzdWx0TW9kZWwuVGFza0NvcnJsVHlwZUlEICE9IG51bGwgPyBOdW1iZXIoUmVzdWx0TW9kZWwuVGFza0NvcnJsVHlwZUlEKSA6IG51bGw7XHJcbiAgICAgICAgYWRkTW9kZWwuQ2FuQ29tcGxldGVGcm9tVE1FID0gUmVzdWx0TW9kZWwuQ2FuQ29tcGxldGVGcm9tVE1FO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5FbWFpbDpcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuU2xlZXA6XHJcbiAgICAgICAgYWRkTW9kZWwuTm9ybWFsT3V0Y29tZU5hbWUgPSBSZXN1bHRNb2RlbC5Ob3JtYWxPdXRjb21lTmFtZTtcclxuICAgICAgICBhZGRNb2RlbC5PdXRjb21lU3lzTmFtZSA9IFJlc3VsdE1vZGVsLk91dGNvbWVTeXNOYW1lO1xyXG4gICAgICAgIGFkZE1vZGVsLk5leHRBY3Rpdml0eUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5OZXh0QWN0aXZpdHlJRF9HVUlEO1xyXG4gICAgICAgIGFkZE1vZGVsLkNhbkFkZENvbW1lbnQgPSBSZXN1bHRNb2RlbC5DYW5BZGRDb21tZW50O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5Db25kaXRpb246XHJcbiAgICAgICAgYWRkTW9kZWwuTEhTVmFyaWFibGVJRF9HVUlEID0gUmVzdWx0TW9kZWwuTEhTVmFyaWFibGVJRF9HVUlEO1xyXG4gICAgICAgIGFkZE1vZGVsLlJIU1ZhcmlhYmxlSURfR1VJRCA9IFJlc3VsdE1vZGVsLlJIU1ZhcmlhYmxlSURfR1VJRDtcclxuICAgICAgICBhZGRNb2RlbC5SSFNUeXBlSXRlbUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5SSFNUeXBlSXRlbUlEX0dVSUQ7XHJcbiAgICAgICAgYWRkTW9kZWwuT3BlcmF0b3JUeXBlSXRlbUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5PcGVyYXRvclR5cGVJdGVtSURfR1VJRDtcclxuICAgICAgICBhZGRNb2RlbC5SSFNWYWx1ZSA9IFJlc3VsdE1vZGVsLlJIU1ZhbHVlICE9IHVuZGVmaW5lZCA/IFJlc3VsdE1vZGVsLlJIU1ZhbHVlIDogbnVsbDtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICB9XHJcbiAgICAvL1NldCBPdXRjb21lcyAoZHluYW1pYyxjb25kaXRpb24gdHlwZXMpXHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMub3V0Y29tZXNDb3VudDsgaisrKSB7XHJcbiAgICAgIGxldCBvdXRjb21lSUQgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVJRFwiICsgal07XHJcbiAgICAgIGlmIChvdXRjb21lSUQgPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lTmFtZVwiICsgal07XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZVN5c05hbWU6IHN0cmluZztcclxuICAgICAgbGV0IG91dENvbWVDYW5FZGl0U3lzTmFtZSA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUNhbkVkaXRTeXNOYW1lXCIgKyBqXTtcclxuICAgICAgaWYgKG91dENvbWVDYW5FZGl0U3lzTmFtZSlcclxuICAgICAgICBvdXRjb21lU3lzTmFtZSA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZURlY2lzaW9uU3lzTmFtZVwiICsgal07XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBvdXRjb21lU3lzTmFtZSA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUhpZGRlbmVTeXNOYW1lXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lQWN0aXZpdHkgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVOZXh0QWN0aXZpdHlUeXBlc1wiICsgal07XHJcbiAgICAgIGxldCBvdXRjb21lQ2FuQWRkQ29tbWVudCA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUNhbkFkZENvbW1lbnRcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IGFjdGl2aXR5T3V0Y29tZTogV0ZBY3Rpdml0eU91dGNvbWVNb2RlbCA9IG5ldyBXRkFjdGl2aXR5T3V0Y29tZU1vZGVsKCk7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5JRF9HVUlEID0gb3V0Y29tZUlEO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuTmFtZUVOID0gb3V0Y29tZU5hbWUuRW5nbGlzaDtcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLk5hbWVBUiA9IG91dGNvbWVOYW1lLkFyYWJpYztcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLk91dGNvbWVTeXNOYW1lID0gb3V0Y29tZVN5c05hbWU7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5OZXh0QWN0aXZpdHlJRF9HVUlEID0gb3V0Y29tZUFjdGl2aXR5O1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuQ2FuQWRkQ29tbWVudCA9IG91dGNvbWVDYW5BZGRDb21tZW50O1xyXG5cclxuICAgICAgYWRkTW9kZWwuT3V0Y29tZXMucHVzaChhY3Rpdml0eU91dGNvbWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goYWRkTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfTtcclxuICBnZXRBZGRXRkFjdGl2aXR5RnVuY3Rpb24gPSAoQWRkTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMud29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UuYWRkV29ya2Zsb3dBY3Rpdml0eShBZGRNb2RlbCk7XHJcbiAgfTtcclxuICBvbkFkZFN1Y2Nlc3MgPSAocmVzdWx0KSA9PiB7XHJcbiAgICB0aGlzLmNhbmNlbEFkZCgpO1xyXG4gIH07XHJcblxyXG4gIC8vT3V0Y29tZSBmdW5jdGlvbnNcclxuICBnZXRBY3Rpdml0eU91dGNvbWVzT3B0aW9ucyhvdXRDb21lczogYW55W10pIHtcclxuICAgIGxldCBvdXRjb21lc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBsZXQgb3V0Y29tZXNDb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG91dENvbWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjdXJyZW50T3V0Y29tZSA9IG91dENvbWVzW2ldO1xyXG4gICAgICBsZXQgb2JqZWN0T3V0Y29tZU9wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUlEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVJRC5uYW1lID0gXCJvdXRjb21lSURcIiArIGk7XHJcbiAgICAgIG91dGNvbWVJRC5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBvdXRjb21lSUQudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBvdXRjb21lSUQudmFsdWUgPSBjdXJyZW50T3V0Y29tZS5pRF9HVUlEO1xyXG5cclxuICAgICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBuYW1lLmVuZ2xpc2ggPSBjdXJyZW50T3V0Y29tZS5uYW1lRU47XHJcbiAgICAgIG5hbWUuYXJhYmljID0gY3VycmVudE91dGNvbWUubmFtZUFSO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVOYW1lLm5hbWUgPSBcIm91dGNvbWVOYW1lXCIgKyBpO1xyXG4gICAgICBvdXRjb21lTmFtZS5hcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICAgIG91dGNvbWVOYW1lLmVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICBvdXRjb21lTmFtZS52YWx1ZSA9IG5hbWU7XHJcbiAgICAgIG91dGNvbWVOYW1lLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICBvdXRjb21lTmFtZS5tYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLm5hbWUgPSBcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGk7XHJcbiAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUubGFiZWxLZXkgPSBcIkRlY2lzaW9uU3lzTmFtZVwiO1xyXG4gICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS52YWx1ZSA9IGN1cnJlbnRPdXRjb21lLm91dGNvbWVTeXNOYW1lO1xyXG4gICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLmlzRGlzYWJsZWQgPSAhY3VycmVudE91dGNvbWUuY2FuRWRpdFN5c05hbWU7XHJcbiAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUubWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLm5hbWUgPSBcIm91dGNvbWVOZXh0QWN0aXZpdHlUeXBlc1wiICsgaTtcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLmxhYmVsS2V5ID0gXCJBY3Rpdml0eVwiO1xyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuZGF0YVNvdXJjZSA9IHRoaXMubmV4dEFjdGl2aXR5TGlzdDtcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUNhbkFkZENvbW1lbnQgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVDYW5BZGRDb21tZW50Lm5hbWUgPSBcIm91dGNvbWVDYW5BZGRDb21tZW50XCIgKyBpO1xyXG4gICAgICBvdXRjb21lQ2FuQWRkQ29tbWVudC52YWx1ZSA9IGN1cnJlbnRPdXRjb21lLmNhbkFkZENvbW1lbnQ7XHJcbiAgICAgIG91dGNvbWVDYW5BZGRDb21tZW50LmxhYmVsS2V5ID0gXCJDYW5BZGRDb21tZW50XCI7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUNhbkVkaXQ6IGJvb2xlYW47XHJcbiAgICAgIG91dGNvbWVDYW5FZGl0ID0gY3VycmVudE91dGNvbWUuY2FuRWRpdDtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lSGlkZGVuZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLm5hbWUgPSBcIm91dGNvbWVIaWRkZW5lU3lzTmFtZVwiICsgaTtcclxuICAgICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLnZhbHVlID0gY3VycmVudE91dGNvbWUub3V0Y29tZVN5c05hbWU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUNhbkVkaXRTeXNOYW1lID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lQ2FuRWRpdFN5c05hbWUubmFtZSA9IFwib3V0Y29tZUNhbkVkaXRTeXNOYW1lXCIgKyBpO1xyXG4gICAgICBvdXRjb21lQ2FuRWRpdFN5c05hbWUudmFsdWUgPSBjdXJyZW50T3V0Y29tZS5jYW5FZGl0U3lzTmFtZTtcclxuXHJcbiAgICAgIG9iamVjdE91dGNvbWVPcHRpb25zLnB1c2gob3V0Y29tZUlELCBvdXRjb21lTmFtZSwgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSwgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLFxyXG4gICAgICAgIG91dGNvbWVDYW5BZGRDb21tZW50LCBvdXRjb21lQ2FuRWRpdCwgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLCBvdXRjb21lQ2FuRWRpdFN5c05hbWUpO1xyXG5cclxuXHJcbiAgICAgIG91dGNvbWVzT3B0aW9ucy5wdXNoKG9iamVjdE91dGNvbWVPcHRpb25zKTtcclxuICAgICAgb3V0Y29tZXNDb3VudCArPSAxO1xyXG5cclxuICAgIH1cclxuICAgIHJldHVybiBbb3V0Y29tZXNPcHRpb25zLCBvdXRjb21lc0NvdW50XTtcclxuICB9XHJcbiAgYWRkV0ZBY3Rpdml0eU91dGNvbWUoKSB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLm91dGNvbWVzQ291bnQ7XHJcblxyXG4gICAgbGV0IG9iamVjdE91dGNvbWVPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGxldCBvdXRjb21lSUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVJRC5uYW1lID0gXCJvdXRjb21lSURcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZUlELmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBvdXRjb21lSUQudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgb3V0Y29tZUlELnZhbHVlID0gMDtcclxuXHJcbiAgICBsZXQgb3V0Y29tZU5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVOYW1lLm5hbWUgPSBcIm91dGNvbWVOYW1lXCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVOYW1lLmFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgIG91dGNvbWVOYW1lLmVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgb3V0Y29tZU5hbWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgbGV0IG91dGNvbWVEZWNpc2lvblN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUubmFtZSA9IFwib3V0Y29tZURlY2lzaW9uU3lzTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLmxhYmVsS2V5ID0gXCJEZWNpc2lvblN5c05hbWVcIjtcclxuICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLm5hbWUgPSBcIm91dGNvbWVOZXh0QWN0aXZpdHlUeXBlc1wiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMubGFiZWxLZXkgPSBcIkFjdGl2aXR5XCI7XHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuZGF0YVNvdXJjZSA9IHRoaXMubmV4dEFjdGl2aXR5TGlzdDtcclxuICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUNhbkFkZENvbW1lbnQgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lQ2FuQWRkQ29tbWVudC5uYW1lID0gXCJvdXRjb21lQ2FuQWRkQ29tbWVudFwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lQ2FuQWRkQ29tbWVudC5sYWJlbEtleSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG5cclxuICAgIGxldCBvdXRjb21lQ2FuRWRpdDogYm9vbGVhbjtcclxuICAgIG91dGNvbWVDYW5FZGl0ID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUhpZGRlbmVTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lSGlkZGVuZVN5c05hbWUubmFtZSA9IFwib3V0Y29tZUhpZGRlbmVTeXNOYW1lXCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcblxyXG4gICAgbGV0IG91dGNvbWVDYW5FZGl0U3lzTmFtZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVDYW5FZGl0U3lzTmFtZS5uYW1lID0gXCJvdXRjb21lQ2FuRWRpdFN5c05hbWVcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLnZhbHVlID0gdHJ1ZTtcclxuXHJcbiAgICBvYmplY3RPdXRjb21lT3B0aW9ucy5wdXNoKG91dGNvbWVJRCwgb3V0Y29tZU5hbWUsIG91dGNvbWVEZWNpc2lvblN5c05hbWUsIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcywgb3V0Y29tZUNhbkFkZENvbW1lbnQsXHJcbiAgICAgIG91dGNvbWVDYW5FZGl0LCBvdXRjb21lSGlkZGVuZVN5c05hbWUsIG91dGNvbWVDYW5FZGl0U3lzTmFtZSk7XHJcblxyXG4gICAgdGhpcy5vdXRjb21lc09wdGlvbnMucHVzaChvYmplY3RPdXRjb21lT3B0aW9ucyk7XHJcbiAgICB0aGlzLm91dGNvbWVzQ291bnQgKz0gMTtcclxuXHJcbiAgfVxyXG4gIGRlbGV0ZU91dGNvbWUoZGVsZXRlZE91dGNvbWU6IGFueSkge1xyXG4gICAgbGV0IGRlbGV0ZWRPdXRjb21lSW5kZXg6IG51bWJlciA9IHRoaXMub3V0Y29tZXNPcHRpb25zLmluZGV4T2YoZGVsZXRlZE91dGNvbWUpO1xyXG4gICAgaWYgKGRlbGV0ZWRPdXRjb21lSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMub3V0Y29tZXNPcHRpb25zLnNwbGljZShkZWxldGVkT3V0Y29tZUluZGV4LCAxKTtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGVkT3V0Y29tZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChkZWxldGVkT3V0Y29tZVtpXS5OYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9PbiBjaGFuZ2VzIGV2ZW50c1xyXG4gIGFjdGl2aXR5VHlwZU9uQ2hhbmdlKGFjdGl2aXR5VHlwZSkge1xyXG4gICAgYWN0aXZpdHlUeXBlID0gYWN0aXZpdHlUeXBlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgLy9SZXNldCBjb250cm9scywgb3V0Y29tZXMgYW5kIGZsYWdzXHJcbiAgICB0aGlzLnJlc2V0QWxsQWN0aXZpdHlUeXBlQ29udHJvbHMoKTtcclxuICAgIHRoaXMub3V0Y29tZXNPcHRpb25zID0gW107XHJcbiAgICB0aGlzLm91dGNvbWVzQ291bnQgPSAwO1xyXG4gICAgdGhpcy5zaG93UGFydGljaXBhbnRDb250YWluZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0R5bmFtaWNDb250cm9scyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U3RhdGljQ29udHJvbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmRpdGlvbkNvbnRyb2xzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMud29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UuZ2V0QWN0aXZpdHlPdXRjb21lcyh0aGlzLnZlcnNpb25JRCwgYWN0aXZpdHlUeXBlKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB2YXIgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgdmFyIG1vZGVsID0gcmVzdWx0T2JqLm1vZGVsO1xyXG4gICAgICB2YXIgbGlzdCA9IHJlc3VsdE9iai5saXN0O1xyXG4gICAgICB0aGlzLm5leHRBY3Rpdml0eUxpc3QgPSBsaXN0LmFjdGl2aXRpZXM7XHJcblxyXG4gICAgICBzd2l0Y2ggKGFjdGl2aXR5VHlwZSkge1xyXG4gICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkFwcHJvdmFsOlxyXG4gICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkFjdGlvbjpcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5QZXJjZW50YWdlVGFzazpcclxuICAgICAgICAgIHRoaXMudGFza1R5cGVMaXN0ID0gbGlzdC50YXNrcztcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50VHlwZXM7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50RGF0YUxpc3QgPSBsaXN0LnBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudERhdGE7XHJcblxyXG4gICAgICAgICAgLy9Jbml0aWFsaXplIHJlcXVpcmVkIGNvbnRyb2xzIGZvciBhcHByb3ZhbFxyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLm5hbWUgPSBcIlBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmdcIjtcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5sYWJlbEtleSA9IFwiUGFydGljaXBhbnRUeXBlc1wiO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLmRhdGFTb3VyY2UgPSB0aGlzLnBhcnRpY2lwYW50VHlwZUxpc3Q7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuc2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5uYW1lID0gXCJUYXNrTmFtZVwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuYXJhYmljTGFiZWxLZXkgPSBcIlRhc2tOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLmVuZ2xpc2hMYWJlbEtleSA9IFwiVGFza05hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLm1heExlbmd0aCA9IDI1NTtcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24gPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24ubmFtZSA9IFwiVGFza0Rlc2NyaXB0aW9uXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uYXJhYmljTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluQXJhYmljXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrRGVzY3JpcHRpb24uZW5nbGlzaExhYmVsS2V5ID0gXCJUYXNrRGVzY3JpcHRpb25JbkVuZ2xpc2hcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5tYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5uYW1lID0gXCJUYXNrVVJMXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLmxhYmVsS2V5ID0gXCJUYXNrVVJMXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwubWF4TGVuZ3RoID0gMjA4MztcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLm5hbWUgPSBcIlRhc2tDb3JybFR5cGVJRFwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUubGFiZWxLZXkgPSBcIlRhc2tUeXBlXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5kYXRhU291cmNlID0gdGhpcy50YXNrVHlwZUxpc3Q7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuaXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5uYW1lID0gXCJDYW5Db21wbGV0ZUZyb21UTUVcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLmxhYmVsS2V5ID0gXCJDYW5Db21wbGV0ZUZyb21UTUVcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUudmFsdWUgPSBtb2RlbC5jYW5Db21wbGV0ZUZyb21UTUU7XHJcblxyXG4gICAgICAgICAgbGV0IG91dGNvbWVzUmVzdWx0OiBhbnkgPSB0aGlzLmdldEFjdGl2aXR5T3V0Y29tZXNPcHRpb25zKG1vZGVsLm91dGNvbWVzKTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNPcHRpb25zID0gb3V0Y29tZXNSZXN1bHRbMF07XHJcbiAgICAgICAgICB0aGlzLm91dGNvbWVzQ291bnQgPSBvdXRjb21lc1Jlc3VsdFsxXTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNob3dEeW5hbWljQ29udHJvbHMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRDb250YWluZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zaG93T3V0Y29tZXNDb250YWluZXIgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuRW1haWw6XHJcbiAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuU2xlZXA6XHJcbiAgICAgICAgICBpZiAoYWN0aXZpdHlUeXBlID09IEFjdGl2aXR5VHlwZS5FbWFpbCkge1xyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZUxpc3QgPSBsaXN0LnBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudFR5cGVzO1xyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50RGF0YUxpc3QgPSBsaXN0LnBhcnRpY2lwYW50cy5wYXJ0aWNpcGFudERhdGE7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLm5hbWUgPSBcIlBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmdcIjtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLmxhYmVsS2V5ID0gXCJQYXJ0aWNpcGFudFR5cGVzXCI7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5kYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0O1xyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuc2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRDb250YWluZXIgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICAgICAgbmFtZS5hcmFiaWMgPSBtb2RlbC5ub3JtYWxPdXRjb21lTmFtZS5hcmFiaWM7XHJcbiAgICAgICAgICBuYW1lLmVuZ2xpc2ggPSBtb2RlbC5ub3JtYWxPdXRjb21lTmFtZS5lbmdsaXNoO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUubmFtZSA9IFwiTm9ybWFsT3V0Y29tZU5hbWVcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuYXJhYmljTGFiZWxLZXkgPSBcIk91dGNvbWVOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUuZW5nbGlzaExhYmVsS2V5ID0gXCJPdXRjb21lTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5hbWUudmFsdWUgPSBuYW1lO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5tYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5uYW1lID0gXCJPdXRjb21lU3lzTmFtZVwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5sYWJlbEtleSA9IFwiRGVjaXNpb25TeXNOYW1lXCI7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLm1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkubmFtZSA9IFwiTmV4dEFjdGl2aXR5SURfR1VJRFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LmxhYmVsS2V5ID0gXCJOZXh0QWN0aXZpdHlcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5kYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0O1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50Lm5hbWUgPSBcIkNhbkFkZENvbW1lbnRcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQubGFiZWxLZXkgPSBcIkNhbkFkZENvbW1lbnRcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVDYW5BZGRDb21tZW50LnZhbHVlID0gbW9kZWwuY2FuQWRkQ29tbWVudDtcclxuXHJcbiAgICAgICAgICB0aGlzLnNob3dTdGF0aWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5Db25kaXRpb246XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU1dGVmFyaWFibGVMaXN0ID0gbGlzdC53ZlZhcmlhYmxlcztcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTV0ZWYXJpYWJsZUxpc3QgPSBsaXN0LndmVmFyaWFibGVzO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdCA9IGxpc3QucmhzVHlwZXM7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxpc3QgPSBsaXN0LmNvbmRpdGlvbnM7XHJcblxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24ubmFtZSA9IFwiTEhTVmFyaWFibGVJRF9HVUlEXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLnBsYWNlaG9sZGVyID0gXCJXb3JrZmxvd1ZhcmlhYmxlc1wiO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5kYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25MSFNXRlZhcmlhYmxlTGlzdDtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLm5hbWUgPSBcIk9wZXJhdG9yVHlwZUl0ZW1JRF9HVUlEXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24ucGxhY2Vob2xkZXIgPSBcIkNvbmRpdGlvblwiO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uZGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uTGlzdDtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRSSFNUeXBlID0gdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5Py50b0xvd2VyQ2FzZSgpID09IFJpZ2h0aGFuZHNpZGV0eXBlLlZhcmlhYmxlOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24ubmFtZSA9IFwiUkhTVHlwZUl0ZW1JRF9HVUlEXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uZGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uUkhTVHlwZUxpc3Q7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRSSFNUeXBlO1xyXG5cclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLm5hbWUgPSBcIlJIU1ZhcmlhYmxlSURfR1VJRFwiO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5wbGFjZWhvbGRlciA9IFwiV29ya2Zsb3dWYXJpYWJsZXNcIjtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uZGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uUkhTV0ZWYXJpYWJsZUxpc3Q7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIGxldCBjb25kaXRpb25PdXRjb21lc1Jlc3VsdDogYW55ID0gdGhpcy5nZXRBY3Rpdml0eU91dGNvbWVzT3B0aW9ucyhtb2RlbC5vdXRjb21lcyk7XHJcbiAgICAgICAgICB0aGlzLm91dGNvbWVzT3B0aW9ucyA9IGNvbmRpdGlvbk91dGNvbWVzUmVzdWx0WzBdO1xyXG4gICAgICAgICAgdGhpcy5vdXRjb21lc0NvdW50ID0gY29uZGl0aW9uT3V0Y29tZXNSZXN1bHRbMV07XHJcblxyXG4gICAgICAgICAgdGhpcy5zaG93Q29uZGl0aW9uQ29udHJvbHMgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNhbkFkZE91dGNvbWUgPSB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA/IG1vZGVsLmNhbkFkZE91dGNvbWUgOiBmYWxzZTtcclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG4gIGNvbmRpdGlvblJIU1R5cGVPbkNoYW5nZSh0eXBlKSB7XHJcbiAgICB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHR5cGUgPT0gUmlnaHRoYW5kc2lkZXR5cGUuVmFyaWFibGUpIHtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiUkhTVmFsdWVcIik7XHJcblxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLm5hbWUgPSBcIlJIU1ZhcmlhYmxlSURfR1VJRFwiO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24ucGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCI7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uZGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uUkhTV0ZWYXJpYWJsZUxpc3Q7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIlJIU1ZhcmlhYmxlSURfR1VJRFwiKTtcclxuXHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5uYW1lID0gXCJSSFNWYWx1ZVwiO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUucGxhY2Vob2xkZXIgPSBcIlZhbHVlXCI7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLm1heExlbmd0aCA9IDUxMjtcclxuXHJcbiAgICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSBmYWxzZTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIHBhcnRpY2lwYW50VHlwZU9uQ2hhbmdlKHBhcnRpY2lwYW50VHlwZSkge1xyXG4gICAgcGFydGljaXBhbnRUeXBlID0gcGFydGljaXBhbnRUeXBlPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHBhcnRpY2lwYW50VHlwZSA9PSBQYXJ0aWNpcGFudFR5cGUuUGVybWlzc2lvblNldCkge1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQubmFtZSA9IFwiUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEc1N0cmluZ1wiO1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5sYWJlbEtleSA9IFwiUGVybWlzc2lvblNldFwiO1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5kYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0O1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5zaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudFBlcm1zc2lvblNldCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEc1N0cmluZ1wiKTtcclxuICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vcmVzZXQgdHlwZVxyXG4gIHJlc2V0QWxsQWN0aXZpdHlUeXBlQ29udHJvbHMoKSB7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJQYXJ0aWNpcGFudERUTy5QYXJ0aWNpcGFudFR5cGVJdGVtSURzU3RyaW5nXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEc1N0cmluZ1wiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIlBhcnRpY2lwYW50RFRPLlBlcm1pc3Npb25TZXRJRHNTdHJpbmdcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJUYXNrTmFtZVwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIlRhc2tEZXNjcmlwdGlvblwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIlRhc2tVUkxcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJUYXNrQ29ycmxUeXBlSURcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJDYW5Db21wbGV0ZUZyb21UTUVcIik7XHJcblxyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiTm9ybWFsT3V0Y29tZU5hbWVcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJPdXRjb21lU3lzTmFtZVwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIk5leHRBY3Rpdml0eUlEX0dVSURcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJDYW5BZGRDb21tZW50XCIpO1xyXG5cclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIkxIU1ZhcmlhYmxlSURfR1VJRFwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIk9wZXJhdG9yVHlwZUl0ZW1JRF9HVUlEXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiUkhTVHlwZUl0ZW1JRF9HVUlEXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiUkhTVmFyaWFibGVJRF9HVUlEXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiUkhTVmFsdWVcIik7XHJcblxyXG4gICAgLy9SZW1vdmUgb3V0Y29tZXMgY29udHJvbHNcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0udmFsdWU7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3V0Y29tZXNDb3VudDsgaSsrKSB7XHJcbiAgICAgIGxldCBvdXRjb21lSUQgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVJRFwiICsgaV07XHJcbiAgICAgIGlmIChvdXRjb21lSUQgPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwib3V0Y29tZUlEXCIgKyBpKTtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwib3V0Y29tZU5hbWVcIiArIGkpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lRGVjaXNpb25TeXNOYW1lXCIgKyBpKTtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwib3V0Y29tZUhpZGRlbmVTeXNOYW1lXCIgKyBpKTtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwib3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzXCIgKyBpKTtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwib3V0Y29tZUNhbkFkZENvbW1lbnRcIiArIGkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9DYW5jZWxcclxuICBjYW5jZWxBZGQoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9BZG1pbi9Xb3JrZmxvd3Mvd29ya2Zsb3cvJ10pO1xyXG4gIH1cclxuXHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIiAqbmdJZj1cImlzQWRkRm9ybUxvYWRlZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zXCI+XHJcbiAgICAgICAgPCEtLVN0YXJ0IHNoYXJlZCBjb250cm9scyBjb250YWluZXItLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwibmFtZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic3lzTmFtZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhY3Rpdml0eVR5cGVcIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIiAoT25DaGFuZ2UpPVwiYWN0aXZpdHlUeXBlT25DaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBzaGFyZWQgY29udHJvbHMgY29udGFpbmVyLS0+XHJcbiAgICAgICAgPCEtLVN0YXJ0IHBhcnRpY2lwYW50IGNvbnRhaW5lci0tPlxyXG4gICAgICAgIDxkaXYgaWQ9XCJwYXJ0aWNpcGFudENvbnRhaW5lclwiICpuZ0lmPVwic2hvd1BhcnRpY2lwYW50Q29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwicGFydGljaXBhbnRUeXBlc1wiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiIChPbkNoYW5nZSk9XCJwYXJ0aWNpcGFudFR5cGVPbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd1BhcnRpY2lwYW50UGVybXNzaW9uU2V0XCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJwYXJ0aWNpcGFudFBlcm1pc3Npb25TZXRcIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgcGFydGljaXBhbnQgY29udGFpbmVyLS0+XHJcbiAgICAgICAgPCEtLVN0YXJ0IHN0YXRpYyBjb250cm9scy0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93U3RhdGljQ29udHJvbHNcIiBpZD1cInN0YXRpY0NvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lTmFtZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic3RhdGljT3V0Y29tZVN5c05hbWVcIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwic3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwic3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnRcIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBzdGF0aWMgY29udHJvbHMtLT5cclxuICAgICAgICA8IS0tU3RhcnQgZHluYW1pYyBjb250cm9scy0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RHluYW1pY0NvbnRyb2xzXCIgaWQ9XCJkeW5hbWljQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cImR5bmFtaWNUYXNrTmFtZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhIFtvcHRpb25zXT1cImR5bmFtaWNUYXNrRGVzY3JpcHRpb25cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWE+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJkeW5hbWljVGFza1VSTFwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJkeW5hbWljVGFza1R5cGVcIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImR5bmFtaWNDYW5Db21wbGV0ZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIGR5bmFtaWMgY29udHJvbHMtLT5cclxuXHJcbiAgICAgICAgPCEtLVN0YXJ0IGNvbmRpdGlvbiBjb250cm9scy0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93Q29uZGl0aW9uQ29udHJvbHNcIiBpZD1cImNvbmRpdGlvbkNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgdGFibGUtdy1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJMZWZ0SGFuZFNpZGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ29uZGl0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJpZ2h0SGFuZFNpZGVUeXBlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJpZ2h0SGFuZFNpZGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiY29uZGl0aW9uTEhTRHJvcERvd25cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImNvbmRpdGlvbnNEcm9wRG93blwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiY29uZGl0aW9uUkhTVHlwZURyb3BEb3duXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCIgKE9uQ2hhbmdlKT1cImNvbmRpdGlvblJIU1R5cGVPbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwic2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGU7IGVsc2UgY29uZGl0aW9uVHh0VmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiY29uZGl0aW9uUkhTRHJvcERvd25cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbmRpdGlvblR4dFZhbHVlPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiY29uZGl0aW9uUkhTVmFsdWVcIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIGNvbmRpdGlvbiBjb250cm9scy0tPlxyXG5cclxuICAgICAgICA8IS0tU3RhcnQgb3V0Y29tZXMgY29udGFpbmVyLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dPdXRjb21lc0NvbnRhaW5lclwiIGlkPVwib3V0Y29tZXNDb250YWluZXJcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVjaXNpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+PC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG91dGNvbWVzT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tSUQtLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtoaWRkZW5dPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1OYW1lLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMV1cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1TeXNOYW1lLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMl1cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0taGlkZGVuIFN5c05hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtoaWRkZW5dPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm9wdGlvbls2XVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1jYW4gZWRpdCBTeXNOYW1lLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzddXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLU5leHRBY3Rpdml0eS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJvcHRpb25bM11cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLUNhbkFkZENvbW1lbnQtLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bNF1cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWlmIG91dGNvbWUgQ2FuIEVkaXQtLT5cclxuICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIm9wdGlvbls1XVwiIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1saWdodC1kYW5nZXIgYnRuLXNtXCIgKGNsaWNrKT1cImRlbGV0ZU91dGNvbWUob3B0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJjYW5BZGRPdXRjb21lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZFdGQWN0aXZpdHlPdXRjb21lKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZE5ld1JlY29yZFwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBvdXRjb21lcyBjb250YWluZXItLT5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiIChjbGljayk9XCJjYW5jZWxBZGQoKVwiPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvQkJTRi1Gb3JtPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuIl19
535
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYWN0aXZpdHktYWRkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvd29ya2Zsb3dzL2FjdGl2aXR5L3dvcmtmbG93LWFjdGl2aXR5LWFkZC93b3JrZmxvdy1hY3Rpdml0eS1hZGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy93b3JrZmxvd3MvYWN0aXZpdHkvd29ya2Zsb3ctYWN0aXZpdHktYWRkL3dvcmtmbG93LWFjdGl2aXR5LWFkZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSwwQkFBMEIsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdqTyxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdURBQXVELENBQUM7Ozs7Ozs7O0FBT3hGLE1BQU0sT0FBTyw0QkFBNEI7SUFnRXZDLFlB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QVE7SUFDUixTQUFTO1FBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFlBQVk7SUFDWixXQUFXO1FBQ1QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzlDLENBQUM7OEdBL21CVSw0QkFBNEI7a0dBQTVCLDRCQUE0QixpRUNwQnpDLDQvVUF3T0E7OzJGRHBOYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0ksMkJBQTJCLGNBRXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDaGVja0JveE9wdGlvbnMsIENvbnRyb2xMYXlvdXQsIERyb3Bkb3duT3B0aW9ucywgRW5nbGlzaEFyYWJpY0RUTywgRm9ybU9wdGlvbnMsIElucHV0VHlwZSwgTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zLCBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucywgVGV4dEJveE9wdGlvbnMsIFRvZ2dsZVNsaWRlT3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIFJlcXVlc3RIYW5kbGVyU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFjdGl2aXR5VHlwZSwgUGFydGljaXBhbnRUeXBlLCBSaWdodGhhbmRzaWRldHlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBDb25kaXRpb25SSFNUeXBlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL0VudW1zL2NvbmZpZ3VyYXRpb24vQ29uZGl0aW9uUkhTVHlwZSc7XHJcbmltcG9ydCB7IFdGQWN0aXZpdHlUeXBlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL0VudW1zL1dGQWN0aXZpdHlUeXBlJztcclxuaW1wb3J0IHsgUGFydGljaXBhbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMvSW1wZXJzb25hdGlvblJ1bGVNb2RlbHMvUGFydGljaXBhbnRNb2RlbCc7XHJcbmltcG9ydCB7IFdGQWN0aXZpdHlNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMvV29ya2Zsb3dNb2RlbHMvV0ZBY3Rpdml0eU1vZGVsJztcclxuaW1wb3J0IHsgV0ZBY3Rpdml0eU91dGNvbWVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9tb2RlbHMvV29ya2Zsb3dNb2RlbHMvV0ZBY3Rpdml0eU91dGNvbWVNb2RlbCc7XHJcbmltcG9ydCB7IFdvcmtmbG93QWN0aXZpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL1NlcnZpY2VzL1dvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLXdvcmtmbG93LWFjdGl2aXR5LWFkZCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctYWN0aXZpdHktYWRkLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0FjdGl2aXR5QWRkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgaXNBZGRGb3JtTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdmVyc2lvbklEOiBzdHJpbmc7XHJcblxyXG4gIC8vQWRkIEFjdGl2aXR5IHNoYXJlZCBjb250cm9sc1xyXG4gIGFkZHdvcmtmbG93QWN0aXZpdHlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIG5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIHN5c05hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFjdGl2aXR5VHlwZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIGNhbkFkZE91dGNvbWU6IGJvb2xlYW47XHJcbiAgLy9TaGFyZWQgcmVxdWlyZWQgbGlzdHNcclxuICBBY3Rpdml0eVR5cGVMaXN0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAvL1NoYXJlZCBQYXJ0aWNpcGFudCB0eXBlIGFuZCBkYXRhXHJcbiAgc2hvd1BhcnRpY2lwYW50Q29udGFpbmVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd1BhcnRpY2lwYW50UGVybXNzaW9uU2V0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGFydGljaXBhbnRUeXBlczogRHJvcGRvd25PcHRpb25zO1xyXG4gIHBhcnRpY2lwYW50UGVybWlzc2lvblNldDogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICAvL0R5bmFtaWMgVHlwZXMgQ29udHJvbHMgLy8oQXBwcm92YWwsQWN0aW9uLFBlcmNlbnRhZ2UpXHJcbiAgc2hvd0R5bmFtaWNDb250cm9sczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGR5bmFtaWNUYXNrTmFtZTogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgZHluYW1pY1Rhc2tEZXNjcmlwdGlvbjogTXVsdGlMaW5ndWFsVGV4dEFyZWFPcHRpb25zO1xyXG4gIGR5bmFtaWNUYXNrVVJMOiBUZXh0Qm94T3B0aW9ucztcclxuICBkeW5hbWljVGFza1R5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBkeW5hbWljQ2FuQ29tcGxldGU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuXHJcblxyXG4gIC8vU3RhdGljIHR5cGVzIGNvbnRyb2xzIChFbWFpbCxTbGVlcClcclxuICAvL0VtYWlsIFR5cGUgQ29udHJvbHMgLy8rIGluaXRpYWxpemUgcGFydGljaXBhbnRcclxuICBzaG93U3RhdGljQ29udHJvbHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdGF0aWNPdXRjb21lTmFtZTogTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnM7XHJcbiAgc3RhdGljT3V0Y29tZVN5c05hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIHN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHk6IERyb3Bkb3duT3B0aW9ucztcclxuICBzdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudDogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG5cclxuICAvL0NvbmRpdGlvbiB0eXBlIGNvbnRyb2xzXHJcbiAgc2hvd0NvbmRpdGlvbkNvbnRyb2xzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY29uZGl0aW9uTEhTRHJvcERvd246IERyb3Bkb3duT3B0aW9ucztcclxuICBjb25kaXRpb25zRHJvcERvd246IERyb3Bkb3duT3B0aW9ucztcclxuICBjb25kaXRpb25SSFNUeXBlRHJvcERvd246IERyb3Bkb3duT3B0aW9ucztcclxuICBjb25kaXRpb25SSFNEcm9wRG93bjogRHJvcGRvd25PcHRpb25zO1xyXG4gIGNvbmRpdGlvblJIU1ZhbHVlOiBUZXh0Qm94T3B0aW9ucztcclxuICBzaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL091dGNvbWVzIChkeW5hbWljLGNvbmRpdGlvbilcclxuICBvdXRjb21lc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgb3V0Y29tZXNDb3VudDogbnVtYmVyID0gMDtcclxuICBzaG93T3V0Y29tZXNDb250YWluZXIgPSBmYWxzZTtcclxuXHJcbiAgLy9SZXF1aXJlZExpc3RzXHJcbiAgdGFza1R5cGVMaXN0ID0gW107XHJcbiAgcGFydGljaXBhbnRUeXBlTGlzdCA9IFtdO1xyXG4gIHBhcnRpY2lwYW50RGF0YUxpc3QgPSBbXTtcclxuICBuZXh0QWN0aXZpdHlMaXN0ID0gW107XHJcblxyXG4gIC8vQ29uZGl0aW9uVHlwZVJlcXVpcmVkTGlzdHNcclxuICBjb25kaXRpb25MSFNXRlZhcmlhYmxlTGlzdCA9IFtdO1xyXG4gIGNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0ID0gW107XHJcbiAgY29uZGl0aW9uUkhTVHlwZUxpc3QgPSBbXTtcclxuICBjb25kaXRpb25MaXN0ID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgd29ya2Zsb3dBY3Rpdml0eVNlcnZpY2U6IFdvcmtmbG93QWN0aXZpdHlTZXJ2aWNlLCBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJic2ZUcmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMudmVyc2lvbklEID0gcGFyYW1zWyd2aWQnXTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IFwiXCI7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pO1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFdvcmtmbG93QWN0aXZpdHlcIik7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiV29ya0Zsb3dzXCIpLCBwYXRoOiAnL0FkbWluL1dvcmtmbG93cy93b3JrZmxvdycsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvL0luaXRpYWxpemUgYWRkIHBhZ2UgYW5kIHJlcXVpcmVkIERETHNcclxuICBpbml0aWFsaXplUGFnZSgpIHtcclxuICAgIHRoaXMud29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UubG9hZEFkZERyb3Bkb3ducygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICB0aGlzLkFjdGl2aXR5VHlwZUxpc3QgPSByZXN1bHRPYmouYWN0aXZpdHlMaXN0O1xyXG5cclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucy5mb3JtR3JvdXAgPSB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucy5nZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRXRkFjdGl2aXR5TW9kZWw7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkV0ZBY3Rpdml0eUZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucy5vblN1Y2Nlc3NIYW5kbGVyID0gdGhpcy5vbkFkZFN1Y2Nlc3M7XHJcblxyXG4gICAgICB0aGlzLm5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5uYW1lLm5hbWUgPSBcIk5hbWVcIjtcclxuICAgICAgdGhpcy5uYW1lLmFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5uYW1lLmVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLm5hbWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMubmFtZS5tYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICB0aGlzLnN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5zeXNOYW1lLm5hbWUgPSBcIlN5c05hbWVcIjtcclxuICAgICAgdGhpcy5zeXNOYW1lLmxhYmVsS2V5ID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgIHRoaXMuc3lzTmFtZS50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuc3lzTmFtZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zeXNOYW1lLm1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFjdGl2aXR5VHlwZS5uYW1lID0gXCJBY3Rpdml0eVR5cGVJdGVtSURfR1VJRFwiO1xyXG4gICAgICB0aGlzLmFjdGl2aXR5VHlwZS5sYWJlbEtleSA9IFwiQWN0aXZpdHlUeXBlXCI7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLmRhdGFTb3VyY2UgPSB0aGlzLkFjdGl2aXR5VHlwZUxpc3Q7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hY3Rpdml0eVR5cGUuaXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmlzQWRkRm9ybUxvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL0FkZCBmdW5jdGlvbnNcclxuICBnZXRBZGRXRkFjdGl2aXR5TW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IGFkZE1vZGVsID0gbmV3IFdGQWN0aXZpdHlNb2RlbCgpO1xyXG4gICAgYWRkTW9kZWwuTmFtZSA9IFJlc3VsdE1vZGVsLk5hbWU7XHJcbiAgICBhZGRNb2RlbC5TeXNOYW1lID0gUmVzdWx0TW9kZWwuU3lzTmFtZTtcclxuICAgIGFkZE1vZGVsLlZlcnNpb25JRF9HVUlEID0gdGhpcy52ZXJzaW9uSUQ7XHJcbiAgICBhZGRNb2RlbC5BY3Rpdml0eVR5cGVJdGVtSURfR1VJRCA9IFJlc3VsdE1vZGVsLkFjdGl2aXR5VHlwZUl0ZW1JRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgIC8vSWYgcGFydGljaXBhbnQgZXhpc3RzXHJcbiAgICBpZiAoUmVzdWx0TW9kZWxbXCJQYXJ0aWNpcGFudERUTy5QYXJ0aWNpcGFudFR5cGVJdGVtSURzU3RyaW5nXCJdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBhZGRNb2RlbC5QYXJ0aWNpcGFudERUTyA9IG5ldyBQYXJ0aWNpcGFudE1vZGVsKCk7XHJcbiAgICAgIGFkZE1vZGVsLlBhcnRpY2lwYW50RFRPID0gbmV3IFBhcnRpY2lwYW50TW9kZWwoKTtcclxuICAgICAgYWRkTW9kZWwuUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZyA9IFJlc3VsdE1vZGVsW1wiUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ1wiXS50b1N0cmluZygpO1xyXG4gICAgICBpZiAoUmVzdWx0TW9kZWxbXCJQYXJ0aWNpcGFudERUTy5QYXJ0aWNpcGFudFR5cGVJdGVtSURzU3RyaW5nXCJdLmluY2x1ZGVzKFBhcnRpY2lwYW50VHlwZS5QZXJtaXNzaW9uU2V0KSkge1xyXG4gICAgICAgIGFkZE1vZGVsLlBhcnRpY2lwYW50RFRPLlBlcm1pc3Npb25TZXRJRHNTdHJpbmcgPSBSZXN1bHRNb2RlbFtcIlBhcnRpY2lwYW50RFRPLlBlcm1pc3Npb25TZXRJRHNTdHJpbmdcIl0udG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgc3dpdGNoIChhZGRNb2RlbC5BY3Rpdml0eVR5cGVJdGVtSURfR1VJRCkge1xyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5BcHByb3ZhbDpcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQWN0aW9uOlxyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5QZXJjZW50YWdlVGFzazpcclxuICAgICAgICBhZGRNb2RlbC5UYXNrTmFtZSA9IFJlc3VsdE1vZGVsLlRhc2tOYW1lO1xyXG4gICAgICAgIGFkZE1vZGVsLlRhc2tEZXNjcmlwdGlvbiA9IFJlc3VsdE1vZGVsLlRhc2tEZXNjcmlwdGlvbjtcclxuICAgICAgICBhZGRNb2RlbC5UYXNrVVJMID0gUmVzdWx0TW9kZWwuVGFza1VSTDtcclxuICAgICAgICBhZGRNb2RlbC5UYXNrQ29ycmxUeXBlSUQgPSBSZXN1bHRNb2RlbC5UYXNrQ29ycmxUeXBlSUQgIT0gbnVsbCA/IE51bWJlcihSZXN1bHRNb2RlbC5UYXNrQ29ycmxUeXBlSUQpIDogbnVsbDtcclxuICAgICAgICBhZGRNb2RlbC5DYW5Db21wbGV0ZUZyb21UTUUgPSBSZXN1bHRNb2RlbC5DYW5Db21wbGV0ZUZyb21UTUU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkVtYWlsOlxyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5TbGVlcDpcclxuICAgICAgICBhZGRNb2RlbC5Ob3JtYWxPdXRjb21lTmFtZSA9IFJlc3VsdE1vZGVsLk5vcm1hbE91dGNvbWVOYW1lO1xyXG4gICAgICAgIGFkZE1vZGVsLk91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWwuT3V0Y29tZVN5c05hbWU7XHJcbiAgICAgICAgYWRkTW9kZWwuTmV4dEFjdGl2aXR5SURfR1VJRCA9IFJlc3VsdE1vZGVsLk5leHRBY3Rpdml0eUlEX0dVSUQ7XHJcbiAgICAgICAgYWRkTW9kZWwuQ2FuQWRkQ29tbWVudCA9IFJlc3VsdE1vZGVsLkNhbkFkZENvbW1lbnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkNvbmRpdGlvbjpcclxuICAgICAgICBhZGRNb2RlbC5MSFNWYXJpYWJsZUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5MSFNWYXJpYWJsZUlEX0dVSUQ7XHJcbiAgICAgICAgYWRkTW9kZWwuUkhTVmFyaWFibGVJRF9HVUlEID0gUmVzdWx0TW9kZWwuUkhTVmFyaWFibGVJRF9HVUlEO1xyXG4gICAgICAgIGFkZE1vZGVsLlJIU1R5cGVJdGVtSURfR1VJRCA9IFJlc3VsdE1vZGVsLlJIU1R5cGVJdGVtSURfR1VJRDtcclxuICAgICAgICBhZGRNb2RlbC5PcGVyYXRvclR5cGVJdGVtSURfR1VJRCA9IFJlc3VsdE1vZGVsLk9wZXJhdG9yVHlwZUl0ZW1JRF9HVUlEO1xyXG4gICAgICAgIGFkZE1vZGVsLlJIU1ZhbHVlID0gUmVzdWx0TW9kZWwuUkhTVmFsdWUgIT0gdW5kZWZpbmVkID8gUmVzdWx0TW9kZWwuUkhTVmFsdWUgOiBudWxsO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgIH1cclxuICAgIC8vU2V0IE91dGNvbWVzIChkeW5hbWljLGNvbmRpdGlvbiB0eXBlcylcclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5vdXRjb21lc0NvdW50OyBqKyspIHtcclxuICAgICAgbGV0IG91dGNvbWVJRCA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUlEXCIgKyBqXTtcclxuICAgICAgaWYgKG91dGNvbWVJRCA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZU5hbWUgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVOYW1lXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lU3lzTmFtZTogc3RyaW5nO1xyXG4gICAgICBsZXQgb3V0Q29tZUNhbkVkaXRTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lQ2FuRWRpdFN5c05hbWVcIiArIGpdO1xyXG4gICAgICBpZiAob3V0Q29tZUNhbkVkaXRTeXNOYW1lKVxyXG4gICAgICAgIG91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lRGVjaXNpb25TeXNOYW1lXCIgKyBqXTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIG91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVBY3Rpdml0eSA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzXCIgKyBqXTtcclxuICAgICAgbGV0IG91dGNvbWVDYW5BZGRDb21tZW50ID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lQ2FuQWRkQ29tbWVudFwiICsgal07XHJcblxyXG4gICAgICBsZXQgYWN0aXZpdHlPdXRjb21lOiBXRkFjdGl2aXR5T3V0Y29tZU1vZGVsID0gbmV3IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwoKTtcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLklEX0dVSUQgPSBvdXRjb21lSUQ7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5OYW1lRU4gPSBvdXRjb21lTmFtZS5FbmdsaXNoO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuTmFtZUFSID0gb3V0Y29tZU5hbWUuQXJhYmljO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuT3V0Y29tZVN5c05hbWUgPSBvdXRjb21lU3lzTmFtZTtcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLk5leHRBY3Rpdml0eUlEX0dVSUQgPSBvdXRjb21lQWN0aXZpdHk7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5DYW5BZGRDb21tZW50ID0gb3V0Y29tZUNhbkFkZENvbW1lbnQ7XHJcblxyXG4gICAgICBhZGRNb2RlbC5PdXRjb21lcy5wdXNoKGFjdGl2aXR5T3V0Y29tZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChhZGRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9O1xyXG4gIGdldEFkZFdGQWN0aXZpdHlGdW5jdGlvbiA9IChBZGRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5hZGRXb3JrZmxvd0FjdGl2aXR5KEFkZE1vZGVsKTtcclxuICB9O1xyXG4gIG9uQWRkU3VjY2VzcyA9IChyZXN1bHQpID0+IHtcclxuICAgIHRoaXMuY2FuY2VsQWRkKCk7XHJcbiAgfTtcclxuXHJcbiAgLy9PdXRjb21lIGZ1bmN0aW9uc1xyXG4gIGdldEFjdGl2aXR5T3V0Y29tZXNPcHRpb25zKG91dENvbWVzOiBhbnlbXSkge1xyXG4gICAgbGV0IG91dGNvbWVzT3B0aW9uczogYW55W10gPSBbXTtcclxuICAgIGxldCBvdXRjb21lc0NvdW50OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3V0Q29tZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGN1cnJlbnRPdXRjb21lID0gb3V0Q29tZXNbaV07XHJcbiAgICAgIGxldCBvYmplY3RPdXRjb21lT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lSUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZUlELm5hbWUgPSBcIm91dGNvbWVJRFwiICsgaTtcclxuICAgICAgb3V0Y29tZUlELmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIG91dGNvbWVJRC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIG91dGNvbWVJRC52YWx1ZSA9IGN1cnJlbnRPdXRjb21lLmlEX0dVSUQ7XHJcblxyXG4gICAgICBsZXQgbmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIG5hbWUuZW5nbGlzaCA9IGN1cnJlbnRPdXRjb21lLm5hbWVFTjtcclxuICAgICAgbmFtZS5hcmFiaWMgPSBjdXJyZW50T3V0Y29tZS5uYW1lQVI7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZU5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZU5hbWUubmFtZSA9IFwib3V0Y29tZU5hbWVcIiArIGk7XHJcbiAgICAgIG91dGNvbWVOYW1lLmFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgb3V0Y29tZU5hbWUuZW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgIG91dGNvbWVOYW1lLnZhbHVlID0gbmFtZTtcclxuICAgICAgb3V0Y29tZU5hbWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIG91dGNvbWVOYW1lLm1heExlbmd0aCA9IDI1NTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lRGVjaXNpb25TeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUubmFtZSA9IFwib3V0Y29tZURlY2lzaW9uU3lzTmFtZVwiICsgaTtcclxuICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5sYWJlbEtleSA9IFwiRGVjaXNpb25TeXNOYW1lXCI7XHJcbiAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLnZhbHVlID0gY3VycmVudE91dGNvbWUub3V0Y29tZVN5c05hbWU7XHJcbiAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuaXNEaXNhYmxlZCA9ICFjdXJyZW50T3V0Y29tZS5jYW5FZGl0U3lzTmFtZTtcclxuICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5tYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMubmFtZSA9IFwib3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzXCIgKyBpO1xyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMubGFiZWxLZXkgPSBcIkFjdGl2aXR5XCI7XHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5kYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0O1xyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lQ2FuQWRkQ29tbWVudCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZUNhbkFkZENvbW1lbnQubmFtZSA9IFwib3V0Y29tZUNhbkFkZENvbW1lbnRcIiArIGk7XHJcbiAgICAgIG91dGNvbWVDYW5BZGRDb21tZW50LnZhbHVlID0gY3VycmVudE91dGNvbWUuY2FuQWRkQ29tbWVudDtcclxuICAgICAgb3V0Y29tZUNhbkFkZENvbW1lbnQubGFiZWxLZXkgPSBcIkNhbkFkZENvbW1lbnRcIjtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lQ2FuRWRpdDogYm9vbGVhbjtcclxuICAgICAgb3V0Y29tZUNhbkVkaXQgPSBjdXJyZW50T3V0Y29tZS5jYW5FZGl0O1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVIaWRkZW5lU3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lSGlkZGVuZVN5c05hbWUubmFtZSA9IFwib3V0Y29tZUhpZGRlbmVTeXNOYW1lXCIgKyBpO1xyXG4gICAgICBvdXRjb21lSGlkZGVuZVN5c05hbWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBvdXRjb21lSGlkZGVuZVN5c05hbWUudmFsdWUgPSBjdXJyZW50T3V0Y29tZS5vdXRjb21lU3lzTmFtZTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lQ2FuRWRpdFN5c05hbWUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVDYW5FZGl0U3lzTmFtZS5uYW1lID0gXCJvdXRjb21lQ2FuRWRpdFN5c05hbWVcIiArIGk7XHJcbiAgICAgIG91dGNvbWVDYW5FZGl0U3lzTmFtZS52YWx1ZSA9IGN1cnJlbnRPdXRjb21lLmNhbkVkaXRTeXNOYW1lO1xyXG5cclxuICAgICAgb2JqZWN0T3V0Y29tZU9wdGlvbnMucHVzaChvdXRjb21lSUQsIG91dGNvbWVOYW1lLCBvdXRjb21lRGVjaXNpb25TeXNOYW1lLCBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMsXHJcbiAgICAgICAgb3V0Y29tZUNhbkFkZENvbW1lbnQsIG91dGNvbWVDYW5FZGl0LCBvdXRjb21lSGlkZGVuZVN5c05hbWUsIG91dGNvbWVDYW5FZGl0U3lzTmFtZSk7XHJcblxyXG5cclxuICAgICAgb3V0Y29tZXNPcHRpb25zLnB1c2gob2JqZWN0T3V0Y29tZU9wdGlvbnMpO1xyXG4gICAgICBvdXRjb21lc0NvdW50ICs9IDE7XHJcblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtvdXRjb21lc09wdGlvbnMsIG91dGNvbWVzQ291bnRdO1xyXG4gIH1cclxuICBhZGRXRkFjdGl2aXR5T3V0Y29tZSgpIHtcclxuICAgIGxldCBpbmRleCA9IHRoaXMub3V0Y29tZXNDb3VudDtcclxuXHJcbiAgICBsZXQgb2JqZWN0T3V0Y29tZU9wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgbGV0IG91dGNvbWVJRCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZUlELm5hbWUgPSBcIm91dGNvbWVJRFwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lSUQuaGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIG91dGNvbWVJRC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICBvdXRjb21lSUQudmFsdWUgPSAwO1xyXG5cclxuICAgIGxldCBvdXRjb21lTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZU5hbWUubmFtZSA9IFwib3V0Y29tZU5hbWVcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZU5hbWUuYXJhYmljTGFiZWxLZXkgPSBcIk5hbWVJbkFyYWJpY1wiO1xyXG4gICAgb3V0Y29tZU5hbWUuZW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICBvdXRjb21lTmFtZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5uYW1lID0gXCJvdXRjb21lRGVjaXNpb25TeXNOYW1lXCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUubGFiZWxLZXkgPSBcIkRlY2lzaW9uU3lzTmFtZVwiO1xyXG4gICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMubmFtZSA9IFwib3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzXCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5sYWJlbEtleSA9IFwiQWN0aXZpdHlcIjtcclxuICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5kYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0O1xyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lQ2FuQWRkQ29tbWVudCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVDYW5BZGRDb21tZW50Lm5hbWUgPSBcIm91dGNvbWVDYW5BZGRDb21tZW50XCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVDYW5BZGRDb21tZW50LmxhYmVsS2V5ID0gXCJDYW5BZGRDb21tZW50XCI7XHJcblxyXG4gICAgbGV0IG91dGNvbWVDYW5FZGl0OiBib29sZWFuO1xyXG4gICAgb3V0Y29tZUNhbkVkaXQgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lSGlkZGVuZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5uYW1lID0gXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUNhbkVkaXRTeXNOYW1lID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLm5hbWUgPSBcIm91dGNvbWVDYW5FZGl0U3lzTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lQ2FuRWRpdFN5c05hbWUudmFsdWUgPSB0cnVlO1xyXG5cclxuICAgIG9iamVjdE91dGNvbWVPcHRpb25zLnB1c2gob3V0Y29tZUlELCBvdXRjb21lTmFtZSwgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSwgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLCBvdXRjb21lQ2FuQWRkQ29tbWVudCxcclxuICAgICAgb3V0Y29tZUNhbkVkaXQsIG91dGNvbWVIaWRkZW5lU3lzTmFtZSwgb3V0Y29tZUNhbkVkaXRTeXNOYW1lKTtcclxuXHJcbiAgICB0aGlzLm91dGNvbWVzT3B0aW9ucy5wdXNoKG9iamVjdE91dGNvbWVPcHRpb25zKTtcclxuICAgIHRoaXMub3V0Y29tZXNDb3VudCArPSAxO1xyXG5cclxuICB9XHJcbiAgZGVsZXRlT3V0Y29tZShkZWxldGVkT3V0Y29tZTogYW55KSB7XHJcbiAgICBsZXQgZGVsZXRlZE91dGNvbWVJbmRleDogbnVtYmVyID0gdGhpcy5vdXRjb21lc09wdGlvbnMuaW5kZXhPZihkZWxldGVkT3V0Y29tZSk7XHJcbiAgICBpZiAoZGVsZXRlZE91dGNvbWVJbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5vdXRjb21lc09wdGlvbnMuc3BsaWNlKGRlbGV0ZWRPdXRjb21lSW5kZXgsIDEpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZWRPdXRjb21lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKGRlbGV0ZWRPdXRjb21lW2ldLk5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL09uIGNoYW5nZXMgZXZlbnRzXHJcbiAgYWN0aXZpdHlUeXBlT25DaGFuZ2UoYWN0aXZpdHlUeXBlKSB7XHJcbiAgICBhY3Rpdml0eVR5cGUgPSBhY3Rpdml0eVR5cGU/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAvL1Jlc2V0IGNvbnRyb2xzLCBvdXRjb21lcyBhbmQgZmxhZ3NcclxuICAgIHRoaXMucmVzZXRBbGxBY3Rpdml0eVR5cGVDb250cm9scygpO1xyXG4gICAgdGhpcy5vdXRjb21lc09wdGlvbnMgPSBbXTtcclxuICAgIHRoaXMub3V0Y29tZXNDb3VudCA9IDA7XHJcbiAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RHluYW1pY0NvbnRyb2xzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTdGF0aWNDb250cm9scyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93Q29uZGl0aW9uQ29udHJvbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5nZXRBY3Rpdml0eU91dGNvbWVzKHRoaXMudmVyc2lvbklELCBhY3Rpdml0eVR5cGUpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHZhciByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICB2YXIgbW9kZWwgPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIHZhciBsaXN0ID0gcmVzdWx0T2JqLmxpc3Q7XHJcbiAgICAgIHRoaXMubmV4dEFjdGl2aXR5TGlzdCA9IGxpc3QuYWN0aXZpdGllcztcclxuXHJcbiAgICAgIHN3aXRjaCAoYWN0aXZpdHlUeXBlKSB7XHJcbiAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQXBwcm92YWw6XHJcbiAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQWN0aW9uOlxyXG4gICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLlBlcmNlbnRhZ2VUYXNrOlxyXG4gICAgICAgICAgdGhpcy50YXNrVHlwZUxpc3QgPSBsaXN0LnRhc2tzO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0ID0gbGlzdC5wYXJ0aWNpcGFudHMucGFydGljaXBhbnRUeXBlcztcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnREYXRhTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50RGF0YTtcclxuXHJcbiAgICAgICAgICAvL0luaXRpYWxpemUgcmVxdWlyZWQgY29udHJvbHMgZm9yIGFwcHJvdmFsXHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMubmFtZSA9IFwiUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ1wiO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLmxhYmVsS2V5ID0gXCJQYXJ0aWNpcGFudFR5cGVzXCI7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuZGF0YVNvdXJjZSA9IHRoaXMucGFydGljaXBhbnRUeXBlTGlzdDtcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5zaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuaXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLm5hbWUgPSBcIlRhc2tOYW1lXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5hcmFiaWNMYWJlbEtleSA9IFwiVGFza05hbWVJbkFyYWJpY1wiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuZW5nbGlzaExhYmVsS2V5ID0gXCJUYXNrTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUubWF4TGVuZ3RoID0gMjU1O1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5uYW1lID0gXCJUYXNrRGVzY3JpcHRpb25cIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5hcmFiaWNMYWJlbEtleSA9IFwiVGFza0Rlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5lbmdsaXNoTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uLm1heExlbmd0aCA9IDI1NTtcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLm5hbWUgPSBcIlRhc2tVUkxcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwubGFiZWxLZXkgPSBcIlRhc2tVUkxcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5tYXhMZW5ndGggPSAyMDgzO1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUubmFtZSA9IFwiVGFza0NvcnJsVHlwZUlEXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5sYWJlbEtleSA9IFwiVGFza1R5cGVcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLmRhdGFTb3VyY2UgPSB0aGlzLnRhc2tUeXBlTGlzdDtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLm5hbWUgPSBcIkNhbkNvbXBsZXRlRnJvbVRNRVwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUubGFiZWxLZXkgPSBcIkNhbkNvbXBsZXRlRnJvbVRNRVwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS52YWx1ZSA9IG1vZGVsLmNhbkNvbXBsZXRlRnJvbVRNRTtcclxuXHJcbiAgICAgICAgICBsZXQgb3V0Y29tZXNSZXN1bHQ6IGFueSA9IHRoaXMuZ2V0QWN0aXZpdHlPdXRjb21lc09wdGlvbnMobW9kZWwub3V0Y29tZXMpO1xyXG4gICAgICAgICAgdGhpcy5vdXRjb21lc09wdGlvbnMgPSBvdXRjb21lc1Jlc3VsdFswXTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNDb3VudCA9IG91dGNvbWVzUmVzdWx0WzFdO1xyXG5cclxuICAgICAgICAgIHRoaXMuc2hvd0R5bmFtaWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5FbWFpbDpcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5TbGVlcDpcclxuICAgICAgICAgIGlmIChhY3Rpdml0eVR5cGUgPT0gQWN0aXZpdHlUeXBlLkVtYWlsKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50VHlwZXM7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnREYXRhTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50RGF0YTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMubmFtZSA9IFwiUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ1wiO1xyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMubGFiZWxLZXkgPSBcIlBhcnRpY2lwYW50VHlwZXNcIjtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLmRhdGFTb3VyY2UgPSB0aGlzLnBhcnRpY2lwYW50VHlwZUxpc3Q7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5zaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgbmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgICAgICBuYW1lLmFyYWJpYyA9IG1vZGVsLm5vcm1hbE91dGNvbWVOYW1lLmFyYWJpYztcclxuICAgICAgICAgIG5hbWUuZW5nbGlzaCA9IG1vZGVsLm5vcm1hbE91dGNvbWVOYW1lLmVuZ2xpc2g7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5uYW1lID0gXCJOb3JtYWxPdXRjb21lTmFtZVwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5hcmFiaWNMYWJlbEtleSA9IFwiT3V0Y29tZU5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5lbmdsaXNoTGFiZWxLZXkgPSBcIk91dGNvbWVOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS52YWx1ZSA9IG5hbWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLm1heExlbmd0aCA9IDI1NTtcclxuXHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLm5hbWUgPSBcIk91dGNvbWVTeXNOYW1lXCI7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLmxhYmVsS2V5ID0gXCJEZWNpc2lvblN5c05hbWVcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUubWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5uYW1lID0gXCJOZXh0QWN0aXZpdHlJRF9HVUlEXCI7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkubGFiZWxLZXkgPSBcIk5leHRBY3Rpdml0eVwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5LmRhdGFTb3VyY2UgPSB0aGlzLm5leHRBY3Rpdml0eUxpc3Q7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuaXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQubmFtZSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5sYWJlbEtleSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQudmFsdWUgPSBtb2RlbC5jYW5BZGRDb21tZW50O1xyXG5cclxuICAgICAgICAgIHRoaXMuc2hvd1N0YXRpY0NvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkNvbmRpdGlvbjpcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3QgPSBsaXN0LndmVmFyaWFibGVzO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdCA9IGxpc3Qud2ZWYXJpYWJsZXM7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0ID0gbGlzdC5yaHNUeXBlcztcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTGlzdCA9IGxpc3QuY29uZGl0aW9ucztcclxuXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5uYW1lID0gXCJMSFNWYXJpYWJsZUlEX0dVSURcIjtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uaGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24ucGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLmRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxIU1dGVmFyaWFibGVMaXN0O1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24ubmFtZSA9IFwiT3BlcmF0b3JUeXBlSXRlbUlEX0dVSURcIjtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5wbGFjZWhvbGRlciA9IFwiQ29uZGl0aW9uXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5kYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25MaXN0O1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24uc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgIGxldCBzZWxlY3RlZFJIU1R5cGUgPSB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXk/LnRvTG93ZXJDYXNlKCkgPT0gUmlnaHRoYW5kc2lkZXR5cGUuVmFyaWFibGU7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5uYW1lID0gXCJSSFNUeXBlSXRlbUlEX0dVSURcIjtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5kYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdDtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLnNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFJIU1R5cGU7XHJcblxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24ubmFtZSA9IFwiUkhTVmFyaWFibGVJRF9HVUlEXCI7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLnBsYWNlaG9sZGVyID0gXCJXb3JrZmxvd1ZhcmlhYmxlc1wiO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5kYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdDtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uaXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgbGV0IGNvbmRpdGlvbk91dGNvbWVzUmVzdWx0OiBhbnkgPSB0aGlzLmdldEFjdGl2aXR5T3V0Y29tZXNPcHRpb25zKG1vZGVsLm91dGNvbWVzKTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNPcHRpb25zID0gY29uZGl0aW9uT3V0Y29tZXNSZXN1bHRbMF07XHJcbiAgICAgICAgICB0aGlzLm91dGNvbWVzQ291bnQgPSBjb25kaXRpb25PdXRjb21lc1Jlc3VsdFsxXTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25Db250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2FuQWRkT3V0Y29tZSA9IHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID8gbW9kZWwuY2FuQWRkT3V0Y29tZSA6IGZhbHNlO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgY29uZGl0aW9uUkhTVHlwZU9uQ2hhbmdlKHR5cGUpIHtcclxuICAgIHR5cGUgPSB0eXBlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAodHlwZSA9PSBSaWdodGhhbmRzaWRldHlwZS5WYXJpYWJsZSkge1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJSSFNWYWx1ZVwiKTtcclxuXHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24ubmFtZSA9IFwiUkhTVmFyaWFibGVJRF9HVUlEXCI7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uaGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5wbGFjZWhvbGRlciA9IFwiV29ya2Zsb3dWYXJpYWJsZXNcIjtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5kYXRhU291cmNlID0gdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdDtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5zaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiUkhTVmFyaWFibGVJRF9HVUlEXCIpO1xyXG5cclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLm5hbWUgPSBcIlJIU1ZhbHVlXCI7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuaGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5wbGFjZWhvbGRlciA9IFwiVmFsdWVcIjtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUubWF4TGVuZ3RoID0gNTEyO1xyXG5cclxuICAgICAgdGhpcy5zaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuICB9XHJcbiAgcGFydGljaXBhbnRUeXBlT25DaGFuZ2UocGFydGljaXBhbnRUeXBlKSB7XHJcbiAgICBwYXJ0aWNpcGFudFR5cGUgPSBwYXJ0aWNpcGFudFR5cGU/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAocGFydGljaXBhbnRUeXBlID09IFBhcnRpY2lwYW50VHlwZS5QZXJtaXNzaW9uU2V0KSB7XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5uYW1lID0gXCJQYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nXCI7XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LmxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0XCI7XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LmRhdGFTb3VyY2UgPSB0aGlzLnBhcnRpY2lwYW50RGF0YUxpc3Q7XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LnNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd1BhcnRpY2lwYW50UGVybXNzaW9uU2V0ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJQYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nXCIpO1xyXG4gICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudFBlcm1zc2lvblNldCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9yZXNldCB0eXBlXHJcbiAgcmVzZXRBbGxBY3Rpdml0eVR5cGVDb250cm9scygpIHtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIlBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmdcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJQYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEc1N0cmluZ1wiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIlRhc2tOYW1lXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiVGFza0Rlc2NyaXB0aW9uXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiVGFza1VSTFwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIlRhc2tDb3JybFR5cGVJRFwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIkNhbkNvbXBsZXRlRnJvbVRNRVwiKTtcclxuXHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJOb3JtYWxPdXRjb21lTmFtZVwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIk91dGNvbWVTeXNOYW1lXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiTmV4dEFjdGl2aXR5SURfR1VJRFwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIkNhbkFkZENvbW1lbnRcIik7XHJcblxyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiTEhTVmFyaWFibGVJRF9HVUlEXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiT3BlcmF0b3JUeXBlSXRlbUlEX0dVSURcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJSSFNUeXBlSXRlbUlEX0dVSURcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJSSFNWYXJpYWJsZUlEX0dVSURcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJSSFNWYWx1ZVwiKTtcclxuXHJcbiAgICAvL1JlbW92ZSBvdXRjb21lcyBjb250cm9sc1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS52YWx1ZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vdXRjb21lc0NvdW50OyBpKyspIHtcclxuICAgICAgbGV0IG91dGNvbWVJRCA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUlEXCIgKyBpXTtcclxuICAgICAgaWYgKG91dGNvbWVJRCA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lSURcIiArIGkpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lTmFtZVwiICsgaSk7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGkpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGkpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXNcIiArIGkpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lQ2FuQWRkQ29tbWVudFwiICsgaSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0NhbmNlbFxyXG4gIGNhbmNlbEFkZCgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL1dvcmtmbG93cy93b3JrZmxvdy8nXSk7XHJcbiAgfVxyXG5cclxuICAvL09uIGRlc3Ryb3lcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiICpuZ0lmPVwiaXNBZGRGb3JtTG9hZGVkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnNcIj5cclxuICAgICAgICA8IS0tU3RhcnQgc2hhcmVkIGNvbnRyb2xzIGNvbnRhaW5lci0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJuYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzeXNOYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFjdGl2aXR5VHlwZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiIChPbkNoYW5nZSk9XCJhY3Rpdml0eVR5cGVPbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIHNoYXJlZCBjb250cm9scyBjb250YWluZXItLT5cclxuICAgICAgICA8IS0tU3RhcnQgcGFydGljaXBhbnQgY29udGFpbmVyLS0+XHJcbiAgICAgICAgPGRpdiBpZD1cInBhcnRpY2lwYW50Q29udGFpbmVyXCIgKm5nSWY9XCJzaG93UGFydGljaXBhbnRDb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJwYXJ0aWNpcGFudFR5cGVzXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCIgKE9uQ2hhbmdlKT1cInBhcnRpY2lwYW50VHlwZU9uQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXRcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBwYXJ0aWNpcGFudCBjb250YWluZXItLT5cclxuICAgICAgICA8IS0tU3RhcnQgc3RhdGljIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dTdGF0aWNDb250cm9sc1wiIGlkPVwic3RhdGljQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cInN0YXRpY091dGNvbWVOYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lU3lzTmFtZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5XCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudFwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIHN0YXRpYyBjb250cm9scy0tPlxyXG4gICAgICAgIDwhLS1TdGFydCBkeW5hbWljIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dEeW5hbWljQ29udHJvbHNcIiBpZD1cImR5bmFtaWNDb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tOYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWEgW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tEZXNjcmlwdGlvblwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImR5bmFtaWNUYXNrVVJMXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImR5bmFtaWNUYXNrVHlwZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiZHluYW1pY0NhbkNvbXBsZXRlXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgZHluYW1pYyBjb250cm9scy0tPlxyXG5cclxuICAgICAgICA8IS0tU3RhcnQgY29uZGl0aW9uIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dDb25kaXRpb25Db250cm9sc1wiIGlkPVwiY29uZGl0aW9uQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlciB0YWJsZS13LWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkxlZnRIYW5kU2lkZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDb25kaXRpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmlnaHRIYW5kU2lkZVR5cGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmlnaHRIYW5kU2lkZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25MSFNEcm9wRG93blwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiY29uZGl0aW9uc0Ryb3BEb3duXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNUeXBlRHJvcERvd25cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIiAoT25DaGFuZ2UpPVwiY29uZGl0aW9uUkhTVHlwZU9uQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJzaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZTsgZWxzZSBjb25kaXRpb25UeHRWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNEcm9wRG93blwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZGl0aW9uVHh0VmFsdWU+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNWYWx1ZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgY29uZGl0aW9uIGNvbnRyb2xzLS0+XHJcblxyXG4gICAgICAgIDwhLS1TdGFydCBvdXRjb21lcyBjb250YWluZXItLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd091dGNvbWVzQ29udGFpbmVyXCIgaWQ9XCJvdXRjb21lc0NvbnRhaW5lclwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgdGFibGUtdy1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWNpc2lvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3V0Y29tZXNPcHRpb25zO2xldCBpPWluZGV4O1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1JRC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLU5hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsxXVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLVN5c05hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsyXVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1oaWRkZW4gU3lzTmFtZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzZdXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWNhbiBlZGl0IFN5c05hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bN11cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tTmV4dEFjdGl2aXR5LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIm9wdGlvblszXVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tQ2FuQWRkQ29tbWVudC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm9wdGlvbls0XVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0taWYgb3V0Y29tZSBDYW4gRWRpdC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwib3B0aW9uWzVdXCIgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLWxpZ2h0LWRhbmdlciBidG4tc21cIiAoY2xpY2spPVwiZGVsZXRlT3V0Y29tZShvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIiBmYSBmYS10cmFzaCBoaWRkZW5cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cImNhbkFkZE91dGNvbWVcIj5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ3LTEwMCBidG4gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwiYWRkV0ZBY3Rpdml0eU91dGNvbWUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkTmV3UmVjb3JkXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIG91dGNvbWVzIGNvbnRhaW5lci0tPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCIgKGNsaWNrKT1cImNhbmNlbEFkZCgpXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=