@thetradeengineorg1/snova-shell-module 0.0.7 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/bundles/thetradeengineorg1-snova-shell-module.umd.js +1112 -2185
  2. package/bundles/thetradeengineorg1-snova-shell-module.umd.js.map +1 -1
  3. package/esm2015/lib/globaldependencies/helpers/dom.helper.js +2 -1
  4. package/esm2015/lib/shell-components/components/Payments/document.component.js +1 -1
  5. package/esm2015/lib/shell-components/components/admin-layout/admin-layout.component.js +39 -81
  6. package/esm2015/lib/shell-components/components/feed-time/feed-time.component.js +1 -1
  7. package/esm2015/lib/shell-components/components/header-side/header-side.component.js +312 -344
  8. package/esm2015/lib/shell-components/components/header-top/header-top.component.js +82 -357
  9. package/esm2015/lib/shell-components/components/menu/menu.component.js +136 -724
  10. package/esm2015/lib/shell-components/components/sidenav/side-bar.component.js +105 -99
  11. package/esm2015/lib/shell-components/components/sidenav/sidenav.component.js +1 -1
  12. package/esm2015/lib/shell-components/components/submit-feedback/submit-feedback.component.js +1 -1
  13. package/esm2015/lib/shell-components/shell.module.js +9 -11
  14. package/esm2015/public-api.js +1 -1
  15. package/fesm2015/thetradeengineorg1-snova-shell-module.js +1085 -2011
  16. package/fesm2015/thetradeengineorg1-snova-shell-module.js.map +1 -1
  17. package/lib/globaldependencies/components/componentbase.d.ts +0 -1
  18. package/lib/globaldependencies/constants/feature-ids.d.ts +0 -1
  19. package/lib/globaldependencies/constants/localstorage-properties.d.ts +0 -1
  20. package/lib/globaldependencies/helpers/dom.helper.d.ts +0 -1
  21. package/lib/globaldependencies/helpers/fontawesome-icons.d.ts +0 -1
  22. package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts +0 -1
  23. package/lib/globaldependencies/helpers/window.helper.d.ts +0 -1
  24. package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts +0 -1
  25. package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts +0 -1
  26. package/lib/globaldependencies/pipes/highLightText.pipe.d.ts +0 -1
  27. package/lib/globaldependencies/pipes/orderby-pipe.d.ts +0 -1
  28. package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts +0 -1
  29. package/lib/globaldependencies/pipes/sanitize.pipe.d.ts +0 -1
  30. package/lib/globaldependencies/pipes/softlabels.pipes.d.ts +0 -1
  31. package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts +0 -1
  32. package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts +0 -1
  33. package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts +0 -1
  34. package/lib/shell-components/components/Payments/account.component.d.ts +0 -1
  35. package/lib/shell-components/components/Payments/company-information.d.ts +0 -1
  36. package/lib/shell-components/components/Payments/company-plans.component.d.ts +0 -1
  37. package/lib/shell-components/components/Payments/document.component.d.ts +1 -2
  38. package/lib/shell-components/components/Payments/payment-method.component.d.ts +0 -1
  39. package/lib/shell-components/components/Payments/product-service.component.d.ts +0 -1
  40. package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts +0 -1
  41. package/lib/shell-components/components/Payments/transactions.component.d.ts +0 -1
  42. package/lib/shell-components/components/admin-layout/admin-layout.component.d.ts +0 -1
  43. package/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.d.ts +0 -1
  44. package/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.d.ts +0 -1
  45. package/lib/shell-components/components/export-import-configuration/export-configuration.component.d.ts +0 -1
  46. package/lib/shell-components/components/feed-time/feed-time-dialog.component.d.ts +0 -1
  47. package/lib/shell-components/components/feed-time/feed-time.component.d.ts +0 -1
  48. package/lib/shell-components/components/header-side/header-side.component.d.ts +1 -2
  49. package/lib/shell-components/components/header-top/header-top.component.d.ts +0 -1
  50. package/lib/shell-components/components/lives/lives-welcome-page.d.ts +0 -1
  51. package/lib/shell-components/components/menu/menu.component.d.ts +0 -1
  52. package/lib/shell-components/components/menu/searchTask.enum.d.ts +0 -1
  53. package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts +0 -1
  54. package/lib/shell-components/components/notifications/notifications.component.d.ts +0 -1
  55. package/lib/shell-components/components/sidebar-top/sidebar-top.component.d.ts +0 -1
  56. package/lib/shell-components/components/sidenav/side-bar.component.d.ts +26 -16
  57. package/lib/shell-components/components/sidenav/sidenav.component.d.ts +0 -1
  58. package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts +0 -1
  59. package/lib/shell-components/constants/api-urls.d.ts +0 -1
  60. package/lib/shell-components/constants/available-languages.d.ts +0 -1
  61. package/lib/shell-components/constants/channel-names.d.ts +0 -1
  62. package/lib/shell-components/constants/menu-categories.d.ts +0 -1
  63. package/lib/shell-components/constants/notification-routes.d.ts +0 -1
  64. package/lib/shell-components/constants/notification-type-ids.d.ts +0 -1
  65. package/lib/shell-components/enum/recentSearchType.enum.d.ts +0 -1
  66. package/lib/shell-components/models/AppMenuItemModel.d.ts +0 -1
  67. package/lib/shell-components/models/AppNotification.d.ts +0 -1
  68. package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts +0 -1
  69. package/lib/shell-components/models/ChannelUpdateModel.d.ts +0 -1
  70. package/lib/shell-components/models/EmployeeStatusModel.d.ts +0 -1
  71. package/lib/shell-components/models/IAdjust-screen-options.d.ts +0 -1
  72. package/lib/shell-components/models/IBadge.d.ts +0 -1
  73. package/lib/shell-components/models/IChildItem.d.ts +0 -1
  74. package/lib/shell-components/models/ILayout-change-options.d.ts +0 -1
  75. package/lib/shell-components/models/IMenuItem.d.ts +0 -1
  76. package/lib/shell-components/models/IlayoutConf.d.ts +0 -1
  77. package/lib/shell-components/models/IntroModel.d.ts +0 -1
  78. package/lib/shell-components/models/MessageDetails.d.ts +0 -1
  79. package/lib/shell-components/models/MessageTypingDetails.d.ts +0 -1
  80. package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts +0 -1
  81. package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts +0 -1
  82. package/lib/shell-components/models/NotificationsOutPutModel.d.ts +0 -1
  83. package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts +0 -1
  84. package/lib/shell-components/models/RecentSearchModel.d.ts +0 -1
  85. package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts +0 -1
  86. package/lib/shell-components/models/ReportSubmittedNotification.d.ts +0 -1
  87. package/lib/shell-components/models/RoleUpdatedNotification.d.ts +0 -1
  88. package/lib/shell-components/models/UserStoryAssignedNotification.d.ts +0 -1
  89. package/lib/shell-components/models/archiveUserStoryModel.d.ts +0 -1
  90. package/lib/shell-components/models/companieslist.model.d.ts +0 -1
  91. package/lib/shell-components/models/company-model.d.ts +0 -1
  92. package/lib/shell-components/models/company-payment-model.d.ts +0 -1
  93. package/lib/shell-components/models/dragedWidget.d.ts +0 -1
  94. package/lib/shell-components/models/employee-List.d.ts +0 -1
  95. package/lib/shell-components/models/employee.d.ts +0 -1
  96. package/lib/shell-components/models/entityRoleFeature.d.ts +0 -1
  97. package/lib/shell-components/models/export-configuration-model.d.ts +0 -1
  98. package/lib/shell-components/models/export-data.module.d.ts +0 -1
  99. package/lib/shell-components/models/goalApprovedNotificationModel.d.ts +0 -1
  100. package/lib/shell-components/models/import-configuration-model.d.ts +0 -1
  101. package/lib/shell-components/models/initialStatusofUsers.d.ts +0 -1
  102. package/lib/shell-components/models/invoiceOutput-model.d.ts +0 -1
  103. package/lib/shell-components/models/leaveApplicationNotifiction.d.ts +0 -1
  104. package/lib/shell-components/models/multiChartsScheduling.d.ts +0 -1
  105. package/lib/shell-components/models/parkUserStoryInputModel.d.ts +0 -1
  106. package/lib/shell-components/models/project.d.ts +0 -1
  107. package/lib/shell-components/models/recentSearchApiModel.d.ts +0 -1
  108. package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts +0 -1
  109. package/lib/shell-components/models/shellModulesInfo.d.ts +0 -1
  110. package/lib/shell-components/models/softlabels-model.d.ts +0 -1
  111. package/lib/shell-components/models/sprintReplanRequestedModel.d.ts +0 -1
  112. package/lib/shell-components/models/sprintStartedNotificationModel.d.ts +0 -1
  113. package/lib/shell-components/models/store-model.d.ts +0 -1
  114. package/lib/shell-components/models/store-search-model.d.ts +0 -1
  115. package/lib/shell-components/models/themes.model.d.ts +0 -1
  116. package/lib/shell-components/models/timesheetenabledisable.d.ts +0 -1
  117. package/lib/shell-components/models/user.d.ts +0 -1
  118. package/lib/shell-components/models/userStory.d.ts +0 -1
  119. package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts +0 -1
  120. package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts +0 -1
  121. package/lib/shell-components/models/userstory-custom-fields.model.d.ts +0 -1
  122. package/lib/shell-components/models/validation.model.d.ts +0 -1
  123. package/lib/shell-components/models/widgetlist.d.ts +0 -1
  124. package/lib/shell-components/models/workspaceList.d.ts +0 -1
  125. package/lib/shell-components/services/authentication.service.d.ts +0 -1
  126. package/lib/shell-components/services/chat.service.d.ts +0 -1
  127. package/lib/shell-components/services/common-used.service.d.ts +0 -1
  128. package/lib/shell-components/services/feature.service.d.ts +0 -1
  129. package/lib/shell-components/services/google-analytics.service.d.ts +0 -1
  130. package/lib/shell-components/services/layout.service.d.ts +0 -1
  131. package/lib/shell-components/services/payment.service.d.ts +0 -1
  132. package/lib/shell-components/services/recentSearch.service.d.ts +0 -1
  133. package/lib/shell-components/services/shell.modules.service.d.ts +0 -1
  134. package/lib/shell-components/services/signalr.service.d.ts +0 -1
  135. package/lib/shell-components/services/theme.service.d.ts +0 -1
  136. package/lib/shell-components/shell.module.d.ts +1 -2
  137. package/lib/shell-components/shell.routing.d.ts +0 -1
  138. package/lib/shell-components/store/actions/authentication.actions.d.ts +0 -1
  139. package/lib/shell-components/store/actions/chat.actions.d.ts +0 -1
  140. package/lib/shell-components/store/actions/menuitems.actions.d.ts +0 -1
  141. package/lib/shell-components/store/actions/notification-validator.action.d.ts +0 -1
  142. package/lib/shell-components/store/actions/notifications.actions.d.ts +0 -1
  143. package/lib/shell-components/store/effects/authentication.effects.d.ts +0 -1
  144. package/lib/shell-components/store/effects/chat.effects.d.ts +0 -1
  145. package/lib/shell-components/store/effects/index.d.ts +0 -1
  146. package/lib/shell-components/store/effects/menuitems.effects.d.ts +0 -1
  147. package/lib/shell-components/store/effects/notification-validator.effects.d.ts +0 -1
  148. package/lib/shell-components/store/effects/notifications.effects.d.ts +0 -1
  149. package/lib/shell-components/store/reducers/authentication.reducers.d.ts +0 -1
  150. package/lib/shell-components/store/reducers/chat.reducers.d.ts +0 -1
  151. package/lib/shell-components/store/reducers/index.d.ts +0 -1
  152. package/lib/shell-components/store/reducers/menuitems.reducers.d.ts +0 -1
  153. package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts +0 -1
  154. package/lib/shell-components/store/reducers/notifications.reducers.d.ts +0 -1
  155. package/package.json +1 -1
  156. package/public-api.d.ts +0 -1
  157. package/store/reducers/index.d.ts +0 -1
  158. package/thetradeengineorg1-snova-shell-module.d.ts +0 -1
  159. package/lib/globaldependencies/components/componentbase.d.ts.map +0 -1
  160. package/lib/globaldependencies/constants/feature-ids.d.ts.map +0 -1
  161. package/lib/globaldependencies/constants/localstorage-properties.d.ts.map +0 -1
  162. package/lib/globaldependencies/helpers/dom.helper.d.ts.map +0 -1
  163. package/lib/globaldependencies/helpers/fontawesome-icons.d.ts.map +0 -1
  164. package/lib/globaldependencies/helpers/moment-utc-date-adapter.d.ts.map +0 -1
  165. package/lib/globaldependencies/helpers/window.helper.d.ts.map +0 -1
  166. package/lib/globaldependencies/intercepter/jwt.interceptor.d.ts.map +0 -1
  167. package/lib/globaldependencies/pipes/fetchSizedAndCachedImage.pipe.d.ts.map +0 -1
  168. package/lib/globaldependencies/pipes/highLightText.pipe.d.ts.map +0 -1
  169. package/lib/globaldependencies/pipes/orderby-pipe.d.ts.map +0 -1
  170. package/lib/globaldependencies/pipes/removeSpecialCharacters.pipe.d.ts.map +0 -1
  171. package/lib/globaldependencies/pipes/sanitize.pipe.d.ts.map +0 -1
  172. package/lib/globaldependencies/pipes/softlabels.pipes.d.ts.map +0 -1
  173. package/lib/globaldependencies/pipes/utctolocaltime.pipe.d.ts.map +0 -1
  174. package/lib/globaldependencies/pipes/utctolocaltimewithdate.pipe.d.ts.map +0 -1
  175. package/lib/globaldependencies/pipes/workflowstatus.pipes.d.ts.map +0 -1
  176. package/lib/shell-components/components/Payments/account.component.d.ts.map +0 -1
  177. package/lib/shell-components/components/Payments/company-information.d.ts.map +0 -1
  178. package/lib/shell-components/components/Payments/company-plans.component.d.ts.map +0 -1
  179. package/lib/shell-components/components/Payments/document.component.d.ts.map +0 -1
  180. package/lib/shell-components/components/Payments/payment-method.component.d.ts.map +0 -1
  181. package/lib/shell-components/components/Payments/product-service.component.d.ts.map +0 -1
  182. package/lib/shell-components/components/Payments/purchase-more-licenses.d.ts.map +0 -1
  183. package/lib/shell-components/components/Payments/transactions.component.d.ts.map +0 -1
  184. package/lib/shell-components/components/admin-layout/admin-layout.component.d.ts.map +0 -1
  185. package/lib/shell-components/components/all-work-items-dialog/all-work-items-dialog.component.d.ts.map +0 -1
  186. package/lib/shell-components/components/confirmation-dialog/confirmation-dialog.component.d.ts.map +0 -1
  187. package/lib/shell-components/components/export-import-configuration/export-configuration.component.d.ts.map +0 -1
  188. package/lib/shell-components/components/feed-time/feed-time-dialog.component.d.ts.map +0 -1
  189. package/lib/shell-components/components/feed-time/feed-time.component.d.ts.map +0 -1
  190. package/lib/shell-components/components/header-side/header-side.component.d.ts.map +0 -1
  191. package/lib/shell-components/components/header-top/header-top.component.d.ts.map +0 -1
  192. package/lib/shell-components/components/lives/lives-welcome-page.d.ts.map +0 -1
  193. package/lib/shell-components/components/menu/menu.component.d.ts.map +0 -1
  194. package/lib/shell-components/components/menu/searchTask.enum.d.ts.map +0 -1
  195. package/lib/shell-components/components/notifications/announcement-dialog.component.d.ts.map +0 -1
  196. package/lib/shell-components/components/notifications/notifications.component.d.ts.map +0 -1
  197. package/lib/shell-components/components/sidebar-top/sidebar-top.component.d.ts.map +0 -1
  198. package/lib/shell-components/components/sidenav/side-bar.component.d.ts.map +0 -1
  199. package/lib/shell-components/components/sidenav/sidenav.component.d.ts.map +0 -1
  200. package/lib/shell-components/components/submit-feedback/submit-feedback.component.d.ts.map +0 -1
  201. package/lib/shell-components/constants/api-urls.d.ts.map +0 -1
  202. package/lib/shell-components/constants/available-languages.d.ts.map +0 -1
  203. package/lib/shell-components/constants/channel-names.d.ts.map +0 -1
  204. package/lib/shell-components/constants/menu-categories.d.ts.map +0 -1
  205. package/lib/shell-components/constants/notification-routes.d.ts.map +0 -1
  206. package/lib/shell-components/constants/notification-type-ids.d.ts.map +0 -1
  207. package/lib/shell-components/enum/recentSearchType.enum.d.ts.map +0 -1
  208. package/lib/shell-components/models/AppMenuItemModel.d.ts.map +0 -1
  209. package/lib/shell-components/models/AppNotification.d.ts.map +0 -1
  210. package/lib/shell-components/models/AssetAssignedNotificationModel.d.ts.map +0 -1
  211. package/lib/shell-components/models/ChannelUpdateModel.d.ts.map +0 -1
  212. package/lib/shell-components/models/EmployeeStatusModel.d.ts.map +0 -1
  213. package/lib/shell-components/models/IAdjust-screen-options.d.ts.map +0 -1
  214. package/lib/shell-components/models/IBadge.d.ts.map +0 -1
  215. package/lib/shell-components/models/IChildItem.d.ts.map +0 -1
  216. package/lib/shell-components/models/ILayout-change-options.d.ts.map +0 -1
  217. package/lib/shell-components/models/IMenuItem.d.ts.map +0 -1
  218. package/lib/shell-components/models/IlayoutConf.d.ts.map +0 -1
  219. package/lib/shell-components/models/IntroModel.d.ts.map +0 -1
  220. package/lib/shell-components/models/MessageDetails.d.ts.map +0 -1
  221. package/lib/shell-components/models/MessageTypingDetails.d.ts.map +0 -1
  222. package/lib/shell-components/models/NewProjectCreatedNotificationModel.d.ts.map +0 -1
  223. package/lib/shell-components/models/NewProjectFeatureNotificationModel.d.ts.map +0 -1
  224. package/lib/shell-components/models/NotificationsOutPutModel.d.ts.map +0 -1
  225. package/lib/shell-components/models/ProjectSearchCriteriaInputModel.d.ts.map +0 -1
  226. package/lib/shell-components/models/RecentSearchModel.d.ts.map +0 -1
  227. package/lib/shell-components/models/ReportConfigAssignedNotification.d.ts.map +0 -1
  228. package/lib/shell-components/models/ReportSubmittedNotification.d.ts.map +0 -1
  229. package/lib/shell-components/models/RoleUpdatedNotification.d.ts.map +0 -1
  230. package/lib/shell-components/models/UserStoryAssignedNotification.d.ts.map +0 -1
  231. package/lib/shell-components/models/archiveUserStoryModel.d.ts.map +0 -1
  232. package/lib/shell-components/models/companieslist.model.d.ts.map +0 -1
  233. package/lib/shell-components/models/company-model.d.ts.map +0 -1
  234. package/lib/shell-components/models/company-payment-model.d.ts.map +0 -1
  235. package/lib/shell-components/models/dragedWidget.d.ts.map +0 -1
  236. package/lib/shell-components/models/employee-List.d.ts.map +0 -1
  237. package/lib/shell-components/models/employee.d.ts.map +0 -1
  238. package/lib/shell-components/models/entityRoleFeature.d.ts.map +0 -1
  239. package/lib/shell-components/models/export-configuration-model.d.ts.map +0 -1
  240. package/lib/shell-components/models/export-data.module.d.ts.map +0 -1
  241. package/lib/shell-components/models/goalApprovedNotificationModel.d.ts.map +0 -1
  242. package/lib/shell-components/models/import-configuration-model.d.ts.map +0 -1
  243. package/lib/shell-components/models/initialStatusofUsers.d.ts.map +0 -1
  244. package/lib/shell-components/models/invoiceOutput-model.d.ts.map +0 -1
  245. package/lib/shell-components/models/leaveApplicationNotifiction.d.ts.map +0 -1
  246. package/lib/shell-components/models/multiChartsScheduling.d.ts.map +0 -1
  247. package/lib/shell-components/models/parkUserStoryInputModel.d.ts.map +0 -1
  248. package/lib/shell-components/models/project.d.ts.map +0 -1
  249. package/lib/shell-components/models/recentSearchApiModel.d.ts.map +0 -1
  250. package/lib/shell-components/models/searchCriteriaInputModelBase.d.ts.map +0 -1
  251. package/lib/shell-components/models/shellModulesInfo.d.ts.map +0 -1
  252. package/lib/shell-components/models/softlabels-model.d.ts.map +0 -1
  253. package/lib/shell-components/models/sprintReplanRequestedModel.d.ts.map +0 -1
  254. package/lib/shell-components/models/sprintStartedNotificationModel.d.ts.map +0 -1
  255. package/lib/shell-components/models/store-model.d.ts.map +0 -1
  256. package/lib/shell-components/models/store-search-model.d.ts.map +0 -1
  257. package/lib/shell-components/models/themes.model.d.ts.map +0 -1
  258. package/lib/shell-components/models/timesheetenabledisable.d.ts.map +0 -1
  259. package/lib/shell-components/models/user.d.ts.map +0 -1
  260. package/lib/shell-components/models/userStory.d.ts.map +0 -1
  261. package/lib/shell-components/models/userStoryCommentNotificationModel.d.ts.map +0 -1
  262. package/lib/shell-components/models/userStoryUpdateNotificationModel.d.ts.map +0 -1
  263. package/lib/shell-components/models/userstory-custom-fields.model.d.ts.map +0 -1
  264. package/lib/shell-components/models/validation.model.d.ts.map +0 -1
  265. package/lib/shell-components/models/widgetlist.d.ts.map +0 -1
  266. package/lib/shell-components/models/workspaceList.d.ts.map +0 -1
  267. package/lib/shell-components/services/authentication.service.d.ts.map +0 -1
  268. package/lib/shell-components/services/chat.service.d.ts.map +0 -1
  269. package/lib/shell-components/services/common-used.service.d.ts.map +0 -1
  270. package/lib/shell-components/services/feature.service.d.ts.map +0 -1
  271. package/lib/shell-components/services/google-analytics.service.d.ts.map +0 -1
  272. package/lib/shell-components/services/layout.service.d.ts.map +0 -1
  273. package/lib/shell-components/services/payment.service.d.ts.map +0 -1
  274. package/lib/shell-components/services/recentSearch.service.d.ts.map +0 -1
  275. package/lib/shell-components/services/shell.modules.service.d.ts.map +0 -1
  276. package/lib/shell-components/services/signalr.service.d.ts.map +0 -1
  277. package/lib/shell-components/services/theme.service.d.ts.map +0 -1
  278. package/lib/shell-components/shell.module.d.ts.map +0 -1
  279. package/lib/shell-components/shell.routing.d.ts.map +0 -1
  280. package/lib/shell-components/store/actions/authentication.actions.d.ts.map +0 -1
  281. package/lib/shell-components/store/actions/chat.actions.d.ts.map +0 -1
  282. package/lib/shell-components/store/actions/menuitems.actions.d.ts.map +0 -1
  283. package/lib/shell-components/store/actions/notification-validator.action.d.ts.map +0 -1
  284. package/lib/shell-components/store/actions/notifications.actions.d.ts.map +0 -1
  285. package/lib/shell-components/store/effects/authentication.effects.d.ts.map +0 -1
  286. package/lib/shell-components/store/effects/chat.effects.d.ts.map +0 -1
  287. package/lib/shell-components/store/effects/index.d.ts.map +0 -1
  288. package/lib/shell-components/store/effects/menuitems.effects.d.ts.map +0 -1
  289. package/lib/shell-components/store/effects/notification-validator.effects.d.ts.map +0 -1
  290. package/lib/shell-components/store/effects/notifications.effects.d.ts.map +0 -1
  291. package/lib/shell-components/store/reducers/authentication.reducers.d.ts.map +0 -1
  292. package/lib/shell-components/store/reducers/chat.reducers.d.ts.map +0 -1
  293. package/lib/shell-components/store/reducers/index.d.ts.map +0 -1
  294. package/lib/shell-components/store/reducers/menuitems.reducers.d.ts.map +0 -1
  295. package/lib/shell-components/store/reducers/notification-validator.reducers.d.ts.map +0 -1
  296. package/lib/shell-components/store/reducers/notifications.reducers.d.ts.map +0 -1
  297. package/public-api.d.ts.map +0 -1
  298. package/store/reducers/index.d.ts.map +0 -1
  299. package/thetradeengineorg1-snova-shell-module.d.ts.map +0 -1
@@ -39,24 +39,17 @@ import * as i14 from "@angular/material/button";
39
39
  import * as i15 from "@angular/flex-layout/extended";
40
40
  import * as i16 from "@angular/material/menu";
41
41
  import * as i17 from "@angular/material/icon";
42
- import * as i18 from "@angular/flex-layout/flex";
43
- import * as i19 from "@angular/forms";
44
- import * as i20 from "@ncstate/sat-popover";
45
- import * as i21 from "@angular/material/card";
46
- import * as i22 from "@angular/material/form-field";
47
- import * as i23 from "@angular/material/input";
48
- import * as i24 from "@angular/material/select";
49
- import * as i25 from "@angular/material/core";
50
- import * as i26 from "@fortawesome/angular-fontawesome";
51
- import * as i27 from "@angular/material/tooltip";
52
- import * as i28 from "@angular/material/progress-bar";
53
- import * as i29 from "@thetradeengineorg1/snova-avatar";
54
- import * as i30 from "@angular/material/progress-spinner";
55
- import * as i31 from "../../../globaldependencies/pipes/softlabels.pipes";
56
- import * as i32 from "../../../globaldependencies/pipes/highLightText.pipe";
57
- import * as i33 from "../../../globaldependencies/pipes/removeSpecialCharacters.pipe";
58
- import * as i34 from "../../../globaldependencies/pipes/fetchSizedAndCachedImage.pipe";
59
- import * as i35 from "ngx-timeago";
42
+ import * as i18 from "@ncstate/sat-popover";
43
+ import * as i19 from "@angular/material/card";
44
+ import * as i20 from "@angular/forms";
45
+ import * as i21 from "@angular/material/form-field";
46
+ import * as i22 from "@angular/material/input";
47
+ import * as i23 from "@angular/material/select";
48
+ import * as i24 from "@angular/material/core";
49
+ import * as i25 from "@fortawesome/angular-fontawesome";
50
+ import * as i26 from "@angular/material/tooltip";
51
+ import * as i27 from "@angular/material/progress-bar";
52
+ import * as i28 from "../../../globaldependencies/pipes/softlabels.pipes";
60
53
  const _c0 = ["menuTrigger"];
61
54
  const _c1 = ["element"];
62
55
  const _c2 = ["workspaceElement"];
@@ -67,11 +60,11 @@ const _c6 = ["allEditSelected"];
67
60
  const _c7 = ["allDeleteSelected"];
68
61
  const _c8 = ["infoPopOver"];
69
62
  const _c9 = ["openMenuPopUp"];
70
- function MenuComponent_div_9_div_1_Template(rf, ctx) { if (rf & 1) {
71
- const _r36 = i0.ɵɵgetCurrentView();
63
+ function MenuComponent_div_5_div_1_Template(rf, ctx) { if (rf & 1) {
64
+ const _r19 = i0.ɵɵgetCurrentView();
72
65
  i0.ɵɵelementStart(0, "div");
73
- i0.ɵɵelementStart(1, "button", 55);
74
- i0.ɵɵlistener("click", function MenuComponent_div_9_div_1_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r36); const item_r32 = i0.ɵɵnextContext().$implicit; const ctx_r34 = i0.ɵɵnextContext(); return ctx_r34.selectMenu(item_r32, $event); });
66
+ i0.ɵɵelementStart(1, "button", 31);
67
+ i0.ɵɵlistener("click", function MenuComponent_div_5_div_1_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r19); const item_r15 = i0.ɵɵnextContext().$implicit; const ctx_r17 = i0.ɵɵnextContext(); return ctx_r17.selectMenu(item_r15, $event); });
75
68
  i0.ɵɵelementStart(2, "mat-icon");
76
69
  i0.ɵɵtext(3);
77
70
  i0.ɵɵelementEnd();
@@ -80,29 +73,29 @@ function MenuComponent_div_9_div_1_Template(rf, ctx) { if (rf & 1) {
80
73
  i0.ɵɵelementEnd();
81
74
  i0.ɵɵelementEnd();
82
75
  } if (rf & 2) {
83
- const item_r32 = i0.ɵɵnextContext().$implicit;
84
- const ctx_r33 = i0.ɵɵnextContext();
76
+ const item_r15 = i0.ɵɵnextContext().$implicit;
77
+ const ctx_r16 = i0.ɵɵnextContext();
85
78
  i0.ɵɵadvance(1);
86
- i0.ɵɵpropertyInterpolate1("routerLink", "/", item_r32.state, "");
79
+ i0.ɵɵpropertyInterpolate1("routerLink", "/", item_r15.state, "");
87
80
  i0.ɵɵadvance(2);
88
- i0.ɵɵtextInterpolate(item_r32.icon);
81
+ i0.ɵɵtextInterpolate(item_r15.icon);
89
82
  i0.ɵɵadvance(1);
90
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(5, 3, item_r32.menu, ctx_r33.softLabels), " ");
83
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(5, 3, item_r15.menu, ctx_r16.softLabels), " ");
91
84
  } }
92
- function MenuComponent_div_9_Template(rf, ctx) { if (rf & 1) {
85
+ function MenuComponent_div_5_Template(rf, ctx) { if (rf & 1) {
93
86
  i0.ɵɵelementStart(0, "div");
94
- i0.ɵɵtemplate(1, MenuComponent_div_9_div_1_Template, 6, 6, "div", 16);
87
+ i0.ɵɵtemplate(1, MenuComponent_div_5_div_1_Template, 6, 6, "div", 15);
95
88
  i0.ɵɵelementEnd();
96
89
  } if (rf & 2) {
97
- const item_r32 = ctx.$implicit;
90
+ const item_r15 = ctx.$implicit;
98
91
  i0.ɵɵadvance(1);
99
- i0.ɵɵproperty("ngIf", item_r32.type == "link" || item_r32.type == "applicationlink");
92
+ i0.ɵɵproperty("ngIf", item_r15.type == "link" || item_r15.type == "applicationlink");
100
93
  } }
101
- function MenuComponent_div_10_Template(rf, ctx) { if (rf & 1) {
102
- const _r39 = i0.ɵɵgetCurrentView();
103
- i0.ɵɵelementStart(0, "div", 56);
104
- i0.ɵɵelementStart(1, "fa-icon", 57);
105
- i0.ɵɵlistener("click", function MenuComponent_div_10_Template_fa_icon_click_1_listener() { i0.ɵɵrestoreView(_r39); const ctx_r38 = i0.ɵɵnextContext(); return ctx_r38.openApps(); });
94
+ function MenuComponent_div_6_Template(rf, ctx) { if (rf & 1) {
95
+ const _r22 = i0.ɵɵgetCurrentView();
96
+ i0.ɵɵelementStart(0, "div", 32);
97
+ i0.ɵɵelementStart(1, "fa-icon", 33);
98
+ i0.ɵɵlistener("click", function MenuComponent_div_6_Template_fa_icon_click_1_listener() { i0.ɵɵrestoreView(_r22); const ctx_r21 = i0.ɵɵnextContext(); return ctx_r21.openApps(); });
106
99
  i0.ɵɵpipe(2, "translate");
107
100
  i0.ɵɵelementEnd();
108
101
  i0.ɵɵelementEnd();
@@ -112,434 +105,7 @@ function MenuComponent_div_10_Template(rf, ctx) { if (rf & 1) {
112
105
  i0.ɵɵadvance(1);
113
106
  i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind1(2, 2, "APP.APPSTORE"));
114
107
  } }
115
- function MenuComponent_span_12_Template(rf, ctx) { if (rf & 1) {
116
- i0.ɵɵelementStart(0, "span", 58);
117
- i0.ɵɵtext(1, "@ \u00A0");
118
- i0.ɵɵelementEnd();
119
- } }
120
- function MenuComponent_span_13_Template(rf, ctx) { if (rf & 1) {
121
- i0.ɵɵelementStart(0, "span", 58);
122
- i0.ɵɵtext(1, "# \u00A0");
123
- i0.ɵɵelementEnd();
124
- } }
125
- function MenuComponent_span_19_Template(rf, ctx) { if (rf & 1) {
126
- i0.ɵɵelement(0, "span");
127
- } }
128
- function MenuComponent_mat_icon_20_Template(rf, ctx) { if (rf & 1) {
129
- const _r41 = i0.ɵɵgetCurrentView();
130
- i0.ɵɵelementStart(0, "mat-icon", 59);
131
- i0.ɵɵlistener("click", function MenuComponent_mat_icon_20_Template_mat_icon_click_0_listener($event) { i0.ɵɵrestoreView(_r41); const ctx_r40 = i0.ɵɵnextContext(); return ctx_r40.closeSearch($event); });
132
- i0.ɵɵtext(1, " close");
133
- i0.ɵɵelementEnd();
134
- } }
135
- function MenuComponent_mat_progress_bar_27_Template(rf, ctx) { if (rf & 1) {
136
- i0.ɵɵelement(0, "mat-progress-bar", 60);
137
- } }
138
- const _c10 = function () { return { exact: true }; };
139
- function MenuComponent_div_29_ng_container_5_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
140
- const _r49 = i0.ɵɵgetCurrentView();
141
- i0.ɵɵelementStart(0, "div");
142
- i0.ɵɵelementStart(1, "button", 65);
143
- i0.ɵɵlistener("mousedown", function MenuComponent_div_29_ng_container_5_div_1_div_1_Template_button_mousedown_1_listener($event) { i0.ɵɵrestoreView(_r49); const item_r44 = i0.ɵɵnextContext().$implicit; const ctx_r47 = i0.ɵɵnextContext(3); return ctx_r47.selectAdimnTool(item_r44.state, $event, item_r44); });
144
- i0.ɵɵpipe(2, "softLabelsPipe");
145
- i0.ɵɵelementStart(3, "mat-icon", 66);
146
- i0.ɵɵtext(4);
147
- i0.ɵɵelementEnd();
148
- i0.ɵɵelement(5, "span", 67);
149
- i0.ɵɵpipe(6, "highLightText");
150
- i0.ɵɵpipe(7, "softLabelsPipe");
151
- i0.ɵɵelementEnd();
152
- i0.ɵɵelementEnd();
153
- } if (rf & 2) {
154
- const ctx_r50 = i0.ɵɵnextContext();
155
- const item_r44 = ctx_r50.$implicit;
156
- const i_r45 = ctx_r50.index;
157
- const ctx_r46 = i0.ɵɵnextContext(3);
158
- i0.ɵɵadvance(1);
159
- i0.ɵɵpropertyInterpolate1("routerLink", "/", item_r44.state, "");
160
- i0.ɵɵpropertyInterpolate("matTooltip", ctx_r46.translateapplicationname(i0.ɵɵpipeBind2(2, 7, item_r44.menu, ctx_r46.softLabels)));
161
- i0.ɵɵproperty("ngClass", ctx_r46.selectedRowIndex == i_r45 ? "color-text" : "color-text1")("routerLinkActiveOptions", i0.ɵɵpureFunction0(16, _c10));
162
- i0.ɵɵadvance(2);
163
- i0.ɵɵproperty("ngClass", ctx_r46.selectedRowIndex == i_r45 ? "color-text" : "color-text1");
164
- i0.ɵɵadvance(1);
165
- i0.ɵɵtextInterpolate1(" ", item_r44.icon, "");
166
- i0.ɵɵadvance(1);
167
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(6, 10, i0.ɵɵpipeBind2(7, 13, ctx_r46.translateapplicationname(item_r44.menu), ctx_r46.softLabels), ctx_r46.searchText), i0.ɵɵsanitizeHtml);
168
- } }
169
- function MenuComponent_div_29_ng_container_5_div_1_Template(rf, ctx) { if (rf & 1) {
170
- i0.ɵɵelementStart(0, "div");
171
- i0.ɵɵtemplate(1, MenuComponent_div_29_ng_container_5_div_1_div_1_Template, 8, 17, "div", 16);
172
- i0.ɵɵelementEnd();
173
- } if (rf & 2) {
174
- const item_r44 = ctx.$implicit;
175
- const i_r45 = ctx.index;
176
- const ctx_r43 = i0.ɵɵnextContext(3);
177
- i0.ɵɵstyleProp("background-color", ctx_r43.selectedRowIndex == i_r45 ? ctx_r43.themeBaseColor : "white");
178
- i0.ɵɵadvance(1);
179
- i0.ɵɵproperty("ngIf", item_r44.type == "link" || item_r44.type == "applicationlink");
180
- } }
181
- function MenuComponent_div_29_ng_container_5_Template(rf, ctx) { if (rf & 1) {
182
- i0.ɵɵelementContainerStart(0);
183
- i0.ɵɵtemplate(1, MenuComponent_div_29_ng_container_5_div_1_Template, 2, 3, "div", 64);
184
- i0.ɵɵelementContainerEnd();
185
- } if (rf & 2) {
186
- const ctx_r42 = i0.ɵɵnextContext(2);
187
- i0.ɵɵadvance(1);
188
- i0.ɵɵproperty("ngForOf", ctx_r42.items);
189
- } }
190
- function MenuComponent_div_29_Template(rf, ctx) { if (rf & 1) {
191
- i0.ɵɵelementStart(0, "div", 61);
192
- i0.ɵɵelementStart(1, "div", 62);
193
- i0.ɵɵtext(2);
194
- i0.ɵɵpipe(3, "translate");
195
- i0.ɵɵelementEnd();
196
- i0.ɵɵelementStart(4, "div", 63);
197
- i0.ɵɵtemplate(5, MenuComponent_div_29_ng_container_5_Template, 2, 1, "ng-container", 16);
198
- i0.ɵɵelementEnd();
199
- i0.ɵɵelementEnd();
200
- } if (rf & 2) {
201
- const ctx_r10 = i0.ɵɵnextContext();
202
- i0.ɵɵadvance(2);
203
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "SHELL.APPLICATIONS"));
204
- i0.ɵɵadvance(3);
205
- i0.ɵɵproperty("ngIf", ctx_r10.items && ctx_r10.items.length > 0);
206
- } }
207
- function MenuComponent_div_30_div_1_fa_icon_4_Template(rf, ctx) { if (rf & 1) {
208
- const _r55 = i0.ɵɵgetCurrentView();
209
- i0.ɵɵelementStart(0, "fa-icon", 72);
210
- i0.ɵɵlistener("click", function MenuComponent_div_30_div_1_fa_icon_4_Template_fa_icon_click_0_listener() { i0.ɵɵrestoreView(_r55); const ctx_r54 = i0.ɵɵnextContext(3); ctx_r54.initializeWorkspaceForm(); return ctx_r54.openWorkspaceForm(); });
211
- i0.ɵɵpipe(1, "translate");
212
- i0.ɵɵelementEnd();
213
- } if (rf & 2) {
214
- i0.ɵɵnextContext(3);
215
- const _r18 = i0.ɵɵreference(38);
216
- i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind1(1, 2, "APP.ADDDASHBOARD"));
217
- i0.ɵɵproperty("satPopoverAnchorFor", _r18);
218
- } }
219
- function MenuComponent_div_30_div_1_ng_container_6_div_1_Template(rf, ctx) { if (rf & 1) {
220
- const _r61 = i0.ɵɵgetCurrentView();
221
- i0.ɵɵelementStart(0, "div", 74, 75);
222
- i0.ɵɵelementStart(2, "button", 76);
223
- i0.ɵɵlistener("mousedown", function MenuComponent_div_30_div_1_ng_container_6_div_1_Template_button_mousedown_2_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r61); const wc_r57 = restoredCtx.$implicit; const ctx_r60 = i0.ɵɵnextContext(4); return ctx_r60.selectMenu(wc_r57, $event); })("click", function MenuComponent_div_30_div_1_ng_container_6_div_1_Template_button_click_2_listener() { const restoredCtx = i0.ɵɵrestoreView(_r61); const wc_r57 = restoredCtx.$implicit; const ctx_r62 = i0.ɵɵnextContext(4); return ctx_r62.navigateToUrl(wc_r57.workspaceId); });
224
- i0.ɵɵelement(3, "span", 67);
225
- i0.ɵɵpipe(4, "highLightText");
226
- i0.ɵɵelementEnd();
227
- i0.ɵɵelementEnd();
228
- } if (rf & 2) {
229
- const wc_r57 = ctx.$implicit;
230
- const i_r58 = ctx.index;
231
- const ctx_r56 = i0.ɵɵnextContext(4);
232
- i0.ɵɵstyleProp("background-color", ctx_r56.ws == i_r58 ? ctx_r56.themeBaseColor : "white");
233
- i0.ɵɵadvance(2);
234
- i0.ɵɵpropertyInterpolate1("routerLink", "/dashboard-management/dashboard/", wc_r57.workspaceId, "");
235
- i0.ɵɵpropertyInterpolate("matTooltip", wc_r57.workspaceName);
236
- i0.ɵɵproperty("ngClass", ctx_r56.ws == i_r58 ? "color-text" : "color-text1");
237
- i0.ɵɵadvance(1);
238
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 6, wc_r57.workspaceName, ctx_r56.searchText), i0.ɵɵsanitizeHtml);
239
- } }
240
- function MenuComponent_div_30_div_1_ng_container_6_Template(rf, ctx) { if (rf & 1) {
241
- i0.ɵɵelementContainerStart(0);
242
- i0.ɵɵtemplate(1, MenuComponent_div_30_div_1_ng_container_6_div_1_Template, 5, 9, "div", 73);
243
- i0.ɵɵelementContainerEnd();
244
- } if (rf & 2) {
245
- const ctx_r53 = i0.ɵɵnextContext(3);
246
- i0.ɵɵadvance(1);
247
- i0.ɵɵproperty("ngForOf", ctx_r53.workspaces);
248
- } }
249
- function MenuComponent_div_30_div_1_Template(rf, ctx) { if (rf & 1) {
250
- i0.ɵɵelementStart(0, "div", 69);
251
- i0.ɵɵelementStart(1, "div", 62);
252
- i0.ɵɵtext(2);
253
- i0.ɵɵpipe(3, "translate");
254
- i0.ɵɵtemplate(4, MenuComponent_div_30_div_1_fa_icon_4_Template, 2, 4, "fa-icon", 70);
255
- i0.ɵɵelementEnd();
256
- i0.ɵɵelementStart(5, "div", 71);
257
- i0.ɵɵtemplate(6, MenuComponent_div_30_div_1_ng_container_6_Template, 2, 1, "ng-container", 16);
258
- i0.ɵɵelementEnd();
259
- i0.ɵɵelementEnd();
260
- } if (rf & 2) {
261
- const ctx_r51 = i0.ɵɵnextContext(2);
262
- i0.ɵɵadvance(2);
263
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(3, 3, "SHELL.DASHBOARDS"), " ");
264
- i0.ɵɵadvance(2);
265
- i0.ɵɵproperty("ngIf", ctx_r51.canAccess_feature_AddDashboard);
266
- i0.ɵɵadvance(2);
267
- i0.ɵɵproperty("ngIf", ctx_r51.workspaces && ctx_r51.workspaces.length > 0);
268
- } }
269
- function MenuComponent_div_30_Template(rf, ctx) { if (rf & 1) {
270
- i0.ɵɵelementStart(0, "div", 68);
271
- i0.ɵɵtemplate(1, MenuComponent_div_30_div_1_Template, 7, 5, "div", 27);
272
- i0.ɵɵelementEnd();
273
- } if (rf & 2) {
274
- const ctx_r11 = i0.ɵɵnextContext();
275
- i0.ɵɵadvance(1);
276
- i0.ɵɵproperty("ngIf", ctx_r11.workspaces && ctx_r11.workspaces.length > 0);
277
- } }
278
- function MenuComponent_div_31_div_5_Template(rf, ctx) { if (rf & 1) {
279
- const _r67 = i0.ɵɵgetCurrentView();
280
- i0.ɵɵelementStart(0, "div");
281
- i0.ɵɵelementStart(1, "button", 79);
282
- i0.ɵɵlistener("mousedown", function MenuComponent_div_31_div_5_Template_button_mousedown_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r67); const widget_r64 = restoredCtx.$implicit; const ctx_r66 = i0.ɵɵnextContext(2); return ctx_r66.OnSelect(widget_r64, $event); });
283
- i0.ɵɵpipe(2, "softLabelsPipe");
284
- i0.ɵɵelement(3, "span", 67);
285
- i0.ɵɵpipe(4, "highLightText");
286
- i0.ɵɵpipe(5, "softLabelsPipe");
287
- i0.ɵɵelementEnd();
288
- i0.ɵɵelementEnd();
289
- } if (rf & 2) {
290
- const widget_r64 = ctx.$implicit;
291
- const i_r65 = ctx.index;
292
- const ctx_r63 = i0.ɵɵnextContext(2);
293
- i0.ɵɵstyleProp("background-color", ctx_r63.wd == i_r65 ? ctx_r63.themeBaseColor : "white");
294
- i0.ɵɵadvance(1);
295
- i0.ɵɵpropertyInterpolate1("routerLink", "/dashboard-management/widgets/", widget_r64.widgetId, "");
296
- i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 7, widget_r64.widgetName, ctx_r63.softLabels));
297
- i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(16, _c10))("ngClass", ctx_r63.wd == i_r65 ? "color-text" : "color-text1");
298
- i0.ɵɵadvance(2);
299
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 10, i0.ɵɵpipeBind2(5, 13, widget_r64.widgetName, ctx_r63.softLabels), ctx_r63.searchText), i0.ɵɵsanitizeHtml);
300
- } }
301
- function MenuComponent_div_31_Template(rf, ctx) { if (rf & 1) {
302
- i0.ɵɵelementStart(0, "div", 77);
303
- i0.ɵɵelementStart(1, "div", 62);
304
- i0.ɵɵtext(2);
305
- i0.ɵɵpipe(3, "translate");
306
- i0.ɵɵelementEnd();
307
- i0.ɵɵelementStart(4, "div", 78);
308
- i0.ɵɵtemplate(5, MenuComponent_div_31_div_5_Template, 6, 17, "div", 64);
309
- i0.ɵɵelementEnd();
310
- i0.ɵɵelementEnd();
311
- } if (rf & 2) {
312
- const ctx_r12 = i0.ɵɵnextContext();
313
- i0.ɵɵadvance(2);
314
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "SHELL.FAVOURITEAPPS"));
315
- i0.ɵɵadvance(3);
316
- i0.ɵɵproperty("ngForOf", ctx_r12.widgets);
317
- } }
318
- function MenuComponent_div_32_div_4_Template(rf, ctx) { if (rf & 1) {
319
- const _r72 = i0.ɵɵgetCurrentView();
320
- i0.ɵɵelementStart(0, "div");
321
- i0.ɵɵelementStart(1, "button", 81);
322
- i0.ɵɵlistener("mousedown", function MenuComponent_div_32_div_4_Template_button_mousedown_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r72); const project_r69 = restoredCtx.$implicit; const ctx_r71 = i0.ɵɵnextContext(2); return ctx_r71.onProjectSelect(project_r69, $event); });
323
- i0.ɵɵpipe(2, "softLabelsPipe");
324
- i0.ɵɵelement(3, "span", 67);
325
- i0.ɵɵpipe(4, "highLightText");
326
- i0.ɵɵpipe(5, "softLabelsPipe");
327
- i0.ɵɵelementEnd();
328
- i0.ɵɵelementEnd();
329
- } if (rf & 2) {
330
- const project_r69 = ctx.$implicit;
331
- const i_r70 = ctx.index;
332
- const ctx_r68 = i0.ɵɵnextContext(2);
333
- i0.ɵɵstyleProp("background-color", ctx_r68.projectIndex == i_r70 ? ctx_r68.themeBaseColor : "white");
334
- i0.ɵɵadvance(1);
335
- i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 6, project_r69.itemName, ctx_r68.softLabels));
336
- i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(15, _c10))("ngClass", ctx_r68.projectIndex == i_r70 ? "color-text" : "color-text1");
337
- i0.ɵɵadvance(2);
338
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 9, i0.ɵɵpipeBind2(5, 12, project_r69.itemName, ctx_r68.softLabels), ctx_r68.searchText), i0.ɵɵsanitizeHtml);
339
- } }
340
- function MenuComponent_div_32_Template(rf, ctx) { if (rf & 1) {
341
- i0.ɵɵelementStart(0, "div", 69);
342
- i0.ɵɵelementStart(1, "div", 62);
343
- i0.ɵɵtext(2, "Projects");
344
- i0.ɵɵelementEnd();
345
- i0.ɵɵelementStart(3, "div", 80);
346
- i0.ɵɵtemplate(4, MenuComponent_div_32_div_4_Template, 6, 16, "div", 64);
347
- i0.ɵɵelementEnd();
348
- i0.ɵɵelementEnd();
349
- } if (rf & 2) {
350
- const ctx_r13 = i0.ɵɵnextContext();
351
- i0.ɵɵadvance(4);
352
- i0.ɵɵproperty("ngForOf", ctx_r13.projectList);
353
- } }
354
- function MenuComponent_div_33_div_1_Template(rf, ctx) { if (rf & 1) {
355
- i0.ɵɵelementStart(0, "div", 62);
356
- i0.ɵɵtext(1);
357
- i0.ɵɵpipe(2, "translate");
358
- i0.ɵɵelementEnd();
359
- } if (rf & 2) {
360
- i0.ɵɵadvance(1);
361
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "SHELL.WIBUG"));
362
- } }
363
- function MenuComponent_div_33_div_2_Template(rf, ctx) { if (rf & 1) {
364
- i0.ɵɵelementStart(0, "div", 62);
365
- i0.ɵɵtext(1);
366
- i0.ɵɵpipe(2, "translate");
367
- i0.ɵɵelementEnd();
368
- } if (rf & 2) {
369
- i0.ɵɵadvance(1);
370
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "SHELL.WI"));
371
- } }
372
- function MenuComponent_div_33_div_4_Template(rf, ctx) { if (rf & 1) {
373
- const _r79 = i0.ɵɵgetCurrentView();
374
- i0.ɵɵelementStart(0, "div");
375
- i0.ɵɵelementStart(1, "button", 81);
376
- i0.ɵɵlistener("mousedown", function MenuComponent_div_33_div_4_Template_button_mousedown_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r79); const userStory_r76 = restoredCtx.$implicit; const ctx_r78 = i0.ɵɵnextContext(2); return ctx_r78.OnUserStorySelect(userStory_r76, $event); });
377
- i0.ɵɵpipe(2, "softLabelsPipe");
378
- i0.ɵɵelement(3, "span", 67);
379
- i0.ɵɵpipe(4, "highLightText");
380
- i0.ɵɵpipe(5, "softLabelsPipe");
381
- i0.ɵɵelementEnd();
382
- i0.ɵɵelementEnd();
383
- } if (rf & 2) {
384
- const userStory_r76 = ctx.$implicit;
385
- const i_r77 = ctx.index;
386
- const ctx_r75 = i0.ɵɵnextContext(2);
387
- i0.ɵɵstyleProp("background-color", ctx_r75.users == i_r77 ? ctx_r75.themeBaseColor : "white");
388
- i0.ɵɵadvance(1);
389
- i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 6, userStory_r76.itemName, ctx_r75.softLabels));
390
- i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(15, _c10))("ngClass", ctx_r75.users == i_r77 ? "color-text" : "color-text1");
391
- i0.ɵɵadvance(2);
392
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 9, i0.ɵɵpipeBind2(5, 12, userStory_r76.itemName, ctx_r75.softLabels), ctx_r75.searchText), i0.ɵɵsanitizeHtml);
393
- } }
394
- function MenuComponent_div_33_Template(rf, ctx) { if (rf & 1) {
395
- i0.ɵɵelementStart(0, "div", 69);
396
- i0.ɵɵtemplate(1, MenuComponent_div_33_div_1_Template, 3, 3, "div", 82);
397
- i0.ɵɵtemplate(2, MenuComponent_div_33_div_2_Template, 3, 3, "div", 82);
398
- i0.ɵɵelementStart(3, "div", 83);
399
- i0.ɵɵtemplate(4, MenuComponent_div_33_div_4_Template, 6, 16, "div", 64);
400
- i0.ɵɵelementEnd();
401
- i0.ɵɵelementEnd();
402
- } if (rf & 2) {
403
- const ctx_r14 = i0.ɵɵnextContext();
404
- i0.ɵɵadvance(1);
405
- i0.ɵɵproperty("ngIf", ctx_r14.isEnableBugBoard);
406
- i0.ɵɵadvance(1);
407
- i0.ɵɵproperty("ngIf", !ctx_r14.isEnableBugBoard);
408
- i0.ɵɵadvance(2);
409
- i0.ɵɵproperty("ngForOf", ctx_r14.userStorySearchList);
410
- } }
411
- function MenuComponent_div_34_div_5_Template(rf, ctx) { if (rf & 1) {
412
- const _r84 = i0.ɵɵgetCurrentView();
413
- i0.ɵɵelementStart(0, "div");
414
- i0.ɵɵelementStart(1, "button", 81);
415
- i0.ɵɵlistener("mousedown", function MenuComponent_div_34_div_5_Template_button_mousedown_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r84); const goal_r81 = restoredCtx.$implicit; const ctx_r83 = i0.ɵɵnextContext(2); return ctx_r83.OnGoalSelect(goal_r81, $event); });
416
- i0.ɵɵpipe(2, "softLabelsPipe");
417
- i0.ɵɵelement(3, "span", 67);
418
- i0.ɵɵpipe(4, "highLightText");
419
- i0.ɵɵpipe(5, "softLabelsPipe");
420
- i0.ɵɵelementEnd();
421
- i0.ɵɵelementEnd();
422
- } if (rf & 2) {
423
- const goal_r81 = ctx.$implicit;
424
- const i_r82 = ctx.index;
425
- const ctx_r80 = i0.ɵɵnextContext(2);
426
- i0.ɵɵstyleProp("background-color", ctx_r80.goalIndex == i_r82 ? ctx_r80.themeBaseColor : "white");
427
- i0.ɵɵadvance(1);
428
- i0.ɵɵpropertyInterpolate("matTooltip", i0.ɵɵpipeBind2(2, 6, goal_r81.itemName, ctx_r80.softLabels));
429
- i0.ɵɵproperty("routerLinkActiveOptions", i0.ɵɵpureFunction0(15, _c10))("ngClass", ctx_r80.goalIndex == i_r82 ? "color-text" : "color-text1");
430
- i0.ɵɵadvance(2);
431
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(4, 9, i0.ɵɵpipeBind2(5, 12, goal_r81.itemName, ctx_r80.softLabels), ctx_r80.searchText), i0.ɵɵsanitizeHtml);
432
- } }
433
- function MenuComponent_div_34_Template(rf, ctx) { if (rf & 1) {
434
- i0.ɵɵelementStart(0, "div", 69);
435
- i0.ɵɵelementStart(1, "div", 62);
436
- i0.ɵɵtext(2);
437
- i0.ɵɵpipe(3, "translate");
438
- i0.ɵɵelementEnd();
439
- i0.ɵɵelementStart(4, "div", 84);
440
- i0.ɵɵtemplate(5, MenuComponent_div_34_div_5_Template, 6, 16, "div", 64);
441
- i0.ɵɵelementEnd();
442
- i0.ɵɵelementEnd();
443
- } if (rf & 2) {
444
- const ctx_r15 = i0.ɵɵnextContext();
445
- i0.ɵɵadvance(2);
446
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "SHELL.GOALSPRINT"));
447
- i0.ɵɵadvance(3);
448
- i0.ɵɵproperty("ngForOf", ctx_r15.goalSearchList);
449
- } }
450
- function MenuComponent_div_35_div_4_Template(rf, ctx) { if (rf & 1) {
451
- const _r90 = i0.ɵɵgetCurrentView();
452
- i0.ɵɵelementStart(0, "div", 87, 75);
453
- i0.ɵɵelementStart(2, "button", 88);
454
- i0.ɵɵlistener("mousedown", function MenuComponent_div_35_div_4_Template_button_mousedown_2_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r90); const employee_r86 = restoredCtx.$implicit; const ctx_r89 = i0.ɵɵnextContext(2); return ctx_r89.selectEmployee(employee_r86, $event); });
455
- i0.ɵɵelementStart(3, "div", 89);
456
- i0.ɵɵelementStart(4, "app-avatar", 90);
457
- i0.ɵɵlistener("click", function MenuComponent_div_35_div_4_Template_app_avatar_click_4_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r90); const employee_r86 = restoredCtx.$implicit; const ctx_r91 = i0.ɵɵnextContext(2); ctx_r91.profilePage(employee_r86.userId); return $event.stopPropagation(); });
458
- i0.ɵɵpipe(5, "removeSpecialCharacters");
459
- i0.ɵɵpipe(6, "fetchSizedAndCachedImage");
460
- i0.ɵɵelementEnd();
461
- i0.ɵɵelementStart(7, "div", 91);
462
- i0.ɵɵelement(8, "span", 67);
463
- i0.ɵɵpipe(9, "highLightText");
464
- i0.ɵɵelementEnd();
465
- i0.ɵɵelementEnd();
466
- i0.ɵɵelementEnd();
467
- i0.ɵɵelementEnd();
468
- } if (rf & 2) {
469
- const employee_r86 = ctx.$implicit;
470
- const i_r87 = ctx.index;
471
- const ctx_r85 = i0.ɵɵnextContext(2);
472
- i0.ɵɵstyleProp("background-color", ctx_r85.selectedEmployeeIndex == i_r87 ? ctx_r85.themeBaseColor : "white");
473
- i0.ɵɵadvance(2);
474
- i0.ɵɵpropertyInterpolate1("routerLink", "/dashboard/profile/", employee_r86.itemId, "/overview");
475
- i0.ɵɵpropertyInterpolate("matTooltip", employee_r86.itemName);
476
- i0.ɵɵproperty("ngClass", ctx_r85.selectedEmployeeIndex == i_r87 ? "color-text" : "color-text1");
477
- i0.ɵɵadvance(2);
478
- i0.ɵɵpropertyInterpolate("matTooltip", employee_r86.itemName);
479
- i0.ɵɵproperty("name", i0.ɵɵpipeBind1(5, 10, employee_r86.itemName))("src", i0.ɵɵpipeBind3(6, 12, employee_r86.profileImage, "20", ""))("isRound", true);
480
- i0.ɵɵadvance(4);
481
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(9, 16, employee_r86.itemName, ctx_r85.searchText), i0.ɵɵsanitizeHtml);
482
- } }
483
- function MenuComponent_div_35_Template(rf, ctx) { if (rf & 1) {
484
- i0.ɵɵelementStart(0, "div", 77);
485
- i0.ɵɵelementStart(1, "div", 62);
486
- i0.ɵɵtext(2, "Employees");
487
- i0.ɵɵelementEnd();
488
- i0.ɵɵelementStart(3, "div", 85);
489
- i0.ɵɵtemplate(4, MenuComponent_div_35_div_4_Template, 10, 19, "div", 86);
490
- i0.ɵɵelementEnd();
491
- i0.ɵɵelementEnd();
492
- } if (rf & 2) {
493
- const ctx_r16 = i0.ɵɵnextContext();
494
- i0.ɵɵadvance(4);
495
- i0.ɵɵproperty("ngForOf", ctx_r16.employeeList);
496
- } }
497
- function MenuComponent_div_36_div_5_Template(rf, ctx) { if (rf & 1) {
498
- const _r96 = i0.ɵɵgetCurrentView();
499
- i0.ɵɵelementStart(0, "div");
500
- i0.ɵɵelementStart(1, "button", 93);
501
- i0.ɵɵlistener("mousedown", function MenuComponent_div_36_div_5_Template_button_mousedown_1_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r96); const search_r93 = restoredCtx.$implicit; const ctx_r95 = i0.ɵɵnextContext(2); ctx_r95.searchText = search_r93.recentSearch; return ctx_r95.SearchRecentItem(search_r93, $event); });
502
- i0.ɵɵpipe(2, "softLabelsPipe");
503
- i0.ɵɵpipe(3, "timeago");
504
- i0.ɵɵelement(4, "span", 67);
505
- i0.ɵɵpipe(5, "highLightText");
506
- i0.ɵɵpipe(6, "softLabelsPipe");
507
- i0.ɵɵtext(7);
508
- i0.ɵɵpipe(8, "timeago");
509
- i0.ɵɵelementEnd();
510
- i0.ɵɵelementEnd();
511
- } if (rf & 2) {
512
- const search_r93 = ctx.$implicit;
513
- const i_r94 = ctx.index;
514
- const ctx_r92 = i0.ɵɵnextContext(2);
515
- i0.ɵɵstyleProp("background-color", ctx_r92.rs == i_r94 ? ctx_r92.themeBaseColor : "white");
516
- i0.ɵɵadvance(1);
517
- i0.ɵɵpropertyInterpolate2("matTooltip", "", i0.ɵɵpipeBind2(2, 7, search_r93.recentSearch, ctx_r92.softLabels), " \n (", i0.ɵɵpipeBind1(3, 10, ctx_r92.convertToLocalTime(search_r93.createdDateTime)), ")");
518
- i0.ɵɵproperty("ngClass", ctx_r92.rs == i_r94 ? "color-text" : "color-text1");
519
- i0.ɵɵadvance(3);
520
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind2(5, 12, i0.ɵɵpipeBind2(6, 15, search_r93.recentSearch, ctx_r92.softLabels), ctx_r92.searchText), i0.ɵɵsanitizeHtml);
521
- i0.ɵɵadvance(3);
522
- i0.ɵɵtextInterpolate1(" (", i0.ɵɵpipeBind1(8, 18, ctx_r92.convertToLocalTime(search_r93.createdDateTime)), ") ");
523
- } }
524
- function MenuComponent_div_36_Template(rf, ctx) { if (rf & 1) {
525
- i0.ɵɵelementStart(0, "div", 77);
526
- i0.ɵɵelementStart(1, "div", 62);
527
- i0.ɵɵtext(2);
528
- i0.ɵɵpipe(3, "translate");
529
- i0.ɵɵelementEnd();
530
- i0.ɵɵelementStart(4, "div", 92);
531
- i0.ɵɵtemplate(5, MenuComponent_div_36_div_5_Template, 9, 20, "div", 64);
532
- i0.ɵɵpipe(6, "slice");
533
- i0.ɵɵelementEnd();
534
- i0.ɵɵelementEnd();
535
- } if (rf & 2) {
536
- const ctx_r17 = i0.ɵɵnextContext();
537
- i0.ɵɵadvance(2);
538
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "SHELL.RECENTSEARCHS"));
539
- i0.ɵɵadvance(3);
540
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind3(6, 4, ctx_r17.recentSearches, 0, 9));
541
- } }
542
- function MenuComponent_mat_error_50_Template(rf, ctx) { if (rf & 1) {
108
+ function MenuComponent_mat_error_20_Template(rf, ctx) { if (rf & 1) {
543
109
  i0.ɵɵelementStart(0, "mat-error");
544
110
  i0.ɵɵtext(1);
545
111
  i0.ɵɵpipe(2, "translate");
@@ -548,7 +114,7 @@ function MenuComponent_mat_error_50_Template(rf, ctx) { if (rf & 1) {
548
114
  i0.ɵɵadvance(1);
549
115
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "APP.DASHBOARDNAMEREQUIRED"), " ");
550
116
  } }
551
- function MenuComponent_mat_error_51_Template(rf, ctx) { if (rf & 1) {
117
+ function MenuComponent_mat_error_21_Template(rf, ctx) { if (rf & 1) {
552
118
  i0.ɵɵelementStart(0, "mat-error");
553
119
  i0.ɵɵtext(1);
554
120
  i0.ɵɵpipe(2, "translate");
@@ -557,7 +123,7 @@ function MenuComponent_mat_error_51_Template(rf, ctx) { if (rf & 1) {
557
123
  i0.ɵɵadvance(1);
558
124
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "APP.DASHBOARDNAMELENGTHEXCEED"), " ");
559
125
  } }
560
- function MenuComponent_mat_error_55_Template(rf, ctx) { if (rf & 1) {
126
+ function MenuComponent_mat_error_25_Template(rf, ctx) { if (rf & 1) {
561
127
  i0.ɵɵelementStart(0, "mat-error");
562
128
  i0.ɵɵtext(1);
563
129
  i0.ɵɵpipe(2, "translate");
@@ -566,19 +132,19 @@ function MenuComponent_mat_error_55_Template(rf, ctx) { if (rf & 1) {
566
132
  i0.ɵɵadvance(1);
567
133
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "APP.CUSTOMAPPDESCRIPTIONMAXLENGTHERROR"), " ");
568
134
  } }
569
- function MenuComponent_mat_option_63_Template(rf, ctx) { if (rf & 1) {
570
- const _r100 = i0.ɵɵgetCurrentView();
571
- i0.ɵɵelementStart(0, "mat-option", 40, 41);
572
- i0.ɵɵlistener("click", function MenuComponent_mat_option_63_Template_mat_option_click_0_listener() { i0.ɵɵrestoreView(_r100); const _r98 = i0.ɵɵreference(1); const ctx_r99 = i0.ɵɵnextContext(); return ctx_r99.toggleRolesPerOne(_r98.value); });
135
+ function MenuComponent_mat_option_33_Template(rf, ctx) { if (rf & 1) {
136
+ const _r26 = i0.ɵɵgetCurrentView();
137
+ i0.ɵɵelementStart(0, "mat-option", 19, 20);
138
+ i0.ɵɵlistener("click", function MenuComponent_mat_option_33_Template_mat_option_click_0_listener() { i0.ɵɵrestoreView(_r26); const _r24 = i0.ɵɵreference(1); const ctx_r25 = i0.ɵɵnextContext(); return ctx_r25.toggleRolesPerOne(_r24.value); });
573
139
  i0.ɵɵtext(2);
574
140
  i0.ɵɵelementEnd();
575
141
  } if (rf & 2) {
576
- const roles_r97 = ctx.$implicit;
577
- i0.ɵɵproperty("value", roles_r97.roleId);
142
+ const roles_r23 = ctx.$implicit;
143
+ i0.ɵɵproperty("value", roles_r23.roleId);
578
144
  i0.ɵɵadvance(2);
579
- i0.ɵɵtextInterpolate1(" ", roles_r97.roleName, " ");
145
+ i0.ɵɵtextInterpolate1(" ", roles_r23.roleName, " ");
580
146
  } }
581
- function MenuComponent_mat_error_64_Template(rf, ctx) { if (rf & 1) {
147
+ function MenuComponent_mat_error_34_Template(rf, ctx) { if (rf & 1) {
582
148
  i0.ɵɵelementStart(0, "mat-error");
583
149
  i0.ɵɵtext(1);
584
150
  i0.ɵɵpipe(2, "translate");
@@ -587,39 +153,33 @@ function MenuComponent_mat_error_64_Template(rf, ctx) { if (rf & 1) {
587
153
  i0.ɵɵadvance(1);
588
154
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "APP.SELECTANYROLE"), " ");
589
155
  } }
590
- function MenuComponent_mat_option_72_Template(rf, ctx) { if (rf & 1) {
591
- const _r104 = i0.ɵɵgetCurrentView();
592
- i0.ɵɵelementStart(0, "mat-option", 40, 44);
593
- i0.ɵɵlistener("click", function MenuComponent_mat_option_72_Template_mat_option_click_0_listener() { i0.ɵɵrestoreView(_r104); const ctx_r103 = i0.ɵɵnextContext(); return ctx_r103.toggleEditRolesPerOne(); });
156
+ function MenuComponent_mat_option_42_Template(rf, ctx) { if (rf & 1) {
157
+ const _r30 = i0.ɵɵgetCurrentView();
158
+ i0.ɵɵelementStart(0, "mat-option", 19, 23);
159
+ i0.ɵɵlistener("click", function MenuComponent_mat_option_42_Template_mat_option_click_0_listener() { i0.ɵɵrestoreView(_r30); const ctx_r29 = i0.ɵɵnextContext(); return ctx_r29.toggleEditRolesPerOne(); });
594
160
  i0.ɵɵtext(2);
595
161
  i0.ɵɵelementEnd();
596
162
  } if (rf & 2) {
597
- const role_r101 = ctx.$implicit;
598
- i0.ɵɵproperty("value", role_r101.roleId);
163
+ const role_r27 = ctx.$implicit;
164
+ i0.ɵɵproperty("value", role_r27.roleId);
599
165
  i0.ɵɵadvance(2);
600
- i0.ɵɵtextInterpolate1(" ", role_r101.roleName, " ");
166
+ i0.ɵɵtextInterpolate1(" ", role_r27.roleName, " ");
601
167
  } }
602
- function MenuComponent_mat_option_80_Template(rf, ctx) { if (rf & 1) {
603
- const _r108 = i0.ɵɵgetCurrentView();
604
- i0.ɵɵelementStart(0, "mat-option", 40, 46);
605
- i0.ɵɵlistener("click", function MenuComponent_mat_option_80_Template_mat_option_click_0_listener() { i0.ɵɵrestoreView(_r108); const ctx_r107 = i0.ɵɵnextContext(); return ctx_r107.toggleDeleteRolesPerOne(); });
168
+ function MenuComponent_mat_option_50_Template(rf, ctx) { if (rf & 1) {
169
+ const _r34 = i0.ɵɵgetCurrentView();
170
+ i0.ɵɵelementStart(0, "mat-option", 19, 25);
171
+ i0.ɵɵlistener("click", function MenuComponent_mat_option_50_Template_mat_option_click_0_listener() { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(); return ctx_r33.toggleDeleteRolesPerOne(); });
606
172
  i0.ɵɵtext(2);
607
173
  i0.ɵɵelementEnd();
608
174
  } if (rf & 2) {
609
- const role_r105 = ctx.$implicit;
610
- i0.ɵɵproperty("value", role_r105.roleId);
175
+ const role_r31 = ctx.$implicit;
176
+ i0.ɵɵproperty("value", role_r31.roleId);
611
177
  i0.ɵɵadvance(2);
612
- i0.ɵɵtextInterpolate1(" ", role_r105.roleName, " ");
613
- } }
614
- function MenuComponent_mat_progress_bar_83_Template(rf, ctx) { if (rf & 1) {
615
- i0.ɵɵelement(0, "mat-progress-bar", 60);
178
+ i0.ɵɵtextInterpolate1(" ", role_r31.roleName, " ");
616
179
  } }
617
- function MenuComponent_mat_spinner_127_Template(rf, ctx) { if (rf & 1) {
618
- i0.ɵɵelement(0, "mat-spinner", 94);
619
- } if (rf & 2) {
620
- i0.ɵɵproperty("diameter", 100);
180
+ function MenuComponent_mat_progress_bar_53_Template(rf, ctx) { if (rf & 1) {
181
+ i0.ɵɵelement(0, "mat-progress-bar", 34);
621
182
  } }
622
- const _c11 = function (a0, a1) { return { "d-block": a0, "d-none": a1 }; };
623
183
  /** @dynamic */
624
184
  export class MenuComponent extends CustomAppBaseComponent {
625
185
  constructor(store, cookieService, routes, toastr, translateService, authenticationService, route, dialog, rss, location, themeService, actionUpdates$, cdRef, window, googleAnalyticsService, commonService) {
@@ -697,7 +257,10 @@ export class MenuComponent extends CustomAppBaseComponent {
697
257
  var companySettingsModel = JSON.parse(localStorage.getItem(LocalStorageProperties.CompanySettings));
698
258
  this.companyMainLogo = companySettingsModel.find(x => x.key.toLowerCase() == "mainlogo") != null ? companySettingsModel.find(x => x.key.toLowerCase() == "mainlogo").value : this.companyMainLogo;
699
259
  this.companyMiniLogo = companySettingsModel.find(x => x.key.toLowerCase() == "minilogo") != null ? companySettingsModel.find(x => x.key.toLowerCase() == "minilogo").value : this.companyMiniLogo;
700
- document.getElementById("shortcut-fav-icon").setAttribute("href", this.themeModel.companyMiniLogo);
260
+ const favicon = document.getElementById("shortcut-fav-icon");
261
+ if (favicon) {
262
+ favicon.setAttribute("href", this.themeModel.companyMiniLogo);
263
+ }
701
264
  this.themeBaseColor = localStorage.getItem('themeColor');
702
265
  // // this.themeModel = this.cookieService.check('CompanyTheme') ? JSON.parse(this.cookieService.get("CompanyTheme")) : null;
703
266
  // // if (this.themeModel && this.themeModel.companyThemeId !== "00000000-0000-0000-0000-000000000000") {
@@ -3003,284 +2566,145 @@ MenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuComponent
3003
2566
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.openMenuPopOver = _t);
3004
2567
  } }, hostBindings: function MenuComponent_HostBindings(rf, ctx) { if (rf & 1) {
3005
2568
  i0.ɵɵlistener("keydown.control.q", function MenuComponent_keydown_control_q_HostBindingHandler() { return ctx.keyOpenEvent(); }, false, i0.ɵɵresolveDocument)("keydown.control.m", function MenuComponent_keydown_control_m_HostBindingHandler() { return ctx.keyCloseEvent(); }, false, i0.ɵɵresolveDocument)("keydown.control.b", function MenuComponent_keydown_control_b_HostBindingHandler() { return ctx.remoteSearchByText(); }, false, i0.ɵɵresolveDocument)("keydown.control.y", function MenuComponent_keydown_control_y_HostBindingHandler() { return ctx.remoteSearchById(); }, false, i0.ɵɵresolveDocument);
3006
- } }, inputs: { reloadAll: ["reload", "reloadAll"] }, outputs: { isOpened: "isOpened", openNewDashboard: "openNewDashboard" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 128, vars: 93, consts: [["type", "submit", "mat-icon-button", "", "fxHide.gt-xs", "", "fxShow", "", 1, "visibles", 3, "matMenuTriggerFor"], [1, "newMenu"], ["fxFlex", "", "fxHide.gt-xs", "", "fxShow", "", 1, "newLogo", "default-bg", "top-logo-bg", "newminilogo", "zoom-image-hover"], ["alt", "", "id", "mini-logo-topbar", 2, "width", "30px", "height", "30px", 3, "src", "click"], ["fxFlex", "", "fxHide", "", "fxShow.gt-xs", "", 1, "newLogo", "top-logo-bg", "apps-button", "zoom-image-hover", 2, "left", "0px"], ["id", "main-logo-topbar", 1, "img-height-main-logo-topbar", 2, "cursor", "pointer", "left", "20px", "left", "20px", "position", "relative", 3, "src", "click"], ["yPosition", "below", 1, "filter-panel", 2, "height", "auto", 3, "click"], ["menus", "matMenu"], [4, "ngFor", "ngForOf"], ["style", "position: relative;\nleft: 90%", "class", "store-icom mat-icon-button", 3, "ngClass", 4, "ngIf"], [1, "SearchBox", "dropdown", 2, "position", "absolute !important"], ["class", "mat-color-accent input-group-addon", 4, "ngIf"], ["type", "text", "autocomplete", "off", 1, "SearchBox-input", "dropbtn", 3, "placeholder", "ngModel", "ngModelChange", "input", "click", "focus", "blur", "keydown.enter", "keydown.arrowdown", "keydown.arrowup", "keydown.arrowleft", "keydown.arrowright"], ["element", ""], [1, "SearchBox-button"], [1, "close_icon_search"], [4, "ngIf"], ["class", "icon-button mr-05", "aria-hidden", "false", "style", "cursor:pointer", 3, "click", 4, "ngIf"], ["color", "primary", 1, "SearchBox-icon", "icon-color", "mt-lg-n2", "mr-05", "info-class", 3, "satPopoverAnchorFor", "click"], ["infoPopOver", "satPopoverAnchor"], ["color", "primary", 1, "SearchBox-icon", "icon-color", "mt-lg-n2"], [1, "dropdown-content", 3, "ngClass"], ["color", "primary", "mode", "indeterminate", 4, "ngIf"], [1, "row", "rowselect"], ["class", "column columnselect-next pl-05", 4, "ngIf"], ["class", "column pl-05", 4, "ngIf"], ["class", "column columnselect-apps ml-0", 4, "ngIf"], ["class", "columnselect-next ml-0", 4, "ngIf"], ["backdropClass", "backdrop-color", "hasBackdrop", "", "verticalAlign", "below", "horizontalAlign", "end", 3, "interactiveClose"], ["addWorkspace", ""], [1, "filter-data", "p-0"], [1, "text-center"], [1, "card-title-text", "mat-bg-primary", "p-05", "mb-1"], ["novalidate", "", 3, "formGroup", "submit"], [1, "card-content"], [1, "full-width"], ["matInput", "", "formControlName", "workspaceName", 3, "placeholder"], ["matInput", "", "formControlName", "description", "rows", "2", 3, "placeholder"], [1, "full-width", 3, "click"], ["formControlName", "selectedRoles", "multiple", "", "required", "", 3, "compareWith", "placeholder"], [3, "value", "click"], ["allSelected", ""], [3, "value", "click", 4, "ngFor", "ngForOf"], ["formControlName", "editRoleIds", "multiple", "", 3, "compareWith", "placeholder"], ["allEditSelected", ""], ["formControlName", "deleteRoleIds", "multiple", "", 3, "compareWith", "placeholder"], ["allDeleteSelected", ""], ["mat-button", "", "mat-raised-button", "", "color", "primary", "type", "button", 1, "mr-1", 3, "disabled", "click"], ["icon", "plus", 1, "mr-05"], ["mat-button", "", "mat-raised-button", "", "type", "button", 3, "click"], ["icon", "times", 1, "mr-05"], ["hasBackdrop", "", "verticalAlign", "above", 3, "interactiveClose"], ["p", ""], [1, "tooltip-wrapper"], ["class", "spinner-class", 3, "diameter", 4, "ngIf"], ["mat-menu-item", "", "routerLinkActive", "item-active", 3, "routerLink", "click"], [1, "store-icom", "mat-icon-button", 2, "position", "relative", "left", "90%", 3, "ngClass"], ["icon", "store", "matTooltipClass", "tooltipClass-mat", 1, "mat-color-accent", "cursor-pointer", "theme-navbar-icon-color", 2, "font-size", "20px !important", 3, "matTooltip", "click"], [1, "mat-color-accent", "input-group-addon"], ["aria-hidden", "false", 1, "icon-button", "mr-05", 2, "cursor", "pointer", 3, "click"], ["color", "primary", "mode", "indeterminate"], [1, "column", "columnselect-next", "pl-05"], [1, "in-header"], ["id", "style-1", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], [3, "background-color", 4, "ngFor", "ngForOf"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "routerLink", "ngClass", "routerLinkActiveOptions", "matTooltip", "mousedown"], [1, "icon-color", 3, "ngClass"], [3, "innerHTML"], [1, "column", "pl-05"], [1, "columnselect-next", "ml-0"], ["icon", "plus-square", "class", "mat-color-accent cursor-pointer", 3, "matTooltip", "satPopoverAnchorFor", "click", 4, "ngIf"], ["id", "style-2", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["icon", "plus-square", 1, "mat-color-accent", "cursor-pointer", 3, "matTooltip", "satPopoverAnchorFor", "click"], ["class", "scroll", 3, "background-color", 4, "ngFor", "ngForOf"], [1, "scroll"], ["workspaceElement", ""], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "ngClass", "routerLink", "matTooltip", "mousedown", "click"], [1, "column", "columnselect-apps", "ml-0"], ["id", "style-3", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "routerLinkActiveOptions", "routerLink", "ngClass", "matTooltip", "mousedown"], ["id", "style-7", 1, "scroll", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "routerLinkActiveOptions", "ngClass", "matTooltip", "mousedown"], ["class", "in-header", 4, "ngIf"], ["id", "style-5", 1, "scroll", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["id", "style-6", 1, "scroll", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["id", "style-4", 2, "background-color", "white !important", "height", "445px !important", "overflow", "auto"], ["style", "background-color: white;", 3, "background-color", 4, "ngFor", "ngForOf"], [2, "background-color", "white"], ["mat-menu-item", "", "routerLinkActive", "item-active", "matTooltipClass", "tooltipClass-mat", 3, "ngClass", "routerLink", "matTooltip", "mousedown"], ["fxLayout", "row"], ["fxLayoutAlign", "start center", "size", "20", 3, "name", "matTooltip", "src", "isRound", "click"], [1, "ml-05"], [2, "background-color", "white !important", "height", "445px !important"], ["mat-menu-item", "", "matTooltipClass", "tooltipClass-mat", 3, "ngClass", "matTooltip", "mousedown"], [1, "spinner-class", 3, "diameter"]], template: function MenuComponent_Template(rf, ctx) { if (rf & 1) {
3007
- const _r109 = i0.ɵɵgetCurrentView();
2569
+ } }, inputs: { reloadAll: ["reload", "reloadAll"] }, outputs: { isOpened: "isOpened", openNewDashboard: "openNewDashboard" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 61, vars: 53, consts: [["type", "submit", "mat-icon-button", "", "fxHide.gt-xs", "", "fxShow", "", 1, "visibles", 3, "matMenuTriggerFor"], [1, "newMenu"], ["yPosition", "below", 1, "filter-panel", 2, "height", "auto", 3, "click"], ["menus", "matMenu"], [4, "ngFor", "ngForOf"], ["style", "position: relative; left: 100%", "class", "store-icom mat-icon-button", 3, "ngClass", 4, "ngIf"], ["backdropClass", "backdrop-color", "hasBackdrop", "", "verticalAlign", "below", "horizontalAlign", "end", 3, "interactiveClose"], ["addWorkspace", ""], [1, "filter-data", "p-0"], [1, "text-center"], [1, "card-title-text", "mat-bg-primary", "p-05", "mb-1"], ["novalidate", "", 3, "formGroup", "submit"], [1, "card-content"], [1, "full-width"], ["matInput", "", "formControlName", "workspaceName", 3, "placeholder"], [4, "ngIf"], ["matInput", "", "formControlName", "description", "rows", "2", 3, "placeholder"], [1, "full-width", 3, "click"], ["formControlName", "selectedRoles", "multiple", "", "required", "", 3, "compareWith", "placeholder"], [3, "value", "click"], ["allSelected", ""], [3, "value", "click", 4, "ngFor", "ngForOf"], ["formControlName", "editRoleIds", "multiple", "", 3, "compareWith", "placeholder"], ["allEditSelected", ""], ["formControlName", "deleteRoleIds", "multiple", "", 3, "compareWith", "placeholder"], ["allDeleteSelected", ""], ["mat-button", "", "mat-raised-button", "", "color", "primary", "type", "button", 1, "mr-1", 3, "disabled", "click"], ["color", "primary", "mode", "indeterminate", 4, "ngIf"], ["icon", "plus", 1, "mr-05"], ["mat-button", "", "mat-raised-button", "", "type", "button", 3, "click"], ["icon", "times", 1, "mr-05"], ["mat-menu-item", "", "routerLinkActive", "item-active", 3, "routerLink", "click"], [1, "store-icom", "mat-icon-button", 2, "position", "relative", "left", "100%", 3, "ngClass"], ["icon", "store", "matTooltipClass", "tooltipClass-mat", 1, "mat-color-accent", "cursor-pointer", "theme-navbar-icon-color", 2, "color", "#09555c", "font-size", "20px !important", 3, "matTooltip", "click"], ["color", "primary", "mode", "indeterminate"]], template: function MenuComponent_Template(rf, ctx) { if (rf & 1) {
3008
2570
  i0.ɵɵelementStart(0, "button", 0);
3009
2571
  i0.ɵɵelementStart(1, "mat-icon", 1);
3010
2572
  i0.ɵɵtext(2, "menu");
3011
2573
  i0.ɵɵelementEnd();
3012
2574
  i0.ɵɵelementEnd();
3013
- i0.ɵɵelementStart(3, "div", 2);
3014
- i0.ɵɵelementStart(4, "img", 3);
3015
- i0.ɵɵlistener("click", function MenuComponent_Template_img_click_4_listener() { return ctx.getAllMenuItems(); });
3016
- i0.ɵɵelementEnd();
2575
+ i0.ɵɵelementStart(3, "mat-menu", 2, 3);
2576
+ i0.ɵɵlistener("click", function MenuComponent_Template_mat_menu_click_3_listener($event) { return $event.stopPropagation(); });
2577
+ i0.ɵɵtemplate(5, MenuComponent_div_5_Template, 2, 1, "div", 4);
3017
2578
  i0.ɵɵelementEnd();
3018
- i0.ɵɵelementStart(5, "div", 4);
3019
- i0.ɵɵelementStart(6, "img", 5);
3020
- i0.ɵɵlistener("click", function MenuComponent_Template_img_click_6_listener() { return ctx.getAllMenuItems(); });
3021
- i0.ɵɵelementEnd();
3022
- i0.ɵɵelementEnd();
3023
- i0.ɵɵelementStart(7, "mat-menu", 6, 7);
3024
- i0.ɵɵlistener("click", function MenuComponent_Template_mat_menu_click_7_listener($event) { return $event.stopPropagation(); });
3025
- i0.ɵɵtemplate(9, MenuComponent_div_9_Template, 2, 1, "div", 8);
3026
- i0.ɵɵelementEnd();
3027
- i0.ɵɵtemplate(10, MenuComponent_div_10_Template, 3, 4, "div", 9);
2579
+ i0.ɵɵtemplate(6, MenuComponent_div_6_Template, 3, 4, "div", 5);
2580
+ i0.ɵɵelementStart(7, "sat-popover", 6, 7);
2581
+ i0.ɵɵelementStart(9, "mat-card", 8);
2582
+ i0.ɵɵelementStart(10, "mat-card-title", 9);
3028
2583
  i0.ɵɵelementStart(11, "div", 10);
3029
- i0.ɵɵtemplate(12, MenuComponent_span_12_Template, 2, 0, "span", 11);
3030
- i0.ɵɵtemplate(13, MenuComponent_span_13_Template, 2, 0, "span", 11);
3031
- i0.ɵɵelementStart(14, "input", 12, 13);
3032
- i0.ɵɵlistener("ngModelChange", function MenuComponent_Template_input_ngModelChange_14_listener($event) { return ctx.searchText = $event; })("input", function MenuComponent_Template_input_input_14_listener($event) { return ctx.SearchItem($event); })("click", function MenuComponent_Template_input_click_14_listener($event) { return ctx.SearchItem($event); })("focus", function MenuComponent_Template_input_focus_14_listener() { return ctx.onFocus(); })("blur", function MenuComponent_Template_input_blur_14_listener() { return ctx.Set(); })("keydown.enter", function MenuComponent_Template_input_keydown_enter_14_listener($event) { return ctx.navigate($event, ctx.itemClicked); })("keydown.arrowdown", function MenuComponent_Template_input_keydown_arrowdown_14_listener() { return ctx.arrowDownEvent(); })("keydown.arrowup", function MenuComponent_Template_input_keydown_arrowup_14_listener() { return ctx.arrowUpEvent(); })("keydown.arrowleft", function MenuComponent_Template_input_keydown_arrowleft_14_listener() { return ctx.arrowLeftEvent(); })("keydown.arrowright", function MenuComponent_Template_input_keydown_arrowright_14_listener() { return ctx.arrowRightEvent(); });
3033
- i0.ɵɵpipe(16, "translate");
3034
- i0.ɵɵelementEnd();
3035
- i0.ɵɵelementStart(17, "button", 14);
3036
- i0.ɵɵelementStart(18, "span", 15);
3037
- i0.ɵɵtemplate(19, MenuComponent_span_19_Template, 1, 0, "span", 16);
3038
- i0.ɵɵtemplate(20, MenuComponent_mat_icon_20_Template, 2, 0, "mat-icon", 17);
3039
- i0.ɵɵelementEnd();
3040
- i0.ɵɵelementStart(21, "mat-icon", 18, 19);
3041
- i0.ɵɵlistener("click", function MenuComponent_Template_mat_icon_click_21_listener() { i0.ɵɵrestoreView(_r109); const _r8 = i0.ɵɵreference(22); return ctx.openInfo(_r8); });
3042
- i0.ɵɵtext(23, "info");
3043
- i0.ɵɵelementEnd();
3044
- i0.ɵɵelementStart(24, "mat-icon", 20);
3045
- i0.ɵɵtext(25, "search");
3046
- i0.ɵɵelementEnd();
3047
- i0.ɵɵelementEnd();
3048
- i0.ɵɵelementStart(26, "div", 21);
3049
- i0.ɵɵtemplate(27, MenuComponent_mat_progress_bar_27_Template, 1, 0, "mat-progress-bar", 22);
3050
- i0.ɵɵelementStart(28, "div", 23);
3051
- i0.ɵɵtemplate(29, MenuComponent_div_29_Template, 6, 4, "div", 24);
3052
- i0.ɵɵtemplate(30, MenuComponent_div_30_Template, 2, 1, "div", 25);
3053
- i0.ɵɵtemplate(31, MenuComponent_div_31_Template, 6, 4, "div", 26);
3054
- i0.ɵɵtemplate(32, MenuComponent_div_32_Template, 5, 1, "div", 27);
3055
- i0.ɵɵtemplate(33, MenuComponent_div_33_Template, 5, 3, "div", 27);
3056
- i0.ɵɵtemplate(34, MenuComponent_div_34_Template, 6, 4, "div", 27);
3057
- i0.ɵɵtemplate(35, MenuComponent_div_35_Template, 5, 1, "div", 26);
3058
- i0.ɵɵtemplate(36, MenuComponent_div_36_Template, 7, 8, "div", 26);
3059
- i0.ɵɵelementEnd();
3060
- i0.ɵɵelementStart(37, "sat-popover", 28, 29);
3061
- i0.ɵɵelementStart(39, "mat-card", 30);
3062
- i0.ɵɵelementStart(40, "mat-card-title", 31);
3063
- i0.ɵɵelementStart(41, "div", 32);
3064
- i0.ɵɵtext(42);
3065
- i0.ɵɵpipe(43, "translate");
3066
- i0.ɵɵelementEnd();
3067
- i0.ɵɵelementEnd();
3068
- i0.ɵɵelementStart(44, "mat-card-content");
3069
- i0.ɵɵelementStart(45, "form", 33);
3070
- i0.ɵɵlistener("submit", function MenuComponent_Template_form_submit_45_listener() { return ctx.workspaceForm.valid && ctx.upsertWorkspace(); });
3071
- i0.ɵɵelementStart(46, "div", 34);
3072
- i0.ɵɵelementStart(47, "mat-form-field", 35);
3073
- i0.ɵɵelement(48, "input", 36);
3074
- i0.ɵɵpipe(49, "translate");
3075
- i0.ɵɵtemplate(50, MenuComponent_mat_error_50_Template, 3, 3, "mat-error", 16);
3076
- i0.ɵɵtemplate(51, MenuComponent_mat_error_51_Template, 3, 3, "mat-error", 16);
3077
- i0.ɵɵelementEnd();
3078
- i0.ɵɵelementStart(52, "mat-form-field", 35);
3079
- i0.ɵɵelement(53, "textarea", 37);
3080
- i0.ɵɵpipe(54, "translate");
3081
- i0.ɵɵtemplate(55, MenuComponent_mat_error_55_Template, 3, 3, "mat-error", 16);
3082
- i0.ɵɵelementEnd();
3083
- i0.ɵɵelementStart(56, "mat-form-field", 38);
3084
- i0.ɵɵlistener("click", function MenuComponent_Template_mat_form_field_click_56_listener($event) { return $event.stopPropagation(); });
3085
- i0.ɵɵelementStart(57, "mat-select", 39);
3086
- i0.ɵɵpipe(58, "translate");
3087
- i0.ɵɵelementStart(59, "mat-option", 40, 41);
3088
- i0.ɵɵlistener("click", function MenuComponent_Template_mat_option_click_59_listener() { return ctx.toggleAllRolesSelected(); });
3089
- i0.ɵɵtext(61);
3090
- i0.ɵɵpipe(62, "translate");
3091
- i0.ɵɵelementEnd();
3092
- i0.ɵɵtemplate(63, MenuComponent_mat_option_63_Template, 3, 2, "mat-option", 42);
3093
- i0.ɵɵelementEnd();
3094
- i0.ɵɵtemplate(64, MenuComponent_mat_error_64_Template, 3, 3, "mat-error", 16);
3095
- i0.ɵɵelementEnd();
3096
- i0.ɵɵelementStart(65, "mat-form-field", 35);
3097
- i0.ɵɵelementStart(66, "mat-select", 43);
3098
- i0.ɵɵpipe(67, "translate");
3099
- i0.ɵɵelementStart(68, "mat-option", 40, 44);
3100
- i0.ɵɵlistener("click", function MenuComponent_Template_mat_option_click_68_listener() { return ctx.toggleEditAllRolesSelected(); });
3101
- i0.ɵɵtext(70);
3102
- i0.ɵɵpipe(71, "translate");
3103
- i0.ɵɵelementEnd();
3104
- i0.ɵɵtemplate(72, MenuComponent_mat_option_72_Template, 3, 2, "mat-option", 42);
3105
- i0.ɵɵelementEnd();
3106
- i0.ɵɵelementEnd();
3107
- i0.ɵɵelementStart(73, "mat-form-field", 35);
3108
- i0.ɵɵelementStart(74, "mat-select", 45);
3109
- i0.ɵɵpipe(75, "translate");
3110
- i0.ɵɵelementStart(76, "mat-option", 40, 46);
3111
- i0.ɵɵlistener("click", function MenuComponent_Template_mat_option_click_76_listener() { return ctx.toggleDeleteAllRolesSelected(); });
3112
- i0.ɵɵtext(78);
3113
- i0.ɵɵpipe(79, "translate");
3114
- i0.ɵɵelementEnd();
3115
- i0.ɵɵtemplate(80, MenuComponent_mat_option_80_Template, 3, 2, "mat-option", 42);
3116
- i0.ɵɵelementEnd();
3117
- i0.ɵɵelementEnd();
3118
- i0.ɵɵelementEnd();
3119
- i0.ɵɵelementStart(81, "div", 31);
3120
- i0.ɵɵelementStart(82, "button", 47);
3121
- i0.ɵɵlistener("click", function MenuComponent_Template_button_click_82_listener() { return ctx.upsertWorkspace(); });
3122
- i0.ɵɵtemplate(83, MenuComponent_mat_progress_bar_83_Template, 1, 0, "mat-progress-bar", 22);
3123
- i0.ɵɵelement(84, "fa-icon", 48);
3124
- i0.ɵɵtext(85);
3125
- i0.ɵɵpipe(86, "translate");
3126
- i0.ɵɵelementEnd();
3127
- i0.ɵɵelementStart(87, "button", 49);
3128
- i0.ɵɵlistener("click", function MenuComponent_Template_button_click_87_listener() { return ctx.closeAddWorkspaceDialog(); });
3129
- i0.ɵɵelement(88, "fa-icon", 50);
3130
- i0.ɵɵtext(89);
3131
- i0.ɵɵpipe(90, "translate");
3132
- i0.ɵɵelementEnd();
3133
- i0.ɵɵelementEnd();
2584
+ i0.ɵɵtext(12);
2585
+ i0.ɵɵpipe(13, "translate");
3134
2586
  i0.ɵɵelementEnd();
3135
2587
  i0.ɵɵelementEnd();
2588
+ i0.ɵɵelementStart(14, "mat-card-content");
2589
+ i0.ɵɵelementStart(15, "form", 11);
2590
+ i0.ɵɵlistener("submit", function MenuComponent_Template_form_submit_15_listener() { return ctx.workspaceForm.valid && ctx.upsertWorkspace(); });
2591
+ i0.ɵɵelementStart(16, "div", 12);
2592
+ i0.ɵɵelementStart(17, "mat-form-field", 13);
2593
+ i0.ɵɵelement(18, "input", 14);
2594
+ i0.ɵɵpipe(19, "translate");
2595
+ i0.ɵɵtemplate(20, MenuComponent_mat_error_20_Template, 3, 3, "mat-error", 15);
2596
+ i0.ɵɵtemplate(21, MenuComponent_mat_error_21_Template, 3, 3, "mat-error", 15);
3136
2597
  i0.ɵɵelementEnd();
2598
+ i0.ɵɵelementStart(22, "mat-form-field", 13);
2599
+ i0.ɵɵelement(23, "textarea", 16);
2600
+ i0.ɵɵpipe(24, "translate");
2601
+ i0.ɵɵtemplate(25, MenuComponent_mat_error_25_Template, 3, 3, "mat-error", 15);
3137
2602
  i0.ɵɵelementEnd();
3138
- i0.ɵɵelementStart(91, "sat-popover", 51, 52);
3139
- i0.ɵɵelementStart(93, "div", 53);
3140
- i0.ɵɵelementStart(94, "table");
3141
- i0.ɵɵelementStart(95, "tr");
3142
- i0.ɵɵelementStart(96, "td");
3143
- i0.ɵɵtext(97, "Ctrl + Q: ");
2603
+ i0.ɵɵelementStart(26, "mat-form-field", 17);
2604
+ i0.ɵɵlistener("click", function MenuComponent_Template_mat_form_field_click_26_listener($event) { return $event.stopPropagation(); });
2605
+ i0.ɵɵelementStart(27, "mat-select", 18);
2606
+ i0.ɵɵpipe(28, "translate");
2607
+ i0.ɵɵelementStart(29, "mat-option", 19, 20);
2608
+ i0.ɵɵlistener("click", function MenuComponent_Template_mat_option_click_29_listener() { return ctx.toggleAllRolesSelected(); });
2609
+ i0.ɵɵtext(31);
2610
+ i0.ɵɵpipe(32, "translate");
3144
2611
  i0.ɵɵelementEnd();
3145
- i0.ɵɵelementStart(98, "td");
3146
- i0.ɵɵtext(99, "\u00A0");
2612
+ i0.ɵɵtemplate(33, MenuComponent_mat_option_33_Template, 3, 2, "mat-option", 21);
3147
2613
  i0.ɵɵelementEnd();
3148
- i0.ɵɵelementStart(100, "td");
3149
- i0.ɵɵtext(101);
3150
- i0.ɵɵpipe(102, "translate");
2614
+ i0.ɵɵtemplate(34, MenuComponent_mat_error_34_Template, 3, 3, "mat-error", 15);
3151
2615
  i0.ɵɵelementEnd();
2616
+ i0.ɵɵelementStart(35, "mat-form-field", 13);
2617
+ i0.ɵɵelementStart(36, "mat-select", 22);
2618
+ i0.ɵɵpipe(37, "translate");
2619
+ i0.ɵɵelementStart(38, "mat-option", 19, 23);
2620
+ i0.ɵɵlistener("click", function MenuComponent_Template_mat_option_click_38_listener() { return ctx.toggleEditAllRolesSelected(); });
2621
+ i0.ɵɵtext(40);
2622
+ i0.ɵɵpipe(41, "translate");
3152
2623
  i0.ɵɵelementEnd();
3153
- i0.ɵɵelementStart(103, "tr");
3154
- i0.ɵɵelementStart(104, "td");
3155
- i0.ɵɵtext(105, "Ctrl + B: ");
2624
+ i0.ɵɵtemplate(42, MenuComponent_mat_option_42_Template, 3, 2, "mat-option", 21);
3156
2625
  i0.ɵɵelementEnd();
3157
- i0.ɵɵelementStart(106, "td");
3158
- i0.ɵɵtext(107, "\u00A0");
3159
2626
  i0.ɵɵelementEnd();
3160
- i0.ɵɵelementStart(108, "td");
3161
- i0.ɵɵtext(109);
3162
- i0.ɵɵpipe(110, "translate");
3163
- i0.ɵɵelementEnd();
3164
- i0.ɵɵelementEnd();
3165
- i0.ɵɵelementStart(111, "tr");
3166
- i0.ɵɵelementStart(112, "td");
3167
- i0.ɵɵtext(113, "Ctrl + Y: ");
3168
- i0.ɵɵelementEnd();
3169
- i0.ɵɵelementStart(114, "td");
3170
- i0.ɵɵtext(115, "\u00A0");
3171
- i0.ɵɵelementEnd();
3172
- i0.ɵɵelementStart(116, "td");
3173
- i0.ɵɵtext(117);
3174
- i0.ɵɵpipe(118, "translate");
2627
+ i0.ɵɵelementStart(43, "mat-form-field", 13);
2628
+ i0.ɵɵelementStart(44, "mat-select", 24);
2629
+ i0.ɵɵpipe(45, "translate");
2630
+ i0.ɵɵelementStart(46, "mat-option", 19, 25);
2631
+ i0.ɵɵlistener("click", function MenuComponent_Template_mat_option_click_46_listener() { return ctx.toggleDeleteAllRolesSelected(); });
2632
+ i0.ɵɵtext(48);
2633
+ i0.ɵɵpipe(49, "translate");
3175
2634
  i0.ɵɵelementEnd();
2635
+ i0.ɵɵtemplate(50, MenuComponent_mat_option_50_Template, 3, 2, "mat-option", 21);
3176
2636
  i0.ɵɵelementEnd();
3177
- i0.ɵɵelementStart(119, "tr");
3178
- i0.ɵɵelementStart(120, "td");
3179
- i0.ɵɵtext(121, "Ctrl + M: ");
3180
2637
  i0.ɵɵelementEnd();
3181
- i0.ɵɵelementStart(122, "td");
3182
- i0.ɵɵtext(123, "\u00A0");
3183
2638
  i0.ɵɵelementEnd();
3184
- i0.ɵɵelementStart(124, "td");
3185
- i0.ɵɵtext(125);
3186
- i0.ɵɵpipe(126, "translate");
2639
+ i0.ɵɵelementStart(51, "div", 9);
2640
+ i0.ɵɵelementStart(52, "button", 26);
2641
+ i0.ɵɵlistener("click", function MenuComponent_Template_button_click_52_listener() { return ctx.upsertWorkspace(); });
2642
+ i0.ɵɵtemplate(53, MenuComponent_mat_progress_bar_53_Template, 1, 0, "mat-progress-bar", 27);
2643
+ i0.ɵɵelement(54, "fa-icon", 28);
2644
+ i0.ɵɵtext(55);
2645
+ i0.ɵɵpipe(56, "translate");
3187
2646
  i0.ɵɵelementEnd();
2647
+ i0.ɵɵelementStart(57, "button", 29);
2648
+ i0.ɵɵlistener("click", function MenuComponent_Template_button_click_57_listener() { return ctx.closeAddWorkspaceDialog(); });
2649
+ i0.ɵɵelement(58, "fa-icon", 30);
2650
+ i0.ɵɵtext(59);
2651
+ i0.ɵɵpipe(60, "translate");
3188
2652
  i0.ɵɵelementEnd();
3189
2653
  i0.ɵɵelementEnd();
3190
2654
  i0.ɵɵelementEnd();
3191
2655
  i0.ɵɵelementEnd();
3192
- i0.ɵɵtemplate(127, MenuComponent_mat_spinner_127_Template, 1, 1, "mat-spinner", 54);
3193
2656
  i0.ɵɵelementEnd();
3194
2657
  i0.ɵɵelementEnd();
3195
2658
  } if (rf & 2) {
3196
- const _r0 = i0.ɵɵreference(8);
3197
- const _r30 = i0.ɵɵreference(92);
2659
+ const _r0 = i0.ɵɵreference(4);
3198
2660
  i0.ɵɵproperty("matMenuTriggerFor", _r0);
3199
- i0.ɵɵadvance(4);
3200
- i0.ɵɵpropertyInterpolate("src", ctx.companyMiniLogo, i0.ɵɵsanitizeUrl);
3201
- i0.ɵɵadvance(2);
3202
- i0.ɵɵpropertyInterpolate("src", ctx.companyMainLogo, i0.ɵɵsanitizeUrl);
3203
- i0.ɵɵadvance(3);
2661
+ i0.ɵɵadvance(5);
3204
2662
  i0.ɵɵproperty("ngForOf", ctx.items);
3205
2663
  i0.ɵɵadvance(1);
3206
2664
  i0.ɵɵproperty("ngIf", ctx.canAccess_feature_DragApps);
3207
- i0.ɵɵadvance(2);
3208
- i0.ɵɵproperty("ngIf", ctx.searchByText);
3209
- i0.ɵɵadvance(1);
3210
- i0.ɵɵproperty("ngIf", ctx.searchById);
3211
- i0.ɵɵadvance(1);
3212
- i0.ɵɵclassProp("hide-placeholder", ctx.searchByText || ctx.searchById);
3213
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(16, 58, "APP.STARTHEREORCLICKCONTROL+Q"));
3214
- i0.ɵɵproperty("ngModel", ctx.searchText);
3215
- i0.ɵɵadvance(5);
3216
- i0.ɵɵproperty("ngIf", !ctx.searchText);
3217
- i0.ɵɵadvance(1);
3218
- i0.ɵɵproperty("ngIf", ctx.searchText);
3219
- i0.ɵɵadvance(1);
3220
- i0.ɵɵproperty("satPopoverAnchorFor", _r30);
3221
- i0.ɵɵadvance(5);
3222
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(90, _c11, ctx.display, !ctx.display));
3223
- i0.ɵɵadvance(1);
3224
- i0.ɵɵproperty("ngIf", ctx.loadingSearchMenuData || ctx.recentSearchesfetchInProgress || ctx.widgetsfetchInProgress);
3225
- i0.ɵɵadvance(2);
3226
- i0.ɵɵproperty("ngIf", ctx.items && ctx.items.length > 0 && !(ctx.searchById || ctx.searchByText));
3227
- i0.ɵɵadvance(1);
3228
- i0.ɵɵproperty("ngIf", !(ctx.searchById || ctx.searchByText));
3229
- i0.ɵɵadvance(1);
3230
- i0.ɵɵproperty("ngIf", ctx.widgets && ctx.widgets.length > 0 && !(ctx.searchById || ctx.searchByText));
3231
- i0.ɵɵadvance(1);
3232
- i0.ɵɵproperty("ngIf", ctx.projectList && ctx.projectList.length > 0 && ctx.searchText && ctx.searchByText);
3233
- i0.ɵɵadvance(1);
3234
- i0.ɵɵproperty("ngIf", ctx.userStorySearchList && ctx.userStorySearchList.length > 0 && ctx.searchText && ctx.searchByText);
3235
- i0.ɵɵadvance(1);
3236
- i0.ɵɵproperty("ngIf", ctx.goalSearchList && ctx.goalSearchList.length > 0 && ctx.searchText && ctx.searchByText);
3237
- i0.ɵɵadvance(1);
3238
- i0.ɵɵproperty("ngIf", ctx.employeeList && ctx.employeeList.length > 0 && ctx.searchText && ctx.searchByText);
3239
- i0.ɵɵadvance(1);
3240
- i0.ɵɵproperty("ngIf", ctx.recentSearches && ctx.recentSearches.length > 0 && !(ctx.searchById || ctx.searchByText));
3241
2665
  i0.ɵɵadvance(1);
3242
2666
  i0.ɵɵproperty("interactiveClose", false);
3243
2667
  i0.ɵɵadvance(5);
3244
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(43, 60, "APP.ADDDASHBOARDTITLE"), " ");
2668
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(13, 31, "APP.ADDDASHBOARDTITLE"), " ");
3245
2669
  i0.ɵɵadvance(3);
3246
2670
  i0.ɵɵproperty("formGroup", ctx.workspaceForm);
3247
2671
  i0.ɵɵadvance(3);
3248
- i0.ɵɵpropertyInterpolate1("placeholder", "", i0.ɵɵpipeBind1(49, 62, "HRMANAGAMENT.NAME"), "*");
2672
+ i0.ɵɵpropertyInterpolate1("placeholder", "", i0.ɵɵpipeBind1(19, 33, "HRMANAGAMENT.NAME"), "*");
3249
2673
  i0.ɵɵadvance(2);
3250
2674
  i0.ɵɵproperty("ngIf", ctx.workspaceForm.get("workspaceName").hasError("required") && ctx.workspaceForm.get("workspaceName").touched);
3251
2675
  i0.ɵɵadvance(1);
3252
2676
  i0.ɵɵproperty("ngIf", ctx.workspaceForm.get("workspaceName").hasError("maxlength"));
3253
2677
  i0.ɵɵadvance(2);
3254
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(54, 64, "COMPANYSETTINGS.DESCRIPTION"));
2678
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(24, 35, "COMPANYSETTINGS.DESCRIPTION"));
3255
2679
  i0.ɵɵadvance(2);
3256
2680
  i0.ɵɵproperty("ngIf", ctx.workspaceForm.get("description").hasError("maxlength") && ctx.workspaceForm.get("description").touched);
3257
2681
  i0.ɵɵadvance(2);
3258
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(58, 66, "WIDGETS.VIEWROLES"));
2682
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(28, 37, "WIDGETS.VIEWROLES"));
3259
2683
  i0.ɵɵproperty("compareWith", ctx.compareSelectedRolesFn);
3260
2684
  i0.ɵɵadvance(2);
3261
2685
  i0.ɵɵproperty("value", 0);
3262
2686
  i0.ɵɵadvance(2);
3263
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(62, 68, "PERMISSIONMANAGEMENT.SELECTALL"), "");
2687
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(32, 39, "PERMISSIONMANAGEMENT.SELECTALL"), "");
3264
2688
  i0.ɵɵadvance(2);
3265
2689
  i0.ɵɵproperty("ngForOf", ctx.rolesDropDown);
3266
2690
  i0.ɵɵadvance(1);
3267
2691
  i0.ɵɵproperty("ngIf", ctx.workspaceForm.get("selectedRoles").hasError("required") && ctx.workspaceForm.get("selectedRoles").touched);
3268
2692
  i0.ɵɵadvance(2);
3269
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(67, 70, "WIDGETS.EDITROLES"));
2693
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(37, 41, "WIDGETS.EDITROLES"));
3270
2694
  i0.ɵɵproperty("compareWith", ctx.compareEditSelectedRolesFn);
3271
2695
  i0.ɵɵadvance(2);
3272
2696
  i0.ɵɵproperty("value", 0);
3273
2697
  i0.ɵɵadvance(2);
3274
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(71, 72, "PERMISSIONMANAGEMENT.SELECTALL"), "");
2698
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(41, 43, "PERMISSIONMANAGEMENT.SELECTALL"), "");
3275
2699
  i0.ɵɵadvance(2);
3276
2700
  i0.ɵɵproperty("ngForOf", ctx.rolesDropDown);
3277
2701
  i0.ɵɵadvance(2);
3278
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(75, 74, "WIDGETS.DELETEROLES"));
2702
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(45, 45, "WIDGETS.DELETEROLES"));
3279
2703
  i0.ɵɵproperty("compareWith", ctx.compareDeleteSelectedRolesFn);
3280
2704
  i0.ɵɵadvance(2);
3281
2705
  i0.ɵɵproperty("value", 0);
3282
2706
  i0.ɵɵadvance(2);
3283
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(79, 76, "PERMISSIONMANAGEMENT.SELECTALL"), "");
2707
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(49, 47, "PERMISSIONMANAGEMENT.SELECTALL"), "");
3284
2708
  i0.ɵɵadvance(2);
3285
2709
  i0.ɵɵproperty("ngForOf", ctx.rolesDropDown);
3286
2710
  i0.ɵɵadvance(2);
@@ -3288,22 +2712,10 @@ MenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuComponent
3288
2712
  i0.ɵɵadvance(1);
3289
2713
  i0.ɵɵproperty("ngIf", ctx.dashboardUpdateInProgress);
3290
2714
  i0.ɵɵadvance(2);
3291
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(86, 78, "SAVE"), " ");
2715
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(56, 49, "SAVE"), " ");
3292
2716
  i0.ɵɵadvance(4);
3293
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(90, 80, "CANCEL"), " ");
3294
- i0.ɵɵadvance(2);
3295
- i0.ɵɵproperty("interactiveClose", true);
3296
- i0.ɵɵadvance(10);
3297
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(102, 82, "SHELL.TOOPENSEARCHMENU"), "");
3298
- i0.ɵɵadvance(8);
3299
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(110, 84, "SHELL.TOOPENGOALSANDUSERS"), "");
3300
- i0.ɵɵadvance(8);
3301
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(118, 86, "SHELL.TOSEARCHBYID"), "");
3302
- i0.ɵɵadvance(8);
3303
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(126, 88, "SHELL.TOCLOSEMENU"), "");
3304
- i0.ɵɵadvance(2);
3305
- i0.ɵɵproperty("ngIf", ctx.searchByTextLoading && ctx.display);
3306
- } }, directives: [i14.MatButton, i15.DefaultShowHideDirective, i16.MatMenuTrigger, i17.MatIcon, i18.DefaultFlexDirective, i16.MatMenu, i9.NgForOf, i9.NgIf, i19.DefaultValueAccessor, i19.NgControlStatus, i19.NgModel, i20.SatPopoverAnchor, i9.NgClass, i15.DefaultClassDirective, i20.SatPopover, i21.MatCard, i21.MatCardTitle, i21.MatCardContent, i19.ɵNgNoValidate, i19.NgControlStatusGroup, i19.FormGroupDirective, i22.MatFormField, i23.MatInput, i19.FormControlName, i24.MatSelect, i19.RequiredValidator, i25.MatOption, i26.FaIconComponent, i16.MatMenuItem, i3.RouterLinkActive, i3.RouterLink, i27.MatTooltip, i28.MatProgressBar, i18.DefaultLayoutDirective, i29.SnovasysAvatarComponent, i18.DefaultLayoutAlignDirective, i22.MatError, i30.MatSpinner], pipes: [i5.TranslatePipe, i31.SoftLabelPipe, i32.HighLightTextPipe, i33.RemoveSpecialCharactersPipe, i34.FetchSizedAndCachedImagePipe, i9.SlicePipe, i35.TimeagoPipe], encapsulation: 2 });
2717
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(60, 51, "CANCEL"), " ");
2718
+ } }, directives: [i14.MatButton, i15.DefaultShowHideDirective, i16.MatMenuTrigger, i17.MatIcon, i16.MatMenu, i9.NgForOf, i9.NgIf, i18.SatPopover, i19.MatCard, i19.MatCardTitle, i19.MatCardContent, i20.ɵNgNoValidate, i20.NgControlStatusGroup, i20.FormGroupDirective, i21.MatFormField, i22.MatInput, i20.DefaultValueAccessor, i20.NgControlStatus, i20.FormControlName, i23.MatSelect, i20.RequiredValidator, i24.MatOption, i25.FaIconComponent, i16.MatMenuItem, i3.RouterLinkActive, i3.RouterLink, i9.NgClass, i15.DefaultClassDirective, i26.MatTooltip, i21.MatError, i27.MatProgressBar], pipes: [i5.TranslatePipe, i28.SoftLabelPipe], encapsulation: 2 });
3307
2719
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MenuComponent, [{
3308
2720
  type: Component,
3309
2721
  args: [{
@@ -3363,4 +2775,4 @@ MenuComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuComponent
3363
2775
  type: HostListener,
3364
2776
  args: ['document:keydown.control.y', []]
3365
2777
  }] }); })();
3366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXNCLFlBQVksRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFLLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFtQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQVMsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE9BQU8sS0FBSyxvQkFBb0IsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFJakYsT0FBTyxFQUEwQixhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU14RSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUdqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENB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LFdBQVcsRUFBRSx1QkFBdUI7YUFDckM7MllBa0ltQyxNQUFNO3NCQUFyQyxNQUFNO3VCQUFDLE1BQU07MkZBN0hlLGVBQWU7a0JBQTdDLFlBQVk7bUJBQUMsZUFBZTtZQUNILFdBQVc7a0JBQXBDLFNBQVM7bUJBQUMsYUFBYTtZQUNGLE9BQU87a0JBQTVCLFNBQVM7bUJBQUMsU0FBUztZQUNXLGdCQUFnQjtrQkFBOUMsU0FBUzttQkFBQyxrQkFBa0I7WUFDSCxXQUFXO2tCQUFwQyxTQUFTO21CQUFDLGFBQWE7WUFDRyxtQkFBbUI7a0JBQTdDLFNBQVM7bUJBQUMsY0FBYztZQUNTLFdBQVc7a0JBQTVDLFNBQVM7bUJBQUMsYUFBYTtZQUNjLGVBQWU7a0JBQXBELFNBQVM7bUJBQUMsaUJBQWlCO1lBQ1ksaUJBQWlCO2tCQUF4RCxTQUFTO21CQUFDLG1CQUFtQjtZQUNKLFdBQVc7a0JBQXBDLFNBQVM7bUJBQUMsYUFBYTtZQUNkLFFBQVE7a0JBQWpCLE1BQU07WUFDRyxnQkFBZ0I7a0JBQXpCLE1BQU07WUF3RUgsU0FBUztrQkFEWixLQUFLO21CQUFDLFFBQVE7WUE4S2YsWUFBWTtrQkFEWCxZQUFZO21CQUFDLDRCQUE0QixFQUFFLEVBQUU7WUFXOUMsYUFBYTtrQkFEWixZQUFZO21CQUFDLDRCQUE0QixFQUFFLEVBQUU7WUFXOUMsa0JBQWtCO2tCQURqQixZQUFZO21CQUFDLDRCQUE0QixFQUFFLEVBQUU7WUFVOUMsZ0JBQWdCO2tCQURmLFlBQVk7bUJBQUMsNEJBQTRCLEVBQUUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkcmVuLCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIE9uSW5pdCwgSG9zdExpc3RlbmVyLCBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBTdG9yZSwgc2VsZWN0IH0gZnJvbSBcIkBuZ3J4L3N0b3JlXCI7XHJcbi8vIGltcG9ydCB7IFN0YXRlIH0gZnJvbSBcImFwcC9zaGFyZWQvc3RvcmUvcmVkdWNlcnMvbWVudWl0ZW1zLnJlZHVjZXJzXCI7XHJcbmltcG9ydCB7IFN0YXRlIH0gZnJvbSBcIi4uLy4uL3N0b3JlL3JlZHVjZXJzL2luZGV4XCI7XHJcbmltcG9ydCAqIGFzIHNoYXJlZE1vZHVsZVJlZHVjZXJzIGZyb20gXCIuLy4uLy4uL3N0b3JlL3JlZHVjZXJzL2luZGV4XCI7XHJcbmltcG9ydCB7IHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBHZXRBbGxNZW51SXRlbXNUcmlnZ2VyZWQgfSBmcm9tIFwiLi4vLi4vc3RvcmUvYWN0aW9ucy9tZW51aXRlbXMuYWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBNYXRNZW51VHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XHJcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tIFwibmd4LWNvb2tpZS1zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIE5hdmlnYXRpb25FbmQgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7IE1hdE9wdGlvbiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhclwiO1xyXG5pbXBvcnQgeyBSZWNlbnRTZWFyY2hTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3JlY2VudFNlYXJjaC5zZXJ2aWNlXCI7XHJcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tIFwibW9tZW50XCI7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uQWN0aW9uVHlwZXMsIEdldENvbXBhbnlUaGVtZVRyaWdnZXJlZCB9IGZyb20gXCIuLi8uLi9zdG9yZS9hY3Rpb25zL2F1dGhlbnRpY2F0aW9uLmFjdGlvbnNcIjtcclxuaW1wb3J0IHsgb2ZUeXBlLCBBY3Rpb25zIH0gZnJvbSBcIkBuZ3J4L2VmZmVjdHNcIjtcclxuaW1wb3J0IHsgU2VhcmNoVGFza1R5cGUgfSBmcm9tIFwiLi9zZWFyY2hUYXNrLmVudW1cIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU2F0UG9wb3ZlciB9IGZyb20gJ0BuY3N0YXRlL3NhdC1wb3BvdmVyJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICd1bmRlcnNjb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbW1vbi11c2VkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbnN0YW50cy9sb2NhbHN0b3JhZ2UtcHJvcGVydGllcyc7XHJcbmltcG9ydCB7IEVtcGxveWVlTGlzdE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2VtcGxveWVlJztcclxuaW1wb3J0IHsgRW1wbG95ZWVMaXN0SW5wdXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW1wbG95ZWUtTGlzdCc7XHJcbmltcG9ydCB7IEN1c3RvbUFwcEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvY29tcG9uZW50cy9jb21wb25lbnRiYXNlJztcclxuaW1wb3J0IHsgU29mdExhYmVsQ29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NvZnRsYWJlbHMtbW9kZWwnO1xyXG5pbXBvcnQgeyBJTWVudUl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvSU1lbnVJdGVtJztcclxuaW1wb3J0IHsgVXNlclN0b3J5IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXJTdG9yeSc7XHJcbmltcG9ydCB7IFdpZGdldExpc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvd2lkZ2V0bGlzdCc7XHJcbmltcG9ydCB7IERyYWdlZFdpZGdldCB9IGZyb20gJy4uLy4uL21vZGVscy9kcmFnZWRXaWRnZXQnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2VMaXN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dvcmtzcGFjZUxpc3QnO1xyXG5pbXBvcnQgeyBSZWNlbnRTZWFyY2hNb2RlbCwgU2VhcmNoVGFza1R5cGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9SZWNlbnRTZWFyY2hNb2RlbCc7XHJcbmltcG9ydCB7IFRoZW1lTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGhlbWVzLm1vZGVsJztcclxuaW1wb3J0IHsgV0lORE9XIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2hlbHBlcnMvd2luZG93LmhlbHBlcic7XHJcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHb29nbGVBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ29vZ2xlLWFuYWx5dGljcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvamVjdFNlYXJjaENyaXRlcmlhSW5wdXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9Qcm9qZWN0U2VhcmNoQ3JpdGVyaWFJbnB1dE1vZGVsJztcclxuaW1wb3J0IHsgTWVudUNhdGVnb3JpZXMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbWVudS1jYXRlZ29yaWVzJztcclxuaW1wb3J0IHsgRmVhdHVyZUlkcyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb25zdGFudHMvZmVhdHVyZS1pZHMnO1xyXG5pbXBvcnQgJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9oZWxwZXJzL2ZvbnRhd2Vzb21lLWljb25zJztcclxuaW1wb3J0IHsgUmVjZW50U2VhcmNoVHlwZSB9IGZyb20gJy4uLy4uL2VudW0vcmVjZW50U2VhcmNoVHlwZS5lbnVtJztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gXCJuZ3gtdG9hc3RyXCI7XHJcbmltcG9ydCB7IHRyaWdnZXIsIHN0eWxlLCBhbmltYXRlLCB0cmFuc2l0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZVwiO1xyXG5cclxuLyoqIEBkeW5hbWljICovXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtbWVudVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vbWVudS5jb21wb25lbnQuaHRtbFwiXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgTWVudUNvbXBvbmVudCBleHRlbmRzIEN1c3RvbUFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIFt4OiBzdHJpbmddOiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oXCJvcGVuTWVudVBvcFVwXCIpIG9wZW5NZW51UG9wT3ZlcjtcclxuICBAVmlld0NoaWxkKFwibWVudVRyaWdnZXJcIikgbWVudVRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xyXG4gIEBWaWV3Q2hpbGQoXCJlbGVtZW50XCIpIGVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcIndvcmtzcGFjZUVsZW1lbnRcIikgd29ya3NwYWNlRWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwibWVudUVsZW1lbnRcIikgbWVudUVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcImFkZFdvcmtzcGFjZVwiKSBhZGRXb3JrU3BhY2VQb3BPdmVyOiBTYXRQb3BvdmVyO1xyXG4gIEBWaWV3Q2hpbGQoXCJhbGxTZWxlY3RlZFwiKSBwcml2YXRlIGFsbFNlbGVjdGVkOiBNYXRPcHRpb247XHJcbiAgQFZpZXdDaGlsZChcImFsbEVkaXRTZWxlY3RlZFwiKSBwcml2YXRlIGFsbEVkaXRTZWxlY3RlZDogTWF0T3B0aW9uO1xyXG4gIEBWaWV3Q2hpbGQoXCJhbGxEZWxldGVTZWxlY3RlZFwiKSBwcml2YXRlIGFsbERlbGV0ZVNlbGVjdGVkOiBNYXRPcHRpb247XHJcbiAgQFZpZXdDaGlsZCgnaW5mb1BvcE92ZXInKSBpbmZvUG9wT3ZlcjogVGVtcGxhdGVSZWY8YW55PlxyXG4gIEBPdXRwdXQoKSBpc09wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuTmV3RGFzaGJvYXJkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgZTogRWxlbWVudDtcclxuICBzZWFyY2hUZXh0OiBzdHJpbmc7XHJcbiAgZm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzb2Z0TGFiZWxzOiBTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWxbXTtcclxuICBwdWJsaWMgbWVudUl0ZW1zJDogT2JzZXJ2YWJsZTxJTWVudUl0ZW1bXT47XHJcbiAgdXNlclN0b3JpZXNMaXN0JDogT2JzZXJ2YWJsZTxVc2VyU3RvcnlbXT47XHJcbiAgbWVudUl0ZW06IElNZW51SXRlbVtdO1xyXG4gIGl0ZW1zID0gW107XHJcbiAgbWVudUl0ZW1OYW1lOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHdpZGdldHM6IFdpZGdldExpc3RbXTtcclxuICBvcmlnaW5hbFdpZGdldHM6IFdpZGdldExpc3RbXTtcclxuICBzZWxlY3RlZExpc3Q6IERyYWdlZFdpZGdldFtdO1xyXG4gIHdpZGdldDogV2lkZ2V0TGlzdDtcclxuICBzZWxlY3RlZEFwcHM6IGFueTtcclxuICB1cmw6IHN0cmluZztcclxuICBzZWxlY3RlZERhc2hib2FyZDogYW55O1xyXG4gIGRlZmF1bHREYXNoYm9hcmQ6IGFueTtcclxuICBzdWJMZXZlbHM6IHN0cmluZ1tdID0gW107XHJcbiAgc3RhdGVMdmwxOiBzdHJpbmc7XHJcbiAgbGV2ZWwzTGluazE6IHN0cmluZztcclxuICBsZXZlbDNMaW5rMjogc3RyaW5nO1xyXG4gIHN1YkxldmVsc0ZvckxldmVsMjogc3RyaW5nO1xyXG4gIGNvbXBhbnlNYWluTG9nbzogc3RyaW5nO1xyXG4gIGNvbXBhbnlNaW5pTG9nbzogc3RyaW5nO1xyXG4gIHJvbGVzRHJvcERvd246IGFueVtdO1xyXG4gIHdvcmtzcGFjZXNMaXN0JDogT2JzZXJ2YWJsZTxXb3Jrc3BhY2VMaXN0W10+O1xyXG4gIHdvcmtzcGFjZXM6IFdvcmtzcGFjZUxpc3RbXTtcclxuICB3b3Jrc3BhY2VzRm9yTG9vcDogYW55O1xyXG4gIGRpc3BsYXk6IGJvb2xlYW47XHJcbiAgYWRtaW5Ub29sczogYW55ID0gW107XHJcbiAgdG9vbHM6IGFueTtcclxuICBzZWxlY3RlZFJvd0luZGV4OiBhbnk7XHJcbiAgaXRlbUNsaWNrZWQ6IGFueTtcclxuICB0OiBhbnk7XHJcbiAgd2Q6IGFueTtcclxuICB3czogYW55O1xyXG4gIHJzOiBhbnk7XHJcbiAgYWxsc2VhcmNoZXM6IFJlY2VudFNlYXJjaE1vZGVsW10gPSBbXTtcclxuICByZWNlbnRTZWFyY2hlczogUmVjZW50U2VhcmNoTW9kZWxbXSA9IFtdO1xyXG4gIHByb2plY3RSb2xlVGV4dDogc3RyaW5nID0gXCJQcm9qZWN0IHJvbGUgY29uZmlndXJhdGlvblwiO1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zOiBCb29sZWFuO1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlRm9ybTogQm9vbGVhbjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXM6IEJvb2xlYW47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlUHJvamVjdFJvbGVQZXJtaXNzaW9uczogQm9vbGVhbjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXM6IEJvb2xlYW47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMkOiBPYnNlcnZhYmxlPEJvb2xlYW4+O1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlRm9ybSQ6IE9ic2VydmFibGU8Qm9vbGVhbj47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zJDogT2JzZXJ2YWJsZTxCb29sZWFuPlxyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMkOiBPYnNlcnZhYmxlPEJvb2xlYW4+XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzJDogT2JzZXJ2YWJsZTxCb29sZWFuPjtcclxuICBjb21wYW55U2V0dGluZ3NNT2RlbCQ6IE9ic2VydmFibGU8YW55W10+O1xyXG4gIGRpc2FibGVXb3Jrc3BhY2UgPSBmYWxzZTtcclxuICBkaXNhYmxlV29ya3NwYWNlRGVsZXRlID0gZmFsc2U7XHJcbiAgZGlzYWJsZVdvcmtzcGFjZWhpZGUgPSBmYWxzZTtcclxuICBmb3JtczogYW55O1xyXG4gIGN1c3RhcHA6IGFueTtcclxuICBwcm9qZWN0Um9sZUNvbmZpZ3VyYXRpb246IGFueTtcclxuICByb2xlQ29uZmlndXJhdGlvbjogYW55O1xyXG4gIHRoZW1lTW9kZWw6IFRoZW1lTW9kZWw7XHJcbiAgZW1wbG95ZWVMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHRoZW1lTW9kZWwkOiBPYnNlcnZhYmxlPFRoZW1lTW9kZWw+O1xyXG4gIHRoZW1lQmFzZUNvbG9yOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWRFbXBsb3llZTogc3RyaW5nO1xyXG4gIGxvYWRlZEVtcGxveWVlTGlzdDogRW1wbG95ZWVMaXN0TW9kZWxbXSA9IFtdO1xyXG4gIHNlbGVjdGVkRW1wbG95ZWVJbmRleDogbnVtYmVyID0gbnVsbDtcclxuICB2aWV3RW1wbG95ZWVQZXJtaXNzaW9uOiBib29sZWFuO1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlsczogQm9vbGVhbjtcclxuICBwcm9qZWN0TGlzdDogYW55ID0gW107XHJcbiAgcHJvamVjdEluZGV4OiBhbnk7XHJcbiAgc2VhcmNoQnlUZXh0TG9hZGluZzogYm9vbGVhbjtcclxuICBASW5wdXQoXCJyZWxvYWRcIilcclxuICBzZXQgcmVsb2FkQWxsKGRhdGE6IGJvb2xlYW4pIHtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIHRoaXMuYWRtaW5Ub29scyA9IFtdO1xyXG4gICAgICB0aGlzLnRvb2xzID0gW107XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIG5nRGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgdXNlclN0b3J5TGlzdDogYW55ID0gW107XHJcbiAgdXNlclN0b3J5U2VhcmNoTGlzdDogYW55ID0gW107XHJcbiAgZ29hbFNlYXJjaExpc3Q6IGFueSA9IFtdO1xyXG4gIGlzRW5hYmxlQnVnQm9hcmQ6IGJvb2xlYW47XHJcbiAgc2VsZWN0ZWRSb2xlSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGRhc2hib2FyZFVwZGF0ZUluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgdXNlcnM6IGFueTtcclxuICBnb2FsSW5kZXg6IGFueTtcclxuICB3b3Jrc3BhY2VGb3JtOiBGb3JtR3JvdXA7XHJcbiAgcHJvamVjdFNlYXJjaFJlc3VsdHM6IGFueTtcclxuICBkZWxheVRpbWVJbnB1dCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICBtZW51c2ZldGNoSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuICB3b3Jrc3BhY2VzZmV0Y2hJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIHdpZGdldHNmZXRjaEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgcmVjZW50U2VhcmNoZXNmZXRjaEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgc2VhcmNoVGFza3M6IFNlYXJjaFRhc2tUeXBlTW9kZWw7XHJcbiAgbG9hZGluZ1NlYXJjaE1lbnVEYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGVmYXVsdERhc2hib2FyZElkOiBzdHJpbmc7XHJcbiAgc2VhcmNoQnlJZDogYm9vbGVhbjtcclxuICBzZWFyY2hCeVRleHQ6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxTdGF0ZT4sXHJcbiAgICBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcm91dGVzOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHB1YmxpYyBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSByc3M6IFJlY2VudFNlYXJjaFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcclxuICAgIHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBUaGVtZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGlvblVwZGF0ZXMkOiBBY3Rpb25zLFxyXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KFdJTkRPVykgcHJpdmF0ZSB3aW5kb3c6IFdpbmRvdyxcclxuICAgIHByaXZhdGUgZ29vZ2xlQW5hbHl0aWNzU2VydmljZTogR29vZ2xlQW5hbHl0aWNzU2VydmljZSxcclxuICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIC8vdGhpcy5vbkZvY3VzKCk7XHJcblxyXG4gICAgLy8gbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAvLyB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuU2VhcmNoQ2xpY2ssIEpTT04uc3RyaW5naWZ5KGZhbHNlKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgfSkpO1xyXG4gICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyA9IHJlc3VsdDtcclxuICAgIH0pXHJcbiAgICB0aGlzLmluaXRpYWxpemVXb3Jrc3BhY2VGb3JtKCk7XHJcbiAgICB0aGlzLnJvdXRlcy5ldmVudHMuc3Vic2NyaWJlKHZhbCA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmxvY2F0aW9uLnBhdGgoKSAhPSBcIlwiKSB7XHJcbiAgICAgICAgdGhpcy51cmwgPSB0aGlzLmxvY2F0aW9uLnBhdGgoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB0aGlzLndpZGdldFNlcnZpY2Uuc2VsZWN0ZWRXb3Jrc3BhY2Uuc3Vic2NyaWJlKGlkID0+IHtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZERhc2hib2FyZCA9IGlkO1xyXG4gICAgLy8gfSk7XHJcbiAgICAvLyB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAvLyAgIC5waXBlKFxyXG4gICAgLy8gICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAvLyAgICAgb2ZUeXBlKEF1dGhlbnRpY2F0aW9uQWN0aW9uVHlwZXMuR2V0Q29tcGFueVRoZW1lQ29tcGxldGVkKSxcclxuICAgIC8vICAgICB0YXAoKCkgPT4ge1xyXG4gICAgLy90aGlzLnRoZW1lTW9kZWwkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXRUaGVtZU1vZGVsKSk7XHJcbiAgICAvL3RoaXMudGhlbWVNb2RlbCQuc3Vic2NyaWJlKHggPT4gdGhpcy50aGVtZU1vZGVsID0geCk7XHJcbiAgICAvLyB0aGlzLmdldFRoZW1lKCk7XHJcbiAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuICAgIHRoaXMudGhlbWVTZXJ2aWNlLmNoYW5nZVRoZW1lKHRoaXMudGhlbWVNb2RlbCk7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1haW5Mb2dvLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuXHJcbiAgICB2YXIgY29tcGFueVNldHRpbmdzTW9kZWwgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueVNldHRpbmdzKSk7XHJcblxyXG4gICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWFpbkxvZ287XHJcbiAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNaW5pTG9nbztcclxuXHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3J0Y3V0LWZhdi1pY29uXCIpLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICB0aGlzLnRoZW1lQmFzZUNvbG9yID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RoZW1lQ29sb3InKTtcclxuICAgIC8vIC8vIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuICAgIC8vIC8vIGlmICh0aGlzLnRoZW1lTW9kZWwgJiYgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlUaGVtZUlkICE9PSBcIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiKSB7XHJcbiAgICAvLyAvLyAgIHRoaXMudGhlbWVTZXJ2aWNlLmNoYW5nZVRoZW1lKHRoaXMudGhlbWVNb2RlbCk7XHJcbiAgICAvLyAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28sIG51bGwpO1xyXG4gICAgLy8gLy8gICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvLCBudWxsKTtcclxuICAgIC8vIC8vIH1cclxuICAgIC8vIC8vIGVsc2Uge1xyXG4gICAgLy8gLy8gICB2YXIgdGhlbWVNb2RlbCA9IG5ldyBUaGVtZU1vZGVsKClcclxuICAgIC8vIC8vICAgdGhlbWVNb2RlbC5jb21wYW55VGhlbWVJZCA9IFwiMDkyOUQzNUEtMzU3My00QjA2LTkzRkItQzdENDZBQUZBOTE4XCI7XHJcbiAgICAvLyAvLyAgIC8vIHRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvID0gXCJhc3NldHMvaW1hZ2VzL0xvZ28tZmF2aWNvbi5wbmdcIjtcclxuICAgIC8vIC8vICAgLy8gdGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28gPSBcImFzc2V0cy9pbWFnZXMvTWFpbi1Mb2dvLnBuZ1wiO1xyXG4gICAgLy8gLy8gICB0aGlzLnRoZW1lTW9kZWwgPSB0aGVtZU1vZGVsO1xyXG4gICAgLy8gLy8gICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGVtZU1vZGVsKTtcclxuICAgIC8vIC8vICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNYWluTG9nbywgbnVsbCk7XHJcbiAgICAvLyAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28sIG51bGwpO1xyXG4gICAgLy8gLy8gfVxyXG4gICAgLy8gLy8gdGhpcy5jb21wYW55TWFpbkxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvKTtcclxuICAgIC8vIC8vIHRoaXMuY29tcGFueU1pbmlMb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICAvLyAvLyAvL3RoaXMuY2hhbmdlRmF2SWNvbigpO1xyXG4gICAgLy8gLy8gdGhpcy50aGVtZUJhc2VDb2xvciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbG9yJyk7XHJcbiAgICAvL3RoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gKVxyXG4gICAgLy8gLnN1YnNjcmliZSgpO1xyXG5cclxuXHJcbiAgICAvLyB0aGlzLmFjdGlvblVwZGF0ZXMkXHJcbiAgICAvLyAgIC5waXBlKFxyXG4gICAgLy8gICAgIHRha2VVbnRpbCh0aGlzLm5nRGVzdHJveWVkJCksXHJcbiAgICAvLyAgICAgb2ZUeXBlKFdvcmtzcGFjZXNBY3Rpb25UeXBlcy5Mb2FkV29ya3NwYWNlQnlJZENvbXBsZXRlZCksXHJcbiAgICAvLyAgICAgdGFwKChkYXRhOiBhbnkpID0+IHtcclxuICAgIC8vICAgICAgIHZhciB3b3Jrc3BhY2VzTGlzdCA9IGRhdGEuc2VhcmNoV29ya3NwYWNlc1N1Y2Nlc3M7XHJcbiAgICAvLyAgICAgICB0aGlzLmRhc2hib2FyZFVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIC8vICAgICAgIC8vIHRoaXMuY2xvc2VBZGRXb3Jrc3BhY2VEaWFsb2coKTtcclxuICAgIC8vICAgICAgIHRoaXMuZGlzYWJsZVdvcmtzcGFjZSA9IGZhbHNlO1xyXG4gICAgLy8gICAgICAgaWYgKHdvcmtzcGFjZXNMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgICAgICAgdGhpcy53b3Jrc3BhY2VzLnB1c2god29ya3NwYWNlc0xpc3RbMF0pO1xyXG4gICAgLy8gICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgIC8vICAgICAgICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICAvLyAgICAgICAgIHRoaXMub3Blbk5ld0Rhc2hib2FyZC5lbWl0KHdvcmtzcGFjZXNMaXN0WzBdLndvcmtzcGFjZUlkKVxyXG4gICAgLy8gICAgICAgfVxyXG5cclxuICAgIC8vICAgICB9KVxyXG4gICAgLy8gICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIC8vdGhpcy5nZXRBbGxQcm9qZWN0cygpO1xyXG5cclxuICAgIHRoaXMuZGVsYXlUaW1lSW5wdXQucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDIwMDApLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxyXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICB0aGlzLlNlYXJjaEl0ZW0odmFsdWUpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRUaGVtZSgpIHtcclxuICAgIHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmdldFRoZW1lcygpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoJ0NvbXBhbnlUaGVtZScsIEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlLmRhdGEpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuICAgICAgICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGlzLnRoZW1lTW9kZWwpO1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbywgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICB0aGlzLnNpdGVVcmwgPSByZXNwb25zZS5kYXRhLnJlZ2lzdHJlclNpdGVBZGRyZXNzO1xyXG4gICAgICAgIHRoaXMudGhlbWVNb2RlbCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjaygnQ29tcGFueVRoZW1lJykgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoXCJDb21wYW55VGhlbWVcIikpIDogbnVsbDtcclxuXHJcbiAgICAgICAgdmFyIGNvbXBhbnlTZXR0aW5nc01vZGVsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncykpO1xyXG5cclxuICAgICAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcclxuICAgICAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNaW5pTG9nbztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29tcGFueU1haW5Mb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gcmVzcG9uc2UuZGF0YS5jb21wYW55TWFpbkxvZ287XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IHJlc3BvbnNlLmRhdGEuY29tcGFueU1pbmlMb2dvO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3J0Y3V0LWZhdi1pY29uXCIpLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICAgICAgdGhpcy50aGVtZUJhc2VDb2xvciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbG9yJyk7XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5jb250cm9sLnEnLCBbXSlcclxuICBrZXlPcGVuRXZlbnQoKSB7XHJcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJ5SWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgdGhpcy5vbkZvY3VzKClcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC5tJywgW10pXHJcbiAga2V5Q2xvc2VFdmVudCgpIHtcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC5iJywgW10pXHJcbiAgcmVtb3RlU2VhcmNoQnlUZXh0KCkge1xyXG4gICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IHRydWVcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAvL3RoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC55JywgW10pXHJcbiAgcmVtb3RlU2VhcmNoQnlJZCgpIHtcclxuICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2VcclxuICAgIHRoaXMuc2VhcmNoQnlJZCA9IHRydWU7XHJcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgLy90aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG9Mb2NhbFRpbWUodGltZSkge1xyXG4gICAgdmFyIHV0Y0RhdGUgPSBtb21lbnQudXRjKHRpbWUpLmZvcm1hdCgpO1xyXG4gICAgdmFyIGxvY2FsRGF0ZSA9IG1vbWVudC51dGModXRjRGF0ZSkubG9jYWwoKS5mb3JtYXQoKTtcclxuICAgIHJldHVybiBsb2NhbERhdGU7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplV29ya3NwYWNlRm9ybSgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb2xlSWRzID0gbnVsbDtcclxuICAgIHRoaXMuZGlzYWJsZVdvcmtzcGFjZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5kaXNhYmxlV29ya3NwYWNlaGlkZSA9IGZhbHNlO1xyXG4gICAgdGhpcy53b3Jrc3BhY2VGb3JtID0gbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgIHdvcmtzcGFjZU5hbWU6IG5ldyBGb3JtQ29udHJvbChudWxsLFxyXG4gICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXHJcbiAgICAgICAgXSlcclxuICAgICAgKSxcclxuICAgICAgc2VsZWN0ZWRSb2xlczogbmV3IEZvcm1Db250cm9sKG51bGwsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICAgICBdKVxyXG4gICAgICApLFxyXG4gICAgICBkZXNjcmlwdGlvbjogbmV3IEZvcm1Db250cm9sKG51bGwsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMDApXHJcbiAgICAgICAgXSlcclxuICAgICAgKSxcclxuICAgICAgZWRpdFJvbGVJZHM6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbXSksXHJcbiAgICAgIGRlbGV0ZVJvbGVJZHM6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbXSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuICAgIHRoaXMuZGVmYXVsdERhc2hib2FyZElkID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkgPyBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkKSkgOiBudWxsOztcclxuXHJcbiAgICAvL3RoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEdldENvbXBhbnlUaGVtZVRyaWdnZXJlZCgpKTtcclxuICAgIHRoaXMuYWRtaW5Ub29scyA9IFtdO1xyXG4gICAgLy8gdmFyIGRhc2hib2FyZHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGFzaGJvYXJkcykpO1xyXG4gICAgLy8gaWYgKGRhc2hib2FyZHMgJiYgZGFzaGJvYXJkcyAhPSBcIm51bGxcIikge1xyXG4gICAgLy8gICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wID0gZGFzaGJvYXJkcztcclxuICAgIC8vIH1cclxuICAgIC8vIHZhciBtZW51SXRlbXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTWVudUl0ZW1zKSlcclxuICAgIC8vIGlmIChtZW51SXRlbXMgJiYgbWVudUl0ZW1zICE9IFwibnVsbFwiKSB7XHJcbiAgICAvLyAgIHRoaXMubWVudUl0ZW0gPSBtZW51SXRlbXM7XHJcbiAgICAvLyAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIC8vIH1cclxuICAgIC8vIHZhciB3aWRnZXRzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkZhdm91cml0ZVdpZGdldHMpKTtcclxuICAgIC8vIGlmICh3aWRnZXRzICYmIHdpZGdldHMgIT0gXCJudWxsXCIpIHtcclxuICAgIC8vICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHMgPSB3aWRnZXRzO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gdmFyIHJlY2VudFNlYXJjaGVzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJlY2VudFNlYXJjaGVzKSk7XHJcbiAgICAvLyBpZiAocmVjZW50U2VhcmNoZXMgJiYgcmVjZW50U2VhcmNoZXMgIT0gXCJudWxsXCIpIHtcclxuICAgIC8vICAgdGhpcy5hbGxzZWFyY2hlcyA9IHRoaXMucmVjZW50U2VhcmNoZXMgPSByZWNlbnRTZWFyY2hlcztcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMubG9hZFdpZGdldHNMaXN0KCk7XHJcbiAgICAvLyAgdGhpcy5sb2FkV29ya3NwYWNlc0xpc3QoKTtcclxuICAgIHRoaXMuZ2V0U29mdExhYmVsQ29uZmlndXJhdGlvbnMoKTtcclxuICAgIHRoaXMuZ2V0Q29tcGFueVNldHRpbmdzKCk7XHJcbiAgICB0aGlzLm1lbnVJdGVtcyQgPSB0aGlzLnN0b3JlLnBpcGUoXHJcbiAgICAgIHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXRDdXJyZW50QWN0aXZlTWVudUNhdGVnb3J5TWVudUl0ZW1zKSxcclxuICAgICAgdGFwKG1lbnVMaXN0ID0+IGNvbnNvbGUubG9nKG1lbnVMaXN0KSlcclxuICAgICk7XHJcbiAgICAvLyB0aGlzLm1lbnVJdGVtcyQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgLy8gICB2YXIgYSA9IHg7XHJcbiAgICAvLyAgIHZhciBiID0gdGhpcy5tZW51SXRlbS5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKTtcclxuXHJcbiAgICAvLyAgIC8vdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICAvLyAgIC8vdGhpcy5tZW51c2ZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgLy8gfSk7XHJcblxyXG4gICAgLy8gdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgR2V0QWxsTWVudUl0ZW1zVHJpZ2dlcmVkKE1lbnVDYXRlZ29yaWVzLk1haW4pKTtcclxuXHJcbiAgICB2YXIgY29tcGFueVNldHRpbmdzTW9kZWwgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueVNldHRpbmdzKSk7XHJcblxyXG4gICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWFpbkxvZ287XHJcbiAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNaW5pTG9nbztcclxuXHJcbiAgICBpZiAodGhpcy5jb21wYW55TWFpbkxvZ28gPT0gXCJcIiB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSBudWxsIHx8IHRoaXMuY29tcGFueU1haW5Mb2dvID09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29tcGFueU1pbmlMb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB0aGlzLmNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICB9XHJcbiAgICAvL3RoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRMaXN0ID0gW107XHJcblxyXG4gICAgLy8gdGhpcy5jdXN0YXBwID0ge1xyXG4gICAgLy8gICBuYW1lOiBcIkN1c3RvbSBhcHBsaWNhdGlvbnNcIixcclxuICAgIC8vICAgbGluazogXCIvYXBwbGljYXRpb25zL2N1c3RvbS1hcHBsaWNhdGlvbnNcIixcclxuICAgIC8vICAgcGVybWlzc2lvbjogdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9ucyRcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMuZm9ybXMgPSB7XHJcbiAgICAvLyAgIG5hbWU6IFwiRm9ybXNcIixcclxuICAgIC8vICAgbGluazogXCIvYXBwbGljYXRpb25zL3ZpZXctZm9ybXNcIixcclxuICAgIC8vICAgcGVybWlzc2lvbjogdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXMkXHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLnByb2plY3RSb2xlQ29uZmlndXJhdGlvbiA9IHtcclxuICAgIC8vICAgbmFtZTogXCJQcm9qZWN0IHJvbGUgY29uZmlndXJhdGlvblwiLFxyXG4gICAgLy8gICBsaW5rOiBcIi9yb2xlbWFuYWdlbWVudC9lbnRpdHlyb2xlbWFuYWdlbWVudFwiLFxyXG4gICAgLy8gICBwZXJtaXNzaW9uOiB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMkXHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLnJvbGVDb25maWd1cmF0aW9uID0ge1xyXG4gICAgLy8gICBuYW1lOiBcIlJvbGUgY29uZmlndXJhdGlvblwiLFxyXG4gICAgLy8gICBsaW5rOiBcIi9yb2xlbWFuYWdlbWVudC9yb2xlbWFuYWdlbWVudFwiLFxyXG4gICAgLy8gICBwZXJtaXNzaW9uOiB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlcyRcclxuICAgIC8vIH1cclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zIH0pKTtcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMkLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMgPSByZXN1bHQ7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcclxuICAgIC8vICAgICB0aGlzLmFkbWluVG9vbHMuc29tZSgoZmxvdykgPT4gZmxvdy5uYW1lID09ICdDdXN0b20gYXBwbGljYXRpb25zJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5jdXN0YXBwKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0gfSkpO1xyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUZvcm0kLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtID0gcmVzdWx0O1xyXG4gICAgLy8gICBpZiAocmVzdWx0KSB7XHJcbiAgICAvLyAgICAgdGhpcy5hZG1pblRvb2xzLnNvbWUoKGZsb3cpID0+IGZsb3cubmFtZSA9PSAnRm9ybXMnKSA/IG51bGwgOiB0aGlzLmFkbWluVG9vbHMucHVzaCh0aGlzLmZvcm1zKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9WaWV3Rm9ybXMgfSkpOyAgICAvLyAvL3RoaXMucm91dGUudXJsLnN1YnNjcmliZSgodXJsKSA9PiB0aGlzLnVybCA9IHVybC50b1N0cmluZygpKTtcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdGb3JtcyA9IHJlc3VsdDtcclxuICAgIC8vICAgaWYgKHJlc3VsdCkge1xyXG4gICAgLy8gICAgIHRoaXMuYWRtaW5Ub29scy5zb21lKChmbG93KSA9PiBmbG93Lm5hbWUgPT0gJ0Zvcm1zJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5mb3Jtcyk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMgfSkpO1xyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX01hbmFnZVByb2plY3RSb2xlUGVybWlzc2lvbnMgPSByZXN1bHQ7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcclxuICAgIC8vICAgICB0aGlzLmFkbWluVG9vbHMuc29tZSgoZmxvdykgPT4gZmxvdy5uYW1lID09ICdQcm9qZWN0IHJvbGUgY29uZmlndXJhdGlvbicpID8gbnVsbCA6IHRoaXMuYWRtaW5Ub29scy5wdXNoKHRoaXMucHJvamVjdFJvbGVDb25maWd1cmF0aW9uKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9WaWV3Um9sZXMgfSkpO1xyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXMkLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzID0gcmVzdWx0O1xyXG4gICAgLy8gICBpZiAocmVzdWx0KSB7XHJcbiAgICAvLyAgICAgdGhpcy5hZG1pblRvb2xzLnNvbWUoKGZsb3cpID0+IGZsb3cubmFtZSA9PSAnUm9sZSBjb25maWd1cmF0aW9uJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5yb2xlQ29uZmlndXJhdGlvbik7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmRvZXNVc2VySGF2ZVBlcm1pc3Npb24sIHsgZmVhdHVyZUlkOiBGZWF0dXJlSWRzLkZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzIH0pKTtcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgIC8vICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgPSByZXN1bHQ7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcclxuICAgIC8vICAgIC8vIHRoaXMuZ2V0QWxsRW1wbG95ZWVzKCk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICB0aGlzLnRvb2xzID0gdGhpcy5hZG1pblRvb2xzO1xyXG4gICAgLy90aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgLy90aGlzLmdldEFsbEVtcGxveWVlcygpO1xyXG4gICAgLy8gdGhpcy5sb2FkV2lkZ2V0c0xpc3QobnVsbCk7XHJcbiAgICAvLyB0aGlzLmxvYWRXb3Jrc3BhY2VzTGlzdCgpO1xyXG4gICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XHJcbiAgICAvLyBpZih0aGlzLml0ZW1zLmxlbmd0aD4wKSB7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7IHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgLy8gfSBlbHNlIGlmKHRoaXMudG9vbHMubGVuZ3RoPjApIHtcclxuICAgIC8vICAgdGhpcy50PTA7IHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnRvb2xzWzBdO1xyXG4gICAgLy8gfSBlbHNlIGlmKHRoaXMud29ya3NwYWNlcy5sZW5ndGg+MCkge1xyXG4gICAgLy8gICB0aGlzLndzID0gMDsgdGhpcy5pdGVtQ2xpY2tlZCA9dGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgLy8gfSAgXHJcblxyXG4gICAgdGhpcy5TZWFyY2hJdGVtID0gXy5kZWJvdW5jZSh0aGlzLlNlYXJjaEl0ZW0sIDEwMDApO1xyXG4gICAgdGhpcy5yb3V0ZXMuZXZlbnRzXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9wZW5JbmZvKGluZm9Qb3BPdmVyKSB7XHJcbiAgICBpbmZvUG9wT3Zlci5vcGVuUG9wb3ZlcigpO1xyXG4gIH1cclxuXHJcbiAgLy8gZ2V0QWxsUHJvamVjdHMoKSB7XHJcbiAgLy8gICBjb25zdCBwcm9qZWN0U2VhcmNoUmVzdWx0ID0gbmV3IFByb2plY3RTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwoKTtcclxuICAvLyAgIHByb2plY3RTZWFyY2hSZXN1bHQuaXNBcmNoaXZlZCA9IGZhbHNlO1xyXG4gIC8vICAgdGhpcy5jb21tb25TZXJ2aWNlLnNlYXJjaFByb2plY3RzKHByb2plY3RTZWFyY2hSZXN1bHQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gIC8vICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyA9PSB0cnVlKSB7XHJcbiAgLy8gICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpIHtcclxuICAvLyAgICAgICAgIHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMgPSByZXNwb25zZS5kYXRhO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBlbHNlIHtcclxuICAvLyAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlID0gcmVzcG9uc2UuYXBpUmVzcG9uc2VNZXNzYWdlc1swXS5tZXNzYWdlO1xyXG4gIC8vICAgICAgIHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMgPSBbXTtcclxuICAvLyAgICAgICB0aGlzLnRvYXN0ci5lcnJvcih0aGlzLnZhbGlkYXRpb25NZXNzYWdlKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSlcclxuICAvLyB9XHJcblxyXG4gIGdldENvbXBhbnlTZXR0aW5ncygpIHtcclxuICAgIGxldCBjb21wYW55U2V0dGluZ3NNb2RlbCA9IFtdO1xyXG4gICAgdGhpcy5jb21wYW55U2V0dGluZ3NNT2RlbCQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldENvbXBhbnlTZXR0aW5ncykpO1xyXG4gICAgdGhpcy5jb21wYW55U2V0dGluZ3NNT2RlbCQuc3Vic2NyaWJlKCh4KSA9PiBjb21wYW55U2V0dGluZ3NNb2RlbCA9IHgpO1xyXG4gICAgbGV0IGJ1Z0JvYXJkUmVzdWx0ID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmlsdGVyKGl0ZW0gPT4gaXRlbS5rZXkudHJpbSgpID09IFwiRW5hYmxlQnVnQm9hcmRcIik7XHJcbiAgICBpZiAoYnVnQm9hcmRSZXN1bHQgJiYgYnVnQm9hcmRSZXN1bHQubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmlzRW5hYmxlQnVnQm9hcmQgPSBidWdCb2FyZFJlc3VsdFswXS52YWx1ZSA9PSBcIjFcIiA/IHRydWUgOiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcclxuICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xyXG5cclxuICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKS5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHRoaXMuY29tcGFueU1pbmlMb2dvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRTZWFyY2hEYXRhKCkge1xyXG4gICAgdmFyIG1lbnVJdGVtcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5NZW51SXRlbXMpKVxyXG4gICAgaWYgKG1lbnVJdGVtcyAmJiBtZW51SXRlbXMgIT0gXCJudWxsXCIpIHtcclxuICAgICAgdGhpcy5tZW51SXRlbSA9IG1lbnVJdGVtcztcclxuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMubWVudUl0ZW0uZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlICE9IFwiZHJvcERvd25cIik7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgfVxyXG4gICAgdmFyIHdpZGdldHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRmF2b3VyaXRlV2lkZ2V0cykpO1xyXG4gICAgaWYgKHdpZGdldHMgJiYgd2lkZ2V0cyAhPSBcIm51bGxcIikge1xyXG4gICAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA9IHdpZGdldHM7XHJcbiAgICB9XHJcbiAgICB2YXIgcmVjZW50U2VhcmNoZXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuUmVjZW50U2VhcmNoZXMpKTtcclxuICAgIGlmIChyZWNlbnRTZWFyY2hlcyAmJiByZWNlbnRTZWFyY2hlcyAhPSBcIm51bGxcIikge1xyXG4gICAgICB0aGlzLmFsbHNlYXJjaGVzID0gdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHJlY2VudFNlYXJjaGVzO1xyXG4gICAgfVxyXG4gIH1cclxuICB0cmFuc2xhdGVhcHBsaWNhdGlvbm5hbWUoaXRlbSkge1xyXG4gICAgaWYgKGl0ZW0gPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHZhciBsb2NhbHZhcmlhYmxlID0gaXRlbS50cmltKCk7XHJcbiAgICB2YXIgbmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiQVBQLlwiICsgbG9jYWx2YXJpYWJsZSk7XHJcbiAgICBpZiAobmFtZS5pbmRleE9mKFwiQVBQLlwiKSAhPSAtMSkge1xyXG4gICAgICByZXR1cm4gaXRlbTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmFtZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRm9jdXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2VhcmNoQnlJZCAmJiAhdGhpcy5zZWFyY2hCeVRleHQpIHtcclxuICAgICAgdmFyIHJldHJpZXZlRGFzaGJvYXJkczogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAgIHZhciBkYXNoYm9hcmRzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EYXNoYm9hcmRzKTtcclxuICAgICAgaWYgKGRhc2hib2FyZHMgJiYgZGFzaGJvYXJkcyAhPSBcIm51bGxcIikge1xyXG4gICAgICAgIHJldHJpZXZlRGFzaGJvYXJkcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMud29ya3NwYWNlc0Zvckxvb3AgPSBKU09OLnBhcnNlKGRhc2hib2FyZHMpO1xyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgICAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3AuZmlsdGVyKFxyXG4gICAgICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICAgICAgaXRlbS53b3Jrc3BhY2VOYW1lXHJcbiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy53b3Jrc3BhY2VzID0gdGhpcy53b3Jrc3BhY2VzRm9yTG9vcDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCEodGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuU2VhcmNoQ2xpY2spICYmIEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlNlYXJjaENsaWNrKSkgPT0gdHJ1ZSkpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuU2VhcmNoQ2xpY2ssIEpTT04uc3RyaW5naWZ5KHRydWUpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgIC8vIHRoaXMubG9hZFdpZGdldHNMaXN0KG51bGwpO1xyXG4gICAgICAgIC8vIHRoaXMubG9hZFdvcmtzcGFjZXNMaXN0KCk7XHJcbiAgICAgICAgLy8gdGhpcy5nZXRBbGxNZW51SXRlbXMoKTtcclxuXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nU2VhcmNoTWVudURhdGEgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucnNzLnNlYXJjaE1lbnVEYXRhKHJldHJpZXZlRGFzaGJvYXJkcylcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMuc3VjY2VzcyAmJiByZXMuZGF0YSkge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMuZGF0YS53b3Jrc3BhY2VzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtzcGFjZXMgPSByZXMuZGF0YS53b3Jrc3BhY2VzO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EYXNoYm9hcmRzLCBKU09OLnN0cmluZ2lmeSh0aGlzLndvcmtzcGFjZXMpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud29ya3NwYWNlc0Zvckxvb3AgPSB0aGlzLndvcmtzcGFjZXM7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMuZGVmYXVsdERhc2hib2FyZCA9IHRoaXMud29ya3NwYWNlcy5maW5kKGkgPT4gaS5pc0RlZmF1bHQgPT0gdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMuZGF0YS53aWRnZXRzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA9IHJlcy5kYXRhLndpZGdldHMuc29ydCgoYSwgYikgPT5cclxuICAgICAgICAgICAgICAgICAgYS53aWRnZXROYW1lLnRvTG93ZXJDYXNlKCkgPiBiLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKSA/IDEgOiAtMVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMud2lkZ2V0cyA9IHRoaXMub3JpZ2luYWxXaWRnZXRzO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5GYXZvdXJpdGVXaWRnZXRzLCBKU09OLnN0cmluZ2lmeSh0aGlzLndpZGdldHMpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLm1lbnVJdGVtcykge1xyXG4gICAgICAgICAgICAgICAgLy8gdmFyIGFwcGxpY2F0aW9ucyA9IHJlcy5kYXRhLm1lbnVJdGVtcy5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcclxuICAgICAgICAgICAgICAgIC8vICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIC8vICAgICB4Lm1lbnVDYXRlZ29yeSAmJlxyXG4gICAgICAgICAgICAgICAgLy8gICAgIE1lbnVDYXRlZ29yaWVzLk1haW4gJiZcclxuICAgICAgICAgICAgICAgIC8vICAgICB4Lm1lbnVDYXRlZ29yeS50b0xvd2VyQ2FzZSgpID09PSBNZW51Q2F0ZWdvcmllcy5NYWluLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgIC8vICAgKTtcclxuICAgICAgICAgICAgICAgIC8vIH0pXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVJdGVtID0gcmVzLmRhdGEubWVudUl0ZW1zO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5NZW51SXRlbXMsIEpTT04uc3RyaW5naWZ5KHRoaXMubWVudUl0ZW0pKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xyXG4gICAgICAgICAgICAgICAgLy90aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnJlY2VudFNlYXJjaCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxzZWFyY2hlcyA9IHJlcy5kYXRhLnJlY2VudFNlYXJjaDtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSB0aGlzLmFsbHNlYXJjaGVzO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWNlbnRTZWFyY2hlcywgSlNPTi5zdHJpbmdpZnkodGhpcy5hbGxzZWFyY2hlcykpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZEZhdm91cml0ZVdpZGdldHMsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZFJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeShmYWxzZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTZWFyY2hNZW51RGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2FkU2VhcmNoRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAvLyAgIGlmICghKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRGYXZvdXJpdGVXaWRnZXRzKSAmJiBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkRmF2b3VyaXRlV2lkZ2V0cykpID09IGZhbHNlKSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5sb2FkV2lkZ2V0c0xpc3QobnVsbCwgdHJ1ZSk7XHJcbiAgICAgIC8vICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgLy8gICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkRmF2b3VyaXRlV2lkZ2V0cywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gICBpZiAoISh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkUmVjZW50U2VhcmNoZXMpICYmIEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRSZWNlbnRTZWFyY2hlcykpID09IGZhbHNlKSkge1xyXG4gICAgICAvLyAgICAgdGhpcy5nZXRSZWNlbnRTZWFyY2hlcygpO1xyXG4gICAgICAvLyAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZFJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeShmYWxzZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgIC8vICAgfVxyXG4gICAgICAvLyAgIHRoaXMucm91dGVyQWN0aXZlKCk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgdGhpcy5yb3V0ZXJBY3RpdmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcblxyXG4gIHJvdXRlckFjdGl2ZSgpIHtcclxuICAgIGlmICh0aGlzLnJvdXRlcy51cmwuaW5jbHVkZXMoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmRcIikgJiYgdGhpcy5yb3V0ZXMudXJsLnNwbGl0KFwiL1wiKVszXSkge1xyXG4gICAgICB2YXIgZGFzaGJvYXJkSWQgPSB0aGlzLnJvdXRlcy51cmwuc3BsaXQoXCIvXCIpWzNdO1xyXG4gICAgICBpZiAoZGFzaGJvYXJkSWQgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLndvcmtzcGFjZXMuZmluZEluZGV4KGkgPT4gaS53b3Jrc3BhY2VJZCA9PSBkYXNoYm9hcmRJZCk7XHJcbiAgICAgICAgdGhpcy53cyA9IGluZGV4O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMucm91dGVzLnVybC5pbmNsdWRlcyhcImRhc2hib2FyZC1tYW5hZ2VtZW50L3dpZGdldHNcIikgJiYgdGhpcy5yb3V0ZXMudXJsLnNwbGl0KFwiL1wiKVszXSkge1xyXG4gICAgICB2YXIgd2lkZ2V0SWQgPSB0aGlzLnJvdXRlcy51cmwuc3BsaXQoXCIvXCIpWzNdO1xyXG4gICAgICBpZiAod2lkZ2V0SWQgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLndpZGdldHMuZmluZEluZGV4KGkgPT4gaS53aWRnZXRJZCA9PSB3aWRnZXRJZCk7XHJcbiAgICAgICAgaWYgKGluZGV4ID4gMCkge1xyXG4gICAgICAgICAgdGhpcy53ZCA9IGluZGV4O1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53cyA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB2YXIgaW5kZXhScyA9IHRoaXMucmVjZW50U2VhcmNoZXMuZmluZEluZGV4KGkgPT4gaS5pdGVtSWQgPT0gd2lkZ2V0SWQpXHJcbiAgICAgICAgICB0aGlzLnJzID0gaW5kZXhScztcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzW3RoaXMucnNdO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdmFyIGluZGV4ID0gdGhpcy5pdGVtcy5maW5kSW5kZXgoaSA9PiB0aGlzLnJvdXRlcy51cmwgPT0gXCIvXCIgKyBpLnN0YXRlKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gaW5kZXg7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZFdvcmtzcGFjZXNMaXN0KCkge1xyXG4gICAgdGhpcy53b3Jrc3BhY2VzZmV0Y2hJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHZhciB3b3Jrc3BhY2VsaXN0ID0gbmV3IFdvcmtzcGFjZUxpc3QoKTtcclxuICAgIHdvcmtzcGFjZWxpc3Qud29ya3NwYWNlSWQgPSBcIm51bGxcIjtcclxuICAgIHdvcmtzcGFjZWxpc3QuaXNIaWRkZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5HZXRXb3Jrc3BhY2VMaXN0KHdvcmtzcGFjZWxpc3QpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGFzaGJvYXJkcywgSlNPTi5zdHJpbmdpZnkocmVzdWx0LmRhdGEpKTtcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzRm9yTG9vcCA9IHRoaXMud29ya3NwYWNlcztcclxuICAgICAgdGhpcy5kZWZhdWx0RGFzaGJvYXJkID0gdGhpcy53b3Jrc3BhY2VzLmZpbmQoaSA9PiBpLmlzRGVmYXVsdCA9PSB0cnVlKTtcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzZmV0Y2hJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IExvYWRXb3Jrc3BhY2VzTGlzdFRyaWdnZXJlZCh0aGlzLndvcmtzcGFjZWxpc3QpKTtcclxuICB9O1xyXG5cclxuICBvcGVuQXBwcygpIHtcclxuICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcImFwcC1zdG9yZS93aWRnZXRzXCJdKTtcclxuICB9XHJcblxyXG4gIGxvYWRXaWRnZXRzTGlzdChzZWFyY2hUZXh0LCBzdG9yZSA9IGZhbHNlKSB7XHJcbiAgICB0aGlzLndpZGdldHNmZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgdGhpcy53aWRnZXQgPSBuZXcgV2lkZ2V0TGlzdCgpO1xyXG4gICAgdGhpcy53aWRnZXQud2lkZ2V0SWQgPSBcIm51bGxcIjtcclxuICAgIHRoaXMud2lkZ2V0LmlzQXJjaGl2ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMud2lkZ2V0LnBhZ2VOdW1iZXIgPSBudWxsO1xyXG4gICAgdGhpcy53aWRnZXQucGFnZVNpemUgPSBudWxsO1xyXG4gICAgdGhpcy53aWRnZXQuc29ydERpcmVjdGlvbkFzYyA9IHRydWU7XHJcbiAgICB0aGlzLndpZGdldC5pc0Zhdm91cml0ZVdpZGdldCA9IHRydWU7XHJcbiAgICBpZiAoc2VhcmNoVGV4dClcclxuICAgICAgdGhpcy53aWRnZXQuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQ7XHJcblxyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLkdldFdpZGdldHNCYXNlZE9uVXNlcih0aGlzLndpZGdldCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLndpZGdldHMgPSBbXTtcclxuICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5vcmlnaW5hbFdpZGdldHMgPSByZXN1bHQuZGF0YS5zb3J0KChhLCBiKSA9PlxyXG4gICAgICAgICAgYS53aWRnZXROYW1lLnRvTG93ZXJDYXNlKCkgPiBiLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKSA/IDEgOiAtMVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHM7XHJcbiAgICAgICAgaWYgKHN0b3JlKSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkZhdm91cml0ZVdpZGdldHMsIEpTT04uc3RyaW5naWZ5KHRoaXMud2lkZ2V0cykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLndpZGdldHNmZXRjaEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIHZhciBjb21wYW55U2V0dGluZ3NNb2RlbCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55U2V0dGluZ3MpKTtcclxuXHJcbiAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcclxuICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xyXG4gICAgLy8gdGhpcy5jb21wYW55TWFpbkxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvKTtcclxuICAgIC8vIHRoaXMuY29tcGFueU1pbmlMb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbyk7XHJcblxyXG4gICAgaWYgKHRoaXMuY29tcGFueU1haW5Mb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy5jb21wYW55TWluaUxvZ28pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGdldEFsbEVtcGxveWVlcygpIHtcclxuICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgfSkpO1xyXG4gICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyA9IHJlc3VsdDtcclxuICAgIH0pXHJcbiAgICBsZXQgZW1wbG95ZWVTcGVudFRpbWUgPSBuZXcgRW1wbG95ZWVMaXN0SW5wdXQoKTtcclxuICAgIGVtcGxveWVlU3BlbnRUaW1lLnNvcnREaXJlY3Rpb25Bc2MgPSB0cnVlO1xyXG4gICAgZW1wbG95ZWVTcGVudFRpbWUuaXNBY3RpdmUgPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5ockRhc2hib2FyU2VydmljZS5HZXRBbGxFbXBsb3llZXMoZW1wbG95ZWVTcGVudFRpbWUpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgIC8vICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAvLyAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSByZXN1bHQuZGF0YTtcclxuICAgIC8vICAgICBpZiAoISh0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscykpIHtcclxuICAgIC8vICAgICAgIHZhciBjdXJyZW50VXNlcklkID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkN1cnJlbnRVc2VySWQpO1xyXG4gICAgLy8gICAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5maWx0ZXIoeCA9PiAoeC51c2VySWQudG9Mb3dlckNhc2UoKSA9PSBjdXJyZW50VXNlcklkLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgdGhpcy5lbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdDtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSlcclxuXHJcbiAgICBjb25zdCBlbXBsb3llZUxpc3RTZWFyY2hSZXN1bHQgPSBuZXcgRW1wbG95ZWVMaXN0TW9kZWwoKTtcclxuICAgIGVtcGxveWVlTGlzdFNlYXJjaFJlc3VsdC5zb3J0RGlyZWN0aW9uQXNjID0gdHJ1ZTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5nZXRBbGxFbXBsb3llZXMoZW1wbG95ZWVMaXN0U2VhcmNoUmVzdWx0KS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gcmVzdWx0LmRhdGE7XHJcbiAgICAgICAgaWYgKCEodGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMpKSB7XHJcbiAgICAgICAgICB2YXIgY3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgICAgICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QuZmlsdGVyKHggPT4gKHgudXNlcklkLnRvTG93ZXJDYXNlKCkgPT0gY3VycmVudFVzZXJJZC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3Q7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAvLyAgIHRoaXMuZSA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gIC8vICAgbGV0IG91dFNpZGVDbGljayA9ICB0aGlzLmUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsKCk9PntcclxuICAvLyAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgLy8gfSk7XHJcbiAgLy8gfVxyXG5cclxuICBPcGVuTWVudUl0ZW1zKG9wZW5NZW51UG9wVXApIHtcclxuICAgIG9wZW5NZW51UG9wVXAub3BlblBvcG92ZXIoKTtcclxuICB9XHJcblxyXG4gIG9wZW5MZXZlbDJNZW51KGxpbmssIGV2ZW50KSB7XHJcbiAgICB0aGlzLnN0YXRlTHZsMSA9IGxpbms7XHJcbiAgICB0aGlzLnN1YkxldmVscyA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgb3BlbkxldmVsM01lbnUobGluazEsIGxpbmsyLCBldmVudCkge1xyXG4gICAgdGhpcy5sZXZlbDNMaW5rMSA9IGxpbmsxO1xyXG4gICAgdGhpcy5sZXZlbDNMaW5rMiA9IGxpbmsyO1xyXG4gICAgdGhpcy5zdWJMZXZlbHNGb3JMZXZlbDIgPSBldmVudDtcclxuICB9XHJcblxyXG4gIGdldEFsbE1lbnVJdGVtcygpIHtcclxuICAgIHRoaXMubWVudXNmZXRjaEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgR2V0QWxsTWVudUl0ZW1zVHJpZ2dlcmVkKE1lbnVDYXRlZ29yaWVzLk1haW4pKTtcclxuICAgIGNvbnN0IHVzZXJSZWZlcmVuY2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCk7XHJcbiAgICB0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkpIDogbnVsbDs7XHJcbiAgICBpZiAodGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgJiYgdXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHRoaXMuZGVmYXVsdERhc2hib2FyZElkICsgXCIvZm9ybS9cIiArIHVzZXJSZWZlcmVuY2UpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCkge1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImxpdmVzL3dlbGNvbWVcIik7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvVXJsKHdvcmtzcGFjZUlkKSB7XHJcbiAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgaWYgKHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB3b3Jrc3BhY2VJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB3b3Jrc3BhY2VJZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTb2Z0TGFiZWxDb25maWd1cmF0aW9ucygpIHtcclxuICAgIHRoaXMuc29mdExhYmVscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1NvZnRMYWJlbHMnKSk7XHJcbiAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoTWVudUl0ZW1zKCkge1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0TG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMucnNzLmdldFNlYXJjaE1lbnVJdGVtcyh7IHNlYXJjaFRleHQ6IHRoaXMuc2VhcmNoVGV4dCwgc2VhcmNoVW5pcXVlSWQ6IG51bGwgfSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhICE9IG51bGwgJiYgcmVzcG9uc2UuZGF0YSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvamVjdExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiB1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0KTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+ICh1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB8fCAodXMuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiB1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8ICh1cy5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJzID0gcmVzcG9uc2UuZGF0YS5maWx0ZXIodXMgPT4gdXMuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSB1c2VycztcclxuICAgICAgICAgICAgICAgIGlmICghKHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzKSkge1xyXG4gICAgICAgICAgICAgICAgICB2YXIgY3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5maWx0ZXIoKHg6IGFueSkgPT4gKHguaXRlbUlkLnRvTG93ZXJDYXNlKCkgPT0gY3VycmVudFVzZXJJZC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0O1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvamVjdExpc3QgJiYgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFswXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICAgICAgICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Qcm9qZWN0U2VsZWN0KGl0ZW0sIGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQud2hpY2ggPT0gMSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5wcm9qZWN0TGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLnByb2plY3QsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcInByb2plY3RzL3Byb2plY3RzdGF0dXMvXCIgKyBpdGVtLml0ZW1JZCArIFwiL2FjdGl2ZS1nb2Fsc1wiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFNlYXJjaEl0ZW0oZXZlbnQpIHtcclxuICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy50aGVtZUJhc2VDb2xvciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbG9yJyk7XHJcbiAgICB2YXIgZWxlbWVudCA9XHJcbiAgICAgICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpO1xyXG4gICAgZWxlbWVudCA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwIDogbnVsbDtcclxuICAgIHZhciBlbGVtID1cclxuICAgICAgISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIik7XHJcbiAgICBlbGVtID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xyXG4gICAgdmFyIGVtcCA9ICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpO1xyXG4gICAgZW1wID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xyXG4gICAgdmFyIHdpZGdldCA9ICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpO1xyXG4gICAgd2lkZ2V0ID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDAgOiBudWxsO1xyXG4gICAgLy90aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlYXJjaEJ5VGV4dCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFNlYXJjaE1lbnVJdGVtcygpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuc2VhcmNoQnlJZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5tZW51SXRlbS5maWx0ZXIoXHJcbiAgICAgICAgaXRlbSA9PlxyXG4gICAgICAgICAgaXRlbS5tZW51LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PVxyXG4gICAgICAgICAgZmFsc2UgJiYgaXRlbS50eXBlICE9IFwiZHJvcERvd25cIlxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wLmZpbHRlcihcclxuICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICBpdGVtLndvcmtzcGFjZU5hbWVcclxuICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgIGZhbHNlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuYWRtaW5Ub29scyA/IHRoaXMudG9vbHMgPSB0aGlzLmFkbWluVG9vbHMuZmlsdGVyKFxyXG4gICAgICAgIGl0ZW0gPT5cclxuICAgICAgICAgIGl0ZW0ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgIGZhbHNlXHJcbiAgICAgICkgOiBudWxsO1xyXG4gICAgICAvL3RoaXMubG9hZFdpZGdldHNMaXN0KGV2ZW50LnRhcmdldC52YWx1ZSk7XHJcbiAgICAgIHRoaXMub3JpZ2luYWxXaWRnZXRzID8gdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHMuZmlsdGVyKFxyXG4gICAgICAgIGl0ZW0gPT5cclxuICAgICAgICAgIGl0ZW0ud2lkZ2V0TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgIGZhbHNlXHJcbiAgICAgICkgOiBudWxsO1xyXG4gICAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDAgPyAodGhpcy5sb2FkZWRFbXBsb3llZUxpc3QuZmlsdGVyKHggPT5cclxuICAgICAgKCh4LmZ1bGxOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSBmYWxzZSlcclxuICAgICAgICB8fCAoeC5lbXBsb3llZU51bWJlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gZmFsc2UpXHJcbiAgICAgICAgfHwgKHguc3VyTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gZmFsc2UpKVxyXG4gICAgICApKSA6IG51bGw7XHJcbiAgICAgIC8vIHRoaXMuYWxsc2VhcmNoZXMgPyB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcy5maWx0ZXIoXHJcbiAgICAgIC8vICAgaXRlbSA9PlxyXG4gICAgICAvLyAgICAgaXRlbS5yZWNlbnRTZWFyY2gudG9Mb3dlckNhc2UoKS5pbmRleE9mKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gLTFcclxuICAgICAgLy8gKSA6IG51bGw7XHJcbiAgICAgIHRoaXMuYWxsc2VhcmNoZXMgPyB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcy5maWx0ZXIoXHJcbiAgICAgICAgaXRlbSA9PlxyXG4gICAgICAgICAgaXRlbS5yZWNlbnRTZWFyY2gudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09XHJcbiAgICAgICAgICBmYWxzZVxyXG4gICAgICApIDogbnVsbDtcclxuXHJcbiAgICAgIGlmIChldmVudC50YXJnZXQudmFsdWUgJiYgZXZlbnQudGFyZ2V0LnZhbHVlLnNlYXJjaCgnLScpID4gMCkge1xyXG4gICAgICAgIHRoaXMucnNzLnNlYXJjaEdvYWxUYXNrcyhldmVudC50YXJnZXQudmFsdWUpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSAhPSBudWxsICYmIHJlc3BvbnNlLmRhdGEgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiAodXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB8fCAodXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+IHVzLnR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCAodXMudHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpKTtcclxuICAgICAgICAgICAgICAgIGlmICghKCh0aGlzLml0ZW1zLmxlbmd0aCA+IDAgJiYgdGhpcy5pdGVtcykgfHwgKHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB8fCAodGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB8fCAodGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSkpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgLy8gICBjb25zdCB1c2VyU3RvcnlTZWFyY2hDcml0ZXJpYVRlbXAgPSBuZXcgVXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFJbnB1dE1vZGVsKCk7XHJcbiAgICAgIC8vICAgdXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFUZW1wLnBhZ2VTaXplID0gMTAwMDtcclxuICAgICAgLy8gICB1c2VyU3RvcnlTZWFyY2hDcml0ZXJpYVRlbXAuc2VhcmNoVGV4dCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgICAgLy8gICAvLy5yZXBsYWNlKC9cXHMvZywgXCJcIik7XHJcblxyXG4gICAgICAvLyAgLy8gaWYgKGV2ZW50LnRhcmdldC52YWx1ZS5pbmRleE9mKCctJykpIHtcclxuICAgICAgLy8gICAgIHRoaXMudXNlclNlcnZpY2Uuc2VhcmNoVXNlclN0b3JpZXModXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFUZW1wKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHJcbiAgICAgIC8vICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICAvLyAgICAgICBsZXQgY29tcGFueVNldHRpbmdzTW9kZWwgPSBbXTtcclxuXHJcbiAgICAgIC8vICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEgIT0gbnVsbCAmJiByZXNwb25zZS5kYXRhICE9IHVuZGVmaW5lZCAmJiByZXNwb25zZS5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgLy8gICAgICAgICB2YXIgdXNlclN0b3JpZXNMaXN0ID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgLy8gICAgICAgICB0aGlzLmNvbXBhbnlTZXR0aW5nc01PZGVsJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Q29tcGFueVNldHRpbmdzKSk7XHJcbiAgICAgIC8vICAgICAgICAgdGhpcy5jb21wYW55U2V0dGluZ3NNT2RlbCQuc3Vic2NyaWJlKCh4KSA9PiBjb21wYW55U2V0dGluZ3NNb2RlbCA9IHgpO1xyXG4gICAgICAvLyAgICAgICAgIGxldCBidWdCb2FyZFJlc3VsdCA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbHRlcihpdGVtID0+IGl0ZW0ua2V5LnRyaW0oKSA9PSBcIkVuYWJsZUJ1Z0JvYXJkXCIpO1xyXG4gICAgICAvLyAgICAgICAgIGlmIChidWdCb2FyZFJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vICAgICAgICAgICB0aGlzLmlzRW5hYmxlQnVnQm9hcmQgPSBidWdCb2FyZFJlc3VsdFswXS52YWx1ZSA9PSBcIjFcIiA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgLy8gICAgICAgICB9XHJcbiAgICAgIC8vICAgICAgICAgaWYgKCF0aGlzLmlzRW5hYmxlQnVnQm9hcmQpIHtcclxuICAgICAgLy8gICAgICAgICAgIHVzZXJTdG9yaWVzTGlzdCA9IHVzZXJTdG9yaWVzTGlzdC5tYXAoKHgpID0+IHguaXNCdWcgPT0gZmFsc2UpO1xyXG4gICAgICAvLyAgICAgICAgIH1cclxuXHJcbiAgICAgIC8vICAgICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gdXNlclN0b3JpZXNMaXN0Lm1hcChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAvLyAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgLy8gICAgICAgICAgICAgZ29hbElkOiBpdGVtLmdvYWxJZCxcclxuICAgICAgLy8gICAgICAgICAgICAgZ29hbE5hbWU6IGl0ZW0uZ29hbE5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIGdvYWxTaG9ydE5hbWU6IGl0ZW0uZ29hbFNob3J0TmFtZSxcclxuICAgICAgLy8gICAgICAgICAgICAgZ29hbFVuaXF1ZU5hbWU6IGl0ZW0uZ29hbFVuaXF1ZU5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHByb2plY3RJZDogaXRlbS5wcm9qZWN0SWQsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHByb2plY3ROYW1lOiBpdGVtLnByb2plY3ROYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICBzcHJpbnRJZDogaXRlbS5zcHJpbnRJZCxcclxuICAgICAgLy8gICAgICAgICAgICAgc3ByaW50TmFtZTogaXRlbS5zcHJpbnROYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlJZDogaXRlbS51c2VyU3RvcnlJZCxcclxuICAgICAgLy8gICAgICAgICAgICAgdXNlclN0b3J5TmFtZTogaXRlbS51c2VyU3RvcnlOYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlTdGF0dXNOYW1lOiBpdGVtLnVzZXJTdG9yeVN0YXR1c05hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHVzZXJTdG9yeVR5cGVOYW1lOiBpdGVtLnVzZXJTdG9yeVR5cGVOYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlVbmlxdWVOYW1lOiBpdGVtLnVzZXJTdG9yeVVuaXF1ZU5hbWVcclxuICAgICAgLy8gICAgICAgICAgIH1cclxuICAgICAgLy8gICAgICAgICB9KTtcclxuXHJcbiAgICAgIC8vICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIC8vICAgICAgIH1cclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyAgLy8gfVxyXG5cclxuICAgICAgLy8gICBsZXQgc2VhcmNoR29hbHMgPSBuZXcgR29hbFNlYXJjaENyaXRlcmlhQXBpSW5wdXRNb2RlbCgpO1xyXG4gICAgICAvLyAgIHNlYXJjaEdvYWxzLnNlYXJjaFRleHQgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAgIC8vICAgLy8ucmVwbGFjZSgvXFxzL2csIFwiXCIpO1xyXG4gICAgICAvLyAgIC8vaWYgKGV2ZW50LnRhcmdldC52YWx1ZS5pbmRleE9mKCctJykpIHtcclxuICAgICAgLy8gICB0aGlzLnVzZXJTZXJ2aWNlLnNlYXJjaEdvYWxzKHNlYXJjaEdvYWxzKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgLy8gICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuXHJcbiAgICAgIC8vICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhICE9IG51bGwgJiYgcmVzcG9uc2UuZGF0YSAhPSB1bmRlZmluZWQgJiYgcmVzcG9uc2UuZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLm1hcChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAvLyAgICAgICAgIHJldHVybiB7XHJcbiAgICAgIC8vICAgICAgICAgICBnb2FsSWQ6IGl0ZW0uZ29hbElkLFxyXG4gICAgICAvLyAgICAgICAgICAgZ29hbE5hbWU6IGl0ZW0uZ29hbE5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICBnb2FsU2hvcnROYW1lOiBpdGVtLmdvYWxTaG9ydE5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICBnb2FsVW5pcXVlTmFtZTogaXRlbS5nb2FsVW5pcXVlTmFtZSxcclxuICAgICAgLy8gICAgICAgICAgIHByb2plY3RJZDogaXRlbS5wcm9qZWN0SWQsXHJcbiAgICAgIC8vICAgICAgICAgICBwcm9qZWN0TmFtZTogaXRlbS5wcm9qZWN0TmFtZVxyXG4gICAgICAvLyAgICAgICAgIH1cclxuICAgICAgLy8gICAgICAgfSk7XHJcblxyXG4gICAgICAvLyAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgLy8gICAgIH1cclxuXHJcbiAgICAgIC8vICAgfSlcclxuICAgICAgLy8gLy99XHJcblxyXG4gICAgICAvLyBpZiAoISh0aGlzLml0ZW1zLmxlbmd0aCA+IDApICYmICEodGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkgJiYgISh0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApICYmICEodGhpcy53aWRnZXRzLmxlbmd0aCA+IDApICYmICEodGhpcy50b29scy5sZW5ndGggPiAwKSAmJiAhKHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSkge1xyXG4gICAgICBpZiAoISh0aGlzLml0ZW1zLmxlbmd0aCA+IDApICYmICEodGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSAmJiAhKHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSAmJiAhKHRoaXMudG9vbHMubGVuZ3RoID4gMCkgJiYgISh0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkpIHtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgICAgICB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnRvb2xzICYmIHRoaXMudG9vbHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudCA9IDA7XHJcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudG9vbHNbMF07XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy53b3Jrc3BhY2VzICYmXHJcbiAgICAgICAgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLndzID0gMDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHRoaXMud2lkZ2V0cyAmJlxyXG4gICAgICAgIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICB0aGlzLmVtcGxveWVlTGlzdCAmJlxyXG4gICAgICAgIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJlxyXG4gICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMubWVudUl0ZW0pIHtcclxuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5tZW51SXRlbVxyXG4gICAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wO1xyXG4gICAgICB0aGlzLnRvb2xzID0gdGhpcy5hZG1pblRvb2xzO1xyXG4gICAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cztcclxuICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgICAgdGhpcy5wcm9qZWN0TGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcztcclxuICAgICAgLy90aGlzLmVtcGxveWVlTGlzdCA9ICh0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCAmJiB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSA/IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0IDogW107XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gW107XHJcbiAgICAgIC8vIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIC8vIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zLmxlbmd0aCA+IDAgPyB0aGlzLml0ZW1zWzBdIDogbnVsbDtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID09IFwiXCIgPyAodGhpcy5zZWFyY2hUZXh0ID0gdW5kZWZpbmVkKSA6IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlU2VhcmNoKGV2ZW50KSB7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtXHJcbiAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKVxyXG4gICAgICAuc29ydCgoYSwgYikgPT4gKGEubWVudS50b0xvd2VyQ2FzZSgpID4gYi5tZW51LnRvTG93ZXJDYXNlKCkgPyAxIDogLTEpKTtcclxuICAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3A7XHJcbiAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cztcclxuICAgIHRoaXMudG9vbHMgPSB0aGlzLmFkbWluVG9vbHM7XHJcbiAgICB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcztcclxuICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMucHJvamVjdExpc3QgPSBbXTtcclxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDAgPyB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA6IFtdO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZShldmVudCwgaXRlbSkge1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoQnlJZCkge1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLnJzcy5nZXRTZWFyY2hNZW51SXRlbXMoeyBzZWFyY2hUZXh0OiBudWxsLCBzZWFyY2hVbmlxdWVJZDogdGhpcy5zZWFyY2hUZXh0IH0pXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICBpZiAocmVzLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucmVkaXJlY3RUb1JvdXRlKHJlcy5kYXRhWzBdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKCdHaXZlbiBJZCBpcyBub3QgdmFsaWQsIHBsZWFzZSBwcm92aWRlIGNvcnJlY3QgaWQgdG8gbmF2aWdhdGUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmICghcmVzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzLmFwaVJlc3BvbnNlTWVzc2FnZXNbMF0ubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGl0ZW0pIHtcclxuICAgICAgdGhpcy5yZWRpcmVjdFRvUm91dGUoaXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWRpcmVjdFRvUm91dGUoaXRlbSkge1xyXG4gICAgdmFyIG5hbWU7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgfHwgdGhpcy5zZWFyY2hCeUlkKSB7XHJcbiAgICAgIGlmIChpdGVtLml0ZW1UeXBlICYmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcpIHx8IChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgICAvL3RoaXMuSW5zZXJ0U2VhcmNoKGl0ZW0udW5pcXVlbk5hbWUpO1xyXG4gICAgICAgIC8vaWYgKHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudC5wcm9qZWN0SWQgPT0gaXRlbS5wcm9qZWN0SWQpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB7XHJcbiAgICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS53b3JrSXRlbU9yQnVnLCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbVwiLCBpdGVtLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmFkaG9jLCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW1cIiwgaXRlbS5pdGVtSWRdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uaXRlbVR5cGUgJiYgKGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCBpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50LnByb2plY3RJZCA9PSBpdGVtLnByb2plY3RJZCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGlmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwpIHtcclxuICAgICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmdvYWwsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL2dvYWxcIiwgaXRlbS5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5zcHJpbnQsIGl0ZW0uaXRlbUlkKTtcclxuICAgICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3NwcmludFwiLCBpdGVtLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHRoaXMuc2VhcmNoQnlJZCA/IGl0ZW0uaXRlbVVuaXF1ZU5hbWUgOiBpdGVtLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlLCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcclxuICAgICAgICAgIFwiL2Rhc2hib2FyZC9wcm9maWxlL1wiICsgaXRlbS5pdGVtSWQgKyBcIi9vdmVydmlld1wiXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5wcm9qZWN0LCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJwcm9qZWN0cy9wcm9qZWN0c3RhdHVzL1wiICsgaXRlbS5pdGVtSWQgKyBcIi9hY3RpdmUtZ29hbHNcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmIChpdGVtLm1lbnUpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgbmFtZSA9IGl0ZW0ubWVudTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW2l0ZW0uc3RhdGVdKTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2gobmFtZSwgUmVjZW50U2VhcmNoVHlwZS5tZW51LCBpdGVtLmlkKTtcclxuICAgIH1cclxuICAgIC8vIGVsc2UgaWYgKGl0ZW0ucGVybWlzc2lvbikge1xyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgIC8vICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgLy8gICBuYW1lID0gaXRlbS5uYW1lO1xyXG4gICAgLy8gICB0aGlzLkluc2VydFNlYXJjaChuYW1lLCBSZWNlKTtcclxuICAgIC8vICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW2l0ZW0ubGlua10pO1xyXG4gICAgLy8gfSBcclxuICAgIGVsc2UgaWYgKGl0ZW0ud29ya3NwYWNlSWQpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgbmFtZSA9IGl0ZW0ud29ya3NwYWNlTmFtZTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2gobmFtZSwgUmVjZW50U2VhcmNoVHlwZS5kYXNoYm9hcmQsIGl0ZW0ud29ya3NwYWNlSWQpO1xyXG4gICAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgICBpZiAodXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgaXRlbS53b3Jrc3BhY2VJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgaXRlbS53b3Jrc3BhY2VJZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoaXRlbS53aWRnZXRJZCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICBuYW1lID0gaXRlbS53aWRnZXROYW1lO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChuYW1lLCBSZWNlbnRTZWFyY2hUeXBlLndpZGdldCwgaXRlbS53aWRnZXRJZCk7XHJcbiAgICAgIHRoaXMuUmVkaXJlY3RUb0FwcChpdGVtKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLlNlYXJjaFJlY2VudEl0ZW0oaXRlbSwgZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIEluc2VydFNlYXJjaChuYW1lLCByZWNlbnRTZWFyY2hUeXBlLCBpZCkge1xyXG4gICAgdGhpcy5yc3MuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogbmFtZSwgcmVjZW50U2VhcmNoVHlwZTogcmVjZW50U2VhcmNoVHlwZSwgaXRlbUlkOiBpZCB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAvLyB0aGlzLnJlY2VudFNlYXJjaGVzLmluY2x1ZGVzKG5hbWUpXHJcbiAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSh0aGlzLnJlY2VudFNlYXJjaGVzLmluZGV4T2YobmFtZSksIDEpLFxyXG4gICAgICAgIC8vICAgICB0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSgwLCAwLCBuYW1lKSlcclxuICAgICAgICAvLyAgIDogdGhpcy5yZWNlbnRTZWFyY2hlcy51bnNoaWZ0KG5hbWUpO1xyXG4gICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBTZWFyY2hSZWNlbnRJdGVtKHNlYXJjaCwgZXZlbnQpIHtcclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLm1lbnUpIHtcclxuICAgICAgdmFyIGl0ZW0gPSB0aGlzLml0ZW1zLmZpbHRlcihcclxuICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICBpdGVtLm1lbnUudG9Mb3dlckNhc2UoKSA9PSBzZWFyY2gucmVjZW50U2VhcmNoLnRvTG93ZXJDYXNlKClcclxuICAgICAgKTtcclxuICAgICAgaXRlbS5sZW5ndGggPiAwID8gdGhpcy5uYXZpZ2F0ZShldmVudCwgaXRlbVswXSkgOiBudWxsXHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUuZGFzaGJvYXJkKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUuZGFzaGJvYXJkLCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgY29uc3QgdXNlclJlZmVyZW5jZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkKTtcclxuICAgICAgaWYgKHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHNlYXJjaC5pdGVtSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0LCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoXHJcbiAgICAgICAgW1wiZGFzaGJvYXJkLW1hbmFnZW1lbnQvd2lkZ2V0c1wiLCBzZWFyY2guaXRlbUlkXVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLmFkaG9jKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUuYWRob2MsIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW1cIiwgc2VhcmNoLml0ZW1JZF0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLndvcmtJdGVtT3JCdWcpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goc2VhcmNoLnJlY2VudFNlYXJjaCwgUmVjZW50U2VhcmNoVHlwZS53b3JrSXRlbU9yQnVnLCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvd29ya2l0ZW1cIiwgc2VhcmNoLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUuZ29hbCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLmdvYWwsIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsXCIsIHNlYXJjaC5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLnNwcmludCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLnNwcmludCwgc2VhcmNoLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3NwcmludFwiLCBzZWFyY2guaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5wcm9qZWN0KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUucHJvamVjdCwgc2VhcmNoLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJwcm9qZWN0cy9wcm9qZWN0c3RhdHVzL1wiICsgc2VhcmNoLml0ZW1JZCArIFwiL2FjdGl2ZS1nb2Fsc1wiKTtcclxuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5lbXBsb3llZSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlLCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcclxuICAgICAgICBcIi9kYXNoYm9hcmQvcHJvZmlsZS9cIiArIHNlYXJjaC5pdGVtSWQgKyBcIi9vdmVydmlld1wiXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RNZW51KGV2ZW50LCBjbGljaykge1xyXG4gICAgaWYgKGNsaWNrLndoaWNoID09IDEgJiYgZXZlbnQud29ya3NwYWNlSWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5SWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgICBpZiAodXNlclJlZmVyZW5jZSAhPSBcIm51bGxcIiAmJiB1c2VyUmVmZXJlbmNlICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgZXZlbnQud29ya3NwYWNlSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIGV2ZW50LndvcmtzcGFjZUlkKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdGVkRGFzaGJvYXJkID0gZXZlbnQud29ya3NwYWNlSWQ7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5tZW51SXRlbU5hbWUgPSBldmVudC53b3Jrc3BhY2VOYW1lO1xyXG4gICAgICB0aGlzLnJzc1xyXG4gICAgICAgIC5pbnNlcnRSZWNlbnRTZWFyY2goeyBuYW1lOiBldmVudC53b3Jrc3BhY2VOYW1lLCByZWNlbnRTZWFyY2hUeXBlOiBSZWNlbnRTZWFyY2hUeXBlLmRhc2hib2FyZCwgaXRlbUlkOiBldmVudC53b3Jrc3BhY2VJZCB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMucmVjZW50U2VhcmNoZXMuaW5jbHVkZXMoZXZlbnQud29ya3NwYWNlTmFtZSlcclxuICAgICAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZShcclxuICAgICAgICAgICAgLy8gICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmRleE9mKGV2ZW50LndvcmtzcGFjZU5hbWUpLFxyXG4gICAgICAgICAgICAvLyAgICAgICAxXHJcbiAgICAgICAgICAgIC8vICAgICApLFxyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UoMCwgMCwgZXZlbnQud29ya3NwYWNlTmFtZSkpXHJcbiAgICAgICAgICAgIC8vICAgOiB0aGlzLnJlY2VudFNlYXJjaGVzLnVuc2hpZnQoZXZlbnQud29ya3NwYWNlTmFtZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEVtcGxveWVlKGV2ZW50LCBjbGljaykge1xyXG4gICAgaWYgKGNsaWNrLndoaWNoID09IDEpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXHJcbiAgICAgICAgXCIvZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBldmVudC5pdGVtSWQgKyBcIi9vdmVydmlld1wiXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXNoYm9hcmQgPSBldmVudC53b3Jrc3BhY2VJZDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlID0gZXZlbnQuaXRlbUlkO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMubWVudUl0ZW1OYW1lID0gZXZlbnQuaXRlbU5hbWU7XHJcbiAgICAgIHRoaXMucnNzXHJcbiAgICAgICAgLmluc2VydFJlY2VudFNlYXJjaCh7IG5hbWU6IGV2ZW50Lml0ZW1OYW1lLCByZWNlbnRTZWFyY2hUeXBlOiBSZWNlbnRTZWFyY2hUeXBlLmVtcGxveWVlLCBpdGVtSWQ6IGV2ZW50Lml0ZW1JZCB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucnNzLmdldFJlY2VudFNlYXJjaCgpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocmVzcG9uc2VEYXRhLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsc2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuUmVjZW50U2VhcmNoZXMsIEpTT04uc3RyaW5naWZ5KHRoaXMuYWxsc2VhcmNoZXMpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdEFkaW1uVG9vbChsaW5rLCBldmVudCwgaXRlbSkge1xyXG4gICAgaWYgKGV2ZW50LndoaWNoID09IDEpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlUZXh0ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtsaW5rXSk7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5yc3MuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogaXRlbS5tZW51LCByZWNlbnRTZWFyY2hUeXBlOiBSZWNlbnRTZWFyY2hUeXBlLm1lbnUsIGl0ZW1JZDogaXRlbS5pZCB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgLy8gdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmNsdWRlcyhuYW1lKVxyXG4gICAgICAgICAgLy8gICA/ICh0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSh0aGlzLnJlY2VudFNlYXJjaGVzLmluZGV4T2YobmFtZSksIDEpLFxyXG4gICAgICAgICAgLy8gICAgIHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKDAsIDAsIG5hbWUpKVxyXG4gICAgICAgICAgLy8gICA6IHRoaXMucmVjZW50U2VhcmNoZXMudW5zaGlmdChuYW1lKTtcclxuICAgICAgICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIE9uU2VsZWN0KHdpZGdldCwgZXZlbnQpIHtcclxuICAgIGlmIChldmVudC53aGljaCA9PSAxKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLlJlZGlyZWN0VG9BcHAod2lkZ2V0KTtcclxuICAgICAgdGhpcy5yc3NcclxuICAgICAgICAuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogd2lkZ2V0LndpZGdldE5hbWUsIHJlY2VudFNlYXJjaFR5cGU6IFJlY2VudFNlYXJjaFR5cGUud2lkZ2V0LCBpdGVtSWQ6IHdpZGdldC53aWRnZXRJZCB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMucmVjZW50U2VhcmNoZXMuaW5jbHVkZXMod2lkZ2V0LndpZGdldE5hbWUpXHJcbiAgICAgICAgICAgIC8vICAgPyAodGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UoXHJcbiAgICAgICAgICAgIC8vICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMuaW5kZXhPZih3aWRnZXQud2lkZ2V0TmFtZSksXHJcbiAgICAgICAgICAgIC8vICAgICAgIDFcclxuICAgICAgICAgICAgLy8gICAgICksXHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSgwLCAwLCB3aWRnZXQud2lkZ2V0TmFtZSkpXHJcbiAgICAgICAgICAgIC8vICAgOiB0aGlzLnJlY2VudFNlYXJjaGVzLnVuc2hpZnQod2lkZ2V0LndpZGdldE5hbWUpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFJlY2VudFNlYXJjaGVzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0UmVjZW50U2VhcmNoZXMoKSB7XHJcbiAgICB0aGlzLnJlY2VudFNlYXJjaGVzZmV0Y2hJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHRoaXMucnNzLmdldFJlY2VudFNlYXJjaCgpLnN1YnNjcmliZSgocmVzcG9uc2VEYXRhOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlRGF0YS5zdWNjZXNzKSB7XHJcbiAgICAgICAgdGhpcy5hbGxzZWFyY2hlcyA9IHJlc3BvbnNlRGF0YS5kYXRhO1xyXG4gICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeSh0aGlzLmFsbHNlYXJjaGVzKSk7XHJcbiAgICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlc2ZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIFJlZGlyZWN0VG9BcHAod2lkZ2V0KSB7XHJcbiAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShcclxuICAgICAgW1wiZGFzaGJvYXJkLW1hbmFnZW1lbnQvd2lkZ2V0c1wiLCB3aWRnZXQud2lkZ2V0SWRdXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBPbkdvYWxTZWxlY3QoZ29hbCwgZXZlbnQpIHtcclxuICAgIGlmIChldmVudC53aGljaCA9PSAxKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLlJlZGlyZWN0VG9Hb2FsKGdvYWwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgUmVkaXJlY3RUb0dvYWwoZ29hbCkge1xyXG4gICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoaXRlbSA9PiBpdGVtLnByb2plY3RJZCA9PSBnb2FsLnByb2plY3RJZCkubGVuZ3RoID4gMCkge1xyXG4gICAgaWYgKGdvYWwuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCkge1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChnb2FsLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLmdvYWwsIGdvYWwuaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvZ29hbFwiLCBnb2FsLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChnb2FsLml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLnNwcmludCwgZ29hbC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9zcHJpbnRcIiwgZ29hbC5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gIH1cclxuICAvLyAgfVxyXG5cclxuICBPblVzZXJTdG9yeVNlbGVjdCh1c2VyU3RvcnksIGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQud2hpY2ggPT0gMSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5SZWRpcmVjdFRvVXNlclN0b3J5KHVzZXJTdG9yeSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBSZWRpcmVjdFRvVXNlclN0b3J5KHVzZXJTdG9yeSkge1xyXG4gICAgLy9pZiAodGhpcy5wcm9qZWN0U2VhcmNoUmVzdWx0cy5maWx0ZXIoaXRlbSA9PiBpdGVtLnByb2plY3RJZCA9PSB1c2VyU3RvcnkucHJvamVjdElkKS5sZW5ndGggPiAwKSB7XHJcbiAgICBpZiAodXNlclN0b3J5Lml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcpIHtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2godXNlclN0b3J5Lml0ZW1OYW1lLCBSZWNlbnRTZWFyY2hUeXBlLndvcmtJdGVtT3JCdWcsIHVzZXJTdG9yeS5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy93b3JraXRlbVwiLCB1c2VyU3RvcnkuaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHVzZXJTdG9yeS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5hZGhvYywgdXNlclN0b3J5Lml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcImRhc2hib2FyZC9hZGhvYy13b3JraXRlbVwiLCB1c2VyU3RvcnkuaXRlbUlkXSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcbiAgLy8gfVxyXG5cclxuICBTZXQoKSB7XHJcbiAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIGFycm93RG93bkV2ZW50Rm9yU2VhcmNoQnlUZXh0KCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnByb2plY3RJbmRleCA8IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wICs9IDQ1O1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCsrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnByb2plY3RJbmRleCA9PSB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMucHJvamVjdEluZGV4ID09IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5wcm9qZWN0SW5kZXggPT0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy51c2VycyA8IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMudXNlcnMrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzID09IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxXHJcbiAgICAgICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzID09IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxXHJcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZ29hbEluZGV4IDwgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4Kys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5nb2FsSW5kZXggPT0gdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxXHJcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPCB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4Kys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFycm93RG93bkV2ZW50KCkge1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH1cclxuICAgIGlmICh0aGlzLnNlYXJjaEJ5VGV4dCAmJiB0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgdGhpcy5hcnJvd0Rvd25FdmVudEZvclNlYXJjaEJ5VGV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPCB0aGlzLml0ZW1zLmxlbmd0aCAtIDFcclxuICAgICkge1xyXG4gICAgICAvL3RoaXMubWVudUVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxCeSgwLCAxMDApO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wICs9IDQ1O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXgrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmXHJcbiAgICAgIHRoaXMud3MgPCB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMud3MrKztcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCArPSA0MTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA8IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgKz0gNDg7XHJcbiAgICAgIHRoaXMud2QrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA8IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCArPSA0NTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzIDwgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCArPSA0NTtcclxuICAgICAgdGhpcy51c2VycysrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZ29hbEluZGV4IDwgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4Kys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA8IDgpIHtcclxuICAgICAgdGhpcy5ycysrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy50ID0gdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDEgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcclxuICAgICAgdGhpcy51c2VycyA9PSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmXHJcbiAgICAgIHRoaXMudXNlcnMgPT0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJlxyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9PSB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgIC8vICAgdGhpcy50ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud2QgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgIC8vICAgdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMucnMgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDggJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgIC8vICAgdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5ycyA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMFxyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gOCAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMucnMgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMucnMgPSAwO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIC8vIH1cclxuICAgIC8vIGVsc2Uge1xyXG4gICAgLy8gICBpZiAodGhpcy5ycyAhPT0gbnVsbCAmJiB0aGlzLnJzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiA4ICYmIHRoaXMucnMgPCA4KSB7XHJcbiAgICAvLyAgICAgdGhpcy5ycysrO1xyXG4gICAgLy8gICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzW3RoaXMucnNdO1xyXG4gICAgLy8gICAgIC8vIHRoaXMuaGlnaGxpZ2h0KG5leHRyb3cpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGVsc2UgaWYgKHRoaXMucnMgIT09IG51bGwgJiYgdGhpcy5ycyAhPT0gdW5kZWZpbmVkICYmICh0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCkgLSAxID4gdGhpcy5ycyAmJiB0aGlzLnJzIDwgOCkge1xyXG4gICAgLy8gICAgIHRoaXMucnMrKztcclxuICAgIC8vICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG5cclxuXHJcbiAgfVxyXG4gIGFycm93VXBFdmVudEZvclNlYXJjaEJ5VGV4dCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5wcm9qZWN0SW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4LS07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgLT0gNDU7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0W3RoaXMucHJvamVjdEluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLml0ZW1DbGlja2VkLml0ZW1JZCA9PSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF0uaXRlbUlkICYmIHRoaXMudXNlcnMgPT0gMCAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMudXNlcnMgPiAwKSB7XHJcbiAgICAgIHRoaXMudXNlcnMtLTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXS5pdGVtSWQgJiYgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXS5pdGVtSWQgJiYgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLmdvYWxJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5nb2FsSW5kZXgtLTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuaXRlbUNsaWNrZWQuaXRlbUlkID09IHRoaXMuZW1wbG95ZWVMaXN0WzBdLml0ZW1JZCAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uaXRlbUlkICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uaXRlbUlkICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbdGhpcy5wcm9qZWN0SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgtLTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgIH1cclxuICB9XHJcbiAgYXJyb3dVcEV2ZW50KCkge1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH0gXHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgIHRoaXMuYXJyb3dVcEV2ZW50Rm9yU2VhcmNoQnlUZXh0KCk7XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gbWVudXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleC0tO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wIC09IDQ1O1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIHdvcmtzcGFjZXNcclxuICAgIGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmXHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgPT0gdGhpcy53b3Jrc3BhY2VzWzBdLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gMCAmJlxyXG4gICAgICB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgLT0gNDE7XHJcbiAgICAgIHRoaXMud3MtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSB3aWRnZXRzICAgIFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wIC09IDQ4O1xyXG4gICAgICB0aGlzLndkLS07XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCA9PSB0aGlzLndpZGdldHNbMF0ud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLml0ZW1DbGlja2VkLndpZGdldElkID09IHRoaXMud2lkZ2V0c1swXS53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiZcclxuICAgICAgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIEVtcGxveWVlcyAgIFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXgtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyID09IHRoaXMuZW1wbG95ZWVMaXN0WzBdLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiZcclxuICAgICAgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJlxyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciA9PSB0aGlzLmVtcGxveWVlTGlzdFswXS5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gV0kvQnVnICAgICAgICAgTkVFRCBUTyBETyBcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLnVzZXJzID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wIC09IDQ1O1xyXG4gICAgICB0aGlzLnVzZXJzLS07XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbdGhpcy51c2Vyc107XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxyXG4gICAgICB0aGlzLnVzZXJzID09IDAgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcclxuICAgICAgdGhpcy51c2VycyA9PSAwICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmXHJcbiAgICAgIHRoaXMudXNlcnMgPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxyXG4gICAgICB0aGlzLnVzZXJzID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH1cclxuICAgIC8vRnJvbSBnb2FsL3NwcmludFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLmdvYWxJbmRleCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5nb2FsSW5kZXgtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5TGlzdFt0aGlzLnVzZXJzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gMCAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBldHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH1cclxuICAgIC8vRnJvbSByZWNlbnQgc2VhcmNoZXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPiAwKSB7XHJcbiAgICAgIHRoaXMucnMtLTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbdGhpcy5yc107XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJlxyXG4gICAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbdGhpcy5nb2FsSW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMudXNlclN0b3J5TGlzdCAmJiB0aGlzLnVzZXJTdG9yeUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmXHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiYgdGhpcy50b29scyAmJiB0aGlzLnRvb2xzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy50ID0gdGhpcy50b29scy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnRdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmZ1bGxOYW1lICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgLy8gICB0aGlzLndkID0gODtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5mdWxsTmFtZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMudCA9IHRoaXMudG9vbHMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMudF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMudCA9IHRoaXMudG9vbHMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLnRdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gMCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMudF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMudCA9IHRoaXMudG9vbHMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudG9vbHNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnBlcm1pc3Npb24gJiYgdGhpcy50ID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIGlmICh0aGlzLnJzICE9PSBudWxsICYmIHRoaXMucnMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnJzID4gMCkge1xyXG4gICAgLy8gICAgIHRoaXMucnMtLTtcclxuICAgIC8vICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcclxuICAgIC8vICAgICAvLyB0aGlzLmhpZ2hsaWdodChuZXh0cm93KTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG4gIH1cclxuICBhcnJvd0xlZnRFdmVudEZvclNlYXJjaEJ5VGV4dCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsXHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGxcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGxcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0WzBdO1xyXG4gICAgfVxyXG4gIH1cclxuICBhcnJvd0xlZnRFdmVudCgpIHtcclxuICAgIC8vIGlmIChcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ICE9IHVuZGVmaW5lZCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gbnVsbCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT09IFwiXCJcclxuICAgIC8vICkge1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9XHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgIHRoaXMuYXJyb3dMZWZ0RXZlbnRGb3JTZWFyY2hCeVRleHQoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gd29ya3NwYWNlc1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICAgIC8vZnJvbSB3aWRnZXRzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIGVtcGxveWVlc1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBXSS9CdWdcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXHJcbiAgICAgICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcclxuICAgICAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gR29hbC9TcHJpbnRcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludClcclxuICAgICAgJiYgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeUxpc3RbMF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpXHJcbiAgICAgICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSByZWNlbnQgc2VhcmNoZXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXHJcbiAgICAgICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcclxuICAgICAgJiYgdGhpcy51c2VyU3RvcnlMaXN0ICYmIHRoaXMudXNlclN0b3J5TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeUxpc3RbMF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaFxyXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXHJcbiAgICAgICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaFxyXG4gICAgICAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcclxuICAgICAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFycm93UmlnaHRFdmVudEZvclNlYXJjaEJ5VGV4dCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH1cclxuICB9XHJcbiAgYXJyb3dSaWdodEV2ZW50KCkge1xyXG4gICAgLy8gaWYgKFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PSBudWxsIHx8XHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCA9PT0gXCJcIlxyXG4gICAgLy8gKSB7XHJcbiAgICAvLyAgIHJldHVybjtcclxuICAgIC8vIH0gXHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgIHRoaXMuYXJyb3dSaWdodEV2ZW50Rm9yU2VhcmNoQnlUZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gbWVudXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndkID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSB3b3Jrc3BhY2VzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndkID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gd2lkZ2V0c1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIEVtcGxveWVlc1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBXSS9CdWdcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcclxuICAgICAgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBHb2FsL1NwcmludFxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsKVxyXG4gICAgICAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbldvcmtzcGFjZUZvcm0oKSB7XHJcbiAgICB0aGlzLmFkZFdvcmtTcGFjZVBvcE92ZXIub3BlbigpO1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgdGhpcy5nZXRBbGxSb2xlcygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsUm9sZXMoKSB7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuR2V0YWxsUm9sZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlRGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucm9sZXNEcm9wRG93biA9IHJlc3BvbnNlRGF0YS5kYXRhO1xyXG4gICAgICB0aGlzLnJvbGVzRHJvcERvd24uZm9yRWFjaCgocCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlkID0gcC5yb2xlSWQudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBwLnJvbGVJZCA9IGlkO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLm5nRGVzdHJveWVkJC5uZXh0KCk7XHJcbiAgICB0aGlzLm5nRGVzdHJveWVkJC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZVNlbGVjdGVkUm9sZXNGbigpIHsgfVxyXG4gIGNvbXBhcmVFZGl0U2VsZWN0ZWRSb2xlc0ZuKCkgeyB9XHJcbiAgY29tcGFyZURlbGV0ZVNlbGVjdGVkUm9sZXNGbigpIHsgfVxyXG4gIHVwc2VydFdvcmtzcGFjZSgpIHsgfVxyXG4gIHRvZ2dsZUFsbFJvbGVzU2VsZWN0ZWQoKSB7IH1cclxuICB0b2dnbGVFZGl0QWxsUm9sZXNTZWxlY3RlZCgpIHsgfVxyXG4gIHRvZ2dsZURlbGV0ZUFsbFJvbGVzU2VsZWN0ZWQoKSB7IH1cclxuICBjbG9zZUFkZFdvcmtzcGFjZURpYWxvZygpIHsgfVxyXG59XHJcbiIsIjxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwidmlzaWJsZXNcIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVzXCIgZnhIaWRlLmd0LXhzIGZ4U2hvdz5cclxuICA8bWF0LWljb24gY2xhc3M9XCJuZXdNZW51XCI+bWVudTwvbWF0LWljb24+XHJcbjwvYnV0dG9uPlxyXG48ZGl2IGZ4RmxleCBjbGFzcz1cIm5ld0xvZ28gZGVmYXVsdC1iZyB0b3AtbG9nby1iZyBuZXdtaW5pbG9nbyB6b29tLWltYWdlLWhvdmVyXCIgZnhIaWRlLmd0LXhzIGZ4U2hvdz5cclxuICA8aW1nIHNyYz1cInt7Y29tcGFueU1pbmlMb2dvfX1cIiBhbHQ9XCJcIiBpZD1cIm1pbmktbG9nby10b3BiYXJcIiBzdHlsZT1cIndpZHRoOjMwcHg7IGhlaWdodDozMHB4O1wiXHJcbiAgICAoY2xpY2spPVwiZ2V0QWxsTWVudUl0ZW1zKClcIiAvPlxyXG48L2Rpdj5cclxuPGRpdiBmeEZsZXggY2xhc3M9XCJuZXdMb2dvICB0b3AtbG9nby1iZyBhcHBzLWJ1dHRvbiB6b29tLWltYWdlLWhvdmVyXCIgc3R5bGU9XCJsZWZ0OiAwcHg7XCIgZnhIaWRlIGZ4U2hvdy5ndC14cz5cclxuICA8aW1nIHNyYz1cInt7Y29tcGFueU1haW5Mb2dvfX1cIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtsZWZ0OiAyMHB4O2xlZnQ6IDIwcHg7cG9zaXRpb246IHJlbGF0aXZlO1wiIGlkPVwibWFpbi1sb2dvLXRvcGJhclwiXHJcbiAgICBjbGFzcz1cImltZy1oZWlnaHQtbWFpbi1sb2dvLXRvcGJhclwiIChjbGljayk9XCJnZXRBbGxNZW51SXRlbXMoKVwiIC8+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBcclxuPG1hdC1tZW51ICNtZW51cz1cIm1hdE1lbnVcIiBjbGFzcz1cImZpbHRlci1wYW5lbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mKG1lbnVJdGVtcyQgfCBhc3luYylcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdkcm9wRG93bidcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJsZXZlbFR3b01lbnVcIiAobW91c2VvdmVyKT1cIm9wZW5MZXZlbDJNZW51KGl0ZW0uc3RhdGUsaXRlbS5zdWIpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPnt7IGl0ZW0uaWNvbiB9fTwvbWF0LWljb24+e3sgaXRlbS5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2xpbmsnXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rPVwiL3t7IGl0ZW0uc3RhdGUgfX1cIj5cclxuICAgICAgICA8bWF0LWljb24+e3sgaXRlbS5pY29uIH19PC9tYXQtaWNvbj57eyBpdGVtLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L21hdC1tZW51PlxyXG5cclxuPG1hdC1tZW51ICNsZXZlbFR3b01lbnU9XCJtYXRNZW51XCI+XHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbUx2bDIgb2Ygc3ViTGV2ZWxzXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXRlbUx2bDIudHlwZSA9PT0gJ2Ryb3BEb3duJ1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW21hdE1lbnVUcmlnZ2VyRm9yXT1cImxldmVsVGhyZWVNZW51XCJcclxuICAgICAgICAobW91c2VvdmVyKT1cIm9wZW5MZXZlbDNNZW51KHN0YXRlTHZsMSxpdGVtTHZsMi5zdGF0ZSxpdGVtLnN1YilcIj5cclxuICAgICAgICB7eyBpdGVtTHZsMi5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJpdGVtTHZsMi50eXBlID09ICdhcHBsaWNhdGlvbmxpbmsnXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rPVwiL3t7IGl0ZW1MdmwyLnN0YXRlIH19XCI+XHJcbiAgICAgICAge3sgaXRlbUx2bDIubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXRlbUx2bDIudHlwZSA9PSAnbGluaydcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbms9XCIve3tzdGF0ZUx2bDF9fS97eyBpdGVtTHZsMi5zdGF0ZSB9fVwiPlxyXG4gICAgICAgIHt7IGl0ZW1MdmwyLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L21hdC1tZW51PlxyXG5cclxuPG1hdC1tZW51ICNsZXZlbFRocmVlTWVudT1cIm1hdE1lbnVcIj5cclxuICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtTHZsMyBvZiBzdWJMZXZlbHNGb3JMZXZlbDJcIj5cclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rPVwiL3t7IGxldmVsM0xpbmsxIH19L3t7IGxldmVsM0xpbmsyIH19L3t7aXRlbUx2bDMuc3RhdGV9fVwiPlxyXG4gICAgICB7eyBpdGVtTHZsMy5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L21hdC1tZW51PiAtLT5cclxuXHJcbjxtYXQtbWVudSAjbWVudXM9XCJtYXRNZW51XCIgeVBvc2l0aW9uPVwiYmVsb3dcIiBjbGFzcz1cImZpbHRlci1wYW5lbFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gIHN0eWxlPVwiaGVpZ2h0OmF1dG9cIj5cclxuICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09ICdsaW5rJyB8fCBpdGVtLnR5cGUgPT0gJ2FwcGxpY2F0aW9ubGluaydcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbms9XCIve3sgaXRlbS5zdGF0ZSB9fVwiIChjbGljayk9XCJzZWxlY3RNZW51KGl0ZW0sJGV2ZW50KVwiXHJcbiAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPnt7IGl0ZW0uaWNvbiB9fTwvbWF0LWljb24+e3sgaXRlbS5tZW51IHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9tYXQtbWVudT5cclxuXHJcblxyXG48ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1xyXG5sZWZ0OiA5MCVcIiBjbGFzcz1cInN0b3JlLWljb20gbWF0LWljb24tYnV0dG9uXCIgKm5nSWY9XCJjYW5BY2Nlc3NfZmVhdHVyZV9EcmFnQXBwc1wiXHJcbiAgW25nQ2xhc3NdPVwidGhpcy5yb3V0ZXMudXJsLmluY2x1ZGVzKCcvYXBwLXN0b3JlL3dpZGdldHMnKSA/ICdpY29uX2FjdGl2ZV9jbGFzcycgOiAnJ1wiPlxyXG4gIDxmYS1pY29uIGljb249XCJzdG9yZVwiIHN0eWxlPVwiZm9udC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7XCIgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXHJcbiAgICBtYXRUb29sdGlwPVwie3sgJ0FQUC5BUFBTVE9SRScgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJvcGVuQXBwcygpXCJcclxuICAgIGNsYXNzPVwibWF0LWNvbG9yLWFjY2VudCBjdXJzb3ItcG9pbnRlciB0aGVtZS1uYXZiYXItaWNvbi1jb2xvclwiPjwvZmEtaWNvbj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiU2VhcmNoQm94IGRyb3Bkb3duXCIgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcIj5cclxuICA8c3BhbiBjbGFzcz1cIm1hdC1jb2xvci1hY2NlbnQgaW5wdXQtZ3JvdXAtYWRkb25cIiAqbmdJZj1cInNlYXJjaEJ5VGV4dFwiPkAgJm5ic3A7PC9zcGFuPlxyXG4gIDxzcGFuIGNsYXNzPVwibWF0LWNvbG9yLWFjY2VudCBpbnB1dC1ncm91cC1hZGRvblwiICpuZ0lmPVwic2VhcmNoQnlJZFwiPiMgJm5ic3A7PC9zcGFuPlxyXG4gIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiU2VhcmNoQm94LWlucHV0IGRyb3BidG5cIiBwbGFjZWhvbGRlcj1cInt7ICdBUFAuU1RBUlRIRVJFT1JDTElDS0NPTlRST0wrUScgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICBbY2xhc3MuaGlkZS1wbGFjZWhvbGRlcl09XCJzZWFyY2hCeVRleHQgfHwgc2VhcmNoQnlJZFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiICNlbGVtZW50IFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXHJcbiAgICAoaW5wdXQpPVwiU2VhcmNoSXRlbSgkZXZlbnQpXCIgKGNsaWNrKT1cIlNlYXJjaEl0ZW0oJGV2ZW50KVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJTZXQoKTtcIlxyXG4gICAgKGtleWRvd24uZW50ZXIpPVwibmF2aWdhdGUoJGV2ZW50LCBpdGVtQ2xpY2tlZClcIiAoa2V5ZG93bi5hcnJvd2Rvd24pPVwiYXJyb3dEb3duRXZlbnQoKVwiXHJcbiAgICAoa2V5ZG93bi5hcnJvd3VwKT1cImFycm93VXBFdmVudCgpXCIgKGtleWRvd24uYXJyb3dsZWZ0KT1cImFycm93TGVmdEV2ZW50KClcIiAoa2V5ZG93bi5hcnJvd3JpZ2h0KT1cImFycm93UmlnaHRFdmVudCgpXCI+XHJcblxyXG4gIDxidXR0b24gY2xhc3M9XCJTZWFyY2hCb3gtYnV0dG9uXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImNsb3NlX2ljb25fc2VhcmNoXCI+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiIXNlYXJjaFRleHRcIj48L3NwYW4+XHJcbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInNlYXJjaFRleHRcIiBjbGFzcz1cImljb24tYnV0dG9uIG1yLTA1XCIgYXJpYS1oaWRkZW49XCJmYWxzZVwiIChjbGljayk9XCJjbG9zZVNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgICBzdHlsZT1cImN1cnNvcjpwb2ludGVyXCI+XHJcbiAgICAgICAgY2xvc2U8L21hdC1pY29uPlxyXG4gICAgPC9zcGFuPlxyXG4gICAgPG1hdC1pY29uIGNsYXNzPVwiU2VhcmNoQm94LWljb24gaWNvbi1jb2xvciBtdC1sZy1uMiBtci0wNSBpbmZvLWNsYXNzXCIgW3NhdFBvcG92ZXJBbmNob3JGb3JdPVwicFwiXHJcbiAgICAgICNpbmZvUG9wT3Zlcj1cInNhdFBvcG92ZXJBbmNob3JcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib3BlbkluZm8oaW5mb1BvcE92ZXIpXCI+aW5mbzwvbWF0LWljb24+XHJcbiAgICA8bWF0LWljb24gY2xhc3M9XCJTZWFyY2hCb3gtaWNvbiBpY29uLWNvbG9yIG10LWxnLW4yXCIgY29sb3I9XCJwcmltYXJ5XCI+c2VhcmNoPC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudFwiIFtuZ0NsYXNzXT1cInsnZC1ibG9jaycgOiBkaXNwbGF5LCAgJ2Qtbm9uZScgOiAhZGlzcGxheX1cIj5cclxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCJcclxuICAgICAgKm5nSWY9XCJsb2FkaW5nU2VhcmNoTWVudURhdGEgfHwgcmVjZW50U2VhcmNoZXNmZXRjaEluUHJvZ3Jlc3MgfHwgd2lkZ2V0c2ZldGNoSW5Qcm9ncmVzc1wiPlxyXG4gICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyByb3dzZWxlY3RcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBjb2x1bW5zZWxlY3QtbmV4dCBwbC0wNVwiICpuZ0lmPVwiaXRlbXMgJiYgKGl0ZW1zLmxlbmd0aD4wKSAmJiAhKHNlYXJjaEJ5SWQgfHwgc2VhcmNoQnlUZXh0KVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIj57eyAnU0hFTEwuQVBQTElDQVRJT05TJyB8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBpZD1cInN0eWxlLTFcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGhlaWdodDogNDQ1cHggIWltcG9ydGFudDsgb3ZlcmZsb3c6IGF1dG87XCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbXMgJiYgaXRlbXMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IGkgPSBpbmRleDtcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cInNlbGVjdGVkUm93SW5kZXggPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2xpbmsnIHx8IGl0ZW0udHlwZSA9PSAnYXBwbGljYXRpb25saW5rJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbms9XCIve3sgaXRlbS5zdGF0ZSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkUm93SW5kZXggPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIlxyXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInNlbGVjdEFkaW1uVG9vbChpdGVtLnN0YXRlLCAkZXZlbnQsIGl0ZW0pXCIgcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIntleGFjdDpcclxuICAgICAgICAgICAgICAgICAgICB0cnVlfVwiIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIlxyXG4gICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgdHJhbnNsYXRlYXBwbGljYXRpb25uYW1lKGl0ZW0ubWVudSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscyl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uLWNvbG9yXCIgW25nQ2xhc3NdPVwic2VsZWN0ZWRSb3dJbmRleCA9PSBpID8gJ2NvbG9yLXRleHQnIDogJ2NvbG9yLXRleHQxJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uaWNvbiB9fTwvbWF0LWljb24+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInRyYW5zbGF0ZWFwcGxpY2F0aW9ubmFtZShpdGVtLm1lbnUpIHwgIHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVscyB8IGhpZ2hMaWdodFRleHQgOiBzZWFyY2hUZXh0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBwbC0wNVwiICpuZ0lmPVwiIShzZWFyY2hCeUlkIHx8IHNlYXJjaEJ5VGV4dClcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnNlbGVjdC1uZXh0IG1sLTBcIiAqbmdJZj1cIndvcmtzcGFjZXMgJiYgKHdvcmtzcGFjZXMubGVuZ3RoPjApXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCI+e3sgJ1NIRUxMLkRBU0hCT0FSRFMnIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cInBsdXMtc3F1YXJlXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNhbkFjY2Vzc19mZWF0dXJlX0FkZERhc2hib2FyZFwiIG1hdFRvb2x0aXA9XCJ7eyAnQVBQLkFERERBU0hCT0FSRCcgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImluaXRpYWxpemVXb3Jrc3BhY2VGb3JtKCk7b3BlbldvcmtzcGFjZUZvcm0oKTtcIiBjbGFzcz1cIm1hdC1jb2xvci1hY2NlbnQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgIFtzYXRQb3BvdmVyQW5jaG9yRm9yXT1cImFkZFdvcmtzcGFjZVwiPlxyXG4gICAgICAgICAgICA8L2ZhLWljb24+IFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGlkPVwic3R5bGUtMlwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsgaGVpZ2h0OiA0NDVweCAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bztcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtzcGFjZXMgJiYgd29ya3NwYWNlcy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHdjIG9mIHdvcmtzcGFjZXM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwid3MgPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiIGNsYXNzPVwic2Nyb2xsXCIgI3dvcmtzcGFjZUVsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKG1vdXNlZG93bik9XCJzZWxlY3RNZW51KHdjLCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ3cyA9PSBpID8gJ2NvbG9yLXRleHQnIDogJ2NvbG9yLXRleHQxJ1wiIChjbGljayk9XCJuYXZpZ2F0ZVRvVXJsKHdjLndvcmtzcGFjZUlkKVwiXHJcbiAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms9XCIvZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL3t7IHdjLndvcmtzcGFjZUlkIH19XCIgcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7e3djLndvcmtzcGFjZU5hbWV9fVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIndjLndvcmtzcGFjZU5hbWUgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dCBcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGNvbHVtbnNlbGVjdC1hcHBzIG1sLTBcIiAqbmdJZj1cIndpZGdldHMgJiYgd2lkZ2V0cy5sZW5ndGg+MCAgJiYgIShzZWFyY2hCeUlkIHx8IHNlYXJjaEJ5VGV4dClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCI+e3sgJ1NIRUxMLkZBVk9VUklURUFQUFMnIHwgdHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsgaGVpZ2h0OiA0NDVweCAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bztcIiBpZD1cInN0eWxlLTNcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHdpZGdldCBvZiB3aWRnZXRzOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwid2QgPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCIgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIntleGFjdDpcclxuICAgICAgICAgIHRydWV9XCIgcm91dGVyTGluaz1cIi9kYXNoYm9hcmQtbWFuYWdlbWVudC93aWRnZXRzL3t7IHdpZGdldC53aWRnZXRJZCB9fVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwid2QgPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIiAobW91c2Vkb3duKT1cIk9uU2VsZWN0KHdpZGdldCwkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7d2lkZ2V0LndpZGdldE5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHN9fVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwid2lkZ2V0LndpZGdldE5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uc2VsZWN0LW5leHQgbWwtMFwiICpuZ0lmPVwicHJvamVjdExpc3QgJiYgcHJvamVjdExpc3QubGVuZ3RoPjAgJiYgc2VhcmNoVGV4dCAmJiBzZWFyY2hCeVRleHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCI+UHJvamVjdHM8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Nyb2xsXCIgaWQ9XCJzdHlsZS03XCJcclxuICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsgaGVpZ2h0OiA0NDVweCAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bztcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHByb2plY3Qgb2YgcHJvamVjdExpc3Q7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJwcm9qZWN0SW5kZXggPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCIgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cIntleGFjdDpcclxuICAgICAgIHRydWV9XCIgW25nQ2xhc3NdPVwicHJvamVjdEluZGV4ID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCJcclxuICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUHJvamVjdFNlbGVjdChwcm9qZWN0LCRldmVudClcIiBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwie3twcm9qZWN0Lml0ZW1OYW1lIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX1cIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInByb2plY3QuaXRlbU5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uc2VsZWN0LW5leHQgbWwtMFwiXHJcbiAgICAgICAgKm5nSWY9XCJ1c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoPjAgJiYgc2VhcmNoVGV4dCAmJiBzZWFyY2hCeVRleHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCIgKm5nSWY9XCJpc0VuYWJsZUJ1Z0JvYXJkXCI+e3sgJ1NIRUxMLldJQlVHJyB8IHRyYW5zbGF0ZX19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluLWhlYWRlclwiICpuZ0lmPVwiIWlzRW5hYmxlQnVnQm9hcmRcIj57eyAnU0hFTEwuV0knfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxcIiBpZD1cInN0eWxlLTVcIlxyXG4gICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdXNlclN0b3J5IG9mIHVzZXJTdG9yeVNlYXJjaExpc3Q7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJ1c2VycyA9PSBpID8gdGhlbWVCYXNlQ29sb3IgOiAnd2hpdGUnXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwie2V4YWN0OlxyXG4gICAgICAgICB0cnVlfVwiIFtuZ0NsYXNzXT1cInVzZXJzID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCIgKG1vdXNlZG93bik9XCJPblVzZXJTdG9yeVNlbGVjdCh1c2VyU3RvcnksJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiIG1hdFRvb2x0aXA9XCJ7e3VzZXJTdG9yeS5pdGVtTmFtZSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJ1c2VyU3RvcnkuaXRlbU5hbWUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnNlbGVjdC1uZXh0IG1sLTBcIlxyXG4gICAgICAgICpuZ0lmPVwiZ29hbFNlYXJjaExpc3QgJiYgZ29hbFNlYXJjaExpc3QubGVuZ3RoPjAgJiYgc2VhcmNoVGV4dCAmJiBzZWFyY2hCeVRleHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW4taGVhZGVyXCI+e3sgJ1NIRUxMLkdPQUxTUFJJTlQnIHwgdHJhbnNsYXRlIH19PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbFwiIGlkPVwic3R5bGUtNlwiXHJcbiAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGhlaWdodDogNDQ1cHggIWltcG9ydGFudDsgb3ZlcmZsb3c6IGF1dG87XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBnb2FsIG9mIGdvYWxTZWFyY2hMaXN0OyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ29hbEluZGV4ID09IGkgPyB0aGVtZUJhc2VDb2xvciA6ICd3aGl0ZSdcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIHJvdXRlckxpbmtBY3RpdmU9XCJpdGVtLWFjdGl2ZVwiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7ZXhhY3Q6XHJcbiAgICAgICAgIHRydWV9XCIgW25nQ2xhc3NdPVwiZ29hbEluZGV4ID09IGkgPyAnY29sb3ItdGV4dCcgOiAnY29sb3ItdGV4dDEnXCIgKG1vdXNlZG93bik9XCJPbkdvYWxTZWxlY3QoZ29hbCwkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7Z29hbC5pdGVtTmFtZSB8IHNvZnRMYWJlbHNQaXBlIDogc29mdExhYmVsc319XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJnb2FsLml0ZW1OYW1lIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzIHwgaGlnaExpZ2h0VGV4dCA6IHNlYXJjaFRleHRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBjb2x1bW5zZWxlY3QtYXBwcyBtbC0wXCJcclxuICAgICAgICAqbmdJZj1cIihlbXBsb3llZUxpc3QgJiYgZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApICYmIHNlYXJjaFRleHQgJiYgc2VhcmNoQnlUZXh0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImluLWhlYWRlclwiPkVtcGxveWVlczwvZGl2PlxyXG4gICAgICAgIDxkaXYgaWQ9XCJzdHlsZS00XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZW1wbG95ZWUgb2YgZW1wbG95ZWVMaXN0OyBsZXQgaSA9IGluZGV4XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJzZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiICN3b3Jrc3BhY2VFbGVtZW50PlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKG1vdXNlZG93bik9XCJzZWxlY3RFbXBsb3llZShlbXBsb3llZSwkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIlxyXG4gICAgICAgICAgICAgIHJvdXRlckxpbms9XCIvZGFzaGJvYXJkL3Byb2ZpbGUve3sgZW1wbG95ZWUuaXRlbUlkIH19L292ZXJ2aWV3XCIgcm91dGVyTGlua0FjdGl2ZT1cIml0ZW0tYWN0aXZlXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJ0b29sdGlwQ2xhc3MtbWF0XCIgbWF0VG9vbHRpcD1cInt7ZW1wbG95ZWUuaXRlbU5hbWV9fVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxhcHAtYXZhdGFyIFtuYW1lXT1cImVtcGxveWVlLml0ZW1OYW1lIHwgcmVtb3ZlU3BlY2lhbENoYXJhY3RlcnNcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7IGVtcGxveWVlLml0ZW1OYW1lIH19XCIgW3NyY109XCJlbXBsb3llZS5wcm9maWxlSW1hZ2UgfCBmZXRjaFNpemVkQW5kQ2FjaGVkSW1hZ2U6ICcyMCc6JydcIlxyXG4gICAgICAgICAgICAgICAgICBbaXNSb3VuZF09XCJ0cnVlXCIgc2l6ZT1cIjIwXCIgKGNsaWNrKT1cInByb2ZpbGVQYWdlKGVtcGxveWVlLnVzZXJJZCk7JGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtYXZhdGFyPiBcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC0wNVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImVtcGxveWVlLml0ZW1OYW1lIHwgaGlnaExpZ2h0VGV4dCA6IHNlYXJjaFRleHRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gY29sdW1uc2VsZWN0LWFwcHMgbWwtMFwiXHJcbiAgICAgICAgKm5nSWY9XCJyZWNlbnRTZWFyY2hlcyAmJiAocmVjZW50U2VhcmNoZXMubGVuZ3RoPjApICAmJiAhKHNlYXJjaEJ5SWQgfHwgc2VhcmNoQnlUZXh0KVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbi1oZWFkZXJcIj57eyAnU0hFTEwuUkVDRU5UU0VBUkNIUycgfCB0cmFuc2xhdGV9fTwvZGl2PlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBoZWlnaHQ6IDQ0NXB4ICFpbXBvcnRhbnRcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlYXJjaCBvZiByZWNlbnRTZWFyY2hlcyB8IHNsaWNlOjA6OSBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwicnMgPT0gaSA/IHRoZW1lQmFzZUNvbG9yIDogJ3doaXRlJ1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gW25nQ2xhc3NdPVwicnMgPT0gaSA/ICdjb2xvci10ZXh0JyA6ICdjb2xvci10ZXh0MSdcIlxyXG4gICAgICAgICAgICAgIChtb3VzZWRvd24pPVwic2VhcmNoVGV4dD1zZWFyY2gucmVjZW50U2VhcmNoO1NlYXJjaFJlY2VudEl0ZW0oc2VhcmNoLCRldmVudClcIlxyXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cInRvb2x0aXBDbGFzcy1tYXRcIiBtYXRUb29sdGlwPVwie3tzZWFyY2gucmVjZW50U2VhcmNoIHwgc29mdExhYmVsc1BpcGUgOiBzb2Z0TGFiZWxzfX0gXHJcbiAgICAgICAgICAoe3sgY29udmVydFRvTG9jYWxUaW1lKHNlYXJjaC5jcmVhdGVkRGF0ZVRpbWUpIHwgdGltZWFnbyB9fSlcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInNlYXJjaC5yZWNlbnRTZWFyY2ggfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfCBoaWdoTGlnaHRUZXh0IDogc2VhcmNoVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAoe3sgY29udmVydFRvTG9jYWxUaW1lKHNlYXJjaC5jcmVhdGVkRGF0ZVRpbWUpIHwgdGltZWFnbyB9fSlcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBpbi1oZWFkZXIgXCIgKm5nSWY9XCIhc2VhcmNoVGV4dCAmJiBzZWFyY2hCeUlkXCI+XHJcbiAgICAgIFBsZWFzZSBlbnRlciB1bmlxdWUgaWQgYW5kIGNsaWNrIGVudGVyIGZvciBuYXZpZ2F0aW5nIHRvIGNvcnJlc3BpbmcgcGFnZVxyXG4gIDwvZGl2PlxyXG4gIFxyXG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBpbi1oZWFkZXIgXCIgKm5nSWY9XCIhc2VhcmNoVGV4dCAmJiBzZWFyY2hCeVRleHRcIiA+XHJcbiAgICBQbGVhc2UgZW50ZXIgdGV4dCB0byByZXRyZWl2ZSBkYXRhIGJ5IGZpbHRlcmluZ1xyXG4gIDwvZGl2PiAtLT5cclxuICBcclxuXHJcbiAgPHNhdC1wb3BvdmVyIGJhY2tkcm9wQ2xhc3M9XCJiYWNrZHJvcC1jb2xvclwiIGhhc0JhY2tkcm9wICNhZGRXb3Jrc3BhY2UgdmVydGljYWxBbGlnbj1cImJlbG93XCIgaG9yaXpvbnRhbEFsaWduPVwiZW5kXCJcclxuICAgIFtpbnRlcmFjdGl2ZUNsb3NlXT1cImZhbHNlXCI+XHJcbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJmaWx0ZXItZGF0YSBwLTBcIj5cclxuICAgICAgPG1hdC1jYXJkLXRpdGxlIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZS10ZXh0IG1hdC1iZy1wcmltYXJ5IHAtMDUgbWItMVwiPlxyXG4gICAgICAgICAge3sgJ0FQUC5BREREQVNIQk9BUkRUSVRMRScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJ3b3Jrc3BhY2VGb3JtXCIgbm92YWxpZGF0ZSAoc3VibWl0KT1cIndvcmtzcGFjZUZvcm0udmFsaWQgJiYgdXBzZXJ0V29ya3NwYWNlKClcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cInt7ICdIUk1BTkFHQU1FTlQuTkFNRScgfCB0cmFuc2xhdGV9fSpcIiBmb3JtQ29udHJvbE5hbWU9XCJ3b3Jrc3BhY2VOYW1lXCIgLz5cclxuICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCd3b3Jrc3BhY2VOYW1lJykuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgd29ya3NwYWNlRm9ybS5nZXQoJ3dvcmtzcGFjZU5hbWUnKS50b3VjaGVkIFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ0FQUC5EQVNIQk9BUkROQU1FUkVRVUlSRUQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCd3b3Jrc3BhY2VOYW1lJykuaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnQVBQLkRBU0hCT0FSRE5BTUVMRU5HVEhFWENFRUQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIiByb3dzPVwiMlwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdDT01QQU5ZU0VUVElOR1MuREVTQ1JJUFRJT04nIHwgdHJhbnNsYXRlIH19XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCdkZXNjcmlwdGlvbicpLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSAmJiB3b3Jrc3BhY2VGb3JtLmdldCgnZGVzY3JpcHRpb24nKS50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnQVBQLkNVU1RPTUFQUERFU0NSSVBUSU9OTUFYTEVOR1RIRVJST1InIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInNlbGVjdGVkUm9sZXNcIiBbY29tcGFyZVdpdGhdPVwiY29tcGFyZVNlbGVjdGVkUm9sZXNGblwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdXSURHRVRTLlZJRVdST0xFUycgfCB0cmFuc2xhdGUgfX1cIiBtdWx0aXBsZSByZXF1aXJlZD5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICNhbGxTZWxlY3RlZCAoY2xpY2spPVwidG9nZ2xlQWxsUm9sZXNTZWxlY3RlZCgpXCIgW3ZhbHVlXT1cIjBcIj5cclxuICAgICAgICAgICAgICAgICAge3sgJ1BFUk1JU1NJT05NQU5BR0VNRU5ULlNFTEVDVEFMTCcgfCB0cmFuc2xhdGUgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwicm9sZXMucm9sZUlkXCIgKm5nRm9yPVwibGV0IHJvbGVzIG9mIHJvbGVzRHJvcERvd25cIiAjYWxsU2VsZWN0ZWRcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJvbGVzUGVyT25lKGFsbFNlbGVjdGVkLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyByb2xlcy5yb2xlTmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIndvcmtzcGFjZUZvcm0uZ2V0KCdzZWxlY3RlZFJvbGVzJykuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgd29ya3NwYWNlRm9ybS5nZXQoJ3NlbGVjdGVkUm9sZXMnKS50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnQVBQLlNFTEVDVEFOWVJPTEUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJlZGl0Um9sZUlkc1wiIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRWRpdFNlbGVjdGVkUm9sZXNGblwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdXSURHRVRTLkVESVRST0xFUycgfCB0cmFuc2xhdGUgfX1cIiBtdWx0aXBsZT5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICNhbGxFZGl0U2VsZWN0ZWQgKGNsaWNrKT1cInRvZ2dsZUVkaXRBbGxSb2xlc1NlbGVjdGVkKClcIiBbdmFsdWVdPVwiMFwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyAnUEVSTUlTU0lPTk1BTkFHRU1FTlQuU0VMRUNUQUxMJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJyb2xlLnJvbGVJZFwiICpuZ0Zvcj1cImxldCByb2xlIG9mIHJvbGVzRHJvcERvd25cIiAjYWxsRWRpdFNlbGVjdGVkXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVFZGl0Um9sZXNQZXJPbmUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyByb2xlLnJvbGVOYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiZGVsZXRlUm9sZUlkc1wiIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRGVsZXRlU2VsZWN0ZWRSb2xlc0ZuXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1dJREdFVFMuREVMRVRFUk9MRVMnIHwgdHJhbnNsYXRlIH19XCIgbXVsdGlwbGU+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAjYWxsRGVsZXRlU2VsZWN0ZWQgKGNsaWNrKT1cInRvZ2dsZURlbGV0ZUFsbFJvbGVzU2VsZWN0ZWQoKVwiIFt2YWx1ZV09XCIwXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7ICdQRVJNSVNTSU9OTUFOQUdFTUVOVC5TRUxFQ1RBTEwnIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInJvbGUucm9sZUlkXCIgKm5nRm9yPVwibGV0IHJvbGUgb2Ygcm9sZXNEcm9wRG93blwiICNhbGxEZWxldGVTZWxlY3RlZFxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRGVsZXRlUm9sZXNQZXJPbmUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyByb2xlLnJvbGVOYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTFcIiBtYXQtYnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwidXBzZXJ0V29ya3NwYWNlKClcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhd29ya3NwYWNlRm9ybS52YWxpZFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNvbG9yPVwicHJpbWFyeVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgKm5nSWY9XCJkYXNoYm9hcmRVcGRhdGVJblByb2dyZXNzXCI+XHJcbiAgICAgICAgICAgICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMDVcIiBpY29uPVwicGx1c1wiPjwvZmEtaWNvbj4ge3sgJ1NBVkUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZUFkZFdvcmtzcGFjZURpYWxvZygpXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gY2xhc3M9XCJtci0wNVwiIGljb249XCJ0aW1lc1wiPjwvZmEtaWNvbj4ge3sgJ0NBTkNFTCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbiAgPC9zYXQtcG9wb3Zlcj5cclxuXHJcblxyXG4gIDxzYXQtcG9wb3ZlciAjcCBoYXNCYWNrZHJvcCBbaW50ZXJhY3RpdmVDbG9zZV09XCJ0cnVlXCIgdmVydGljYWxBbGlnbj1cImFib3ZlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidG9vbHRpcC13cmFwcGVyXCI+XHJcbiAgICAgIDx0YWJsZT5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICA8dGQ+Q3RybCArIFE6IDwvdGQ+XHJcbiAgICAgICAgICA8dGQ+Jm5ic3A7PC90ZD5cclxuICAgICAgICAgIDx0ZD4ge3sgJ1NIRUxMLlRPT1BFTlNFQVJDSE1FTlUnIHwgdHJhbnNsYXRlfX08L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgPHRkPkN0cmwgKyBCOiA8L3RkPlxyXG4gICAgICAgICAgPHRkPiZuYnNwOzwvdGQ+XHJcbiAgICAgICAgICA8dGQ+IHt7ICdTSEVMTC5UT09QRU5HT0FMU0FORFVTRVJTJyB8IHRyYW5zbGF0ZX19PC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0ZD5DdHJsICsgWTogPC90ZD5cclxuICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxyXG4gICAgICAgICAgPHRkPiB7eyAnU0hFTEwuVE9TRUFSQ0hCWUlEJyB8IHRyYW5zbGF0ZX19PC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0ZD5DdHJsICsgTTogPC90ZD5cclxuICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxyXG4gICAgICAgICAgPHRkPiB7eyAnU0hFTEwuVE9DTE9TRU1FTlUnIHwgdHJhbnNsYXRlfX08L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICA8L3NhdC1wb3BvdmVyPlxyXG5cclxuICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJzZWFyY2hCeVRleHRMb2FkaW5nICYmIGRpc3BsYXlcIiBjbGFzcz1cInNwaW5uZXItY2xhc3NcIiBbZGlhbWV0ZXJdPVwiMTAwXCI+PC9tYXQtc3Bpbm5lcj4iXX0=
2778
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zaGVsbC1tb2R1bGUtY29tcG9uZW50cy9zaGVsbC1jb21wb25lbnRzL3NyYy9saWIvc2hlbGwtY29tcG9uZW50cy9jb21wb25lbnRzL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXNCLFlBQVksRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFLLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFtQixZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRixPQUFPLEVBQVMsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE9BQU8sS0FBSyxvQkFBb0IsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFJakYsT0FBTyxFQUEwQixhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU14RSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUdqQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENB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QztnQkFDVCxRQUFRLEVBQUUsVUFBVTtnQkFDcEIsV0FBVyxFQUFFLHVCQUF1QjthQUNyQzsyWUFrSW1DLE1BQU07c0JBQXJDLE1BQU07dUJBQUMsTUFBTTsyRkE3SGUsZUFBZTtrQkFBN0MsWUFBWTttQkFBQyxlQUFlO1lBQ0gsV0FBVztrQkFBcEMsU0FBUzttQkFBQyxhQUFhO1lBQ0YsT0FBTztrQkFBNUIsU0FBUzttQkFBQyxTQUFTO1lBQ1csZ0JBQWdCO2tCQUE5QyxTQUFTO21CQUFDLGtCQUFrQjtZQUNILFdBQVc7a0JBQXBDLFNBQVM7bUJBQUMsYUFBYTtZQUNHLG1CQUFtQjtrQkFBN0MsU0FBUzttQkFBQyxjQUFjO1lBQ1MsV0FBVztrQkFBNUMsU0FBUzttQkFBQyxhQUFhO1lBQ2MsZUFBZTtrQkFBcEQsU0FBUzttQkFBQyxpQkFBaUI7WUFDWSxpQkFBaUI7a0JBQXhELFNBQVM7bUJBQUMsbUJBQW1CO1lBQ0osV0FBVztrQkFBcEMsU0FBUzttQkFBQyxhQUFhO1lBQ2QsUUFBUTtrQkFBakIsTUFBTTtZQUNHLGdCQUFnQjtrQkFBekIsTUFBTTtZQXdFSCxTQUFTO2tCQURaLEtBQUs7bUJBQUMsUUFBUTtZQWlMZixZQUFZO2tCQURYLFlBQVk7bUJBQUMsNEJBQTRCLEVBQUUsRUFBRTtZQVc5QyxhQUFhO2tCQURaLFlBQVk7bUJBQUMsNEJBQTRCLEVBQUUsRUFBRTtZQVc5QyxrQkFBa0I7a0JBRGpCLFlBQVk7bUJBQUMsNEJBQTRCLEVBQUUsRUFBRTtZQVU5QyxnQkFBZ0I7a0JBRGYsWUFBWTttQkFBQyw0QkFBNEIsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGRyZW4sIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgT25Jbml0LCBIb3N0TGlzdGVuZXIsIENoYW5nZURldGVjdG9yUmVmLCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFN0b3JlLCBzZWxlY3QgfSBmcm9tIFwiQG5ncngvc3RvcmVcIjtcclxuLy8gaW1wb3J0IHsgU3RhdGUgfSBmcm9tIFwiYXBwL3NoYXJlZC9zdG9yZS9yZWR1Y2Vycy9tZW51aXRlbXMucmVkdWNlcnNcIjtcclxuaW1wb3J0IHsgU3RhdGUgfSBmcm9tIFwiLi4vLi4vc3RvcmUvcmVkdWNlcnMvaW5kZXhcIjtcclxuaW1wb3J0ICogYXMgc2hhcmVkTW9kdWxlUmVkdWNlcnMgZnJvbSBcIi4vLi4vLi4vc3RvcmUvcmVkdWNlcnMvaW5kZXhcIjtcclxuaW1wb3J0IHsgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IEdldEFsbE1lbnVJdGVtc1RyaWdnZXJlZCB9IGZyb20gXCIuLi8uLi9zdG9yZS9hY3Rpb25zL21lbnVpdGVtcy5hY3Rpb25zXCI7XHJcbmltcG9ydCB7IE1hdE1lbnVUcmlnZ2VyIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL21lbnVcIjtcclxuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gXCJuZ3gtY29va2llLXNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgTmF2aWdhdGlvbkVuZCB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHsgTWF0T3B0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyXCI7XHJcbmltcG9ydCB7IFJlY2VudFNlYXJjaFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcmVjZW50U2VhcmNoLnNlcnZpY2VcIjtcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25BY3Rpb25UeXBlcywgR2V0Q29tcGFueVRoZW1lVHJpZ2dlcmVkIH0gZnJvbSBcIi4uLy4uL3N0b3JlL2FjdGlvbnMvYXV0aGVudGljYXRpb24uYWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBvZlR5cGUsIEFjdGlvbnMgfSBmcm9tIFwiQG5ncngvZWZmZWN0c1wiO1xyXG5pbXBvcnQgeyBTZWFyY2hUYXNrVHlwZSB9IGZyb20gXCIuL3NlYXJjaFRhc2suZW51bVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTYXRQb3BvdmVyIH0gZnJvbSAnQG5jc3RhdGUvc2F0LXBvcG92ZXInO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ3VuZGVyc2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLXVzZWQuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvY29uc3RhbnRzL2xvY2Fsc3RvcmFnZS1wcm9wZXJ0aWVzJztcclxuaW1wb3J0IHsgRW1wbG95ZWVMaXN0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW1wbG95ZWUnO1xyXG5pbXBvcnQgeyBFbXBsb3llZUxpc3RJbnB1dCB9IGZyb20gJy4uLy4uL21vZGVscy9lbXBsb3llZS1MaXN0JztcclxuaW1wb3J0IHsgQ3VzdG9tQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbGRlcGVuZGVuY2llcy9jb21wb25lbnRzL2NvbXBvbmVudGJhc2UnO1xyXG5pbXBvcnQgeyBTb2Z0TGFiZWxDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvc29mdGxhYmVscy1tb2RlbCc7XHJcbmltcG9ydCB7IElNZW51SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9JTWVudUl0ZW0nO1xyXG5pbXBvcnQgeyBVc2VyU3RvcnkgfSBmcm9tICcuLi8uLi9tb2RlbHMvdXNlclN0b3J5JztcclxuaW1wb3J0IHsgV2lkZ2V0TGlzdCB9IGZyb20gJy4uLy4uL21vZGVscy93aWRnZXRsaXN0JztcclxuaW1wb3J0IHsgRHJhZ2VkV2lkZ2V0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RyYWdlZFdpZGdldCc7XHJcbmltcG9ydCB7IFdvcmtzcGFjZUxpc3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvd29ya3NwYWNlTGlzdCc7XHJcbmltcG9ydCB7IFJlY2VudFNlYXJjaE1vZGVsLCBTZWFyY2hUYXNrVHlwZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1JlY2VudFNlYXJjaE1vZGVsJztcclxuaW1wb3J0IHsgVGhlbWVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy90aGVtZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBXSU5ET1cgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxkZXBlbmRlbmNpZXMvaGVscGVycy93aW5kb3cuaGVscGVyJztcclxuaW1wb3J0IHsgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGhlbWUuc2VydmljZSc7XHJcbmltcG9ydCB7IEdvb2dsZUFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9nb29nbGUtYW5hbHl0aWNzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9qZWN0U2VhcmNoQ3JpdGVyaWFJbnB1dE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL1Byb2plY3RTZWFyY2hDcml0ZXJpYUlucHV0TW9kZWwnO1xyXG5pbXBvcnQgeyBNZW51Q2F0ZWdvcmllcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9tZW51LWNhdGVnb3JpZXMnO1xyXG5pbXBvcnQgeyBGZWF0dXJlSWRzIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2NvbnN0YW50cy9mZWF0dXJlLWlkcyc7XHJcbmltcG9ydCAnLi4vLi4vLi4vZ2xvYmFsZGVwZW5kZW5jaWVzL2hlbHBlcnMvZm9udGF3ZXNvbWUtaWNvbnMnO1xyXG5pbXBvcnQgeyBSZWNlbnRTZWFyY2hUeXBlIH0gZnJvbSAnLi4vLi4vZW51bS9yZWNlbnRTZWFyY2hUeXBlLmVudW0nO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSBcIm5neC10b2FzdHJcIjtcclxuaW1wb3J0IHsgdHJpZ2dlciwgc3R5bGUsIGFuaW1hdGUsIHRyYW5zaXRpb24gfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlXCI7XHJcblxyXG4vKiogQGR5bmFtaWMgKi9cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC1tZW51XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9tZW51LmNvbXBvbmVudC5odG1sXCJcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBNZW51Q29tcG9uZW50IGV4dGVuZHMgQ3VzdG9tQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgW3g6IHN0cmluZ106IGFueTtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihcIm9wZW5NZW51UG9wVXBcIikgb3Blbk1lbnVQb3BPdmVyO1xyXG4gIEBWaWV3Q2hpbGQoXCJtZW51VHJpZ2dlclwiKSBtZW51VHJpZ2dlcjogTWF0TWVudVRyaWdnZXI7XHJcbiAgQFZpZXdDaGlsZChcImVsZW1lbnRcIikgZWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwid29ya3NwYWNlRWxlbWVudFwiKSB3b3Jrc3BhY2VFbGVtZW50OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJtZW51RWxlbWVudFwiKSBtZW51RWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiYWRkV29ya3NwYWNlXCIpIGFkZFdvcmtTcGFjZVBvcE92ZXI6IFNhdFBvcG92ZXI7XHJcbiAgQFZpZXdDaGlsZChcImFsbFNlbGVjdGVkXCIpIHByaXZhdGUgYWxsU2VsZWN0ZWQ6IE1hdE9wdGlvbjtcclxuICBAVmlld0NoaWxkKFwiYWxsRWRpdFNlbGVjdGVkXCIpIHByaXZhdGUgYWxsRWRpdFNlbGVjdGVkOiBNYXRPcHRpb247XHJcbiAgQFZpZXdDaGlsZChcImFsbERlbGV0ZVNlbGVjdGVkXCIpIHByaXZhdGUgYWxsRGVsZXRlU2VsZWN0ZWQ6IE1hdE9wdGlvbjtcclxuICBAVmlld0NoaWxkKCdpbmZvUG9wT3ZlcicpIGluZm9Qb3BPdmVyOiBUZW1wbGF0ZVJlZjxhbnk+XHJcbiAgQE91dHB1dCgpIGlzT3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIG9wZW5OZXdEYXNoYm9hcmQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBlOiBFbGVtZW50O1xyXG4gIHNlYXJjaFRleHQ6IHN0cmluZztcclxuICBmb2N1czogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNvZnRMYWJlbHM6IFNvZnRMYWJlbENvbmZpZ3VyYXRpb25Nb2RlbFtdO1xyXG4gIHB1YmxpYyBtZW51SXRlbXMkOiBPYnNlcnZhYmxlPElNZW51SXRlbVtdPjtcclxuICB1c2VyU3Rvcmllc0xpc3QkOiBPYnNlcnZhYmxlPFVzZXJTdG9yeVtdPjtcclxuICBtZW51SXRlbTogSU1lbnVJdGVtW107XHJcbiAgaXRlbXMgPSBbXTtcclxuICBtZW51SXRlbU5hbWU6IHN0cmluZyA9IFwiXCI7XHJcbiAgd2lkZ2V0czogV2lkZ2V0TGlzdFtdO1xyXG4gIG9yaWdpbmFsV2lkZ2V0czogV2lkZ2V0TGlzdFtdO1xyXG4gIHNlbGVjdGVkTGlzdDogRHJhZ2VkV2lkZ2V0W107XHJcbiAgd2lkZ2V0OiBXaWRnZXRMaXN0O1xyXG4gIHNlbGVjdGVkQXBwczogYW55O1xyXG4gIHVybDogc3RyaW5nO1xyXG4gIHNlbGVjdGVkRGFzaGJvYXJkOiBhbnk7XHJcbiAgZGVmYXVsdERhc2hib2FyZDogYW55O1xyXG4gIHN1YkxldmVsczogc3RyaW5nW10gPSBbXTtcclxuICBzdGF0ZUx2bDE6IHN0cmluZztcclxuICBsZXZlbDNMaW5rMTogc3RyaW5nO1xyXG4gIGxldmVsM0xpbmsyOiBzdHJpbmc7XHJcbiAgc3ViTGV2ZWxzRm9yTGV2ZWwyOiBzdHJpbmc7XHJcbiAgY29tcGFueU1haW5Mb2dvOiBzdHJpbmc7XHJcbiAgY29tcGFueU1pbmlMb2dvOiBzdHJpbmc7XHJcbiAgcm9sZXNEcm9wRG93bjogYW55W107XHJcbiAgd29ya3NwYWNlc0xpc3QkOiBPYnNlcnZhYmxlPFdvcmtzcGFjZUxpc3RbXT47XHJcbiAgd29ya3NwYWNlczogV29ya3NwYWNlTGlzdFtdO1xyXG4gIHdvcmtzcGFjZXNGb3JMb29wOiBhbnk7XHJcbiAgZGlzcGxheTogYm9vbGVhbjtcclxuICBhZG1pblRvb2xzOiBhbnkgPSBbXTtcclxuICB0b29sczogYW55O1xyXG4gIHNlbGVjdGVkUm93SW5kZXg6IGFueTtcclxuICBpdGVtQ2xpY2tlZDogYW55O1xyXG4gIHQ6IGFueTtcclxuICB3ZDogYW55O1xyXG4gIHdzOiBhbnk7XHJcbiAgcnM6IGFueTtcclxuICBhbGxzZWFyY2hlczogUmVjZW50U2VhcmNoTW9kZWxbXSA9IFtdO1xyXG4gIHJlY2VudFNlYXJjaGVzOiBSZWNlbnRTZWFyY2hNb2RlbFtdID0gW107XHJcbiAgcHJvamVjdFJvbGVUZXh0OiBzdHJpbmcgPSBcIlByb2plY3Qgcm9sZSBjb25maWd1cmF0aW9uXCI7XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnM6IEJvb2xlYW47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtOiBCb29sZWFuO1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdGb3JtczogQm9vbGVhbjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zOiBCb29sZWFuO1xyXG4gIGNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlczogQm9vbGVhbjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9ucyQ6IE9ic2VydmFibGU8Qm9vbGVhbj47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtJDogT2JzZXJ2YWJsZTxCb29sZWFuPjtcclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXMkOiBPYnNlcnZhYmxlPEJvb2xlYW4+XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlUHJvamVjdFJvbGVQZXJtaXNzaW9ucyQ6IE9ic2VydmFibGU8Qm9vbGVhbj5cclxuICBjYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXMkOiBPYnNlcnZhYmxlPEJvb2xlYW4+O1xyXG4gIGNvbXBhbnlTZXR0aW5nc01PZGVsJDogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgZGlzYWJsZVdvcmtzcGFjZSA9IGZhbHNlO1xyXG4gIGRpc2FibGVXb3Jrc3BhY2VEZWxldGUgPSBmYWxzZTtcclxuICBkaXNhYmxlV29ya3NwYWNlaGlkZSA9IGZhbHNlO1xyXG4gIGZvcm1zOiBhbnk7XHJcbiAgY3VzdGFwcDogYW55O1xyXG4gIHByb2plY3RSb2xlQ29uZmlndXJhdGlvbjogYW55O1xyXG4gIHJvbGVDb25maWd1cmF0aW9uOiBhbnk7XHJcbiAgdGhlbWVNb2RlbDogVGhlbWVNb2RlbDtcclxuICBlbXBsb3llZUxpc3Q6IGFueVtdID0gW107XHJcbiAgdGhlbWVNb2RlbCQ6IE9ic2VydmFibGU8VGhlbWVNb2RlbD47XHJcbiAgdGhlbWVCYXNlQ29sb3I6IHN0cmluZztcclxuICBzZWxlY3RlZEVtcGxveWVlOiBzdHJpbmc7XHJcbiAgbG9hZGVkRW1wbG95ZWVMaXN0OiBFbXBsb3llZUxpc3RNb2RlbFtdID0gW107XHJcbiAgc2VsZWN0ZWRFbXBsb3llZUluZGV4OiBudW1iZXIgPSBudWxsO1xyXG4gIHZpZXdFbXBsb3llZVBlcm1pc3Npb246IGJvb2xlYW47XHJcbiAgY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzOiBCb29sZWFuO1xyXG4gIHByb2plY3RMaXN0OiBhbnkgPSBbXTtcclxuICBwcm9qZWN0SW5kZXg6IGFueTtcclxuICBzZWFyY2hCeVRleHRMb2FkaW5nOiBib29sZWFuO1xyXG4gIEBJbnB1dChcInJlbG9hZFwiKVxyXG4gIHNldCByZWxvYWRBbGwoZGF0YTogYm9vbGVhbikge1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgdGhpcy5hZG1pblRvb2xzID0gW107XHJcbiAgICAgIHRoaXMudG9vbHMgPSBbXTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgbmdEZXN0cm95ZWQkID0gbmV3IFN1YmplY3QoKTtcclxuICB1c2VyU3RvcnlMaXN0OiBhbnkgPSBbXTtcclxuICB1c2VyU3RvcnlTZWFyY2hMaXN0OiBhbnkgPSBbXTtcclxuICBnb2FsU2VhcmNoTGlzdDogYW55ID0gW107XHJcbiAgaXNFbmFibGVCdWdCb2FyZDogYm9vbGVhbjtcclxuICBzZWxlY3RlZFJvbGVJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgZGFzaGJvYXJkVXBkYXRlSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuICB1c2VyczogYW55O1xyXG4gIGdvYWxJbmRleDogYW55O1xyXG4gIHdvcmtzcGFjZUZvcm06IEZvcm1Hcm91cDtcclxuICBwcm9qZWN0U2VhcmNoUmVzdWx0czogYW55O1xyXG4gIGRlbGF5VGltZUlucHV0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gIG1lbnVzZmV0Y2hJblByb2dyZXNzOiBib29sZWFuO1xyXG4gIHdvcmtzcGFjZXNmZXRjaEluUHJvZ3Jlc3M6IGJvb2xlYW47XHJcbiAgd2lkZ2V0c2ZldGNoSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuICByZWNlbnRTZWFyY2hlc2ZldGNoSW5Qcm9ncmVzczogYm9vbGVhbjtcclxuICBzZWFyY2hUYXNrczogU2VhcmNoVGFza1R5cGVNb2RlbDtcclxuICBsb2FkaW5nU2VhcmNoTWVudURhdGE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkZWZhdWx0RGFzaGJvYXJkSWQ6IHN0cmluZztcclxuICBzZWFyY2hCeUlkOiBib29sZWFuO1xyXG4gIHNlYXJjaEJ5VGV4dDogYm9vbGVhbjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPFN0YXRlPixcclxuICAgIHByaXZhdGUgY29va2llU2VydmljZTogQ29va2llU2VydmljZSxcclxuICAgIHB1YmxpYyByb3V0ZXM6IFJvdXRlcixcclxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHJzczogUmVjZW50U2VhcmNoU2VydmljZSxcclxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZSxcclxuICAgIHByaXZhdGUgYWN0aW9uVXBkYXRlcyQ6IEFjdGlvbnMsXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBJbmplY3QoV0lORE9XKSBwcml2YXRlIHdpbmRvdzogV2luZG93LFxyXG4gICAgcHJpdmF0ZSBnb29nbGVBbmFseXRpY3NTZXJ2aWNlOiBHb29nbGVBbmFseXRpY3NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgLy90aGlzLm9uRm9jdXMoKTtcclxuXHJcbiAgICAvLyBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgIC8vIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5TZWFyY2hDbGljaywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyB9KSk7XHJcbiAgICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzID0gcmVzdWx0O1xyXG4gICAgfSlcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVdvcmtzcGFjZUZvcm0oKTtcclxuICAgIHRoaXMucm91dGVzLmV2ZW50cy5zdWJzY3JpYmUodmFsID0+IHtcclxuICAgICAgaWYgKHRoaXMubG9jYXRpb24ucGF0aCgpICE9IFwiXCIpIHtcclxuICAgICAgICB0aGlzLnVybCA9IHRoaXMubG9jYXRpb24ucGF0aCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMud2lkZ2V0U2VydmljZS5zZWxlY3RlZFdvcmtzcGFjZS5zdWJzY3JpYmUoaWQgPT4ge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkRGFzaGJvYXJkID0gaWQ7XHJcbiAgICAvLyB9KTtcclxuICAgIC8vIHRoaXMuYWN0aW9uVXBkYXRlcyRcclxuICAgIC8vICAgLnBpcGUoXHJcbiAgICAvLyAgICAgdGFrZVVudGlsKHRoaXMubmdEZXN0cm95ZWQkKSxcclxuICAgIC8vICAgICBvZlR5cGUoQXV0aGVudGljYXRpb25BY3Rpb25UeXBlcy5HZXRDb21wYW55VGhlbWVDb21wbGV0ZWQpLFxyXG4gICAgLy8gICAgIHRhcCgoKSA9PiB7XHJcbiAgICAvL3RoaXMudGhlbWVNb2RlbCQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldFRoZW1lTW9kZWwpKTtcclxuICAgIC8vdGhpcy50aGVtZU1vZGVsJC5zdWJzY3JpYmUoeCA9PiB0aGlzLnRoZW1lTW9kZWwgPSB4KTtcclxuICAgIC8vIHRoaXMuZ2V0VGhlbWUoKTtcclxuICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgdGhpcy50aGVtZU1vZGVsID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKCdDb21wYW55VGhlbWUnKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlUaGVtZVwiKSkgOiBudWxsO1xyXG4gICAgdGhpcy50aGVtZVNlcnZpY2UuY2hhbmdlVGhlbWUodGhpcy50aGVtZU1vZGVsKTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgdGhpcy50aGVtZU1vZGVsID0gdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKCdDb21wYW55VGhlbWUnKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChcIkNvbXBhbnlUaGVtZVwiKSkgOiBudWxsO1xyXG5cclxuICAgIHZhciBjb21wYW55U2V0dGluZ3NNb2RlbCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55U2V0dGluZ3MpKTtcclxuXHJcbiAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWFpbmxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNYWluTG9nbztcclxuICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtaW5pbG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1pbmlMb2dvO1xyXG5cclxuICAgIGNvbnN0IGZhdmljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNob3J0Y3V0LWZhdi1pY29uXCIpO1xyXG4gICAgaWYgKGZhdmljb24pIHtcclxuICAgICAgZmF2aWNvbi5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28pO1xyXG4gICAgfVxyXG4gICAgdGhpcy50aGVtZUJhc2VDb2xvciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0aGVtZUNvbG9yJyk7XHJcbiAgICAvLyAvLyB0aGlzLnRoZW1lTW9kZWwgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soJ0NvbXBhbnlUaGVtZScpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueVRoZW1lXCIpKSA6IG51bGw7XHJcbiAgICAvLyAvLyBpZiAodGhpcy50aGVtZU1vZGVsICYmIHRoaXMudGhlbWVNb2RlbC5jb21wYW55VGhlbWVJZCAhPT0gXCIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIikge1xyXG4gICAgLy8gLy8gICB0aGlzLnRoZW1lU2VydmljZS5jaGFuZ2VUaGVtZSh0aGlzLnRoZW1lTW9kZWwpO1xyXG4gICAgLy8gLy8gICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1haW5Mb2dvLCBudWxsKTtcclxuICAgIC8vIC8vICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbywgdGhpcy50aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbywgbnVsbCk7XHJcbiAgICAvLyAvLyB9XHJcbiAgICAvLyAvLyBlbHNlIHtcclxuICAgIC8vIC8vICAgdmFyIHRoZW1lTW9kZWwgPSBuZXcgVGhlbWVNb2RlbCgpXHJcbiAgICAvLyAvLyAgIHRoZW1lTW9kZWwuY29tcGFueVRoZW1lSWQgPSBcIjA5MjlEMzVBLTM1NzMtNEIwNi05M0ZCLUM3RDQ2QUFGQTkxOFwiO1xyXG4gICAgLy8gLy8gICAvLyB0aGVtZU1vZGVsLmNvbXBhbnlNaW5pTG9nbyA9IFwiYXNzZXRzL2ltYWdlcy9Mb2dvLWZhdmljb24ucG5nXCI7XHJcbiAgICAvLyAvLyAgIC8vIHRoZW1lTW9kZWwuY29tcGFueU1haW5Mb2dvID0gXCJhc3NldHMvaW1hZ2VzL01haW4tTG9nby5wbmdcIjtcclxuICAgIC8vIC8vICAgdGhpcy50aGVtZU1vZGVsID0gdGhlbWVNb2RlbDtcclxuICAgIC8vIC8vICAgdGhpcy50aGVtZVNlcnZpY2UuY2hhbmdlVGhlbWUodGhlbWVNb2RlbCk7XHJcbiAgICAvLyAvLyAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWFpbkxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWFpbkxvZ28sIG51bGwpO1xyXG4gICAgLy8gLy8gICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1pbmlMb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1pbmlMb2dvLCBudWxsKTtcclxuICAgIC8vIC8vIH1cclxuICAgIC8vIC8vIHRoaXMuY29tcGFueU1haW5Mb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbyk7XHJcbiAgICAvLyAvLyB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28pO1xyXG4gICAgLy8gLy8gLy90aGlzLmNoYW5nZUZhdkljb24oKTtcclxuICAgIC8vIC8vIHRoaXMudGhlbWVCYXNlQ29sb3IgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGhlbWVDb2xvcicpO1xyXG4gICAgLy90aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIC8vICAgfSlcclxuICAgIC8vIClcclxuICAgIC8vIC5zdWJzY3JpYmUoKTtcclxuXHJcblxyXG4gICAgLy8gdGhpcy5hY3Rpb25VcGRhdGVzJFxyXG4gICAgLy8gICAucGlwZShcclxuICAgIC8vICAgICB0YWtlVW50aWwodGhpcy5uZ0Rlc3Ryb3llZCQpLFxyXG4gICAgLy8gICAgIG9mVHlwZShXb3Jrc3BhY2VzQWN0aW9uVHlwZXMuTG9hZFdvcmtzcGFjZUJ5SWRDb21wbGV0ZWQpLFxyXG4gICAgLy8gICAgIHRhcCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAvLyAgICAgICB2YXIgd29ya3NwYWNlc0xpc3QgPSBkYXRhLnNlYXJjaFdvcmtzcGFjZXNTdWNjZXNzO1xyXG4gICAgLy8gICAgICAgdGhpcy5kYXNoYm9hcmRVcGRhdGVJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAvLyAgICAgICAvLyB0aGlzLmNsb3NlQWRkV29ya3NwYWNlRGlhbG9nKCk7XHJcbiAgICAvLyAgICAgICB0aGlzLmRpc2FibGVXb3Jrc3BhY2UgPSBmYWxzZTtcclxuICAgIC8vICAgICAgIGlmICh3b3Jrc3BhY2VzTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMud29ya3NwYWNlcy5wdXNoKHdvcmtzcGFjZXNMaXN0WzBdKTtcclxuICAgIC8vICAgICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICAvLyAgICAgICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgLy8gICAgICAgICB0aGlzLm9wZW5OZXdEYXNoYm9hcmQuZW1pdCh3b3Jrc3BhY2VzTGlzdFswXS53b3Jrc3BhY2VJZClcclxuICAgIC8vICAgICAgIH1cclxuXHJcbiAgICAvLyAgICAgfSlcclxuICAgIC8vICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAvL3RoaXMuZ2V0QWxsUHJvamVjdHMoKTtcclxuXHJcbiAgICB0aGlzLmRlbGF5VGltZUlucHV0LnBpcGUoXHJcbiAgICAgIGRlYm91bmNlVGltZSgyMDAwKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgdGhpcy5TZWFyY2hJdGVtKHZhbHVlKTtcclxuICAgICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0VGhlbWUoKSB7XHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5nZXRUaGVtZXMoKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICBsZXQgZW52aXJvbm1lbnQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRW52aXJvbm1lbnQpKTtcclxuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KCdDb21wYW55VGhlbWUnLCBKU09OLnN0cmluZ2lmeShyZXNwb25zZS5kYXRhKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICB0aGlzLnRoZW1lTW9kZWwgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soJ0NvbXBhbnlUaGVtZScpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueVRoZW1lXCIpKSA6IG51bGw7XHJcbiAgICAgICAgdGhpcy50aGVtZVNlcnZpY2UuY2hhbmdlVGhlbWUodGhpcy50aGVtZU1vZGVsKTtcclxuICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvLCB0aGlzLnRoZW1lTW9kZWwuY29tcGFueU1haW5Mb2dvLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28sIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28sIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgdGhpcy5zaXRlVXJsID0gcmVzcG9uc2UuZGF0YS5yZWdpc3RyZXJTaXRlQWRkcmVzcztcclxuICAgICAgICB0aGlzLnRoZW1lTW9kZWwgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soJ0NvbXBhbnlUaGVtZScpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KFwiQ29tcGFueVRoZW1lXCIpKSA6IG51bGw7XHJcblxyXG4gICAgICAgIHZhciBjb21wYW55U2V0dGluZ3NNb2RlbCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55U2V0dGluZ3MpKTtcclxuXHJcbiAgICAgICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWFpbkxvZ287XHJcbiAgICAgICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWluaUxvZ287XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1haW5Mb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbXBhbnlNYWluTG9nbyA9IHJlc3BvbnNlLmRhdGEuY29tcGFueU1haW5Mb2dvO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jb21wYW55TWluaUxvZ28gPT0gXCJcIiB8fCB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBudWxsIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSByZXNwb25zZS5kYXRhLmNvbXBhbnlNaW5pTG9nbztcclxuICAgICAgICB9XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaG9ydGN1dC1mYXYtaWNvblwiKS5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHRoaXMudGhlbWVNb2RlbC5jb21wYW55TWluaUxvZ28pO1xyXG4gICAgICAgIHRoaXMudGhlbWVCYXNlQ29sb3IgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGhlbWVDb2xvcicpO1xyXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uY29udHJvbC5xJywgW10pXHJcbiAga2V5T3BlbkV2ZW50KCkge1xyXG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgIHRoaXMub25Gb2N1cygpXHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmNvbnRyb2wubScsIFtdKVxyXG4gIGtleUNsb3NlRXZlbnQoKSB7XHJcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgdGhpcy5zZWFyY2hCeVRleHQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmNvbnRyb2wuYicsIFtdKVxyXG4gIHJlbW90ZVNlYXJjaEJ5VGV4dCgpIHtcclxuICAgIHRoaXMuc2VhcmNoQnlJZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hCeVRleHQgPSB0cnVlXHJcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgLy90aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmNvbnRyb2wueScsIFtdKVxyXG4gIHJlbW90ZVNlYXJjaEJ5SWQoKSB7XHJcbiAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlXHJcbiAgICB0aGlzLnNlYXJjaEJ5SWQgPSB0cnVlO1xyXG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIC8vdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gIH1cclxuXHJcbiAgY29udmVydFRvTG9jYWxUaW1lKHRpbWUpIHtcclxuICAgIHZhciB1dGNEYXRlID0gbW9tZW50LnV0Yyh0aW1lKS5mb3JtYXQoKTtcclxuICAgIHZhciBsb2NhbERhdGUgPSBtb21lbnQudXRjKHV0Y0RhdGUpLmxvY2FsKCkuZm9ybWF0KCk7XHJcbiAgICByZXR1cm4gbG9jYWxEYXRlO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZVdvcmtzcGFjZUZvcm0oKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm9sZUlkcyA9IG51bGw7XHJcbiAgICB0aGlzLmRpc2FibGVXb3Jrc3BhY2UgPSBmYWxzZTtcclxuICAgIHRoaXMuZGlzYWJsZVdvcmtzcGFjZWhpZGUgPSBmYWxzZTtcclxuICAgIHRoaXMud29ya3NwYWNlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgICB3b3Jrc3BhY2VOYW1lOiBuZXcgRm9ybUNvbnRyb2wobnVsbCxcclxuICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKVxyXG4gICAgICAgIF0pXHJcbiAgICAgICksXHJcbiAgICAgIHNlbGVjdGVkUm9sZXM6IG5ldyBGb3JtQ29udHJvbChudWxsLFxyXG4gICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXHJcbiAgICAgICAgXSlcclxuICAgICAgKSxcclxuICAgICAgZGVzY3JpcHRpb246IG5ldyBGb3JtQ29udHJvbChudWxsLFxyXG4gICAgICAgIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDAwKVxyXG4gICAgICAgIF0pXHJcbiAgICAgICksXHJcbiAgICAgIGVkaXRSb2xlSWRzOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW10pLFxyXG4gICAgICBkZWxldGVSb2xlSWRzOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW10pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICB0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCA9IHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpID8gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGVmYXVsdERhc2hib2FyZCkpIDogbnVsbDs7XHJcblxyXG4gICAgLy90aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBHZXRDb21wYW55VGhlbWVUcmlnZ2VyZWQoKSk7XHJcbiAgICB0aGlzLmFkbWluVG9vbHMgPSBbXTtcclxuICAgIC8vIHZhciBkYXNoYm9hcmRzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRhc2hib2FyZHMpKTtcclxuICAgIC8vIGlmIChkYXNoYm9hcmRzICYmIGRhc2hib2FyZHMgIT0gXCJudWxsXCIpIHtcclxuICAgIC8vICAgdGhpcy53b3Jrc3BhY2VzID0gdGhpcy53b3Jrc3BhY2VzRm9yTG9vcCA9IGRhc2hib2FyZHM7XHJcbiAgICAvLyB9XHJcbiAgICAvLyB2YXIgbWVudUl0ZW1zID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLk1lbnVJdGVtcykpXHJcbiAgICAvLyBpZiAobWVudUl0ZW1zICYmIG1lbnVJdGVtcyAhPSBcIm51bGxcIikge1xyXG4gICAgLy8gICB0aGlzLm1lbnVJdGVtID0gbWVudUl0ZW1zO1xyXG4gICAgLy8gICB0aGlzLml0ZW1zID0gdGhpcy5tZW51SXRlbS5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKTtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICAvLyB9XHJcbiAgICAvLyB2YXIgd2lkZ2V0cyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5GYXZvdXJpdGVXaWRnZXRzKSk7XHJcbiAgICAvLyBpZiAod2lkZ2V0cyAmJiB3aWRnZXRzICE9IFwibnVsbFwiKSB7XHJcbiAgICAvLyAgIHRoaXMud2lkZ2V0cyA9IHRoaXMub3JpZ2luYWxXaWRnZXRzID0gd2lkZ2V0cztcclxuICAgIC8vIH1cclxuICAgIC8vIHZhciByZWNlbnRTZWFyY2hlcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWNlbnRTZWFyY2hlcykpO1xyXG4gICAgLy8gaWYgKHJlY2VudFNlYXJjaGVzICYmIHJlY2VudFNlYXJjaGVzICE9IFwibnVsbFwiKSB7XHJcbiAgICAvLyAgIHRoaXMuYWxsc2VhcmNoZXMgPSB0aGlzLnJlY2VudFNlYXJjaGVzID0gcmVjZW50U2VhcmNoZXM7XHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLmxvYWRXaWRnZXRzTGlzdCgpO1xyXG4gICAgLy8gIHRoaXMubG9hZFdvcmtzcGFjZXNMaXN0KCk7XHJcbiAgICB0aGlzLmdldFNvZnRMYWJlbENvbmZpZ3VyYXRpb25zKCk7XHJcbiAgICB0aGlzLmdldENvbXBhbnlTZXR0aW5ncygpO1xyXG4gICAgdGhpcy5tZW51SXRlbXMkID0gdGhpcy5zdG9yZS5waXBlKFxyXG4gICAgICBzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZ2V0Q3VycmVudEFjdGl2ZU1lbnVDYXRlZ29yeU1lbnVJdGVtcyksXHJcbiAgICAgIHRhcChtZW51TGlzdCA9PiBjb25zb2xlLmxvZyhtZW51TGlzdCkpXHJcbiAgICApO1xyXG4gICAgLy8gdGhpcy5tZW51SXRlbXMkLnN1YnNjcmliZSh4ID0+IHtcclxuICAgIC8vICAgdmFyIGEgPSB4O1xyXG4gICAgLy8gICB2YXIgYiA9IHRoaXMubWVudUl0ZW0uZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlICE9IFwiZHJvcERvd25cIik7XHJcblxyXG4gICAgLy8gICAvL3RoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgLy8gICAvL3RoaXMubWVudXNmZXRjaEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIC8vIH0pO1xyXG5cclxuICAgIC8vIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEdldEFsbE1lbnVJdGVtc1RyaWdnZXJlZChNZW51Q2F0ZWdvcmllcy5NYWluKSk7XHJcblxyXG4gICAgdmFyIGNvbXBhbnlTZXR0aW5nc01vZGVsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlTZXR0aW5ncykpO1xyXG5cclxuICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKSAhPSBudWxsID8gY29tcGFueVNldHRpbmdzTW9kZWwuZmluZCh4ID0+IHgua2V5LnRvTG93ZXJDYXNlKCkgPT0gXCJtYWlubG9nb1wiKS52YWx1ZSA6IHRoaXMuY29tcGFueU1haW5Mb2dvO1xyXG4gICAgdGhpcy5jb21wYW55TWluaUxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1pbmlsb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWluaUxvZ287XHJcblxyXG4gICAgaWYgKHRoaXMuY29tcGFueU1haW5Mb2dvID09IFwiXCIgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gbnVsbCB8fCB0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueU1haW5Mb2dvKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWluaUxvZ28gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY29tcGFueU1pbmlMb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaG9ydGN1dC1mYXYtaWNvbicpLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdGhpcy5jb21wYW55TWluaUxvZ28pO1xyXG4gICAgfVxyXG4gICAgLy90aGlzLmdldFJlY2VudFNlYXJjaGVzKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkTGlzdCA9IFtdO1xyXG5cclxuICAgIC8vIHRoaXMuY3VzdGFwcCA9IHtcclxuICAgIC8vICAgbmFtZTogXCJDdXN0b20gYXBwbGljYXRpb25zXCIsXHJcbiAgICAvLyAgIGxpbms6IFwiL2FwcGxpY2F0aW9ucy9jdXN0b20tYXBwbGljYXRpb25zXCIsXHJcbiAgICAvLyAgIHBlcm1pc3Npb246IHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVBcHBsaWNhdGlvbnMkXHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLmZvcm1zID0ge1xyXG4gICAgLy8gICBuYW1lOiBcIkZvcm1zXCIsXHJcbiAgICAvLyAgIGxpbms6IFwiL2FwcGxpY2F0aW9ucy92aWV3LWZvcm1zXCIsXHJcbiAgICAvLyAgIHBlcm1pc3Npb246IHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld0Zvcm1zJFxyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy5wcm9qZWN0Um9sZUNvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICAvLyAgIG5hbWU6IFwiUHJvamVjdCByb2xlIGNvbmZpZ3VyYXRpb25cIixcclxuICAgIC8vICAgbGluazogXCIvcm9sZW1hbmFnZW1lbnQvZW50aXR5cm9sZW1hbmFnZW1lbnRcIixcclxuICAgIC8vICAgcGVybWlzc2lvbjogdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zJFxyXG4gICAgLy8gfVxyXG4gICAgLy8gdGhpcy5yb2xlQ29uZmlndXJhdGlvbiA9IHtcclxuICAgIC8vICAgbmFtZTogXCJSb2xlIGNvbmZpZ3VyYXRpb25cIixcclxuICAgIC8vICAgbGluazogXCIvcm9sZW1hbmFnZW1lbnQvcm9sZW1hbmFnZW1lbnRcIixcclxuICAgIC8vICAgcGVybWlzc2lvbjogdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Um9sZXMkXHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9BZGRPclVwZGF0ZUFwcGxpY2F0aW9ucyB9KSk7XHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlQXBwbGljYXRpb25zID0gcmVzdWx0O1xyXG4gICAgLy8gICBpZiAocmVzdWx0KSB7XHJcbiAgICAvLyAgICAgdGhpcy5hZG1pblRvb2xzLnNvbWUoKGZsb3cpID0+IGZsb3cubmFtZSA9PSAnQ3VzdG9tIGFwcGxpY2F0aW9ucycpID8gbnVsbCA6IHRoaXMuYWRtaW5Ub29scy5wdXNoKHRoaXMuY3VzdGFwcCk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlRm9ybSQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmRvZXNVc2VySGF2ZVBlcm1pc3Npb24sIHsgZmVhdHVyZUlkOiBGZWF0dXJlSWRzLkZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtIH0pKTtcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQWRkT3JVcGRhdGVGb3JtJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0FkZE9yVXBkYXRlRm9ybSA9IHJlc3VsdDtcclxuICAgIC8vICAgaWYgKHJlc3VsdCkge1xyXG4gICAgLy8gICAgIHRoaXMuYWRtaW5Ub29scy5zb21lKChmbG93KSA9PiBmbG93Lm5hbWUgPT0gJ0Zvcm1zJykgPyBudWxsIDogdGhpcy5hZG1pblRvb2xzLnB1c2godGhpcy5mb3Jtcyk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdGb3JtcyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmRvZXNVc2VySGF2ZVBlcm1pc3Npb24sIHsgZmVhdHVyZUlkOiBGZWF0dXJlSWRzLkZlYXR1cmVfVmlld0Zvcm1zIH0pKTsgICAgLy8gLy90aGlzLnJvdXRlLnVybC5zdWJzY3JpYmUoKHVybCkgPT4gdGhpcy51cmwgPSB1cmwudG9TdHJpbmcoKSk7XHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdGb3JtcyQuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgIC8vICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9WaWV3Rm9ybXMgPSByZXN1bHQ7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQpIHtcclxuICAgIC8vICAgICB0aGlzLmFkbWluVG9vbHMuc29tZSgoZmxvdykgPT4gZmxvdy5uYW1lID09ICdGb3JtcycpID8gbnVsbCA6IHRoaXMuYWRtaW5Ub29scy5wdXNoKHRoaXMuZm9ybXMpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KVxyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2hhcmVkTW9kdWxlUmVkdWNlcnMuZG9lc1VzZXJIYXZlUGVybWlzc2lvbiwgeyBmZWF0dXJlSWQ6IEZlYXR1cmVJZHMuRmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zIH0pKTtcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfTWFuYWdlUHJvamVjdFJvbGVQZXJtaXNzaW9ucyQuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgIC8vICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9NYW5hZ2VQcm9qZWN0Um9sZVBlcm1pc3Npb25zID0gcmVzdWx0O1xyXG4gICAgLy8gICBpZiAocmVzdWx0KSB7XHJcbiAgICAvLyAgICAgdGhpcy5hZG1pblRvb2xzLnNvbWUoKGZsb3cpID0+IGZsb3cubmFtZSA9PSAnUHJvamVjdCByb2xlIGNvbmZpZ3VyYXRpb24nKSA/IG51bGwgOiB0aGlzLmFkbWluVG9vbHMucHVzaCh0aGlzLnByb2plY3RSb2xlQ29uZmlndXJhdGlvbik7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlcyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmRvZXNVc2VySGF2ZVBlcm1pc3Npb24sIHsgZmVhdHVyZUlkOiBGZWF0dXJlSWRzLkZlYXR1cmVfVmlld1JvbGVzIH0pKTtcclxuICAgIC8vIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfVmlld1JvbGVzJC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgLy8gICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX1ZpZXdSb2xlcyA9IHJlc3VsdDtcclxuICAgIC8vICAgaWYgKHJlc3VsdCkge1xyXG4gICAgLy8gICAgIHRoaXMuYWRtaW5Ub29scy5zb21lKChmbG93KSA9PiBmbG93Lm5hbWUgPT0gJ1JvbGUgY29uZmlndXJhdGlvbicpID8gbnVsbCA6IHRoaXMuYWRtaW5Ub29scy5wdXNoKHRoaXMucm9sZUNvbmZpZ3VyYXRpb24pO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KVxyXG4gICAgLy8gdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5kb2VzVXNlckhhdmVQZXJtaXNzaW9uLCB7IGZlYXR1cmVJZDogRmVhdHVyZUlkcy5GZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyB9KSk7XHJcbiAgICAvLyB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzID0gcmVzdWx0O1xyXG4gICAgLy8gICBpZiAocmVzdWx0KSB7XHJcbiAgICAvLyAgICAvLyB0aGlzLmdldEFsbEVtcGxveWVlcygpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KVxyXG4gICAgdGhpcy50b29scyA9IHRoaXMuYWRtaW5Ub29scztcclxuICAgIC8vdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgIC8vdGhpcy5nZXRBbGxFbXBsb3llZXMoKTtcclxuICAgIC8vIHRoaXMubG9hZFdpZGdldHNMaXN0KG51bGwpO1xyXG4gICAgLy8gdGhpcy5sb2FkV29ya3NwYWNlc0xpc3QoKTtcclxuICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5nb2FsU2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgLy8gaWYodGhpcy5pdGVtcy5sZW5ndGg+MCkge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwOyB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIC8vIH0gZWxzZSBpZih0aGlzLnRvb2xzLmxlbmd0aD4wKSB7XHJcbiAgICAvLyAgIHRoaXMudD0wOyB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy50b29sc1swXTtcclxuICAgIC8vIH0gZWxzZSBpZih0aGlzLndvcmtzcGFjZXMubGVuZ3RoPjApIHtcclxuICAgIC8vICAgdGhpcy53cyA9IDA7IHRoaXMuaXRlbUNsaWNrZWQgPXRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIC8vIH0gIFxyXG5cclxuICAgIHRoaXMuU2VhcmNoSXRlbSA9IF8uZGVib3VuY2UodGhpcy5TZWFyY2hJdGVtLCAxMDAwKTtcclxuICAgIHRoaXMucm91dGVzLmV2ZW50c1xyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyQWN0aXZlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuSW5mbyhpbmZvUG9wT3Zlcikge1xyXG4gICAgaW5mb1BvcE92ZXIub3BlblBvcG92ZXIoKTtcclxuICB9XHJcblxyXG4gIC8vIGdldEFsbFByb2plY3RzKCkge1xyXG4gIC8vICAgY29uc3QgcHJvamVjdFNlYXJjaFJlc3VsdCA9IG5ldyBQcm9qZWN0U2VhcmNoQ3JpdGVyaWFJbnB1dE1vZGVsKCk7XHJcbiAgLy8gICBwcm9qZWN0U2VhcmNoUmVzdWx0LmlzQXJjaGl2ZWQgPSBmYWxzZTtcclxuICAvLyAgIHRoaXMuY29tbW9uU2VydmljZS5zZWFyY2hQcm9qZWN0cyhwcm9qZWN0U2VhcmNoUmVzdWx0KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAvLyAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgPT0gdHJ1ZSkge1xyXG4gIC8vICAgICAgIGlmIChyZXNwb25zZS5kYXRhKSB7XHJcbiAgLy8gICAgICAgICB0aGlzLnByb2plY3RTZWFyY2hSZXN1bHRzID0gcmVzcG9uc2UuZGF0YTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgZWxzZSB7XHJcbiAgLy8gICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZSA9IHJlc3BvbnNlLmFwaVJlc3BvbnNlTWVzc2FnZXNbMF0ubWVzc2FnZTtcclxuICAvLyAgICAgICB0aGlzLnByb2plY3RTZWFyY2hSZXN1bHRzID0gW107XHJcbiAgLy8gICAgICAgdGhpcy50b2FzdHIuZXJyb3IodGhpcy52YWxpZGF0aW9uTWVzc2FnZSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG5cclxuICBnZXRDb21wYW55U2V0dGluZ3MoKSB7XHJcbiAgICBsZXQgY29tcGFueVNldHRpbmdzTW9kZWwgPSBbXTtcclxuICAgIHRoaXMuY29tcGFueVNldHRpbmdzTU9kZWwkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzaGFyZWRNb2R1bGVSZWR1Y2Vycy5nZXRDb21wYW55U2V0dGluZ3MpKTtcclxuICAgIHRoaXMuY29tcGFueVNldHRpbmdzTU9kZWwkLnN1YnNjcmliZSgoeCkgPT4gY29tcGFueVNldHRpbmdzTW9kZWwgPSB4KTtcclxuICAgIGxldCBidWdCb2FyZFJlc3VsdCA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbHRlcihpdGVtID0+IGl0ZW0ua2V5LnRyaW0oKSA9PSBcIkVuYWJsZUJ1Z0JvYXJkXCIpO1xyXG4gICAgaWYgKGJ1Z0JvYXJkUmVzdWx0ICYmIGJ1Z0JvYXJkUmVzdWx0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5pc0VuYWJsZUJ1Z0JvYXJkID0gYnVnQm9hcmRSZXN1bHRbMF0udmFsdWUgPT0gXCIxXCIgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWFpbkxvZ287XHJcbiAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNaW5pTG9nbztcclxuXHJcbiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nob3J0Y3V0LWZhdi1pY29uJykuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB0aGlzLmNvbXBhbnlNaW5pTG9nbyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkU2VhcmNoRGF0YSgpIHtcclxuICAgIHZhciBtZW51SXRlbXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTWVudUl0ZW1zKSlcclxuICAgIGlmIChtZW51SXRlbXMgJiYgbWVudUl0ZW1zICE9IFwibnVsbFwiKSB7XHJcbiAgICAgIHRoaXMubWVudUl0ZW0gPSBtZW51SXRlbXM7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtLmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCIpO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICAgIHZhciB3aWRnZXRzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkZhdm91cml0ZVdpZGdldHMpKTtcclxuICAgIGlmICh3aWRnZXRzICYmIHdpZGdldHMgIT0gXCJudWxsXCIpIHtcclxuICAgICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHMgPSB3aWRnZXRzO1xyXG4gICAgfVxyXG4gICAgdmFyIHJlY2VudFNlYXJjaGVzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJlY2VudFNlYXJjaGVzKSk7XHJcbiAgICBpZiAocmVjZW50U2VhcmNoZXMgJiYgcmVjZW50U2VhcmNoZXMgIT0gXCJudWxsXCIpIHtcclxuICAgICAgdGhpcy5hbGxzZWFyY2hlcyA9IHRoaXMucmVjZW50U2VhcmNoZXMgPSByZWNlbnRTZWFyY2hlcztcclxuICAgIH1cclxuICB9XHJcbiAgdHJhbnNsYXRlYXBwbGljYXRpb25uYW1lKGl0ZW0pIHtcclxuICAgIGlmIChpdGVtID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB2YXIgbG9jYWx2YXJpYWJsZSA9IGl0ZW0udHJpbSgpO1xyXG4gICAgdmFyIG5hbWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcIkFQUC5cIiArIGxvY2FsdmFyaWFibGUpO1xyXG4gICAgaWYgKG5hbWUuaW5kZXhPZihcIkFQUC5cIikgIT0gLTEpIHtcclxuICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIG5hbWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKCkge1xyXG4gICAgaWYgKCF0aGlzLnNlYXJjaEJ5SWQgJiYgIXRoaXMuc2VhcmNoQnlUZXh0KSB7XHJcbiAgICAgIHZhciByZXRyaWV2ZURhc2hib2FyZHM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgICB2YXIgZGFzaGJvYXJkcyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGFzaGJvYXJkcyk7XHJcbiAgICAgIGlmIChkYXNoYm9hcmRzICYmIGRhc2hib2FyZHMgIT0gXCJudWxsXCIpIHtcclxuICAgICAgICByZXRyaWV2ZURhc2hib2FyZHMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLndvcmtzcGFjZXNGb3JMb29wID0gSlNPTi5wYXJzZShkYXNoYm9hcmRzKTtcclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgICAgICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wLmZpbHRlcihcclxuICAgICAgICAgICAgaXRlbSA9PlxyXG4gICAgICAgICAgICAgIGl0ZW0ud29ya3NwYWNlTmFtZVxyXG4gICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgICAgICAgIC5pbmNsdWRlcyh0aGlzLnNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSkgIT09XHJcbiAgICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMud29ya3NwYWNlcyA9IHRoaXMud29ya3NwYWNlc0Zvckxvb3A7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICghKHRoaXMuY29va2llU2VydmljZS5jaGVjayhMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlNlYXJjaENsaWNrKSAmJiBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5TZWFyY2hDbGljaykpID09IHRydWUpKSB7XHJcbiAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlNlYXJjaENsaWNrLCBKU09OLnN0cmluZ2lmeSh0cnVlKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgICAvLyB0aGlzLmxvYWRXaWRnZXRzTGlzdChudWxsKTtcclxuICAgICAgICAvLyB0aGlzLmxvYWRXb3Jrc3BhY2VzTGlzdCgpO1xyXG4gICAgICAgIC8vIHRoaXMuZ2V0QWxsTWVudUl0ZW1zKCk7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZGluZ1NlYXJjaE1lbnVEYXRhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJzcy5zZWFyY2hNZW51RGF0YShyZXRyaWV2ZURhc2hib2FyZHMpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MgJiYgcmVzLmRhdGEpIHtcclxuICAgICAgICAgICAgICBpZiAocmVzLmRhdGEud29ya3NwYWNlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy53b3Jrc3BhY2VzID0gcmVzLmRhdGEud29ya3NwYWNlcztcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRGFzaGJvYXJkcywgSlNPTi5zdHJpbmdpZnkodGhpcy53b3Jrc3BhY2VzKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtzcGFjZXNGb3JMb29wID0gdGhpcy53b3Jrc3BhY2VzO1xyXG4gICAgICAgICAgICAgICAgLy90aGlzLmRlZmF1bHREYXNoYm9hcmQgPSB0aGlzLndvcmtzcGFjZXMuZmluZChpID0+IGkuaXNEZWZhdWx0ID09IHRydWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAocmVzLmRhdGEud2lkZ2V0cykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5hbFdpZGdldHMgPSByZXMuZGF0YS53aWRnZXRzLnNvcnQoKGEsIGIpID0+XHJcbiAgICAgICAgICAgICAgICAgIGEud2lkZ2V0TmFtZS50b0xvd2VyQ2FzZSgpID4gYi53aWRnZXROYW1lLnRvTG93ZXJDYXNlKCkgPyAxIDogLTFcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndpZGdldHMgPSB0aGlzLm9yaWdpbmFsV2lkZ2V0cztcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuRmF2b3VyaXRlV2lkZ2V0cywgSlNPTi5zdHJpbmdpZnkodGhpcy53aWRnZXRzKSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5tZW51SXRlbXMpIHtcclxuICAgICAgICAgICAgICAgIC8vIHZhciBhcHBsaWNhdGlvbnMgPSByZXMuZGF0YS5tZW51SXRlbXMuZmlsdGVyKGZ1bmN0aW9uICh4KSB7XHJcbiAgICAgICAgICAgICAgICAvLyAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAvLyAgICAgeC5tZW51Q2F0ZWdvcnkgJiZcclxuICAgICAgICAgICAgICAgIC8vICAgICBNZW51Q2F0ZWdvcmllcy5NYWluICYmXHJcbiAgICAgICAgICAgICAgICAvLyAgICAgeC5tZW51Q2F0ZWdvcnkudG9Mb3dlckNhc2UoKSA9PT0gTWVudUNhdGVnb3JpZXMuTWFpbi50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgICAgICAvLyAgICk7XHJcbiAgICAgICAgICAgICAgICAvLyB9KVxyXG4gICAgICAgICAgICAgICAgdGhpcy5tZW51SXRlbSA9IHJlcy5kYXRhLm1lbnVJdGVtcztcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTWVudUl0ZW1zLCBKU09OLnN0cmluZ2lmeSh0aGlzLm1lbnVJdGVtKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5tZW51SXRlbS5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKTtcclxuICAgICAgICAgICAgICAgIC8vdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5yZWNlbnRTZWFyY2gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsc2VhcmNoZXMgPSByZXMuZGF0YS5yZWNlbnRTZWFyY2g7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlY2VudFNlYXJjaGVzID0gdGhpcy5hbGxzZWFyY2hlcztcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuUmVjZW50U2VhcmNoZXMsIEpTT04uc3RyaW5naWZ5KHRoaXMuYWxsc2VhcmNoZXMpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRGYXZvdXJpdGVXaWRnZXRzLCBKU09OLnN0cmluZ2lmeShmYWxzZSksIG51bGwsIGVudmlyb25tZW50LmNvb2tpZVBhdGgsIHRoaXMud2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCBmYWxzZSwgXCJTdHJpY3RcIik7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRSZWNlbnRTZWFyY2hlcywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyQWN0aXZlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU2VhcmNoTWVudURhdGEgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9hZFNlYXJjaERhdGEoKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBlbHNlIHtcclxuICAgICAgLy8gICBpZiAoISh0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkRmF2b3VyaXRlV2lkZ2V0cykgJiYgSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZEZhdm91cml0ZVdpZGdldHMpKSA9PSBmYWxzZSkpIHtcclxuICAgICAgLy8gICAgIHRoaXMubG9hZFdpZGdldHNMaXN0KG51bGwsIHRydWUpO1xyXG4gICAgICAvLyAgICAgbGV0IGVudmlyb25tZW50ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkVudmlyb25tZW50KSk7XHJcbiAgICAgIC8vICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZEZhdm91cml0ZVdpZGdldHMsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSwgbnVsbCwgZW52aXJvbm1lbnQuY29va2llUGF0aCwgdGhpcy53aW5kb3cubG9jYXRpb24uaG9zdG5hbWUsIGZhbHNlLCBcIlN0cmljdFwiKTtcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vICAgaWYgKCEodGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuTG9hZFJlY2VudFNlYXJjaGVzKSAmJiBKU09OLnBhcnNlKHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Mb2FkUmVjZW50U2VhcmNoZXMpKSA9PSBmYWxzZSkpIHtcclxuICAgICAgLy8gICAgIHRoaXMuZ2V0UmVjZW50U2VhcmNoZXMoKTtcclxuICAgICAgLy8gICAgIGxldCBlbnZpcm9ubWVudCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5FbnZpcm9ubWVudCkpO1xyXG4gICAgICAvLyAgICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkxvYWRSZWNlbnRTZWFyY2hlcywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpLCBudWxsLCBlbnZpcm9ubWVudC5jb29raWVQYXRoLCB0aGlzLndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwgZmFsc2UsIFwiU3RyaWN0XCIpO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gICB0aGlzLnJvdXRlckFjdGl2ZSgpO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIHRoaXMucm91dGVyQWN0aXZlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgfVxyXG5cclxuICByb3V0ZXJBY3RpdmUoKSB7XHJcbiAgICBpZiAodGhpcy5yb3V0ZXMudXJsLmluY2x1ZGVzKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkXCIpICYmIHRoaXMucm91dGVzLnVybC5zcGxpdChcIi9cIilbM10pIHtcclxuICAgICAgdmFyIGRhc2hib2FyZElkID0gdGhpcy5yb3V0ZXMudXJsLnNwbGl0KFwiL1wiKVszXTtcclxuICAgICAgaWYgKGRhc2hib2FyZElkICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy53b3Jrc3BhY2VzLmZpbmRJbmRleChpID0+IGkud29ya3NwYWNlSWQgPT0gZGFzaGJvYXJkSWQpO1xyXG4gICAgICAgIHRoaXMud3MgPSBpbmRleDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnJvdXRlcy51cmwuaW5jbHVkZXMoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC93aWRnZXRzXCIpICYmIHRoaXMucm91dGVzLnVybC5zcGxpdChcIi9cIilbM10pIHtcclxuICAgICAgdmFyIHdpZGdldElkID0gdGhpcy5yb3V0ZXMudXJsLnNwbGl0KFwiL1wiKVszXTtcclxuICAgICAgaWYgKHdpZGdldElkICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy53aWRnZXRzLmZpbmRJbmRleChpID0+IGkud2lkZ2V0SWQgPT0gd2lkZ2V0SWQpO1xyXG4gICAgICAgIGlmIChpbmRleCA+IDApIHtcclxuICAgICAgICAgIHRoaXMud2QgPSBpbmRleDtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud3MgPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdmFyIGluZGV4UnMgPSB0aGlzLnJlY2VudFNlYXJjaGVzLmZpbmRJbmRleChpID0+IGkuaXRlbUlkID09IHdpZGdldElkKVxyXG4gICAgICAgICAgdGhpcy5ycyA9IGluZGV4UnM7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHZhciBpbmRleCA9IHRoaXMuaXRlbXMuZmluZEluZGV4KGkgPT4gdGhpcy5yb3V0ZXMudXJsID09IFwiL1wiICsgaS5zdGF0ZSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IGluZGV4O1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRXb3Jrc3BhY2VzTGlzdCgpIHtcclxuICAgIHRoaXMud29ya3NwYWNlc2ZldGNoSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICB2YXIgd29ya3NwYWNlbGlzdCA9IG5ldyBXb3Jrc3BhY2VMaXN0KCk7XHJcbiAgICB3b3Jrc3BhY2VsaXN0LndvcmtzcGFjZUlkID0gXCJudWxsXCI7XHJcbiAgICB3b3Jrc3BhY2VsaXN0LmlzSGlkZGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuR2V0V29ya3NwYWNlTGlzdCh3b3Jrc3BhY2VsaXN0KS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMud29ya3NwYWNlcyA9IHJlc3VsdC5kYXRhO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRhc2hib2FyZHMsIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5kYXRhKSk7XHJcbiAgICAgIHRoaXMud29ya3NwYWNlc0Zvckxvb3AgPSB0aGlzLndvcmtzcGFjZXM7XHJcbiAgICAgIHRoaXMuZGVmYXVsdERhc2hib2FyZCA9IHRoaXMud29ya3NwYWNlcy5maW5kKGkgPT4gaS5pc0RlZmF1bHQgPT0gdHJ1ZSk7XHJcbiAgICAgIHRoaXMud29ya3NwYWNlc2ZldGNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgICAvLyB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBMb2FkV29ya3NwYWNlc0xpc3RUcmlnZ2VyZWQodGhpcy53b3Jrc3BhY2VsaXN0KSk7XHJcbiAgfTtcclxuXHJcbiAgb3BlbkFwcHMoKSB7XHJcbiAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJhcHAtc3RvcmUvd2lkZ2V0c1wiXSk7XHJcbiAgfVxyXG5cclxuICBsb2FkV2lkZ2V0c0xpc3Qoc2VhcmNoVGV4dCwgc3RvcmUgPSBmYWxzZSkge1xyXG4gICAgdGhpcy53aWRnZXRzZmV0Y2hJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHRoaXMud2lkZ2V0ID0gbmV3IFdpZGdldExpc3QoKTtcclxuICAgIHRoaXMud2lkZ2V0LndpZGdldElkID0gXCJudWxsXCI7XHJcbiAgICB0aGlzLndpZGdldC5pc0FyY2hpdmVkID0gZmFsc2U7XHJcbiAgICB0aGlzLndpZGdldC5wYWdlTnVtYmVyID0gbnVsbDtcclxuICAgIHRoaXMud2lkZ2V0LnBhZ2VTaXplID0gbnVsbDtcclxuICAgIHRoaXMud2lkZ2V0LnNvcnREaXJlY3Rpb25Bc2MgPSB0cnVlO1xyXG4gICAgdGhpcy53aWRnZXQuaXNGYXZvdXJpdGVXaWRnZXQgPSB0cnVlO1xyXG4gICAgaWYgKHNlYXJjaFRleHQpXHJcbiAgICAgIHRoaXMud2lkZ2V0LnNlYXJjaFRleHQgPSBzZWFyY2hUZXh0O1xyXG5cclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5HZXRXaWRnZXRzQmFzZWRPblVzZXIodGhpcy53aWRnZXQpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgdGhpcy53aWRnZXRzID0gW107XHJcbiAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMub3JpZ2luYWxXaWRnZXRzID0gcmVzdWx0LmRhdGEuc29ydCgoYSwgYikgPT5cclxuICAgICAgICAgIGEud2lkZ2V0TmFtZS50b0xvd2VyQ2FzZSgpID4gYi53aWRnZXROYW1lLnRvTG93ZXJDYXNlKCkgPyAxIDogLTFcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMud2lkZ2V0cyA9IHRoaXMub3JpZ2luYWxXaWRnZXRzO1xyXG4gICAgICAgIGlmIChzdG9yZSkge1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5GYXZvdXJpdGVXaWRnZXRzLCBKU09OLnN0cmluZ2lmeSh0aGlzLndpZGdldHMpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy53aWRnZXRzZmV0Y2hJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuXHJcbiAgICB2YXIgY29tcGFueVNldHRpbmdzTW9kZWwgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ29tcGFueVNldHRpbmdzKSk7XHJcblxyXG4gICAgdGhpcy5jb21wYW55TWFpbkxvZ28gPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpICE9IG51bGwgPyBjb21wYW55U2V0dGluZ3NNb2RlbC5maW5kKHggPT4geC5rZXkudG9Mb3dlckNhc2UoKSA9PSBcIm1haW5sb2dvXCIpLnZhbHVlIDogdGhpcy5jb21wYW55TWFpbkxvZ287XHJcbiAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikgIT0gbnVsbCA/IGNvbXBhbnlTZXR0aW5nc01vZGVsLmZpbmQoeCA9PiB4LmtleS50b0xvd2VyQ2FzZSgpID09IFwibWluaWxvZ29cIikudmFsdWUgOiB0aGlzLmNvbXBhbnlNaW5pTG9nbztcclxuICAgIC8vIHRoaXMuY29tcGFueU1haW5Mb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbyk7XHJcbiAgICAvLyB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28pO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbXBhbnlNYWluTG9nbyA9PSBcIlwiIHx8IHRoaXMuY29tcGFueU1haW5Mb2dvID09IG51bGwgfHwgdGhpcy5jb21wYW55TWFpbkxvZ28gPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuY29tcGFueU1haW5Mb2dvID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkNvbXBhbnlNYWluTG9nbyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb21wYW55TWluaUxvZ28gPT0gXCJcIiB8fCB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9PSBudWxsIHx8IHRoaXMuY29tcGFueU1pbmlMb2dvID09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmNvbXBhbnlNaW5pTG9nbyA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Db21wYW55TWluaUxvZ28pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hvcnRjdXQtZmF2LWljb24nKS5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIHRoaXMuY29tcGFueU1pbmlMb2dvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBnZXRBbGxFbXBsb3llZXMoKSB7XHJcbiAgICB0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmRvZXNVc2VySGF2ZVBlcm1pc3Npb24sIHsgZmVhdHVyZUlkOiBGZWF0dXJlSWRzLkZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzIH0pKTtcclxuICAgIHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzJC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgdGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMgPSByZXN1bHQ7XHJcbiAgICB9KVxyXG4gICAgbGV0IGVtcGxveWVlU3BlbnRUaW1lID0gbmV3IEVtcGxveWVlTGlzdElucHV0KCk7XHJcbiAgICBlbXBsb3llZVNwZW50VGltZS5zb3J0RGlyZWN0aW9uQXNjID0gdHJ1ZTtcclxuICAgIGVtcGxveWVlU3BlbnRUaW1lLmlzQWN0aXZlID0gdHJ1ZTtcclxuICAgIC8vIHRoaXMuaHJEYXNoYm9hclNlcnZpY2UuR2V0QWxsRW1wbG95ZWVzKGVtcGxveWVlU3BlbnRUaW1lKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAvLyAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xyXG4gICAgLy8gICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gcmVzdWx0LmRhdGE7XHJcbiAgICAvLyAgICAgaWYgKCEodGhpcy5jYW5BY2Nlc3NfZmVhdHVyZV9DYW5FZGl0T3RoZXJFbXBsb3llZURldGFpbHMpKSB7XHJcbiAgICAvLyAgICAgICB2YXIgY3VycmVudFVzZXJJZCA9IHRoaXMuY29va2llU2VydmljZS5nZXQoTG9jYWxTdG9yYWdlUHJvcGVydGllcy5DdXJyZW50VXNlcklkKTtcclxuICAgIC8vICAgICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QuZmlsdGVyKHggPT4gKHgudXNlcklkLnRvTG93ZXJDYXNlKCkgPT0gY3VycmVudFVzZXJJZC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIHRoaXMuZW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3Q7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH0pXHJcblxyXG4gICAgY29uc3QgZW1wbG95ZWVMaXN0U2VhcmNoUmVzdWx0ID0gbmV3IEVtcGxveWVlTGlzdE1vZGVsKCk7XHJcbiAgICBlbXBsb3llZUxpc3RTZWFyY2hSZXN1bHQuc29ydERpcmVjdGlvbkFzYyA9IHRydWU7XHJcbiAgICB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0QWxsRW1wbG95ZWVzKGVtcGxveWVlTGlzdFNlYXJjaFJlc3VsdCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA9IHJlc3VsdC5kYXRhO1xyXG4gICAgICAgIGlmICghKHRoaXMuY2FuQWNjZXNzX2ZlYXR1cmVfQ2FuRWRpdE90aGVyRW1wbG95ZWVEZXRhaWxzKSkge1xyXG4gICAgICAgICAgdmFyIGN1cnJlbnRVc2VySWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0LmZpbHRlcih4ID0+ICh4LnVzZXJJZC50b0xvd2VyQ2FzZSgpID09IGN1cnJlbnRVc2VySWQudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtcGxveWVlTGlzdCA9IHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0O1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICAvLyBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgLy8gICB0aGlzLmUgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAvLyAgIGxldCBvdXRTaWRlQ2xpY2sgPSAgdGhpcy5lLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCgpPT57XHJcbiAgLy8gICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gIC8vIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgT3Blbk1lbnVJdGVtcyhvcGVuTWVudVBvcFVwKSB7XHJcbiAgICBvcGVuTWVudVBvcFVwLm9wZW5Qb3BvdmVyKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuTGV2ZWwyTWVudShsaW5rLCBldmVudCkge1xyXG4gICAgdGhpcy5zdGF0ZUx2bDEgPSBsaW5rO1xyXG4gICAgdGhpcy5zdWJMZXZlbHMgPSBldmVudDtcclxuICB9XHJcblxyXG4gIG9wZW5MZXZlbDNNZW51KGxpbmsxLCBsaW5rMiwgZXZlbnQpIHtcclxuICAgIHRoaXMubGV2ZWwzTGluazEgPSBsaW5rMTtcclxuICAgIHRoaXMubGV2ZWwzTGluazIgPSBsaW5rMjtcclxuICAgIHRoaXMuc3ViTGV2ZWxzRm9yTGV2ZWwyID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxNZW51SXRlbXMoKSB7XHJcbiAgICB0aGlzLm1lbnVzZmV0Y2hJblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IEdldEFsbE1lbnVJdGVtc1RyaWdnZXJlZChNZW51Q2F0ZWdvcmllcy5NYWluKSk7XHJcbiAgICBjb25zdCB1c2VyUmVmZXJlbmNlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5Vc2VyUmVmZXJlbmNlSWQpO1xyXG4gICAgdGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2soTG9jYWxTdG9yYWdlUHJvcGVydGllcy5EZWZhdWx0RGFzaGJvYXJkKSA/IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLkRlZmF1bHREYXNoYm9hcmQpKSA6IG51bGw7O1xyXG4gICAgaWYgKHRoaXMuZGVmYXVsdERhc2hib2FyZElkICYmIHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyB0aGlzLmRlZmF1bHREYXNoYm9hcmRJZCArIFwiL2Zvcm0vXCIgKyB1c2VyUmVmZXJlbmNlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5kZWZhdWx0RGFzaGJvYXJkSWQpIHtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIHRoaXMuZGVmYXVsdERhc2hib2FyZElkKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJsaXZlcy93ZWxjb21lXCIpO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb1VybCh3b3Jrc3BhY2VJZCkge1xyXG4gICAgY29uc3QgdXNlclJlZmVyZW5jZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkKTtcclxuICAgIGlmICh1c2VyUmVmZXJlbmNlICE9IFwibnVsbFwiICYmIHVzZXJSZWZlcmVuY2UgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgd29ya3NwYWNlSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwiZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkL1wiICsgd29ya3NwYWNlSWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0U29mdExhYmVsQ29uZmlndXJhdGlvbnMoKSB7XHJcbiAgICB0aGlzLnNvZnRMYWJlbHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdTb2Z0TGFiZWxzJykpO1xyXG4gICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaE1lbnVJdGVtcygpIHtcclxuICAgIGlmICh0aGlzLnNlYXJjaEJ5VGV4dCkge1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dExvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLnJzcy5nZXRTZWFyY2hNZW51SXRlbXMoeyBzZWFyY2hUZXh0OiB0aGlzLnNlYXJjaFRleHQsIHNlYXJjaFVuaXF1ZUlkOiBudWxsIH0pXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSAhPSBudWxsICYmIHJlc3BvbnNlLmRhdGEgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb2plY3RMaXN0ID0gcmVzcG9uc2UuZGF0YS5maWx0ZXIodXMgPT4gdXMuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiAodXMuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZykgfHwgKHVzLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gcmVzcG9uc2UuZGF0YS5maWx0ZXIodXMgPT4gdXMuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCAodXMuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB1c2VycyA9IHJlc3BvbnNlLmRhdGEuZmlsdGVyKHVzID0+IHVzLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gdXNlcnM7XHJcbiAgICAgICAgICAgICAgICBpZiAoISh0aGlzLmNhbkFjY2Vzc19mZWF0dXJlX0NhbkVkaXRPdGhlckVtcGxveWVlRGV0YWlscykpIHtcclxuICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRVc2VySWQgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KExvY2FsU3RvcmFnZVByb3BlcnRpZXMuQ3VycmVudFVzZXJJZCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0ID0gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QuZmlsdGVyKCh4OiBhbnkpID0+ICh4Lml0ZW1JZC50b0xvd2VyQ2FzZSgpID09IGN1cnJlbnRVc2VySWQudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdDtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb2plY3RMaXN0ICYmIHRoaXMucHJvamVjdExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbMF07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZWFyY2hCeVRleHRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUHJvamVjdFNlbGVjdChpdGVtLCBldmVudCkge1xyXG4gICAgaWYgKGV2ZW50LndoaWNoID09IDEpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMucHJvamVjdExpc3QgPSBbXTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5wcm9qZWN0LCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJwcm9qZWN0cy9wcm9qZWN0c3RhdHVzL1wiICsgaXRlbS5pdGVtSWQgKyBcIi9hY3RpdmUtZ29hbHNcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBTZWFyY2hJdGVtKGV2ZW50KSB7XHJcbiAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMudGhlbWVCYXNlQ29sb3IgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGhlbWVDb2xvcicpO1xyXG4gICAgdmFyIGVsZW1lbnQgPVxyXG4gICAgICAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKTtcclxuICAgIGVsZW1lbnQgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMCA6IG51bGw7XHJcbiAgICB2YXIgZWxlbSA9XHJcbiAgICAgICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpO1xyXG4gICAgZWxlbSA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwIDogbnVsbDtcclxuICAgIHZhciBlbXAgPSAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKTtcclxuICAgIGVtcCA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwIDogbnVsbDtcclxuICAgIHZhciB3aWRnZXQgPSAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKTtcclxuICAgIHdpZGdldCA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwIDogbnVsbDtcclxuICAgIC8vdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWFyY2hNZW51SXRlbXMoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnNlYXJjaEJ5SWQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMubWVudUl0ZW0uZmlsdGVyKFxyXG4gICAgICAgIGl0ZW0gPT5cclxuICAgICAgICAgIGl0ZW0ubWVudS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT1cclxuICAgICAgICAgIGZhbHNlICYmIGl0ZW0udHlwZSAhPSBcImRyb3BEb3duXCJcclxuICAgICAgKTtcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzID0gdGhpcy53b3Jrc3BhY2VzRm9yTG9vcC5maWx0ZXIoXHJcbiAgICAgICAgaXRlbSA9PlxyXG4gICAgICAgICAgaXRlbS53b3Jrc3BhY2VOYW1lXHJcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgIC5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09XHJcbiAgICAgICAgICBmYWxzZVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmFkbWluVG9vbHMgPyB0aGlzLnRvb2xzID0gdGhpcy5hZG1pblRvb2xzLmZpbHRlcihcclxuICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICBpdGVtLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09XHJcbiAgICAgICAgICBmYWxzZVxyXG4gICAgICApIDogbnVsbDtcclxuICAgICAgLy90aGlzLmxvYWRXaWRnZXRzTGlzdChldmVudC50YXJnZXQudmFsdWUpO1xyXG4gICAgICB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA/IHRoaXMud2lkZ2V0cyA9IHRoaXMub3JpZ2luYWxXaWRnZXRzLmZpbHRlcihcclxuICAgICAgICBpdGVtID0+XHJcbiAgICAgICAgICBpdGVtLndpZGdldE5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09XHJcbiAgICAgICAgICBmYWxzZVxyXG4gICAgICApIDogbnVsbDtcclxuICAgICAgdGhpcy5lbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5sZW5ndGggPiAwID8gKHRoaXMubG9hZGVkRW1wbG95ZWVMaXN0LmZpbHRlcih4ID0+XHJcbiAgICAgICgoeC5mdWxsTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gZmFsc2UpXHJcbiAgICAgICAgfHwgKHguZW1wbG95ZWVOdW1iZXIudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09IGZhbHNlKVxyXG4gICAgICAgIHx8ICh4LnN1ck5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09IGZhbHNlKSlcclxuICAgICAgKSkgOiBudWxsO1xyXG4gICAgICAvLyB0aGlzLmFsbHNlYXJjaGVzID8gdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHRoaXMuYWxsc2VhcmNoZXMuZmlsdGVyKFxyXG4gICAgICAvLyAgIGl0ZW0gPT5cclxuICAgICAgLy8gICAgIGl0ZW0ucmVjZW50U2VhcmNoLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKSkgIT09IC0xXHJcbiAgICAgIC8vICkgOiBudWxsO1xyXG4gICAgICB0aGlzLmFsbHNlYXJjaGVzID8gdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHRoaXMuYWxsc2VhcmNoZXMuZmlsdGVyKFxyXG4gICAgICAgIGl0ZW0gPT5cclxuICAgICAgICAgIGl0ZW0ucmVjZW50U2VhcmNoLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PVxyXG4gICAgICAgICAgZmFsc2VcclxuICAgICAgKSA6IG51bGw7XHJcblxyXG4gICAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlICYmIGV2ZW50LnRhcmdldC52YWx1ZS5zZWFyY2goJy0nKSA+IDApIHtcclxuICAgICAgICB0aGlzLnJzcy5zZWFyY2hHb2FsVGFza3MoZXZlbnQudGFyZ2V0LnZhbHVlKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEgIT0gbnVsbCAmJiByZXNwb25zZS5kYXRhICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gcmVzcG9uc2UuZGF0YS5maWx0ZXIodXMgPT4gKHVzLnR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZykgfHwgKHVzLnR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSByZXNwb25zZS5kYXRhLmZpbHRlcih1cyA9PiB1cy50eXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgKHVzLnR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoISgodGhpcy5pdGVtcy5sZW5ndGggPiAwICYmIHRoaXMuaXRlbXMpIHx8ICh0aGlzLnRvb2xzICYmIHRoaXMudG9vbHMubGVuZ3RoID4gMCkgfHwgKHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkgfHwgKHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcclxuICAgICAgICAgICAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgIC8vICAgY29uc3QgdXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFUZW1wID0gbmV3IFVzZXJTdG9yeVNlYXJjaENyaXRlcmlhSW5wdXRNb2RlbCgpO1xyXG4gICAgICAvLyAgIHVzZXJTdG9yeVNlYXJjaENyaXRlcmlhVGVtcC5wYWdlU2l6ZSA9IDEwMDA7XHJcbiAgICAgIC8vICAgdXNlclN0b3J5U2VhcmNoQ3JpdGVyaWFUZW1wLnNlYXJjaFRleHQgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAgIC8vICAgLy8ucmVwbGFjZSgvXFxzL2csIFwiXCIpO1xyXG5cclxuICAgICAgLy8gIC8vIGlmIChldmVudC50YXJnZXQudmFsdWUuaW5kZXhPZignLScpKSB7XHJcbiAgICAgIC8vICAgICB0aGlzLnVzZXJTZXJ2aWNlLnNlYXJjaFVzZXJTdG9yaWVzKHVzZXJTdG9yeVNlYXJjaENyaXRlcmlhVGVtcCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcblxyXG4gICAgICAvLyAgICAgICB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgPSBbXTtcclxuICAgICAgLy8gICAgICAgbGV0IGNvbXBhbnlTZXR0aW5nc01vZGVsID0gW107XHJcblxyXG4gICAgICAvLyAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcyAmJiByZXNwb25zZS5kYXRhICE9IG51bGwgJiYgcmVzcG9uc2UuZGF0YSAhPSB1bmRlZmluZWQgJiYgcmVzcG9uc2UuZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIC8vICAgICAgICAgdmFyIHVzZXJTdG9yaWVzTGlzdCA9IHJlc3BvbnNlLmRhdGE7XHJcbiAgICAgIC8vICAgICAgICAgdGhpcy5jb21wYW55U2V0dGluZ3NNT2RlbCQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNoYXJlZE1vZHVsZVJlZHVjZXJzLmdldENvbXBhbnlTZXR0aW5ncykpO1xyXG4gICAgICAvLyAgICAgICAgIHRoaXMuY29tcGFueVNldHRpbmdzTU9kZWwkLnN1YnNjcmliZSgoeCkgPT4gY29tcGFueVNldHRpbmdzTW9kZWwgPSB4KTtcclxuICAgICAgLy8gICAgICAgICBsZXQgYnVnQm9hcmRSZXN1bHQgPSBjb21wYW55U2V0dGluZ3NNb2RlbC5maWx0ZXIoaXRlbSA9PiBpdGVtLmtleS50cmltKCkgPT0gXCJFbmFibGVCdWdCb2FyZFwiKTtcclxuICAgICAgLy8gICAgICAgICBpZiAoYnVnQm9hcmRSZXN1bHQubGVuZ3RoID4gMCkge1xyXG4gICAgICAvLyAgICAgICAgICAgdGhpcy5pc0VuYWJsZUJ1Z0JvYXJkID0gYnVnQm9hcmRSZXN1bHRbMF0udmFsdWUgPT0gXCIxXCIgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgIC8vICAgICAgICAgfVxyXG4gICAgICAvLyAgICAgICAgIGlmICghdGhpcy5pc0VuYWJsZUJ1Z0JvYXJkKSB7XHJcbiAgICAgIC8vICAgICAgICAgICB1c2VyU3Rvcmllc0xpc3QgPSB1c2VyU3Rvcmllc0xpc3QubWFwKCh4KSA9PiB4LmlzQnVnID09IGZhbHNlKTtcclxuICAgICAgLy8gICAgICAgICB9XHJcblxyXG4gICAgICAvLyAgICAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IHVzZXJTdG9yaWVzTGlzdC5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgLy8gICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgIC8vICAgICAgICAgICAgIGdvYWxJZDogaXRlbS5nb2FsSWQsXHJcbiAgICAgIC8vICAgICAgICAgICAgIGdvYWxOYW1lOiBpdGVtLmdvYWxOYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICBnb2FsU2hvcnROYW1lOiBpdGVtLmdvYWxTaG9ydE5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICAgIGdvYWxVbmlxdWVOYW1lOiBpdGVtLmdvYWxVbmlxdWVOYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICBwcm9qZWN0SWQ6IGl0ZW0ucHJvamVjdElkLFxyXG4gICAgICAvLyAgICAgICAgICAgICBwcm9qZWN0TmFtZTogaXRlbS5wcm9qZWN0TmFtZSxcclxuICAgICAgLy8gICAgICAgICAgICAgc3ByaW50SWQ6IGl0ZW0uc3ByaW50SWQsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHNwcmludE5hbWU6IGl0ZW0uc3ByaW50TmFtZSxcclxuICAgICAgLy8gICAgICAgICAgICAgdXNlclN0b3J5SWQ6IGl0ZW0udXNlclN0b3J5SWQsXHJcbiAgICAgIC8vICAgICAgICAgICAgIHVzZXJTdG9yeU5hbWU6IGl0ZW0udXNlclN0b3J5TmFtZSxcclxuICAgICAgLy8gICAgICAgICAgICAgdXNlclN0b3J5U3RhdHVzTmFtZTogaXRlbS51c2VyU3RvcnlTdGF0dXNOYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgICB1c2VyU3RvcnlUeXBlTmFtZTogaXRlbS51c2VyU3RvcnlUeXBlTmFtZSxcclxuICAgICAgLy8gICAgICAgICAgICAgdXNlclN0b3J5VW5pcXVlTmFtZTogaXRlbS51c2VyU3RvcnlVbmlxdWVOYW1lXHJcbiAgICAgIC8vICAgICAgICAgICB9XHJcbiAgICAgIC8vICAgICAgICAgfSk7XHJcblxyXG4gICAgICAvLyAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAvLyAgICAgICB9XHJcbiAgICAgIC8vICAgICB9KTtcclxuICAgICAgLy8gIC8vIH1cclxuXHJcbiAgICAgIC8vICAgbGV0IHNlYXJjaEdvYWxzID0gbmV3IEdvYWxTZWFyY2hDcml0ZXJpYUFwaUlucHV0TW9kZWwoKTtcclxuICAgICAgLy8gICBzZWFyY2hHb2Fscy5zZWFyY2hUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICAvLyAgIC8vLnJlcGxhY2UoL1xccy9nLCBcIlwiKTtcclxuICAgICAgLy8gICAvL2lmIChldmVudC50YXJnZXQudmFsdWUuaW5kZXhPZignLScpKSB7XHJcbiAgICAgIC8vICAgdGhpcy51c2VyU2VydmljZS5zZWFyY2hHb2FscyhzZWFyY2hHb2Fscykuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIC8vICAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XHJcblxyXG4gICAgICAvLyAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MgJiYgcmVzcG9uc2UuZGF0YSAhPSBudWxsICYmIHJlc3BvbnNlLmRhdGEgIT0gdW5kZWZpbmVkICYmIHJlc3BvbnNlLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAvLyAgICAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gcmVzcG9uc2UuZGF0YS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgLy8gICAgICAgICByZXR1cm4ge1xyXG4gICAgICAvLyAgICAgICAgICAgZ29hbElkOiBpdGVtLmdvYWxJZCxcclxuICAgICAgLy8gICAgICAgICAgIGdvYWxOYW1lOiBpdGVtLmdvYWxOYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgZ29hbFNob3J0TmFtZTogaXRlbS5nb2FsU2hvcnROYW1lLFxyXG4gICAgICAvLyAgICAgICAgICAgZ29hbFVuaXF1ZU5hbWU6IGl0ZW0uZ29hbFVuaXF1ZU5hbWUsXHJcbiAgICAgIC8vICAgICAgICAgICBwcm9qZWN0SWQ6IGl0ZW0ucHJvamVjdElkLFxyXG4gICAgICAvLyAgICAgICAgICAgcHJvamVjdE5hbWU6IGl0ZW0ucHJvamVjdE5hbWVcclxuICAgICAgLy8gICAgICAgICB9XHJcbiAgICAgIC8vICAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIC8vICAgICB9XHJcblxyXG4gICAgICAvLyAgIH0pXHJcbiAgICAgIC8vIC8vfVxyXG5cclxuICAgICAgLy8gaWYgKCEodGhpcy5pdGVtcy5sZW5ndGggPiAwKSAmJiAhKHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApICYmICEodGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSAmJiAhKHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSAmJiAhKHRoaXMudG9vbHMubGVuZ3RoID4gMCkgJiYgISh0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkpIHtcclxuICAgICAgaWYgKCEodGhpcy5pdGVtcy5sZW5ndGggPiAwKSAmJiAhKHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkgJiYgISh0aGlzLndpZGdldHMubGVuZ3RoID4gMCkgJiYgISh0aGlzLnRvb2xzLmxlbmd0aCA+IDApICYmICEodGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnJzID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbFxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgICAgdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xyXG4gICAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy50b29scyAmJiB0aGlzLnRvb2xzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy53ZCA9IHRoaXMud3MgPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLnQgPSAwO1xyXG4gICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnRvb2xzWzBdO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMud29ya3NwYWNlcyAmJlxyXG4gICAgICAgIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICB0aGlzLndpZGdldHMgJiZcclxuICAgICAgICB0aGlzLndpZGdldHMubGVuZ3RoID4gMFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgdGhpcy5lbXBsb3llZUxpc3QgJiZcclxuICAgICAgICB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMgJiZcclxuICAgICAgICB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLm1lbnVJdGVtKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMubWVudUl0ZW1cclxuICAgICAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgIT0gXCJkcm9wRG93blwiKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLml0ZW1zID0gW107XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy53b3Jrc3BhY2VzID0gdGhpcy53b3Jrc3BhY2VzRm9yTG9vcDtcclxuICAgICAgdGhpcy50b29scyA9IHRoaXMuYWRtaW5Ub29scztcclxuICAgICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHM7XHJcbiAgICAgIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XHJcbiAgICAgIHRoaXMucHJvamVjdExpc3QgPSBbXTtcclxuICAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHRoaXMuYWxsc2VhcmNoZXM7XHJcbiAgICAgIC8vdGhpcy5lbXBsb3llZUxpc3QgPSAodGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgJiYgdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QubGVuZ3RoID4gMCkgPyB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdCA6IFtdO1xyXG4gICAgICB0aGlzLmVtcGxveWVlTGlzdCA9IFtdO1xyXG4gICAgICAvLyB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICAvLyB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICAvLyB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtcy5sZW5ndGggPiAwID8gdGhpcy5pdGVtc1swXSA6IG51bGw7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9PSBcIlwiID8gKHRoaXMuc2VhcmNoVGV4dCA9IHVuZGVmaW5lZCkgOiBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZVNlYXJjaChldmVudCkge1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICB0aGlzLml0ZW1zID0gdGhpcy5tZW51SXRlbVxyXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlICE9IFwiZHJvcERvd25cIilcclxuICAgICAgLnNvcnQoKGEsIGIpID0+IChhLm1lbnUudG9Mb3dlckNhc2UoKSA+IGIubWVudS50b0xvd2VyQ2FzZSgpID8gMSA6IC0xKSk7XHJcbiAgICB0aGlzLndvcmtzcGFjZXMgPSB0aGlzLndvcmtzcGFjZXNGb3JMb29wO1xyXG4gICAgdGhpcy53aWRnZXRzID0gdGhpcy5vcmlnaW5hbFdpZGdldHM7XHJcbiAgICB0aGlzLnRvb2xzID0gdGhpcy5hZG1pblRvb2xzO1xyXG4gICAgdGhpcy5yZWNlbnRTZWFyY2hlcyA9IHRoaXMuYWxsc2VhcmNoZXM7XHJcbiAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICB0aGlzLmdvYWxTZWFyY2hMaXN0ID0gW107XHJcbiAgICB0aGlzLnByb2plY3RMaXN0ID0gW107XHJcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgdGhpcy5lbXBsb3llZUxpc3QgPSB0aGlzLmxvYWRlZEVtcGxveWVlTGlzdC5sZW5ndGggPiAwID8gdGhpcy5sb2FkZWRFbXBsb3llZUxpc3QgOiBbXTtcclxuICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGUoZXZlbnQsIGl0ZW0pIHtcclxuICAgIGlmICh0aGlzLnNlYXJjaEJ5SWQpIHtcclxuICAgICAgdGhpcy5zZWFyY2hCeVRleHRMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5yc3MuZ2V0U2VhcmNoTWVudUl0ZW1zKHsgc2VhcmNoVGV4dDogbnVsbCwgc2VhcmNoVW5pcXVlSWQ6IHRoaXMuc2VhcmNoVGV4dCB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgaWYgKHJlcy5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnJlZGlyZWN0VG9Sb3V0ZShyZXMuZGF0YVswXSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2FzdHIud2FybmluZygnR2l2ZW4gSWQgaXMgbm90IHZhbGlkLCBwbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGlkIHRvIG5hdmlnYXRlJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAoIXJlcy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlcy5hcGlSZXNwb25zZU1lc3NhZ2VzWzBdLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZWFyY2hCeVRleHRMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpdGVtKSB7XHJcbiAgICAgIHRoaXMucmVkaXJlY3RUb1JvdXRlKGl0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVkaXJlY3RUb1JvdXRlKGl0ZW0pIHtcclxuICAgIHZhciBuYW1lO1xyXG4gICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0IHx8IHRoaXMuc2VhcmNoQnlJZCkge1xyXG4gICAgICBpZiAoaXRlbS5pdGVtVHlwZSAmJiAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB8fCAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgICAgLy90aGlzLkluc2VydFNlYXJjaChpdGVtLnVuaXF1ZW5OYW1lKTtcclxuICAgICAgICAvL2lmICh0aGlzLnByb2plY3RTZWFyY2hSZXN1bHRzLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQucHJvamVjdElkID09IGl0ZW0ucHJvamVjdElkKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1Zykge1xyXG4gICAgICAgICAgdGhpcy5JbnNlcnRTZWFyY2godGhpcy5zZWFyY2hCeUlkID8gaXRlbS5pdGVtVW5pcXVlTmFtZSA6IGl0ZW0uaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUud29ya0l0ZW1PckJ1ZywgaXRlbS5pdGVtSWQpO1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvd29ya2l0ZW1cIiwgaXRlbS5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5hZGhvYywgaXRlbS5pdGVtSWQpO1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wiZGFzaGJvYXJkL2FkaG9jLXdvcmtpdGVtXCIsIGl0ZW0uaXRlbUlkXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgfSBlbHNlIGlmIChpdGVtLml0ZW1UeXBlICYmIChpdGVtLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICAgIC8vaWYgKHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudC5wcm9qZWN0SWQgPT0gaXRlbS5wcm9qZWN0SWQpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsKSB7XHJcbiAgICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5nb2FsLCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9nb2FsXCIsIGl0ZW0uaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5JbnNlcnRTZWFyY2godGhpcy5zZWFyY2hCeUlkID8gaXRlbS5pdGVtVW5pcXVlTmFtZSA6IGl0ZW0uaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUuc3ByaW50LCBpdGVtLml0ZW1JZCk7XHJcbiAgICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9zcHJpbnRcIiwgaXRlbS5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgICB0aGlzLkluc2VydFNlYXJjaCh0aGlzLnNlYXJjaEJ5SWQgPyBpdGVtLml0ZW1VbmlxdWVOYW1lIDogaXRlbS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5lbXBsb3llZSwgaXRlbS5pdGVtSWQpO1xyXG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXHJcbiAgICAgICAgICBcIi9kYXNoYm9hcmQvcHJvZmlsZS9cIiArIGl0ZW0uaXRlbUlkICsgXCIvb3ZlcnZpZXdcIlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgICAgdGhpcy5JbnNlcnRTZWFyY2godGhpcy5zZWFyY2hCeUlkID8gaXRlbS5pdGVtVW5pcXVlTmFtZSA6IGl0ZW0uaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUucHJvamVjdCwgaXRlbS5pdGVtSWQpO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwicHJvamVjdHMvcHJvamVjdHN0YXR1cy9cIiArIGl0ZW0uaXRlbUlkICsgXCIvYWN0aXZlLWdvYWxzXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAoaXRlbS5tZW51KSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIG5hbWUgPSBpdGVtLm1lbnU7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtpdGVtLnN0YXRlXSk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKG5hbWUsIFJlY2VudFNlYXJjaFR5cGUubWVudSwgaXRlbS5pZCk7XHJcbiAgICB9XHJcbiAgICAvLyBlbHNlIGlmIChpdGVtLnBlcm1pc3Npb24pIHtcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAvLyAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgIC8vICAgbmFtZSA9IGl0ZW0ubmFtZTtcclxuICAgIC8vICAgdGhpcy5JbnNlcnRTZWFyY2gobmFtZSwgUmVjZSk7XHJcbiAgICAvLyAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtpdGVtLmxpbmtdKTtcclxuICAgIC8vIH0gXHJcbiAgICBlbHNlIGlmIChpdGVtLndvcmtzcGFjZUlkKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIG5hbWUgPSBpdGVtLndvcmtzcGFjZU5hbWU7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKG5hbWUsIFJlY2VudFNlYXJjaFR5cGUuZGFzaGJvYXJkLCBpdGVtLndvcmtzcGFjZUlkKTtcclxuICAgICAgY29uc3QgdXNlclJlZmVyZW5jZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkKTtcclxuICAgICAgaWYgKHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIGl0ZW0ud29ya3NwYWNlSWQgKyBcIi9mb3JtL1wiICsgdXNlclJlZmVyZW5jZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIGl0ZW0ud29ya3NwYWNlSWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW0ud2lkZ2V0SWQpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgbmFtZSA9IGl0ZW0ud2lkZ2V0TmFtZTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2gobmFtZSwgUmVjZW50U2VhcmNoVHlwZS53aWRnZXQsIGl0ZW0ud2lkZ2V0SWQpO1xyXG4gICAgICB0aGlzLlJlZGlyZWN0VG9BcHAoaXRlbSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5TZWFyY2hSZWNlbnRJdGVtKGl0ZW0sIGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBJbnNlcnRTZWFyY2gobmFtZSwgcmVjZW50U2VhcmNoVHlwZSwgaWQpIHtcclxuICAgIHRoaXMucnNzLmluc2VydFJlY2VudFNlYXJjaCh7IG5hbWU6IG5hbWUsIHJlY2VudFNlYXJjaFR5cGU6IHJlY2VudFNlYXJjaFR5cGUsIGl0ZW1JZDogaWQgfSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgLy8gdGhpcy5yZWNlbnRTZWFyY2hlcy5pbmNsdWRlcyhuYW1lKVxyXG4gICAgICAgIC8vICAgPyAodGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UodGhpcy5yZWNlbnRTZWFyY2hlcy5pbmRleE9mKG5hbWUpLCAxKSxcclxuICAgICAgICAvLyAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UoMCwgMCwgbmFtZSkpXHJcbiAgICAgICAgLy8gICA6IHRoaXMucmVjZW50U2VhcmNoZXMudW5zaGlmdChuYW1lKTtcclxuICAgICAgICB0aGlzLmdldFJlY2VudFNlYXJjaGVzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgU2VhcmNoUmVjZW50SXRlbShzZWFyY2gsIGV2ZW50KSB7XHJcbiAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5tZW51KSB7XHJcbiAgICAgIHZhciBpdGVtID0gdGhpcy5pdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgaXRlbSA9PlxyXG4gICAgICAgICAgaXRlbS5tZW51LnRvTG93ZXJDYXNlKCkgPT0gc2VhcmNoLnJlY2VudFNlYXJjaC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICk7XHJcbiAgICAgIGl0ZW0ubGVuZ3RoID4gMCA/IHRoaXMubmF2aWdhdGUoZXZlbnQsIGl0ZW1bMF0pIDogbnVsbFxyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLmRhc2hib2FyZCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLmRhc2hib2FyZCwgc2VhcmNoLml0ZW1JZCk7XHJcbiAgICAgIGNvbnN0IHVzZXJSZWZlcmVuY2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlVzZXJSZWZlcmVuY2VJZCk7XHJcbiAgICAgIGlmICh1c2VyUmVmZXJlbmNlICE9IFwibnVsbFwiICYmIHVzZXJSZWZlcmVuY2UgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyBzZWFyY2guaXRlbUlkICsgXCIvZm9ybS9cIiArIHVzZXJSZWZlcmVuY2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLndpZGdldCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLndpZGdldCwgc2VhcmNoLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFxyXG4gICAgICAgIFtcImRhc2hib2FyZC1tYW5hZ2VtZW50L3dpZGdldHNcIiwgc2VhcmNoLml0ZW1JZF1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5hZGhvYykge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLmFkaG9jLCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wiZGFzaGJvYXJkL2FkaG9jLXdvcmtpdGVtXCIsIHNlYXJjaC5pdGVtSWRdKTtcclxuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS53b3JrSXRlbU9yQnVnKSB7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHNlYXJjaC5yZWNlbnRTZWFyY2gsIFJlY2VudFNlYXJjaFR5cGUud29ya0l0ZW1PckJ1Zywgc2VhcmNoLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL3dvcmtpdGVtXCIsIHNlYXJjaC5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzZWFyY2gucmVjZW50U2VhcmNoVHlwZSA9PSBSZWNlbnRTZWFyY2hUeXBlLmdvYWwpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goc2VhcmNoLnJlY2VudFNlYXJjaCwgUmVjZW50U2VhcmNoVHlwZS5nb2FsLCBzZWFyY2guaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvZ29hbFwiLCBzZWFyY2guaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2VhcmNoLnJlY2VudFNlYXJjaFR5cGUgPT0gUmVjZW50U2VhcmNoVHlwZS5zcHJpbnQpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goc2VhcmNoLnJlY2VudFNlYXJjaCwgUmVjZW50U2VhcmNoVHlwZS5zcHJpbnQsIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJwcm9qZWN0cy9zcHJpbnRcIiwgc2VhcmNoLml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUucHJvamVjdCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaChzZWFyY2gucmVjZW50U2VhcmNoLCBSZWNlbnRTZWFyY2hUeXBlLnByb2plY3QsIHNlYXJjaC5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFwicHJvamVjdHMvcHJvamVjdHN0YXR1cy9cIiArIHNlYXJjaC5pdGVtSWQgKyBcIi9hY3RpdmUtZ29hbHNcIik7XHJcbiAgICB9IGVsc2UgaWYgKHNlYXJjaC5yZWNlbnRTZWFyY2hUeXBlID09IFJlY2VudFNlYXJjaFR5cGUuZW1wbG95ZWUpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goc2VhcmNoLnJlY2VudFNlYXJjaCwgUmVjZW50U2VhcmNoVHlwZS5lbXBsb3llZSwgc2VhcmNoLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXHJcbiAgICAgICAgXCIvZGFzaGJvYXJkL3Byb2ZpbGUvXCIgKyBzZWFyY2guaXRlbUlkICsgXCIvb3ZlcnZpZXdcIlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0TWVudShldmVudCwgY2xpY2spIHtcclxuICAgIGlmIChjbGljay53aGljaCA9PSAxICYmIGV2ZW50LndvcmtzcGFjZUlkICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWFyY2hCeVRleHQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zZWFyY2hCeUlkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNPcGVuZWQuZW1pdCh0aGlzLmRpc3BsYXkpO1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgY29uc3QgdXNlclJlZmVyZW5jZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKExvY2FsU3RvcmFnZVByb3BlcnRpZXMuVXNlclJlZmVyZW5jZUlkKTtcclxuICAgICAgaWYgKHVzZXJSZWZlcmVuY2UgIT0gXCJudWxsXCIgJiYgdXNlclJlZmVyZW5jZSAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGVCeVVybChcImRhc2hib2FyZC1tYW5hZ2VtZW50L2Rhc2hib2FyZC9cIiArIGV2ZW50LndvcmtzcGFjZUlkICsgXCIvZm9ybS9cIiArIHVzZXJSZWZlcmVuY2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlQnlVcmwoXCJkYXNoYm9hcmQtbWFuYWdlbWVudC9kYXNoYm9hcmQvXCIgKyBldmVudC53b3Jrc3BhY2VJZCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZWxlY3RlZERhc2hib2FyZCA9IGV2ZW50LndvcmtzcGFjZUlkO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMubWVudUl0ZW1OYW1lID0gZXZlbnQud29ya3NwYWNlTmFtZTtcclxuICAgICAgdGhpcy5yc3NcclxuICAgICAgICAuaW5zZXJ0UmVjZW50U2VhcmNoKHsgbmFtZTogZXZlbnQud29ya3NwYWNlTmFtZSwgcmVjZW50U2VhcmNoVHlwZTogUmVjZW50U2VhcmNoVHlwZS5kYXNoYm9hcmQsIGl0ZW1JZDogZXZlbnQud29ya3NwYWNlSWQgfSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAvLyB0aGlzLnJlY2VudFNlYXJjaGVzLmluY2x1ZGVzKGV2ZW50LndvcmtzcGFjZU5hbWUpXHJcbiAgICAgICAgICAgIC8vICAgPyAodGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UoXHJcbiAgICAgICAgICAgIC8vICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXMuaW5kZXhPZihldmVudC53b3Jrc3BhY2VOYW1lKSxcclxuICAgICAgICAgICAgLy8gICAgICAgMVxyXG4gICAgICAgICAgICAvLyAgICAgKSxcclxuICAgICAgICAgICAgLy8gICAgIHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKDAsIDAsIGV2ZW50LndvcmtzcGFjZU5hbWUpKVxyXG4gICAgICAgICAgICAvLyAgIDogdGhpcy5yZWNlbnRTZWFyY2hlcy51bnNoaWZ0KGV2ZW50LndvcmtzcGFjZU5hbWUpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFJlY2VudFNlYXJjaGVzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RFbXBsb3llZShldmVudCwgY2xpY2spIHtcclxuICAgIGlmIChjbGljay53aGljaCA9PSAxKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5SWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZUJ5VXJsKFxyXG4gICAgICAgIFwiL2Rhc2hib2FyZC9wcm9maWxlL1wiICsgZXZlbnQuaXRlbUlkICsgXCIvb3ZlcnZpZXdcIlxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGFzaGJvYXJkID0gZXZlbnQud29ya3NwYWNlSWQ7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZSA9IGV2ZW50Lml0ZW1JZDtcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgICB0aGlzLm1lbnVJdGVtTmFtZSA9IGV2ZW50Lml0ZW1OYW1lO1xyXG4gICAgICB0aGlzLnJzc1xyXG4gICAgICAgIC5pbnNlcnRSZWNlbnRTZWFyY2goeyBuYW1lOiBldmVudC5pdGVtTmFtZSwgcmVjZW50U2VhcmNoVHlwZTogUmVjZW50U2VhcmNoVHlwZS5lbXBsb3llZSwgaXRlbUlkOiBldmVudC5pdGVtSWQgfSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICB0aGlzLnJzcy5nZXRSZWNlbnRTZWFyY2goKS5zdWJzY3JpYmUoKHJlc3BvbnNlRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlRGF0YS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbHNlYXJjaGVzID0gcmVzcG9uc2VEYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMb2NhbFN0b3JhZ2VQcm9wZXJ0aWVzLlJlY2VudFNlYXJjaGVzLCBKU09OLnN0cmluZ2lmeSh0aGlzLmFsbHNlYXJjaGVzKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlY2VudFNlYXJjaGVzID0gcmVzcG9uc2VEYXRhLmRhdGE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RBZGltblRvb2wobGluaywgZXZlbnQsIGl0ZW0pIHtcclxuICAgIGlmIChldmVudC53aGljaCA9PSAxKSB7XHJcbiAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5VGV4dCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlYXJjaEJ5SWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbbGlua10pO1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgIHRoaXMucnNzLmluc2VydFJlY2VudFNlYXJjaCh7IG5hbWU6IGl0ZW0ubWVudSwgcmVjZW50U2VhcmNoVHlwZTogUmVjZW50U2VhcmNoVHlwZS5tZW51LCBpdGVtSWQ6IGl0ZW0uaWQgfSkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIC8vIHRoaXMucmVjZW50U2VhcmNoZXMuaW5jbHVkZXMobmFtZSlcclxuICAgICAgICAgIC8vICAgPyAodGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UodGhpcy5yZWNlbnRTZWFyY2hlcy5pbmRleE9mKG5hbWUpLCAxKSxcclxuICAgICAgICAgIC8vICAgICB0aGlzLnJlY2VudFNlYXJjaGVzLnNwbGljZSgwLCAwLCBuYW1lKSlcclxuICAgICAgICAgIC8vICAgOiB0aGlzLnJlY2VudFNlYXJjaGVzLnVuc2hpZnQobmFtZSk7XHJcbiAgICAgICAgICB0aGlzLmdldFJlY2VudFNlYXJjaGVzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBPblNlbGVjdCh3aWRnZXQsIGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQud2hpY2ggPT0gMSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5SZWRpcmVjdFRvQXBwKHdpZGdldCk7XHJcbiAgICAgIHRoaXMucnNzXHJcbiAgICAgICAgLmluc2VydFJlY2VudFNlYXJjaCh7IG5hbWU6IHdpZGdldC53aWRnZXROYW1lLCByZWNlbnRTZWFyY2hUeXBlOiBSZWNlbnRTZWFyY2hUeXBlLndpZGdldCwgaXRlbUlkOiB3aWRnZXQud2lkZ2V0SWQgfSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAvLyB0aGlzLnJlY2VudFNlYXJjaGVzLmluY2x1ZGVzKHdpZGdldC53aWRnZXROYW1lKVxyXG4gICAgICAgICAgICAvLyAgID8gKHRoaXMucmVjZW50U2VhcmNoZXMuc3BsaWNlKFxyXG4gICAgICAgICAgICAvLyAgICAgICB0aGlzLnJlY2VudFNlYXJjaGVzLmluZGV4T2Yod2lkZ2V0LndpZGdldE5hbWUpLFxyXG4gICAgICAgICAgICAvLyAgICAgICAxXHJcbiAgICAgICAgICAgIC8vICAgICApLFxyXG4gICAgICAgICAgICAvLyAgICAgdGhpcy5yZWNlbnRTZWFyY2hlcy5zcGxpY2UoMCwgMCwgd2lkZ2V0LndpZGdldE5hbWUpKVxyXG4gICAgICAgICAgICAvLyAgIDogdGhpcy5yZWNlbnRTZWFyY2hlcy51bnNoaWZ0KHdpZGdldC53aWRnZXROYW1lKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRSZWNlbnRTZWFyY2hlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGdldFJlY2VudFNlYXJjaGVzKCkge1xyXG4gICAgdGhpcy5yZWNlbnRTZWFyY2hlc2ZldGNoSW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICB0aGlzLnJzcy5nZXRSZWNlbnRTZWFyY2goKS5zdWJzY3JpYmUoKHJlc3BvbnNlRGF0YTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZURhdGEuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMuYWxsc2VhcmNoZXMgPSByZXNwb25zZURhdGEuZGF0YTtcclxuICAgICAgICB0aGlzLnJlY2VudFNlYXJjaGVzID0gcmVzcG9uc2VEYXRhLmRhdGE7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTG9jYWxTdG9yYWdlUHJvcGVydGllcy5SZWNlbnRTZWFyY2hlcywgSlNPTi5zdHJpbmdpZnkodGhpcy5hbGxzZWFyY2hlcykpO1xyXG4gICAgICAgIHRoaXMucmVjZW50U2VhcmNoZXNmZXRjaEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBSZWRpcmVjdFRvQXBwKHdpZGdldCkge1xyXG4gICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoXHJcbiAgICAgIFtcImRhc2hib2FyZC1tYW5hZ2VtZW50L3dpZGdldHNcIiwgd2lkZ2V0LndpZGdldElkXVxyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgT25Hb2FsU2VsZWN0KGdvYWwsIGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQud2hpY2ggPT0gMSkge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcclxuICAgICAgdGhpcy5SZWRpcmVjdFRvR29hbChnb2FsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFJlZGlyZWN0VG9Hb2FsKGdvYWwpIHtcclxuICAgIC8vaWYgKHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5wcm9qZWN0SWQgPT0gZ29hbC5wcm9qZWN0SWQpLmxlbmd0aCA+IDApIHtcclxuICAgIGlmIChnb2FsLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwpIHtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goZ29hbC5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5nb2FsLCBnb2FsLml0ZW1JZCk7XHJcbiAgICAgIHRoaXMucm91dGVzLm5hdmlnYXRlKFtcInByb2plY3RzL2dvYWxcIiwgZ29hbC5pdGVtVW5pcXVlTmFtZV0sIHsgZnJhZ21lbnQ6ICd1bmlxdWUnIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5JbnNlcnRTZWFyY2goZ29hbC5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS5zcHJpbnQsIGdvYWwuaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvc3ByaW50XCIsIGdvYWwuaXRlbVVuaXF1ZU5hbWVdLCB7IGZyYWdtZW50OiAndW5pcXVlJyB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuZ29hbFNlYXJjaExpc3QgPSBbXTtcclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICB9XHJcbiAgLy8gIH1cclxuXHJcbiAgT25Vc2VyU3RvcnlTZWxlY3QodXNlclN0b3J5LCBldmVudCkge1xyXG4gICAgaWYgKGV2ZW50LndoaWNoID09IDEpIHtcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMuUmVkaXJlY3RUb1VzZXJTdG9yeSh1c2VyU3RvcnkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgUmVkaXJlY3RUb1VzZXJTdG9yeSh1c2VyU3RvcnkpIHtcclxuICAgIC8vaWYgKHRoaXMucHJvamVjdFNlYXJjaFJlc3VsdHMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5wcm9qZWN0SWQgPT0gdXNlclN0b3J5LnByb2plY3RJZCkubGVuZ3RoID4gMCkge1xyXG4gICAgaWYgKHVzZXJTdG9yeS5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnKSB7XHJcbiAgICAgIHRoaXMuSW5zZXJ0U2VhcmNoKHVzZXJTdG9yeS5pdGVtTmFtZSwgUmVjZW50U2VhcmNoVHlwZS53b3JrSXRlbU9yQnVnLCB1c2VyU3RvcnkuaXRlbUlkKTtcclxuICAgICAgdGhpcy5yb3V0ZXMubmF2aWdhdGUoW1wicHJvamVjdHMvd29ya2l0ZW1cIiwgdXNlclN0b3J5Lml0ZW1VbmlxdWVOYW1lXSwgeyBmcmFnbWVudDogJ3VuaXF1ZScgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLkluc2VydFNlYXJjaCh1c2VyU3RvcnkuaXRlbU5hbWUsIFJlY2VudFNlYXJjaFR5cGUuYWRob2MsIHVzZXJTdG9yeS5pdGVtSWQpO1xyXG4gICAgICB0aGlzLnJvdXRlcy5uYXZpZ2F0ZShbXCJkYXNoYm9hcmQvYWRob2Mtd29ya2l0ZW1cIiwgdXNlclN0b3J5Lml0ZW1JZF0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ID0gW107XHJcbiAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pc09wZW5lZC5lbWl0KHRoaXMuZGlzcGxheSk7XHJcbiAgfVxyXG4gIC8vIH1cclxuXHJcbiAgU2V0KCkge1xyXG4gICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgIC8vIGlmIChcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID09IHVuZGVmaW5lZCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT0gbnVsbCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT09IFwiXCJcclxuICAgIC8vICkge1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICBhcnJvd0Rvd25FdmVudEZvclNlYXJjaEJ5VGV4dCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5wcm9qZWN0SW5kZXggPCB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCArPSA0NTtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXgrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbdGhpcy5wcm9qZWN0SW5kZXhdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5wcm9qZWN0SW5kZXggPT0gdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLnByb2plY3RJbmRleCA9PSB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMucHJvamVjdEluZGV4ID09IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMudXNlcnMgPCB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wICs9IDQ1O1xyXG4gICAgICB0aGlzLnVzZXJzKys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbdGhpcy51c2Vyc107XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy51c2VycyA9PSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMVxyXG4gICAgICAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wICs9IDQ1O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy51c2VycyA9PSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMVxyXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLmdvYWxJbmRleCA8IHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoIC0gMSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wICs9IDQ1O1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCsrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFt0aGlzLmdvYWxJbmRleF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuZ29hbEluZGV4ID09IHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoIC0gMVxyXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4IDwgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wICs9IDQ1O1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCsrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xyXG4gICAgfVxyXG4gIH1cclxuICBhcnJvd0Rvd25FdmVudCgpIHtcclxuICAgIC8vIGlmIChcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ICE9IHVuZGVmaW5lZCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gbnVsbCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT09IFwiXCJcclxuICAgIC8vICkge1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9XHJcbiAgICBpZiAodGhpcy5zZWFyY2hCeVRleHQgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgIHRoaXMuYXJyb3dEb3duRXZlbnRGb3JTZWFyY2hCeVRleHQoKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4IDwgdGhpcy5pdGVtcy5sZW5ndGggLSAxXHJcbiAgICApIHtcclxuICAgICAgLy90aGlzLm1lbnVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsQnkoMCwgMTAwKTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCArPSA0NTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4Kys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIC8vIHRoaXMuaGlnaGxpZ2h0KG5leHRyb3cpO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJlxyXG4gICAgICB0aGlzLndzIDwgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDFcclxuICAgICkge1xyXG4gICAgICB0aGlzLndzKys7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgKz0gNDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XHJcbiAgICAgIC8vIHRoaXMuaGlnaGxpZ2h0KG5leHRyb3cpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPCB0aGlzLndpZGdldHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wICs9IDQ4O1xyXG4gICAgICB0aGlzLndkKys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPCB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4Kys7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICAgIC8vIHRoaXMuaGlnaGxpZ2h0KG5leHRyb3cpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy51c2VycyA8IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgKz0gNDU7XHJcbiAgICAgIHRoaXMudXNlcnMrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLmdvYWxJbmRleCA8IHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoIC0gMSkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wICs9IDQ1O1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCsrO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFt0aGlzLmdvYWxJbmRleF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPCA4KSB7XHJcbiAgICAgIHRoaXMucnMrKztcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbdGhpcy5yc107XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnNlbGVjdGVkUm93SW5kZXggPT0gdGhpcy5pdGVtcy5sZW5ndGggLSAxICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy50ID0gdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzWzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDEgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnQgPSBudWxsO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmXHJcbiAgICAgIHRoaXMudXNlcnMgPT0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ID0gbnVsbDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxyXG4gICAgICB0aGlzLnVzZXJzID09IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggLSAxICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiZcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPT0gdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMSAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAvLyAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLndkID0gMDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAvLyAgIHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLnJzID0gMDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSA4ICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAvLyAgIHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMucnMgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDBcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDggJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLnJzID0gMDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmZ1bGxOYW1lICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDEgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLnJzID0gMDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlIHtcclxuICAgIC8vICAgaWYgKHRoaXMucnMgIT09IG51bGwgJiYgdGhpcy5ycyAhPT0gdW5kZWZpbmVkICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gOCAmJiB0aGlzLnJzIDwgOCkge1xyXG4gICAgLy8gICAgIHRoaXMucnMrKztcclxuICAgIC8vICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1t0aGlzLnJzXTtcclxuICAgIC8vICAgICAvLyB0aGlzLmhpZ2hsaWdodChuZXh0cm93KTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBlbHNlIGlmICh0aGlzLnJzICE9PSBudWxsICYmIHRoaXMucnMgIT09IHVuZGVmaW5lZCAmJiAodGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGgpIC0gMSA+IHRoaXMucnMgJiYgdGhpcy5ycyA8IDgpIHtcclxuICAgIC8vICAgICB0aGlzLnJzKys7XHJcbiAgICAvLyAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbdGhpcy5yc107XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuXHJcblxyXG4gIH1cclxuICBhcnJvd1VwRXZlbnRGb3JTZWFyY2hCeVRleHQoKSB7XHJcbiAgICBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMucHJvamVjdEluZGV4ID4gMCkge1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleC0tO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wIC09IDQ1O1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFt0aGlzLnByb2plY3RJbmRleF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtSWQgPT0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdLml0ZW1JZCAmJiB0aGlzLnVzZXJzID09IDAgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbdGhpcy5wcm9qZWN0SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLnVzZXJzID4gMCkge1xyXG4gICAgICB0aGlzLnVzZXJzLS07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgLT0gNDU7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbdGhpcy51c2Vyc107XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuaXRlbUNsaWNrZWQuaXRlbUlkID09IHRoaXMuZ29hbFNlYXJjaExpc3RbMF0uaXRlbUlkICYmIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFt0aGlzLnVzZXJzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMuaXRlbUNsaWNrZWQuaXRlbUlkID09IHRoaXMuZ29hbFNlYXJjaExpc3RbMF0uaXRlbUlkICYmIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMucHJvamVjdExpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucHJvamVjdExpc3RbdGhpcy5wcm9qZWN0SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTdcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludCkgJiYgdGhpcy5nb2FsSW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4LS07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgLT0gNDU7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLml0ZW1DbGlja2VkLml0ZW1JZCA9PSB0aGlzLmVtcGxveWVlTGlzdFswXS5pdGVtSWQgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFt0aGlzLmdvYWxJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuaXRlbUNsaWNrZWQuaXRlbUlkID09IHRoaXMuZW1wbG95ZWVMaXN0WzBdLml0ZW1JZCAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbdGhpcy51c2Vyc107XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMuaXRlbUNsaWNrZWQuaXRlbUlkID09IHRoaXMuZW1wbG95ZWVMaXN0WzBdLml0ZW1JZCAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMucHJvamVjdExpc3QgJiYgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0W3RoaXMucHJvamVjdEluZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4LS07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgLT0gNDU7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFycm93VXBFdmVudCgpIHtcclxuICAgIC8vIGlmIChcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ICE9IHVuZGVmaW5lZCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgIT0gbnVsbCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT09IFwiXCJcclxuICAgIC8vICkge1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9IFxyXG4gICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0ICYmIHRoaXMuc2VhcmNoVGV4dCkge1xyXG4gICAgICB0aGlzLmFycm93VXBFdmVudEZvclNlYXJjaEJ5VGV4dCgpO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIG1lbnVzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXgtLTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgIH1cclxuICAgIC8vRnJvbSB3b3Jrc3BhY2VzXHJcbiAgICBlbHNlIGlmIChcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJlxyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkID09IHRoaXMud29ya3NwYWNlc1swXS53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID09IDAgJiZcclxuICAgICAgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDBcclxuICAgICkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndzID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wIC09IDQxO1xyXG4gICAgICB0aGlzLndzLS07XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gd2lkZ2V0cyAgICBcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCAtPSA0ODtcclxuICAgICAgdGhpcy53ZC0tO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgPT0gdGhpcy53aWRnZXRzWzBdLndpZGdldElkICYmIHRoaXMud2QgPT0gMCAmJlxyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCA9PSB0aGlzLndpZGdldHNbMF0ud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSAwICYmXHJcbiAgICAgIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnNlbGVjdGVkUm93SW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH1cclxuICAgIC8vRnJvbSBFbXBsb3llZXMgICBcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgLT0gNDU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4LS07XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciA9PSB0aGlzLmVtcGxveWVlTGlzdFswXS5lbXBsb3llZU51bWJlciAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmXHJcbiAgICAgIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53ZCA9IHRoaXMud2lkZ2V0cy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyID09IHRoaXMuZW1wbG95ZWVMaXN0WzBdLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiZcclxuICAgICAgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgPT0gdGhpcy5lbXBsb3llZUxpc3RbMF0uZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJlxyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIFdJL0J1ZyAgICAgICAgIE5FRUQgVE8gRE8gXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcclxuICAgICAgJiYgdGhpcy51c2VycyA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCAtPSA0NTtcclxuICAgICAgdGhpcy51c2Vycy0tO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0W3RoaXMudXNlcnNdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcclxuICAgICAgdGhpcy51c2VycyA9PSAwICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmXHJcbiAgICAgIHRoaXMudXNlcnMgPT0gMCAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJlxyXG4gICAgICB0aGlzLnVzZXJzID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiZcclxuICAgICAgdGhpcy51c2VycyA9PSAwICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gZ29hbC9zcHJpbnRcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludClcclxuICAgICAgJiYgdGhpcy5nb2FsSW5kZXggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgLT0gNDU7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4LS07XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJlxyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9PSAwICYmIHRoaXMudXNlclN0b3J5TGlzdCAmJiB0aGlzLnVzZXJTdG9yeUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeUxpc3RbdGhpcy51c2Vyc107XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTVcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy51c2VycyA9IHRoaXMud2QgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFt0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID09IDAgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy53aWRnZXRzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZXR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJlxyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9PSAwICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gdGhpcy51c2VycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMud3NdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJlxyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9PSAwICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gcmVjZW50IHNlYXJjaGVzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID4gMCkge1xyXG4gICAgICB0aGlzLnJzLS07XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzW3RoaXMucnNdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiZcclxuICAgICAgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnJzID0gbnVsbDtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0W3RoaXMuZ29hbEluZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJlxyXG4gICAgICB0aGlzLnVzZXJTdG9yeUxpc3QgJiYgdGhpcy51c2VyU3RvcnlMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLnVzZXJTdG9yeUxpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5TGlzdFt0aGlzLnVzZXJzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJlxyXG4gICAgICB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy53ZCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0W3RoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4XTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJlxyXG4gICAgICB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1t0aGlzLndkXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJlxyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5ycyA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJlxyXG4gICAgICB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMucnMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXhdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaCAmJiB0aGlzLnJzID09IDAgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMud2QgPSB0aGlzLndpZGdldHMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbdGhpcy53ZF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnQgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLndzXTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2ggJiYgdGhpcy5ycyA9PSAwICYmIHRoaXMudG9vbHMgJiYgdGhpcy50b29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMudCA9IHRoaXMudG9vbHMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53b3Jrc3BhY2VzW3RoaXMudF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoICYmIHRoaXMucnMgPT0gMCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnQgPSB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5mdWxsTmFtZSAmJiB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9PSAwICYmIHRoaXMud2lkZ2V0cyAmJiB0aGlzLndpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTRcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbEhlaWdodDtcclxuICAgIC8vICAgdGhpcy53ZCA9IDg7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudCA9IHRoaXMud3MgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy53aWRnZXRzW3RoaXMud2RdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmZ1bGxOYW1lICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMud3MgPSB0aGlzLndvcmtzcGFjZXMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZnVsbE5hbWUgJiYgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPT0gMCAmJiB0aGlzLnRvb2xzICYmIHRoaXMudG9vbHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLnQgPSB0aGlzLnRvb2xzLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1t0aGlzLnRdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmZ1bGxOYW1lICYmIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMudF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy53ZCA9PSAwICYmIHRoaXMud29ya3NwYWNlcyAmJiB0aGlzLndvcmtzcGFjZXMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbEhlaWdodDtcclxuICAgIC8vICAgdGhpcy53cyA9IHRoaXMud29ya3NwYWNlcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy53c107XHJcbiAgICAvLyAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMud2QgPT0gMCAmJiB0aGlzLnRvb2xzICYmIHRoaXMudG9vbHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLnQgPSB0aGlzLnRvb2xzLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbdGhpcy50XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndkID09IDAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5pdGVtcy5sZW5ndGggLSAxO1xyXG4gICAgLy8gICB0aGlzLnJzID0gdGhpcy50ID0gdGhpcy53cyA9IHRoaXMud2QgPSBudWxsO1xyXG4gICAgLy8gICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1t0aGlzLnRdO1xyXG4gICAgLy8gfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMud3MgPT0gMCAmJiB0aGlzLnRvb2xzICYmIHRoaXMudG9vbHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICB0aGlzLnQgPSB0aGlzLnRvb2xzLmxlbmd0aCAtIDE7XHJcbiAgICAvLyAgIHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndzID0gdGhpcy53ZCA9IG51bGw7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnRvb2xzW3RoaXMudF07XHJcbiAgICAvLyB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy53cyA9PSAwICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbdGhpcy5zZWxlY3RlZFJvd0luZGV4XTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5wZXJtaXNzaW9uICYmIHRoaXMudCA9PSAwICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuaXRlbXMubGVuZ3RoIC0gMTtcclxuICAgIC8vICAgdGhpcy5ycyA9IHRoaXMudCA9IHRoaXMud3MgPSB0aGlzLndkID0gbnVsbDtcclxuICAgIC8vICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxIZWlnaHQ7XHJcbiAgICAvLyAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zW3RoaXMuc2VsZWN0ZWRSb3dJbmRleF07XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICBpZiAodGhpcy5ycyAhPT0gbnVsbCAmJiB0aGlzLnJzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5ycyA+IDApIHtcclxuICAgIC8vICAgICB0aGlzLnJzLS07XHJcbiAgICAvLyAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbdGhpcy5yc107XHJcbiAgICAvLyAgICAgLy8gdGhpcy5oaWdobGlnaHQobmV4dHJvdyk7XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICB9XHJcbiAgYXJyb3dMZWZ0RXZlbnRGb3JTZWFyY2hCeVRleHQoKSB7XHJcbiAgICBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYykgJiYgdGhpcy5wcm9qZWN0TGlzdCAmJiB0aGlzLnByb2plY3RMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS03XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gbnVsbFxyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnByb2plY3RMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGxcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKCh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpICYmIHRoaXMucHJvamVjdExpc3QgJiYgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGxcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5FbXBsb3llZSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTZcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsXHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuRW1wbG95ZWUgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsXHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLkVtcGxveWVlICYmIHRoaXMucHJvamVjdExpc3QgJiYgdGhpcy5wcm9qZWN0TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtN1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGxcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5wcm9qZWN0TGlzdFswXTtcclxuICAgIH1cclxuICB9XHJcbiAgYXJyb3dMZWZ0RXZlbnQoKSB7XHJcbiAgICAvLyBpZiAoXHJcbiAgICAvLyAgIHRoaXMuc2VhcmNoVGV4dCAhPSB1bmRlZmluZWQgfHxcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ICE9IG51bGwgfHxcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID09PSBcIlwiXHJcbiAgICAvLyApIHtcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0ICYmIHRoaXMuc2VhcmNoVGV4dCkge1xyXG4gICAgICB0aGlzLmFycm93TGVmdEV2ZW50Rm9yU2VhcmNoQnlUZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIHdvcmtzcGFjZXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMudCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICB9XHJcbiAgICAvL2Zyb20gd2lkZ2V0c1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLml0ZW1zICYmIHRoaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5pdGVtc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBlbXBsb3llZXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gV0kvQnVnXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcclxuICAgICAgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcclxuICAgICAgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKVxyXG4gICAgICAmJiB0aGlzLndvcmtzcGFjZXMgJiYgdGhpcy53b3Jrc3BhY2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud3MgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTJcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud29ya3NwYWNlc1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXHJcbiAgICAgICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIEdvYWwvU3ByaW50XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmdvYWwgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5zcHJpbnQpXHJcbiAgICAgICYmIHRoaXMudXNlclN0b3J5TGlzdCAmJiB0aGlzLnVzZXJTdG9yeUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlMaXN0WzBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KVxyXG4gICAgICAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludClcclxuICAgICAgJiYgdGhpcy53aWRnZXRzICYmIHRoaXMud2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndkID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0zXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndpZGdldHNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludClcclxuICAgICAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbCB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLnNwcmludClcclxuICAgICAgJiYgdGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53cyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTFcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuaXRlbXNbMF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gcmVjZW50IHNlYXJjaGVzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaFxyXG4gICAgICAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXHJcbiAgICAgICYmIHRoaXMudXNlclN0b3J5TGlzdCAmJiB0aGlzLnVzZXJTdG9yeUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNVwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlMaXN0WzBdO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcclxuICAgICAgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy53cyA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLnJlY2VudFNlYXJjaFxyXG4gICAgICAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLndzID0gdGhpcy50ID0gdGhpcy5ycyA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMud2QgPSAwO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInN0eWxlLTNcIikuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2hcclxuICAgICAgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMucnMgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLndzID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0yXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQucmVjZW50U2VhcmNoXHJcbiAgICAgICYmIHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS0xXCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLml0ZW1zWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuICBhcnJvd1JpZ2h0RXZlbnRGb3JTZWFyY2hCeVRleHQoKSB7XHJcbiAgICBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5Qcm9qZWN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS01XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuUHJvamVjdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLlByb2plY3QgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS00XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAoKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUud29ya0l0ZW1PUkJ1ZyB8fCB0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLmFkaG9jKSAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnByb2plY3RJbmRleCA9IHRoaXMudXNlcnMgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzdHlsZS02XCIpLnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5wcm9qZWN0SW5kZXggPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtNFwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICgodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5nb2FsIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50KSAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucHJvamVjdEluZGV4ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFycm93UmlnaHRFdmVudCgpIHtcclxuICAgIC8vIGlmIChcclxuICAgIC8vICAgdGhpcy5zZWFyY2hUZXh0ID09IHVuZGVmaW5lZCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT0gbnVsbCB8fFxyXG4gICAgLy8gICB0aGlzLnNlYXJjaFRleHQgPT09IFwiXCJcclxuICAgIC8vICkge1xyXG4gICAgLy8gICByZXR1cm47XHJcbiAgICAvLyB9IFxyXG4gICAgaWYgKHRoaXMuc2VhcmNoQnlUZXh0ICYmIHRoaXMuc2VhcmNoVGV4dCkge1xyXG4gICAgICB0aGlzLmFycm93UmlnaHRFdmVudEZvclNlYXJjaEJ5VGV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5yZWNlbnRTZWFyY2gpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIG1lbnVzXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy53b3Jrc3BhY2VzICYmIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudCA9IG51bGw7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtMlwiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndkID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnJzID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy53cyA9IDA7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLndvcmtzcGFjZXNbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMuZW1wbG95ZWVMaXN0ICYmIHRoaXMuZW1wbG95ZWVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5lbXBsb3llZUxpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQubWVudSAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLm1lbnUgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5tZW51ICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gd29ya3NwYWNlc1xyXG4gICAgZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLndpZGdldHMgJiYgdGhpcy53aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53ZCA9IDA7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3R5bGUtM1wiKS5zY3JvbGxUb3AgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMud2lkZ2V0c1swXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLmVtcGxveWVlTGlzdCAmJiB0aGlzLmVtcGxveWVlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZW1wbG95ZWVMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndvcmtzcGFjZUlkICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnVzZXJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud29ya3NwYWNlSWQgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53b3Jrc3BhY2VJZCAmJiB0aGlzLnJlY2VudFNlYXJjaGVzICYmIHRoaXMucmVjZW50U2VhcmNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJzID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMud2QgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLnJlY2VudFNlYXJjaGVzWzBdO1xyXG4gICAgfVxyXG4gICAgLy9Gcm9tIHdpZGdldHNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy5lbXBsb3llZUxpc3QgJiYgdGhpcy5lbXBsb3llZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMudXNlcnMgPSB0aGlzLmdvYWxJbmRleCA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmVtcGxveWVlTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC53aWRnZXRJZCAmJiB0aGlzLnVzZXJTdG9yeVNlYXJjaExpc3QgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy51c2VycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLndpZGdldElkICYmIHRoaXMuZ29hbFNlYXJjaExpc3QgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZ29hbEluZGV4ID0gMDtcclxuICAgICAgdGhpcy53cyA9IHRoaXMucnMgPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLndkID0gdGhpcy50ID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnVzZXJzID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMuZ29hbFNlYXJjaExpc3RbMF07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQud2lkZ2V0SWQgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuICAgIC8vRnJvbSBFbXBsb3llZXNcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuZW1wbG95ZWVOdW1iZXIgJiYgdGhpcy51c2VyU3RvcnlTZWFyY2hMaXN0ICYmIHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudXNlcnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMudXNlclN0b3J5U2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5lbXBsb3llZU51bWJlciAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0ICYmIHRoaXMuZ29hbFNlYXJjaExpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmdvYWxJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLnJzID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy53ZCA9IHRoaXMudCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy51c2VycyA9IG51bGw7XHJcbiAgICAgIHRoaXMuaXRlbUNsaWNrZWQgPSB0aGlzLmdvYWxTZWFyY2hMaXN0WzBdO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLmVtcGxveWVlTnVtYmVyICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gV0kvQnVnXHJcbiAgICBlbHNlIGlmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlICYmICh0aGlzLml0ZW1DbGlja2VkLml0ZW1UeXBlID09IFNlYXJjaFRhc2tUeXBlLndvcmtJdGVtT1JCdWcgfHwgdGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS5hZGhvYylcclxuICAgICAgJiYgdGhpcy5nb2FsU2VhcmNoTGlzdCAmJiB0aGlzLmdvYWxTZWFyY2hMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5nb2FsSW5kZXggPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy5ycyA9IHRoaXMuc2VsZWN0ZWRSb3dJbmRleCA9IHRoaXMud2QgPSB0aGlzLnQgPSB0aGlzLnNlbGVjdGVkRW1wbG95ZWVJbmRleCA9IHRoaXMudXNlcnMgPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5nb2FsU2VhcmNoTGlzdFswXTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSAmJiAodGhpcy5pdGVtQ2xpY2tlZC5pdGVtVHlwZSA9PSBTZWFyY2hUYXNrVHlwZS53b3JrSXRlbU9SQnVnIHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuYWRob2MpXHJcbiAgICAgICYmIHRoaXMucmVjZW50U2VhcmNoZXMgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucnMgPSAwO1xyXG4gICAgICB0aGlzLndzID0gdGhpcy53ZCA9IHRoaXMuc2VsZWN0ZWRFbXBsb3llZUluZGV4ID0gdGhpcy5zZWxlY3RlZFJvd0luZGV4ID0gdGhpcy50ID0gdGhpcy51c2VycyA9IHRoaXMuZ29hbEluZGV4ID0gbnVsbDtcclxuICAgICAgdGhpcy5pdGVtQ2xpY2tlZCA9IHRoaXMucmVjZW50U2VhcmNoZXNbMF07XHJcbiAgICB9XHJcbiAgICAvL0Zyb20gR29hbC9TcHJpbnRcclxuICAgIGVsc2UgaWYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgJiYgKHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuc3ByaW50IHx8IHRoaXMuaXRlbUNsaWNrZWQuaXRlbVR5cGUgPT0gU2VhcmNoVGFza1R5cGUuZ29hbClcclxuICAgICAgJiYgdGhpcy5yZWNlbnRTZWFyY2hlcyAmJiB0aGlzLnJlY2VudFNlYXJjaGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ycyA9IDA7XHJcbiAgICAgIHRoaXMud3MgPSB0aGlzLndkID0gdGhpcy5zZWxlY3RlZEVtcGxveWVlSW5kZXggPSB0aGlzLnNlbGVjdGVkUm93SW5kZXggPSB0aGlzLnQgPSB0aGlzLnVzZXJzID0gdGhpcy5nb2FsSW5kZXggPSBudWxsO1xyXG4gICAgICB0aGlzLml0ZW1DbGlja2VkID0gdGhpcy5yZWNlbnRTZWFyY2hlc1swXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5Xb3Jrc3BhY2VGb3JtKCkge1xyXG4gICAgdGhpcy5hZGRXb3JrU3BhY2VQb3BPdmVyLm9wZW4oKTtcclxuICAgIHRoaXMuZGlzcGxheSA9IHRydWU7XHJcbiAgICB0aGlzLmlzT3BlbmVkLmVtaXQodGhpcy5kaXNwbGF5KTtcclxuICAgIHRoaXMuZ2V0QWxsUm9sZXMoKTtcclxuICB9XHJcblxyXG4gIGdldEFsbFJvbGVzKCkge1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLkdldGFsbFJvbGVzKCkuc3Vic2NyaWJlKChyZXNwb25zZURhdGE6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJvbGVzRHJvcERvd24gPSByZXNwb25zZURhdGEuZGF0YTtcclxuICAgICAgdGhpcy5yb2xlc0Ryb3BEb3duLmZvckVhY2goKHApID0+IHtcclxuICAgICAgICBjb25zdCBpZCA9IHAucm9sZUlkLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgcC5yb2xlSWQgPSBpZDtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5uZ0Rlc3Ryb3llZCQubmV4dCgpO1xyXG4gICAgdGhpcy5uZ0Rlc3Ryb3llZCQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGNvbXBhcmVTZWxlY3RlZFJvbGVzRm4oKSB7IH1cclxuICBjb21wYXJlRWRpdFNlbGVjdGVkUm9sZXNGbigpIHsgfVxyXG4gIGNvbXBhcmVEZWxldGVTZWxlY3RlZFJvbGVzRm4oKSB7IH1cclxuICB1cHNlcnRXb3Jrc3BhY2UoKSB7IH1cclxuICB0b2dnbGVBbGxSb2xlc1NlbGVjdGVkKCkgeyB9XHJcbiAgdG9nZ2xlRWRpdEFsbFJvbGVzU2VsZWN0ZWQoKSB7IH1cclxuICB0b2dnbGVEZWxldGVBbGxSb2xlc1NlbGVjdGVkKCkgeyB9XHJcbiAgY2xvc2VBZGRXb3Jrc3BhY2VEaWFsb2coKSB7IH1cclxufVxyXG4iLCI8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cInZpc2libGVzXCIgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51c1wiIGZ4SGlkZS5ndC14cyBmeFNob3c+XHJcbiAgPG1hdC1pY29uIGNsYXNzPVwibmV3TWVudVwiPm1lbnU8L21hdC1pY29uPlxyXG48L2J1dHRvbj5cclxuXHJcbjwhLS0gTG9nbyBTZWN0aW9uIC0tPlxyXG48IS0tIFVuY29tbWVudCBhbmQgdXNlIGFzIG5lZWRlZCAtLT5cclxuXHJcbjwhLS0gPGRpdiBmeEZsZXggY2xhc3M9XCJuZXdMb2dvIGRlZmF1bHQtYmcgdG9wLWxvZ28tYmcgbmV3bWluaWxvZ28gem9vbS1pbWFnZS1ob3ZlclwiIGZ4SGlkZS5ndC14cyBmeFNob3c+XHJcbiAgPGltZyBzcmM9XCJ7e2NvbXBhbnlNaW5pTG9nb319XCIgYWx0PVwiXCIgaWQ9XCJtaW5pLWxvZ28tdG9wYmFyXCIgc3R5bGU9XCJ3aWR0aDozMHB4OyBoZWlnaHQ6MzBweDtcIlxyXG4gICAgKGNsaWNrKT1cImdldEFsbE1lbnVJdGVtcygpXCIgLz5cclxuPC9kaXY+XHJcbjxkaXYgZnhGbGV4IGNsYXNzPVwibmV3TG9nbyB0b3AtbG9nby1iZyBhcHBzLWJ1dHRvbiB6b29tLWltYWdlLWhvdmVyXCIgc3R5bGU9XCJsZWZ0OiAwcHg7XCIgZnhIaWRlIGZ4U2hvdy5ndC14cz5cclxuICA8aW1nIHNyYz1cInt7Y29tcGFueU1haW5Mb2dvfX1cIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjsgbGVmdDogMjBweDsgcG9zaXRpb246IHJlbGF0aXZlO1wiIGlkPVwibWFpbi1sb2dvLXRvcGJhclwiXHJcbiAgICBjbGFzcz1cImltZy1oZWlnaHQtbWFpbi1sb2dvLXRvcGJhclwiIChjbGljayk9XCJnZXRBbGxNZW51SXRlbXMoKVwiIC8+XHJcbjwvZGl2PiAtLT5cclxuXHJcbjwhLS0gTWVudSAtLT5cclxuPG1hdC1tZW51ICNtZW51cz1cIm1hdE1lbnVcIiB5UG9zaXRpb249XCJiZWxvd1wiIGNsYXNzPVwiZmlsdGVyLXBhbmVsXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgc3R5bGU9XCJoZWlnaHQ6YXV0b1wiPlxyXG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT0gJ2xpbmsnIHx8IGl0ZW0udHlwZSA9PSAnYXBwbGljYXRpb25saW5rJ1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gcm91dGVyTGluaz1cIi97eyBpdGVtLnN0YXRlIH19XCIgKGNsaWNrKT1cInNlbGVjdE1lbnUoaXRlbSwkZXZlbnQpXCJcclxuICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiaXRlbS1hY3RpdmVcIj5cclxuICAgICAgICA8bWF0LWljb24+e3sgaXRlbS5pY29uIH19PC9tYXQtaWNvbj57eyBpdGVtLm1lbnUgfCBzb2Z0TGFiZWxzUGlwZSA6IHNvZnRMYWJlbHMgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9tYXQtbWVudT5cclxuXHJcbjwhLS0gQXBwIFN0b3JlIEljb24gLS0+XHJcbjxkaXYgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IGxlZnQ6IDEwMCVcIiBjbGFzcz1cInN0b3JlLWljb20gbWF0LWljb24tYnV0dG9uXCIgKm5nSWY9XCJjYW5BY2Nlc3NfZmVhdHVyZV9EcmFnQXBwc1wiXHJcbiAgW25nQ2xhc3NdPVwidGhpcy5yb3V0ZXMudXJsLmluY2x1ZGVzKCcvYXBwLXN0b3JlL3dpZGdldHMnKSA/ICdpY29uX2FjdGl2ZV9jbGFzcycgOiAnJ1wiPlxyXG4gIDxmYS1pY29uIGljb249XCJzdG9yZVwiIHN0eWxlPVwiY29sb3I6IzA5NTU1YzsgZm9udC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7XCIgbWF0VG9vbHRpcENsYXNzPVwidG9vbHRpcENsYXNzLW1hdFwiXHJcbiAgICBtYXRUb29sdGlwPVwie3sgJ0FQUC5BUFBTVE9SRScgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJvcGVuQXBwcygpXCJcclxuICAgIGNsYXNzPVwibWF0LWNvbG9yLWFjY2VudCBjdXJzb3ItcG9pbnRlciB0aGVtZS1uYXZiYXItaWNvbi1jb2xvclwiPjwvZmEtaWNvbj5cclxuPC9kaXY+XHJcblxyXG48IS0tIEFkZCBXb3Jrc3BhY2UgUG9wb3ZlciAtLT5cclxuPHNhdC1wb3BvdmVyIGJhY2tkcm9wQ2xhc3M9XCJiYWNrZHJvcC1jb2xvclwiIGhhc0JhY2tkcm9wICNhZGRXb3Jrc3BhY2UgdmVydGljYWxBbGlnbj1cImJlbG93XCIgaG9yaXpvbnRhbEFsaWduPVwiZW5kXCJcclxuICBbaW50ZXJhY3RpdmVDbG9zZV09XCJmYWxzZVwiPlxyXG4gIDxtYXQtY2FyZCBjbGFzcz1cImZpbHRlci1kYXRhIHAtMFwiPlxyXG4gICAgPG1hdC1jYXJkLXRpdGxlIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUtdGV4dCBtYXQtYmctcHJpbWFyeSBwLTA1IG1iLTFcIj5cclxuICAgICAgICB7eyAnQVBQLkFERERBU0hCT0FSRFRJVExFJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJ3b3Jrc3BhY2VGb3JtXCIgbm92YWxpZGF0ZSAoc3VibWl0KT1cIndvcmtzcGFjZUZvcm0udmFsaWQgJiYgdXBzZXJ0V29ya3NwYWNlKClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cInt7ICdIUk1BTkFHQU1FTlQuTkFNRScgfCB0cmFuc2xhdGV9fSpcIiBmb3JtQ29udHJvbE5hbWU9XCJ3b3Jrc3BhY2VOYW1lXCIgLz5cclxuICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICpuZ0lmPVwid29ya3NwYWNlRm9ybS5nZXQoJ3dvcmtzcGFjZU5hbWUnKS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiB3b3Jrc3BhY2VGb3JtLmdldCgnd29ya3NwYWNlTmFtZScpLnRvdWNoZWQgXCI+XHJcbiAgICAgICAgICAgICAge3sgJ0FQUC5EQVNIQk9BUkROQU1FUkVRVUlSRUQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwid29ya3NwYWNlRm9ybS5nZXQoJ3dvcmtzcGFjZU5hbWUnKS5oYXNFcnJvcignbWF4bGVuZ3RoJylcIj5cclxuICAgICAgICAgICAgICB7eyAnQVBQLkRBU0hCT0FSRE5BTUVMRU5HVEhFWENFRUQnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCIgcm93cz1cIjJcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0NPTVBBTllTRVRUSU5HUy5ERVNDUklQVElPTicgfCB0cmFuc2xhdGUgfX1cIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ3b3Jrc3BhY2VGb3JtLmdldCgnZGVzY3JpcHRpb24nKS5oYXNFcnJvcignbWF4bGVuZ3RoJykgJiYgd29ya3NwYWNlRm9ybS5nZXQoJ2Rlc2NyaXB0aW9uJykudG91Y2hlZFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdBUFAuQ1VTVE9NQVBQREVTQ1JJUFRJT05NQVhMRU5HVEhFUlJPUicgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInNlbGVjdGVkUm9sZXNcIiBbY29tcGFyZVdpdGhdPVwiY29tcGFyZVNlbGVjdGVkUm9sZXNGblwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnV0lER0VUUy5WSUVXUk9MRVMnIHwgdHJhbnNsYXRlIH19XCIgbXVsdGlwbGUgcmVxdWlyZWQ+XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gI2FsbFNlbGVjdGVkIChjbGljayk9XCJ0b2dnbGVBbGxSb2xlc1NlbGVjdGVkKClcIiBbdmFsdWVdPVwiMFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ1BFUk1JU1NJT05NQU5BR0VNRU5ULlNFTEVDVEFMTCcgfCB0cmFuc2xhdGUgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInJvbGVzLnJvbGVJZFwiICpuZ0Zvcj1cImxldCByb2xlcyBvZiByb2xlc0Ryb3BEb3duXCIgI2FsbFNlbGVjdGVkXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUm9sZXNQZXJPbmUoYWxsU2VsZWN0ZWQudmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyByb2xlcy5yb2xlTmFtZSB9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ3b3Jrc3BhY2VGb3JtLmdldCgnc2VsZWN0ZWRSb2xlcycpLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIHdvcmtzcGFjZUZvcm0uZ2V0KCdzZWxlY3RlZFJvbGVzJykudG91Y2hlZFwiPlxyXG4gICAgICAgICAgICAgIHt7ICdBUFAuU0VMRUNUQU5ZUk9MRScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJlZGl0Um9sZUlkc1wiIFtjb21wYXJlV2l0aF09XCJjb21wYXJlRWRpdFNlbGVjdGVkUm9sZXNGblwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnV0lER0VUUy5FRElUUk9MRVMnIHwgdHJhbnNsYXRlIH19XCIgbXVsdGlwbGU+XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gI2FsbEVkaXRTZWxlY3RlZCAoY2xpY2spPVwidG9nZ2xlRWRpdEFsbFJvbGVzU2VsZWN0ZWQoKVwiIFt2YWx1ZV09XCIwXCI+XHJcbiAgICAgICAgICAgICAgICB7eyAnUEVSTUlTU0lPTk1BTkFHRU1FTlQuU0VMRUNUQUxMJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwicm9sZS5yb2xlSWRcIiAqbmdGb3I9XCJsZXQgcm9sZSBvZiByb2xlc0Ryb3BEb3duXCIgI2FsbEVkaXRTZWxlY3RlZFxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUVkaXRSb2xlc1Blck9uZSgpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyByb2xlLnJvbGVOYW1lIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJkZWxldGVSb2xlSWRzXCIgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVEZWxldGVTZWxlY3RlZFJvbGVzRm5cIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1dJREdFVFMuREVMRVRFUk9MRVMnIHwgdHJhbnNsYXRlIH19XCIgbXVsdGlwbGU+XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gI2FsbERlbGV0ZVNlbGVjdGVkIChjbGljayk9XCJ0b2dnbGVEZWxldGVBbGxSb2xlc1NlbGVjdGVkKClcIiBbdmFsdWVdPVwiMFwiPlxyXG4gICAgICAgICAgICAgICAge3sgJ1BFUk1JU1NJT05NQU5BR0VNRU5ULlNFTEVDVEFMTCcgfCB0cmFuc2xhdGUgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInJvbGUucm9sZUlkXCIgKm5nRm9yPVwibGV0IHJvbGUgb2Ygcm9sZXNEcm9wRG93blwiICNhbGxEZWxldGVTZWxlY3RlZFxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURlbGV0ZVJvbGVzUGVyT25lKClcIj5cclxuICAgICAgICAgICAgICAgIHt7IHJvbGUucm9sZU5hbWUgfX1cclxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibXItMVwiIG1hdC1idXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJ1cHNlcnRXb3Jrc3BhY2UoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhd29ya3NwYWNlRm9ybS52YWxpZFwiPlxyXG4gICAgICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBjb2xvcj1cInByaW1hcnlcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiZGFzaGJvYXJkVXBkYXRlSW5Qcm9ncmVzc1wiPlxyXG4gICAgICAgICAgICA8L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwibXItMDVcIiBpY29uPVwicGx1c1wiPjwvZmEtaWNvbj4ge3sgJ1NBVkUnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlQWRkV29ya3NwYWNlRGlhbG9nKClcIj5cclxuICAgICAgICAgICAgPGZhLWljb24gY2xhc3M9XCJtci0wNVwiIGljb249XCJ0aW1lc1wiPjwvZmEtaWNvbj4ge3sgJ0NBTkNFTCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Zvcm0+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgPC9tYXQtY2FyZD5cclxuPC9zYXQtcG9wb3Zlcj4iXX0=