@sunbird-cb/toc 0.35.9 → 0.35.11

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 (349) hide show
  1. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +13 -3
  2. package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +2 -2
  3. package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +2 -2
  4. package/fesm2022/sunbird-cb-toc.mjs +14 -4
  5. package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
  6. package/index.d.ts +1 -0
  7. package/lib/_collection/_common/ai-tutor/ai-tutor.component.d.ts +1 -0
  8. package/lib/_collection/_common/ai-tutor/ai-tutor.component.d.ts.map +1 -0
  9. package/lib/_collection/_common/ai-tutor/socket.service.d.ts +1 -0
  10. package/lib/_collection/_common/ai-tutor/socket.service.d.ts.map +1 -0
  11. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +1 -0
  12. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +1 -0
  13. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +1 -0
  14. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +1 -0
  15. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +1 -0
  16. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +1 -0
  17. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +1 -0
  18. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +1 -0
  19. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +1 -0
  20. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +1 -0
  21. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +1 -0
  22. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +1 -0
  23. package/lib/_collection/_common/card-competency/card-competency.component.d.ts +1 -0
  24. package/lib/_collection/_common/card-competency/card-competency.component.d.ts.map +1 -0
  25. package/lib/_collection/_common/card-competency/card-competency.module.d.ts +1 -0
  26. package/lib/_collection/_common/card-competency/card-competency.module.d.ts.map +1 -0
  27. package/lib/_collection/_common/card-content-v2/card-content-v2.model.d.ts +1 -0
  28. package/lib/_collection/_common/card-content-v2/card-content-v2.model.d.ts.map +1 -0
  29. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +1 -0
  30. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +1 -0
  31. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +1 -0
  32. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +1 -0
  33. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +1 -0
  34. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +1 -0
  35. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +1 -0
  36. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +1 -0
  37. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +1 -0
  38. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +1 -0
  39. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +1 -0
  40. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +1 -0
  41. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +1 -0
  42. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +1 -0
  43. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +1 -0
  44. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +1 -0
  45. package/lib/_collection/_common/connection-name/connection-name.component.d.ts +1 -0
  46. package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +1 -0
  47. package/lib/_collection/_common/connection-name/connection-name.module.d.ts +1 -0
  48. package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +1 -0
  49. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +1 -0
  50. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +1 -0
  51. package/lib/_collection/_common/content-progress/content-progress.component.d.ts +1 -0
  52. package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +1 -0
  53. package/lib/_collection/_common/content-progress/content-progress.module.d.ts +1 -0
  54. package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +1 -0
  55. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +1 -0
  56. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +1 -0
  57. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +1 -0
  58. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +1 -0
  59. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +1 -0
  60. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +1 -0
  61. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +1 -0
  62. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +1 -0
  63. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +1 -0
  64. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +1 -0
  65. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +1 -0
  66. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +1 -0
  67. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +1 -0
  68. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +1 -0
  69. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +1 -0
  70. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +1 -0
  71. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +1 -0
  72. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +1 -0
  73. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +1 -0
  74. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +1 -0
  75. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +1 -0
  76. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +1 -0
  77. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +1 -0
  78. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +1 -0
  79. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +1 -0
  80. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +1 -0
  81. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +1 -0
  82. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +1 -0
  83. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +1 -0
  84. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +1 -0
  85. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +1 -0
  86. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +1 -0
  87. package/lib/_collection/_common/content-toc/content-toc.component.d.ts +1 -0
  88. package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +1 -0
  89. package/lib/_collection/_common/content-toc/content-toc.module.d.ts +1 -0
  90. package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +1 -0
  91. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +2 -0
  92. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +1 -0
  93. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +1 -0
  94. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +1 -0
  95. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +1 -0
  96. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +1 -0
  97. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +1 -0
  98. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +1 -0
  99. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +1 -0
  100. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +1 -0
  101. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +1 -0
  102. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +1 -0
  103. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +1 -0
  104. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +1 -0
  105. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +1 -0
  106. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +1 -0
  107. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +1 -0
  108. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +1 -0
  109. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +1 -0
  110. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +1 -0
  111. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +1 -0
  112. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +1 -0
  113. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +1 -0
  114. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +1 -0
  115. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +1 -0
  116. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +1 -0
  117. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +1 -0
  118. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +1 -0
  119. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +1 -0
  120. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +1 -0
  121. package/lib/_collection/_common/player-brief/player-brief.component.d.ts +1 -0
  122. package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +1 -0
  123. package/lib/_collection/_common/player-brief/player-brief.module.d.ts +1 -0
  124. package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +1 -0
  125. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +1 -0
  126. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +1 -0
  127. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +1 -0
  128. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +1 -0
  129. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +1 -0
  130. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
  131. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +1 -0
  132. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +1 -0
  133. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +1 -0
  134. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +1 -0
  135. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +1 -0
  136. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +1 -0
  137. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +1 -0
  138. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +1 -0
  139. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +1 -0
  140. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +1 -0
  141. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +1 -0
  142. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +1 -0
  143. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +1 -0
  144. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +1 -0
  145. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +1 -0
  146. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +1 -0
  147. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +1 -0
  148. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +1 -0
  149. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +1 -0
  150. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +1 -0
  151. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +1 -0
  152. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +1 -0
  153. package/lib/_collection/_common/user-image/user-image.component.d.ts +1 -0
  154. package/lib/_collection/_common/user-image/user-image.component.d.ts.map +1 -0
  155. package/lib/_collection/_common/user-image/user-image.module.d.ts +1 -0
  156. package/lib/_collection/_common/user-image/user-image.module.d.ts.map +1 -0
  157. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +1 -0
  158. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +1 -0
  159. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +1 -0
  160. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +1 -0
  161. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +1 -0
  162. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +1 -0
  163. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +1 -0
  164. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +1 -0
  165. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +1 -0
  166. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +1 -0
  167. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +1 -0
  168. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +1 -0
  169. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +1 -0
  170. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +1 -0
  171. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +1 -0
  172. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +1 -0
  173. package/lib/_collection-api.d.ts +1 -0
  174. package/lib/_collection-api.d.ts.map +1 -0
  175. package/lib/_constants/widget-content.constants.d.ts +1 -0
  176. package/lib/_constants/widget-content.constants.d.ts.map +1 -0
  177. package/lib/_directives/tooltip.directive.d.ts +1 -0
  178. package/lib/_directives/tooltip.directive.d.ts.map +1 -0
  179. package/lib/_models/common.model.d.ts +1 -0
  180. package/lib/_models/common.model.d.ts.map +1 -0
  181. package/lib/_models/error.model.d.ts +1 -0
  182. package/lib/_models/error.model.d.ts.map +1 -0
  183. package/lib/_pipes/highlight.pipe.d.ts +1 -0
  184. package/lib/_pipes/highlight.pipe.d.ts.map +1 -0
  185. package/lib/_services/rating.service.d.ts +1 -0
  186. package/lib/_services/rating.service.d.ts.map +1 -0
  187. package/lib/_services/samuhik-charcha.service.d.ts +1 -0
  188. package/lib/_services/samuhik-charcha.service.d.ts.map +1 -0
  189. package/lib/_services/viewer-route-util.d.ts +1 -0
  190. package/lib/_services/viewer-route-util.d.ts.map +1 -0
  191. package/lib/_services/widget-content.model.d.ts +1 -0
  192. package/lib/_services/widget-content.model.d.ts.map +1 -0
  193. package/lib/_services/widget-content.service.d.ts +1 -0
  194. package/lib/_services/widget-content.service.d.ts.map +1 -0
  195. package/lib/_shared/translate-loader.factory.d.ts +1 -0
  196. package/lib/_shared/translate-loader.factory.d.ts.map +1 -0
  197. package/lib/app-toc-lib.module.d.ts +1 -0
  198. package/lib/app-toc-lib.module.d.ts.map +1 -0
  199. package/lib/collection.config.d.ts +1 -0
  200. package/lib/collection.config.d.ts.map +1 -0
  201. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +1 -0
  202. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +1 -0
  203. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +1 -0
  204. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +1 -0
  205. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +1 -0
  206. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +1 -0
  207. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +1 -0
  208. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +1 -0
  209. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +1 -0
  210. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +1 -0
  211. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +1 -0
  212. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +1 -0
  213. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +1 -0
  214. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +1 -0
  215. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +1 -0
  216. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +1 -0
  217. package/lib/components/app-toc-home/app-toc-home.component.d.ts +1 -0
  218. package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +1 -0
  219. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +1 -0
  220. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +1 -0
  221. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +1 -0
  222. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +1 -0
  223. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +1 -0
  224. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +1 -0
  225. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +1 -0
  226. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +1 -0
  227. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +1 -0
  228. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +1 -0
  229. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +1 -0
  230. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +1 -0
  231. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +1 -0
  232. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +1 -0
  233. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +1 -0
  234. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +1 -0
  235. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +1 -0
  236. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +1 -0
  237. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +1 -0
  238. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +1 -0
  239. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +1 -0
  240. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +1 -0
  241. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +1 -0
  242. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +1 -0
  243. package/lib/components/public-survey-form/public-survey-form.component.d.ts +1 -0
  244. package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +1 -0
  245. package/lib/components/survey-form-question/survey-form-question.component.d.ts +1 -0
  246. package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +1 -0
  247. package/lib/components/survey-form-section/survey-form-section.component.d.ts +1 -0
  248. package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +1 -0
  249. package/lib/models/app-toc-analytics.model.d.ts +1 -0
  250. package/lib/models/app-toc-analytics.model.d.ts.map +1 -0
  251. package/lib/models/app-toc.model.d.ts +1 -0
  252. package/lib/models/app-toc.model.d.ts.map +1 -0
  253. package/lib/models/auto-complete.model.d.ts +1 -0
  254. package/lib/models/auto-complete.model.d.ts.map +1 -0
  255. package/lib/models/card-content.model.d.ts +1 -0
  256. package/lib/models/card-content.model.d.ts.map +1 -0
  257. package/lib/models/content-strip-with-tabs.model.d.ts +1 -0
  258. package/lib/models/content-strip-with-tabs.model.d.ts.map +1 -0
  259. package/lib/models/discussion-forum.model.d.ts +1 -0
  260. package/lib/models/discussion-forum.model.d.ts.map +1 -0
  261. package/lib/models/goal.model.d.ts +1 -0
  262. package/lib/models/goal.model.d.ts.map +1 -0
  263. package/lib/models/meta-tag.model.d.ts +1 -0
  264. package/lib/models/meta-tag.model.d.ts.map +1 -0
  265. package/lib/models/playlist.model.d.ts +1 -0
  266. package/lib/models/playlist.model.d.ts.map +1 -0
  267. package/lib/models/profile-revamp.model.d.ts +1 -0
  268. package/lib/models/profile-revamp.model.d.ts.map +1 -0
  269. package/lib/models/rating.model.d.ts +1 -0
  270. package/lib/models/rating.model.d.ts.map +1 -0
  271. package/lib/models/user-profile.model.d.ts +1 -0
  272. package/lib/models/user-profile.model.d.ts.map +1 -0
  273. package/lib/registration-toc-lib.config.d.ts +1 -0
  274. package/lib/registration-toc-lib.config.d.ts.map +1 -0
  275. package/lib/resolvers/app-toc-cios-resolver.service.d.ts +1 -0
  276. package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +1 -0
  277. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +1 -0
  278. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +1 -0
  279. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +1 -0
  280. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +1 -0
  281. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +1 -0
  282. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +1 -0
  283. package/lib/resolvers/app-toc-resolver.service.d.ts +1 -0
  284. package/lib/resolvers/app-toc-resolver.service.d.ts.map +1 -0
  285. package/lib/resolvers/config-resolver.service.d.ts +1 -0
  286. package/lib/resolvers/config-resolver.service.d.ts.map +1 -0
  287. package/lib/resolvers/profile-resolver.service.d.ts +1 -0
  288. package/lib/resolvers/profile-resolver.service.d.ts.map +1 -0
  289. package/lib/resolvers/restricted-features-resolver.service.d.ts +1 -0
  290. package/lib/resolvers/restricted-features-resolver.service.d.ts.map +1 -0
  291. package/lib/routes/app-toc-home/app-toc-home.component.d.ts +1 -0
  292. package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +1 -0
  293. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +1 -0
  294. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +1 -0
  295. package/lib/routes/app-toc-home/app-toc-home.service.d.ts +1 -0
  296. package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +1 -0
  297. package/lib/services/access-control.service.d.ts +1 -0
  298. package/lib/services/access-control.service.d.ts.map +1 -0
  299. package/lib/services/action.service.d.ts +1 -0
  300. package/lib/services/action.service.d.ts.map +1 -0
  301. package/lib/services/app-toc-v2.service.d.ts +1 -0
  302. package/lib/services/app-toc-v2.service.d.ts.map +1 -0
  303. package/lib/services/app-toc.service.d.ts +1 -0
  304. package/lib/services/app-toc.service.d.ts.map +1 -0
  305. package/lib/services/certificate.service.d.ts +1 -0
  306. package/lib/services/certificate.service.d.ts.map +1 -0
  307. package/lib/services/discuss-utils.service.d.ts +1 -0
  308. package/lib/services/discuss-utils.service.d.ts.map +1 -0
  309. package/lib/services/editor.service.d.ts +1 -0
  310. package/lib/services/editor.service.d.ts.map +1 -0
  311. package/lib/services/load-check.service.d.ts +1 -0
  312. package/lib/services/load-check.service.d.ts.map +1 -0
  313. package/lib/services/loader.service.d.ts +1 -0
  314. package/lib/services/loader.service.d.ts.map +1 -0
  315. package/lib/services/mobile-apps.service.d.ts +1 -0
  316. package/lib/services/mobile-apps.service.d.ts.map +1 -0
  317. package/lib/services/netcore.service.d.ts +1 -0
  318. package/lib/services/netcore.service.d.ts.map +1 -0
  319. package/lib/services/nps-grid.service.d.ts +1 -0
  320. package/lib/services/nps-grid.service.d.ts.map +1 -0
  321. package/lib/services/otp.service.d.ts +1 -0
  322. package/lib/services/otp.service.d.ts.map +1 -0
  323. package/lib/services/profile-v2.service.d.ts +1 -0
  324. package/lib/services/profile-v2.service.d.ts.map +1 -0
  325. package/lib/services/reset-ratings.service.d.ts +1 -0
  326. package/lib/services/reset-ratings.service.d.ts.map +1 -0
  327. package/lib/services/resource-download-helper.service.d.ts +1 -0
  328. package/lib/services/resource-download-helper.service.d.ts.map +1 -0
  329. package/lib/services/root.service.d.ts +1 -0
  330. package/lib/services/root.service.d.ts.map +1 -0
  331. package/lib/services/timer.service.d.ts +1 -0
  332. package/lib/services/timer.service.d.ts.map +1 -0
  333. package/lib/services/title-tag.service.d.ts +1 -0
  334. package/lib/services/title-tag.service.d.ts.map +1 -0
  335. package/lib/services/user-profile.service.d.ts +1 -0
  336. package/lib/services/user-profile.service.d.ts.map +1 -0
  337. package/lib/services/viewer-data.service.d.ts +1 -0
  338. package/lib/services/viewer-data.service.d.ts.map +1 -0
  339. package/lib/services/viewer-util.service.d.ts +1 -0
  340. package/lib/services/viewer-util.service.d.ts.map +1 -0
  341. package/lib/share-toc/share-toc/share-toc.component.d.ts +1 -0
  342. package/lib/share-toc/share-toc/share-toc.component.d.ts.map +1 -0
  343. package/lib/share-toc/share-toc.module.d.ts +1 -0
  344. package/lib/share-toc/share-toc.module.d.ts.map +1 -0
  345. package/package.json +1 -1
  346. package/public-api.d.ts +1 -0
  347. package/public-api.d.ts.map +1 -0
  348. package/sunbird-cb-toc.d.ts.map +1 -0
  349. package/sunbird-cb-toc-0.35.9.tgz +0 -0
@@ -475,7 +475,7 @@ export class AppTocCiosHomeComponent {
475
475
  }
476
476
  showBadgeIcon() {
477
477
  const badgeDetails = this.extContentReadData?.badgeDetails_v1;
478
- if (!badgeDetails || !badgeDetails.length || badgeDetails?.[0]?.criteria == 'partialRandomCompletion') {
478
+ if (!badgeDetails || !badgeDetails.length) {
479
479
  return false;
480
480
  }
481
481
  const badge = badgeDetails[0];
@@ -519,4 +519,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
519
519
  type: HostListener,
520
520
  args: ['window:scroll', ['$event']]
521
521
  }] } });
522
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1jaW9zLWhvbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1jaW9zLWhvbWUvYXBwLXRvYy1jaW9zLWhvbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1jaW9zLWhvbWUvYXBwLXRvYy1jaW9zLWhvbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBSXZILE9BQU8sRUFBOEYsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFNM0ksT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUE7QUFFM0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPbkUsTUFBTSxPQUFPLHVCQUF1QjtJQTRCbEMsWUFBWTtRQUVWLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2hFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO2FBQ3ZEO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFBO2FBQ3REO1NBQ0Y7UUFFRCw4Q0FBOEM7UUFDOUMsSUFBSSxNQUFNLENB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QUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3ZELENBQUMsSUFBSSxDQUFDLHVCQUF1QjtZQUM3QixJQUFJLENBQUMsU0FBUztZQUNkLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ3BFLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDckQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxDQUFDO1lBQzdDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ3BFLENBQUM7K0dBeGdCVSx1QkFBdUIsK1pBeUR4QixhQUFhO21HQXpEWix1QkFBdUIsK09DbkJwQyw4MTBCQWlZYzs7NEZEOVdELHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSwwQkFBMEI7OzBCQTZEakMsTUFBTTsyQkFBQyxhQUFhOzswQkFBRyxRQUFROzRDQTFDTCxTQUFTO3NCQUFyQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFhM0IsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3QsIE9uSW5pdCwgT3B0aW9uYWwsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgQ29tbW9uTWV0aG9kc1NlcnZpY2UgfSBmcm9tICdAc3VuYmlyZC1jYi9jb25zdW1wdGlvbidcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSwgRXZlbnRTZXJ2aWNlLCBNdWx0aWxpbmd1YWxUcmFuc2xhdGlvbnNTZXJ2aWNlLCBXaWRnZXRDb250ZW50U2VydmljZSwgV3NFdmVudHMgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12MidcbmltcG9ydCB7IExvYWRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2FkZXIuc2VydmljZSdcbmltcG9ydCB7IE1hdExlZ2FjeVNuYWNrQmFyIGFzIE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXNuYWNrLWJhcidcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZydcbmltcG9ydCB7IENlcnRpZmljYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NlcnRpZmljYXRlLnNlcnZpY2UnXG5pbXBvcnQgeyBOc0Rpc2N1c3Npb25WMiB9IGZyb20gJ0BzdW5iaXJkLWNiL2Rpc2N1c3Npb24tdjInXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCdcbmltcG9ydCB7IE5ldENvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbmV0Y29yZS5zZXJ2aWNlJ1xuaW1wb3J0IHsgQ29uc2VudERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29uc2VudC1kaWFsb2cuY29tcG9uZW50J1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy1hcHAtYXBwLXRvYy1jaW9zLWhvbWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXBwLXRvYy1jaW9zLWhvbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hcHAtdG9jLWNpb3MtaG9tZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBUb2NDaW9zSG9tZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIGNvbW1lbnRJZD86IHN0cmluZyA9ICcnXG4gIHNrZWxldG9uTG9hZGVyID0gdHJ1ZVxuICBleHRDb250ZW50UmVhZERhdGE6IGFueSA9IHt9XG4gIHVzZXJFeHRDb3Vyc2VFbnJvbGw6IGFueSA9IHt9XG4gIGRvd25sb2FkQ2VydGlmaWNhdGVMb2FkaW5nID0gZmFsc2VcbiAgZm9yUHJldmlldzogYW55ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9wdWJsaWMvJykgfHwgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJz9lZGl0TW9kZT10cnVlJylcbiAgZXh0Q29udGVudEF2YWlsYWJsZSA9IHRydWVcbiAgY2FuRW5yb2xsID0gZmFsc2VcbiAgZW5yb2xsVmFsaWRhdGlvbkxvYWRpbmcgPSB0cnVlXG4gIHJjRWxlbSA9IHtcbiAgICBvZmZTZXRUb3A6IDAsXG4gICAgQm90dG9tUG9zOiAwLFxuICB9XG4gIGNvbnRlbnRMaW5rOiBhbnkgPSAnJ1xuICBAVmlld0NoaWxkKCdyaWdodENvbnRhaW5lcicpIHJjRWxlbWVudCE6IEVsZW1lbnRSZWZcbiAgc2Nyb2xsTGltaXQ6IGFueVxuICBzY3JvbGxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxuICBpc01vYmlsZSA9IGZhbHNlXG4gIGNvbmZpZzogYW55XG4gIHdpZGdldERhdGE6IGFueVxuICBlbmFibGVTaGFyZSA9IGZhbHNlXG4gIHJvb3RPcmdJZDogYW55XG4gIGN1cnJlbnRMYW5nOiBhbnkgPSAnZW4nXG4gIGRpc2N1c3NXaWRnZXREYXRhITogTnNEaXNjdXNzaW9uVjIuSUNvbW1lbnRXaWRnZXREYXRhXG4gIHNob3dQcm92aWRlclRpcHMgPSBmYWxzZVxuICBmcm9tTURPID0gZmFsc2VcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFsnJGV2ZW50J10pXG4gIGhhbmRsZVNjcm9sbCgpIHtcblxuICAgIGlmICh0aGlzLnNjcm9sbExpbWl0KSB7XG4gICAgICBpZiAoKHdpbmRvdy5zY3JvbGxZICsgdGhpcy5yY0VsZW0uQm90dG9tUG9zKSA+PSB0aGlzLnNjcm9sbExpbWl0KSB7XG4gICAgICAgIHRoaXMucmNFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnc3RpY2t5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yY0VsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCdcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAyMzYuLi4gKE9mZnNldFRvcCBvZiByaWdodCBjb250YWluZXIgKyAxMDQpXG4gICAgaWYgKHdpbmRvdy5zY3JvbGxZID4gKHRoaXMucmNFbGVtLm9mZlNldFRvcCArIDEwNCkpIHtcbiAgICAgIHRoaXMuc2Nyb2xsZWQgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2Nyb2xsZWQgPSBmYWxzZVxuICAgIH1cbiAgfVxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGNvbW1vblN2YzogQ29tbW9uTWV0aG9kc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50czogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ3RyYW5zbGF0aW9uczogTXVsdGlsaW5ndWFsVHJhbnNsYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRlbnRTdmM6IFdpZGdldENvbnRlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2VydFN2YzogQ2VydGlmaWNhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBsb2FkZXI6IExvYWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtYXREaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwdWJsaWMgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHB1YmxpYyBuZXRDb3JlU2VydmljZTogTmV0Q29yZVNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBAT3B0aW9uYWwoKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnlcbiAgKSB7XG4gICAgdGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICB0aGlzLmVucm9sbFZhbGlkYXRpb25Mb2FkaW5nID0gZmFsc2VcbiAgICAgIGlmIChkYXRhICYmIGRhdGEuZXh0Q29udGVudCAmJiBkYXRhLmV4dENvbnRlbnQuZGF0YSAmJiBkYXRhLmV4dENvbnRlbnQuZGF0YS5jb250ZW50KSB7XG4gICAgICAgIHRoaXMuZXh0Q29udGVudFJlYWREYXRhID0gZGF0YS5leHRDb250ZW50LmRhdGEuY29udGVudFxuICAgICAgICB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YVsnY2VydGlmaWNhdGVPYmonXSA9IHtcbiAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNrZWxldG9uTG9hZGVyID0gZmFsc2VcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5leHRDb250ZW50QXZhaWxhYmxlID0gZmFsc2VcbiAgICAgICAgdGhpcy5za2VsZXRvbkxvYWRlciA9IGZhbHNlXG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhICYmIGRhdGEudXNlckVucm9sbENvbnRlbnQgJiYgZGF0YS51c2VyRW5yb2xsQ29udGVudC5kYXRhICYmIGRhdGEudXNlckVucm9sbENvbnRlbnQuZGF0YS5yZXN1bHQgJiZcbiAgICAgICAgT2JqZWN0LmtleXMoZGF0YS51c2VyRW5yb2xsQ29udGVudC5kYXRhLnJlc3VsdCkubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMudXNlckV4dENvdXJzZUVucm9sbCA9IGRhdGEudXNlckVucm9sbENvbnRlbnQuZGF0YS5yZXN1bHRcbiAgICAgICAgaWYgKHRoaXMudXNlckV4dENvdXJzZUVucm9sbC5jb21wbGV0aW9ucGVyY2VudGFnZSA9PT0gMTAwKSB7XG4gICAgICAgICAgdGhpcy5leHRDb250ZW50UmVhZERhdGFbJ2NvbXBsZXRpb25TdGF0dXMnXSA9IDJcblxuICAgICAgICAgIHRoaXMuZG93bmxvYWRDZXJ0KClcbiAgICAgICAgICB0aGlzLmNvbnRlbnRWaWV3RXZlbnRGb3JOZXRDb3JlKCdjb21wbGV0aW9uJylcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUVucm9sbG1lbnRFbGlnaWJpbGl0eSgpXG4gICAgICB9XG5cbiAgICB9KVxuXG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJzaXRlTGFuZ3VhZ2UnKSkge1xuICAgICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcoJ2VuJylcbiAgICAgIHRoaXMuY3VycmVudExhbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnd2Vic2l0ZUxhbmd1YWdlJykhXG4gICAgICB0aGlzLnRyYW5zbGF0ZS51c2UodGhpcy5jdXJyZW50TGFuZylcbiAgICB9XG4gICAgdGhpcy5jb25maWdTdmMubGFuZ3VhZ2VUcmFuc2xhdGlvbkZsYWcuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnd2Vic2l0ZUxhbmd1YWdlJykpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRMYW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3dlYnNpdGVMYW5ndWFnZScpIVxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLnVzZSh0aGlzLmN1cnJlbnRMYW5nKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcblxuICAgIGlmICh0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZSkge1xuICAgICAgdGhpcy5yb290T3JnSWQgPSB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS5yb290T3JnSWRcbiAgICB9XG4gICAgdGhpcy5jb250ZW50TGluayA9IGAke3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMSl9JHt3aW5kb3cubG9jYXRpb24uc2VhcmNofWBcblxuICAgIHRoaXMuY29tbWVudElkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5jb21tZW50SWQgPyB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLmNvbW1lbnRJZCA6ICcnXG4gICAgaWYgKHRoaXMuY29tbWVudElkKSB7XG4gICAgICAvL3RoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IDJcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLnBhZ2VEYXRhICYmIHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5wYWdlRGF0YS5kYXRhKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5wYWdlRGF0YS5kYXRhXG4gICAgICB0aGlzLmluaXRpYWxpemVEaXNjdXNzRGF0YSgpXG4gICAgfVxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSAxMjAwKSB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gZmFsc2VcbiAgICB9XG4gICAgdGhpcy5jb250ZW50Vmlld0V2ZW50Rm9yTmV0Q29yZSgndmlldycpXG4gIH1cblxuICBpbml0aWFsaXplRGlzY3Vzc0RhdGEoKSB7XG4gICAgaWYgKCFfLmdldCh0aGlzLmV4dENvbnRlbnRSZWFkRGF0YSwgJ2NvbnRlbnRQYXJ0bmVyLmlzQWN0aXZlJywgZmFsc2UpKSB7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ0NvdXJzZXMgZnJvbSB0aGlzIGxlYXJuaW5nIHBhcnRuZXIgYXJlIHRlbXBvcmFyaWx5IG5vdCBhdmFpbGFibGUgb24gaUdPVCBLYXJtYXlvZ2kuIE91ciB0ZWFtIGlzIHVwZGF0aW5nIHBhcnRuZXIgY29udGVudC4gSW4gdGhlIG1lYW50aW1lLCB5b3UgY2FuIGNvbnRpbnVlIHlvdXIgam91cm5leSB3aXRoIGNvdXJzZXMgZnJvbSBvdGhlciBwYXJ0bmVycy4nLCAnWCcsIHtcbiAgICAgICAgZHVyYXRpb246IDEwMDAwLFxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKCFfLmdldCh0aGlzLmV4dENvbnRlbnRSZWFkRGF0YSwgJ2lzQWN0aXZlJywgZmFsc2UpKSB7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1RoaXMgY291cnNlIGlzIG5vIGxvbmdlciBiZWluZyBvZmZlcmVkIGluIGl0cyBjdXJyZW50IGZvcm0uIFdlIGFyZSB1cGRhdGluZyBvdXIgY2F0YWxvZyB0byBicmluZyB5b3UgaW1wcm92ZWQgbGVhcm5pbmcgb3B0aW9ucy4gUGxlYXNlIGNob29zZSBhbm90aGVyIGNvdXJzZSB3aXRoIHNpbWlsYXIgdG9waWNzIG9yIGJyb3dzZSByZWNvbW1lbmRlZCBjb3Vyc2VzLicsICdYJywge1xuICAgICAgICBkdXJhdGlvbjogMTAwMDAsXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuZGlzY3Vzc1dpZGdldERhdGEpIHtcbiAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEgPSB0aGlzLmNvbmZpZy5kaXNjdXNzV2lkZ2V0RGF0YVxuICAgICAgaWYgKHRoaXMuZXh0Q29udGVudFJlYWREYXRhICYmIHRoaXMuZXh0Q29udGVudFJlYWREYXRhLmNvbnRlbnRJZCkge1xuICAgICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLm5ld0NvbW1lbnRTZWN0aW9uLmNvbW1lbnRUcmVlRGF0YS5lbnRpdHlJZCA9IHRoaXMuZXh0Q29udGVudFJlYWREYXRhLmNvbnRlbnRJZFxuICAgICAgICBpZiAodGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5jb21tZW50c0xpc3QucmVwbGllc1NlY3Rpb24gJiYgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5jb21tZW50c0xpc3QucmVwbGllc1NlY3Rpb24ubmV3Q29tbWVudFJlcGx5KSB7XG4gICAgICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5jb21tZW50c0xpc3QucmVwbGllc1NlY3Rpb24ubmV3Q29tbWVudFJlcGx5LmNvbW1lbnRUcmVlRGF0YS5lbnRpdHlJZCA9IHRoaXMuZXh0Q29udGVudFJlYWREYXRhLmNvbnRlbnRJZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLndpZGdldERhdGEgPSB7XG4gICAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgICB0eXBlOiAndGlwcycsXG4gICAgICAgIGNhcmRDbGFzczogJ3NsaWRlci1jb250YWluZXInLFxuICAgICAgICBoZWlnaHQ6ICdhdXRvJyxcbiAgICAgICAgc2xpZGVyRGF0YTogXy5nZXQodGhpcy5leHRDb250ZW50UmVhZERhdGEsICdjb250ZW50UGFydG5lci5wcm92aWRlclRpcHMnLCBbXSlcbiAgICAgIH1cbiAgICAgIHRoaXMuc2hvd1Byb3ZpZGVyVGlwcyA9ICh0aGlzLndpZGdldERhdGEgJiYgdGhpcy53aWRnZXREYXRhLnNsaWRlckRhdGE/Lmxlbmd0aCkgJiZcbiAgICAgICAgKE9iamVjdC5rZXlzKHRoaXMudXNlckV4dENvdXJzZUVucm9sbCkubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICh0aGlzLnVzZXJFeHRDb3Vyc2VFbnJvbGw/Lmlzc3VlZF9jZXJ0aWZpY2F0ZXM/Lmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICB0aGlzLnVzZXJFeHRDb3Vyc2VFbnJvbGw/LnByb2dyZXNzIDw9IDEwMCkpXG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnVzZXJFeHRDb3Vyc2VFbnJvbGwpLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLmVucm9sbGVkQ29udGVudCA9IHRydWVcbiAgICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5uZXdDb21tZW50U2VjdGlvbi5jb21tZW50Qm94LnBsYWNlaG9sZGVyID0gJ1N0YXJ0IGEgZGlzY3Vzc2lvbidcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEuZW5yb2xsZWRDb250ZW50ID0gZmFsc2VcbiAgICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5uZXdDb21tZW50U2VjdGlvbi5jb21tZW50Qm94LnBsYWNlaG9sZGVyID0gJ0Vucm9sIHRvIGFkZCB5b3VyIGNvbW1lbnRzJ1xuICAgICAgfVxuICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YSA9IHsgLi4udGhpcy5kaXNjdXNzV2lkZ2V0RGF0YSB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ2FwaXRhbGl6ZShzdHI6IHN0cmluZywgdHlwZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU3ZjLmhhbmRsZUNhcGl0YWxpemUoc3RyLCB0eXBlKVxuICB9XG5cbiAgdHJhbnNsYXRlTGFiZWxzKGxhYmVsOiBzdHJpbmcsIHR5cGU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmxhbmd0cmFuc2xhdGlvbnMudHJhbnNsYXRlTGFiZWwobGFiZWwsIHR5cGUsICcnKVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLnJjRWxlbWVudCkge1xuICAgICAgdGhpcy5yY0VsZW0uQm90dG9tUG9zID0gdGhpcy5yY0VsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRUb3AgKyB0aGlzLnJjRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodFxuICAgICAgdGhpcy5yY0VsZW0ub2ZmU2V0VG9wID0gdGhpcy5yY0VsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRUb3BcbiAgICB9XG4gIH1cbiAgcmVkaXJlY3RUb0NvbnRlbnQoY29udGVudERhdGE6IGFueSkge1xuICAgIGNvbnN0IHVzZXJEYXRhOiBhbnkgPSB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZVYyXG4gICAgY29uc3QgZXh0VXJsOiBzdHJpbmcgPSBjb250ZW50RGF0YS5yZWRpcmVjdFVybC5yZXBsYWNlKCc8dXNlcm5hbWU+JywgdXNlckRhdGEuZW1haWwpXG4gICAgcmV0dXJuIGV4dFVybFxuICB9XG4gIHJlcGxhY2VUZXh0KHN0cjogYW55LCByZXBsYWNlVHh0OiBhbnkpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2VBbGwocmVwbGFjZVR4dCwgJycpXG4gIH1cblxuICBmb3JtYXRjb3Vyc2VQcm92aWRlcnMocHJvdmlkZXJzOiBhbnlbXSk6IHN0cmluZyB7XG4gICAgaWYgKCFwcm92aWRlcnMgfHwgIUFycmF5LmlzQXJyYXkocHJvdmlkZXJzKSkge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICAgIHJldHVybiBwcm92aWRlcnMubWFwKChwcm92aWRlcjogYW55KSA9PiBwcm92aWRlci5uYW1lKS5qb2luKCcsICcpXG4gIH1cblxuICBhc3luYyBlblJvbGxUb0V4dENvdXJzZShjb250ZW50OiBhbnkpIHtcbiAgICBjb25zdCBjb25zZW50VXJsOiBzdHJpbmcgPSBgJHt0aGlzLmVudmlyb25tZW50Py5taXNzaW9uS2FybWF5b2dpUGF0aH0ke3RoaXMuY29uZmlnPy5jb250ZW50Q29uc2VudD8uY29uc2VudERvY1VybH1gIHx8ICcnXG4gICAgY29uc3QgYXNzZXRzRG9jVXJsOiBzdHJpbmcgPSBgJHt0aGlzLmNvbmZpZz8uY29udGVudENvbnNlbnQ/LmFzc2V0c0RvY1VybH1gIHx8ICcnXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3BlbihDb25zZW50RGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJzkwMHB4JyxcbiAgICAgIGhlaWdodDogJzcwdmgnLFxuICAgICAgbWF4SGVpZ2h0OiAnOTB2aCcsXG4gICAgICBtaW5IZWlnaHQ6ICc0MDBweCcsXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIHBhbmVsQ2xhc3M6ICdjb25zZW50LWRpYWxvZy1wYW5lbCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGNvbnNlbnRVcmw6IGNvbnNlbnRVcmwsXG4gICAgICAgIGFzc2V0c0RvY1VybDogYXNzZXRzRG9jVXJsXG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIEhhbmRsZSBkaWFsb2cgY2xvc2VcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSkge1xuICAgICAgICAvLyBVc2VyIGFncmVlZCAtIHByb2NlZWQgd2l0aCBlbnJvbGxtZW50XG4gICAgICAgIC8vIG5lZWQgdG8gY2FsbCBjb25zZW50IGFwaVxuICAgICAgICB0aGlzLmNhbGxDb25zZW50QXBpKGNvbnRlbnQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBVc2VyIGRpc2FncmVlZFxuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1lvdSBtdXN0IGFncmVlIHRvIHRoZSB0ZXJtcyB0byBlbnJvbGwgaW4gdGhpcyBjb3Vyc2UuJywgJ1gnLCB7XG4gICAgICAgICAgZHVyYXRpb246IDUwMDAsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNhbGxDb25zZW50QXBpKGNvbnRlbnQ6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKGNvbnRlbnQpXG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIFwicmVxdWVzdFwiOiB7XG4gICAgICAgIFwiY29udGVudElkXCI6IGNvbnRlbnQ/LmNvbnRlbnRJZCxcbiAgICAgICAgXCJjb25zZW50SWRcIjogdGhpcy5jb25maWc/LmNvbnRlbnRDb25zZW50Py5jb25zZW50SWQgfHwgJycsXG4gICAgICAgIFwiYWRkaXRpb25hbEF0dHJpYnV0ZXNcIjoge1xuICAgICAgICAgIFwidXNlclJvbGVzXCI6IFtcInB1YmxpY1wiXSxcbiAgICAgICAgICBcInZlcnNpb25LZXlcIjogbmV3IERhdGUoKS5nZXRUaW1lKCksXG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkkgaGF2ZSByZWFkIGFuZCBhZ3JlZSB3aXRoIHRoZSBhYm92ZSBkZWNsYXJhdGlvbi5cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jZXJ0U3ZjLmNvbnNlbnRTdWJtaXQocmVxdWVzdCkuc3Vic2NyaWJlKChfcmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMucHJvY2VlZFdpdGhFbnJvbGxtZW50KGNvbnRlbnQpXG4gICAgfSwgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbihlcnJvcj8uZXJyb3I/LnBhcmFtcz8ubXNnIHx8ICdVbmFibGUgdG8gc3VibWl0IGNvbnNlbnQnLCAnWCcsIHtcbiAgICAgICAgZHVyYXRpb246IDUwMDAsXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZWVkV2l0aEVucm9sbG1lbnQoY29udGVudDogYW55KSB7XG4gICAgdGhpcy5sb2FkZXIuY2hhbmdlTG9hZC5uZXh0KHRydWUpXG4gICAgY29uc3QgcmVxYm9keSA9IHtcbiAgICAgIGNvdXJzZUlkOiBjb250ZW50LmNvbnRlbnRJZCxcbiAgICAgIHBhcnRuZXJJZDogY29udGVudC5jb250ZW50UGFydG5lci5pZCxcbiAgICB9XG4gICAgY29uc3QgZW5yb2xsUmVzID0gYXdhaXQgdGhpcy5jb250ZW50U3ZjLmV4dENvbnRlbnRFbnJvbGwocmVxYm9keSkudG9Qcm9taXNlKCkuY2F0Y2goX2Vycm9yID0+IHsgcmV0dXJuIF9lcnJvciB9KVxuICAgIGlmIChlbnJvbGxSZXMgJiYgZW5yb2xsUmVzLnJlc3VsdCAmJiBPYmplY3Qua2V5cyhlbnJvbGxSZXMucmVzdWx0KS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLmVucm9sbGVkQ29udGVudCA9IHRydWVcbiAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEubmV3Q29tbWVudFNlY3Rpb24uY29tbWVudEJveC5wbGFjZWhvbGRlciA9ICdTdGFydCBhIGRpc2N1c3Npb24nXG4gICAgICB0aGlzLmdldFVzZXJDb250ZW50RW5yb2xsKGNvbnRlbnQuY29udGVudElkKVxuICAgICAgdGhpcy5jb250ZW50Vmlld0V2ZW50Rm9yTmV0Q29yZSgnZW5yb2xsJylcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkZXIuY2hhbmdlTG9hZC5uZXh0KGZhbHNlKVxuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGVucm9sbFJlcz8uZXJyb3I/LnBhcmFtcz8ubXNnIHx8ICdVbmFibGUgdG8gZW5yb2xsIHRvIHRoZSBjb250ZW50JywgJ1gnLCB7XG4gICAgICAgIGR1cmF0aW9uOiAxMDAwMCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0VXNlckNvbnRlbnRFbnJvbGwoY29udGVudElkOiBhbnkpIHtcbiAgICBjb25zdCBlbnJvbGxSZXMgPSBhd2FpdCB0aGlzLmNvbnRlbnRTdmMuZmV0Y2hFeHRVc2VyQ29udGVudEVucm9sbChjb250ZW50SWQpLnRvUHJvbWlzZSgpLmNhdGNoKF9lcnJvciA9PiB7IH0pXG4gICAgaWYgKGVucm9sbFJlcyAmJiBlbnJvbGxSZXMucmVzdWx0ICYmIE9iamVjdC5rZXlzKGVucm9sbFJlcy5yZXN1bHQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudXNlckV4dENvdXJzZUVucm9sbCA9IGVucm9sbFJlcy5yZXN1bHRcbiAgICAgIHRoaXMubG9hZGVyLmNoYW5nZUxvYWQubmV4dChmYWxzZSlcbiAgICAgIHRoaXMudGVsZW1ldHJ5VG9DYXB0dXJlSW50ZXJhY3QoY29udGVudElkLCAnZW5yb2xsJywgJ2Vucm9sLWNvbnRlbnQnKVxuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdTdWNjZXNzZnVsbHkgZW5yb2xsZWQgaW4gdGhlIGNvdXJzZS4nKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvYWRlci5jaGFuZ2VMb2FkLm5leHQoZmFsc2UpXG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1VuYWJsZSB0byBnZXQgdGhlIGVucm9sbGVkIGRldGFpbHMnKVxuICAgIH1cbiAgfVxuXG4gIGNhcHR1cmVSZWRpcmVjdFRlbGVtZXRyeShjb250ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJhaXNlVGVsZW10cnlTdGFydEV2ZW50KClcbiAgICB0aGlzLnRlbGVtZXRyeVRvQ2FwdHVyZUludGVyYWN0KGNvbnRlbnQuY29udGVudElkLCAncmVkaXJlY3QnLCAncmVkaXJlY3QtY29udGVudCcpXG4gICAgdGhpcy5yYWlzZVRlbGVtdHJ5RW5kRXZlbnQoKVxuICB9XG5cbiAgcmFpc2VUZWxlbXRyeVN0YXJ0RXZlbnQoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZnJvbTogJ3Rlc3QnLFxuICAgICAgdG86ICcnLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnJyB9LFxuICAgICAgICBvYmplY3Q6IHt9LFxuICAgICAgICBzdGF0ZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuTG9hZGVkLFxuICAgICAgICB0eXBlOiAnc2Vzc2lvbicsXG4gICAgICAgIG1vZGU6ICd2aWV3JyxcbiAgICAgIH0sXG4gICAgfVxuICAgIHRoaXMuZXZlbnRzLmRpc3BhdGNoRXZlbnQoZXZlbnQpXG5cbiAgfVxuXG4gIHRlbGVtZXRyeVRvQ2FwdHVyZUludGVyYWN0KGNvbnRlbnRJZDogYW55LCBzdWJUeXBlOiBhbnksIGlkOiBhbnkpIHtcbiAgICB0aGlzLmV2ZW50cy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KFxuICAgICAge1xuICAgICAgICB0eXBlOiAnY2xpY2snLFxuICAgICAgICBzdWJUeXBlLFxuICAgICAgICBpZDogaWQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogY29udGVudElkLFxuICAgICAgICB0eXBlOiAnRXh0ZXJuYWwgY29udGVudCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBtb2R1bGU6ICdIb21lJyxcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICByYWlzZVRlbGVtdHJ5RW5kRXZlbnQoKSB7XG4gICAgY29uc3QgZXZlbnQgPSB7XG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxuICAgICAgZnJvbTogJ3Rlc3QnLFxuICAgICAgdG86ICcnLFxuICAgICAgZGF0YToge1xuICAgICAgICBlZGF0YTogeyB0eXBlOiAnJyB9LFxuICAgICAgICBvYmplY3Q6IHt9LFxuICAgICAgICBzdGF0ZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuVW5sb2FkZWQsXG4gICAgICAgIHR5cGU6ICdzZXNzaW9uJyxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgfSxcbiAgICB9XG4gICAgdGhpcy5ldmVudHMuZGlzcGF0Y2hFdmVudChldmVudClcbiAgfVxuXG4gIGFzeW5jIGRvd25sb2FkQ2VydCgpIHtcbiAgICB0aGlzLmRvd25sb2FkQ2VydGlmaWNhdGVMb2FkaW5nID0gdHJ1ZVxuICAgIGNvbnN0IGNlcnRSZXM6IGFueSA9IGF3YWl0XG4gICAgICB0aGlzLmNlcnRTdmMuZG93bmxvYWRDZXJ0aWZpY2F0ZV92Mih0aGlzLnVzZXJFeHRDb3Vyc2VFbnJvbGwuaXNzdWVkX2NlcnRpZmljYXRlc1swXS5pZGVudGlmaWVyKS50b1Byb21pc2UoKS5jYXRjaChfZXJyb3IgPT4geyB9KVxuICAgIGlmIChjZXJ0UmVzICYmIE9iamVjdC5rZXlzKGNlcnRSZXMucmVzdWx0KS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmRvd25sb2FkQ2VydGlmaWNhdGVMb2FkaW5nID0gZmFsc2VcbiAgICAgIGlmICh0aGlzLnVzZXJFeHRDb3Vyc2VFbnJvbGwuaXNzdWVkX2NlcnRpZmljYXRlcyAmJiB0aGlzLnVzZXJFeHRDb3Vyc2VFbnJvbGwuaXNzdWVkX2NlcnRpZmljYXRlcy5sZW5ndGhcbiAgICAgICAgJiYgdGhpcy51c2VyRXh0Q291cnNlRW5yb2xsLmlzc3VlZF9jZXJ0aWZpY2F0ZXNbMF0pIHtcbiAgICAgICAgdGhpcy5leHRDb250ZW50UmVhZERhdGFbJ2NlcnRpZmljYXRlT2JqJ10gPSB7XG4gICAgICAgICAgZGF0YTogdGhpcy51c2VyRXh0Q291cnNlRW5yb2xsLmlzc3VlZF9jZXJ0aWZpY2F0ZXNbMF0sXG4gICAgICAgICAgY2VydERhdGE6IGNlcnRSZXMucmVzdWx0LnByaW50VXJpLFxuICAgICAgICAgIGNlcnRJZDogdGhpcy51c2VyRXh0Q291cnNlRW5yb2xsLmlzc3VlZF9jZXJ0aWZpY2F0ZXNbMF0uaWRlbnRpZmllcixcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRvd25sb2FkQ2VydGlmaWNhdGVMb2FkaW5nID0gZmFsc2VcbiAgICB9XG4gIH1cbiAgb25DbGlja09mU2hhcmUoKSB7XG4gICAgdGhpcy5lbmFibGVTaGFyZSA9IHRydWVcbiAgICAvL3RoaXMucmFpc2VUZWxlbWV0cnlGb3JTaGFyZSgnc2hhcmVDb250ZW50JylcbiAgfVxuXG4gIC8qIHRzbGludDpkaXNhYmxlICovXG4gIC8vIHJhaXNlVGVsZW1ldHJ5Rm9yU2hhcmUoc3ViVHlwZTogYW55KSB7XG4gIC8vICAgLy9jb25zb2xlLmxvZyh0aGlzLmV4dENvbnRlbnRSZWFkRGF0YSwgdGhpcy5ldmVudHMsIHN1YlR5cGUpXG4gIC8vICAgLy8gdGhpcy5ldmVudHMucmFpc2VJbnRlcmFjdFRlbGVtZXRyeShcbiAgLy8gICAvLyB7XG4gIC8vICAgLy8gICB0eXBlOiAnY2xpY2snLFxuICAvLyAgIC8vICAgc3ViVHlwZSxcbiAgLy8gICAvLyAgIGlkOiB0aGlzLmNvbnRlbnQgPyB0aGlzLmNvbnRlbnQuaWRlbnRpZmllciA6ICcnLFxuICAvLyAgIC8vIH0sXG4gIC8vICAgLy8ge1xuICAvLyAgIC8vICAgaWQ6IHRoaXMuY29udGVudCA/IHRoaXMuY29udGVudC5pZGVudGlmaWVyIDogJycsXG4gIC8vICAgLy8gICB0eXBlOiB0aGlzLmNvbnRlbnQgPyB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5IDogJycsXG4gIC8vICAgLy8gfSxcbiAgLy8gICAvLyB7XG4gIC8vICAgLy8gICBwYWdlSWRFeHQ6IGBidG4tJHtzdWJUeXBlfWAsXG4gIC8vICAgLy8gICBtb2R1bGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnltb2R1bGVzLkNPTlRFTlQsXG4gIC8vICAgLy8gfVxuICAvLyAgIC8vIClcbiAgLy8gfVxuXG4gIHJlc2V0RW5hYmxlU2hhcmUoX2V2ZW50RGF0YTogYW55KSB7XG5cbiAgICB0aGlzLmVuYWJsZVNoYXJlID0gZmFsc2VcbiAgfVxuXG4gIGNvbnRlbnRWaWV3RXZlbnRGb3JOZXRDb3JlKGV2ZW50VHlwZTogYW55KSB7XG4gICAgaWYgKHRoaXMuY29uZmlnU3ZjLm5ldGNvcmVDb25maWcgJiYgdGhpcy5jb25maWdTdmMubmV0Y29yZUNvbmZpZy5uZXRjb3JlV2ViQ29uZmlnICAvLyBOT1NPTkFSXG4gICAgICAmJiB0aGlzLmNvbmZpZ1N2Yy5uZXRjb3JlQ29uZmlnLm5ldGNvcmVXZWJDb25maWcuaXNBY3RpdmUgLy8gTk9TT05BUlxuICAgICAgJiYgdGhpcy5jb25maWdTdmMubmV0Y29yZUNvbmZpZy5uZXRjb3JlV2ViQ29uZmlnLmV2ZW50cyAvLyBOT1NPTkFSXG4gICAgICAmJiB0aGlzLmNvbmZpZ1N2Yy5uZXRjb3JlQ29uZmlnLm5ldGNvcmVXZWJDb25maWcuZXZlbnRzLmNvbnRlbnRfdmlldyAvLyBOT1NPTkFSXG4gICAgICAmJiB0aGlzLmNvbmZpZ1N2Yy5uZXRjb3JlQ29uZmlnLm5ldGNvcmVXZWJDb25maWcuZXZlbnRzLmNvbnRlbnRfdmlldy5pc0FjdGl2ZSAvLyBOT1NPTkFSXG4gICAgKSB7XG4gICAgICBsZXQgcGF5bG9hZDogYW55ID0ge31cbiAgICAgIC8vIGlmICh0aGlzLmNvbmZpZ1N2YyAmJiB0aGlzLmNvbmZpZ1N2Yy51bk1hcHBlZFVzZXIgJiYgdGhpcy5jb25maWdTdmMudW5NYXBwZWRVc2VyLmlkZW50aWZpZXIpIHsgLy8gTk9TT05BUlxuICAgICAgLy8gICBwYXlsb2FkWydwa151c2VyaWQnXSA9IHRoaXMuY29uZmlnU3ZjLnVuTWFwcGVkVXNlci5pZGVudGlmaWVyLnRyaW0oKS50b0xvd2VyQ2FzZSgpXG4gICAgICAvLyB9XG4gICAgICAvLyBjb25zb2xlLmxvZygncGF5bG9hZCcsIHBheWxvYWQpXG4gICAgICBpZiAodGhpcy5leHRDb250ZW50UmVhZERhdGEgJiYgdGhpcy5leHRDb250ZW50UmVhZERhdGEubmFtZSkge1xuICAgICAgICBwYXlsb2FkWydjb250ZW50X25hbWUnXSA9IHRoaXMuZXh0Q29udGVudFJlYWREYXRhLm5hbWVcbiAgICAgIH1cbiAgICAgIC8vIGlmKHRoaXMuZXh0Q29udGVudFJlYWREYXRhICYmIHRoaXMuZXh0Q29udGVudFJlYWREYXRhLmNvdXJzZUNhdGVnb3J5KSB7XG4gICAgICBwYXlsb2FkWydjb250ZW50X2NhdGVnb3J5J10gPSAnRXh0ZXJuYWwgQ291cnNlJ1xuICAgICAgLy8gfVxuICAgICAgaWYgKHRoaXMuZXh0Q29udGVudFJlYWREYXRhICYmIHRoaXMuZXh0Q29udGVudFJlYWREYXRhLmV4dGVybmFsSWQpIHtcbiAgICAgICAgcGF5bG9hZFsnY29udGVudF9pZCddID0gdGhpcy5leHRDb250ZW50UmVhZERhdGEuZXh0ZXJuYWxJZFxuICAgICAgfVxuICAgICAgLy8gaWYodGhpcy5leHRDb250ZW50UmVhZERhdGEgJiYgdGhpcy5leHRDb250ZW50UmVhZERhdGEubmFtZSkge1xuICAgICAgcGF5bG9hZFsnY29udGVudF91cmwnXSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmXG4gICAgICAvLyB9XG4gICAgICBpZiAodGhpcy5leHRDb250ZW50UmVhZERhdGEgJiYgdGhpcy5leHRDb250ZW50UmVhZERhdGEuYXBwSWNvbikge1xuICAgICAgICBwYXlsb2FkWydjb250ZW50X2ltYWdlJ10gPSB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5hcHBJY29uXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5leHRDb250ZW50UmVhZERhdGEgJiYgdGhpcy5leHRDb250ZW50UmVhZERhdGEuZHVyYXRpb24pIHtcbiAgICAgICAgcGF5bG9hZFsnY29udGVudF9kdXJhdGlvbiddID0gdGhpcy5leHRDb250ZW50UmVhZERhdGEuZHVyYXRpb24gJiYgTnVtYmVyKHRoaXMuZXh0Q29udGVudFJlYWREYXRhLmR1cmF0aW9uKSA+IDAgPyBOdW1iZXIodGhpcy5leHRDb250ZW50UmVhZERhdGEuZHVyYXRpb24pIDogMFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF5bG9hZFsnY29udGVudF9kdXJhdGlvbiddID0gMFxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZXh0Q29udGVudFJlYWREYXRhICYmIHRoaXMuZXh0Q29udGVudFJlYWREYXRhLmF2Z1JhdGluZ1xuICAgICAgKSB7XG4gICAgICAgIHBheWxvYWRbJ2NvbnRlbnRfcmF0aW5nJ10gPSB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5hdmdSYXRpbmdcbiAgICAgICAgcGF5bG9hZFsnY29udGVudCByYXRpbmcnXSA9IHRoaXMuZXh0Q29udGVudFJlYWREYXRhLmF2Z1JhdGluZ1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZXh0Q29udGVudFJlYWREYXRhICYmIHRoaXMuZXh0Q29udGVudFJlYWREYXRhLnRvdGFsTm9PZlJhdGluZykge1xuICAgICAgICBwYXlsb2FkWydub191c2Vyc19yYXRlZCddID0gdGhpcy5leHRDb250ZW50UmVhZERhdGEudG90YWxOb09mUmF0aW5nXG4gICAgICB9XG4gICAgICAvLyBpZihPYmplY3Qua2V5cyh0aGlzLnVzZXJFeHRDb3Vyc2VFbnJvbGwpLmxlbmd0aCkge1xuICAgICAgcGF5bG9hZFsnbGVhcm5pbmdfcGF0aF9jb250ZW50J10gPSBPYmplY3Qua2V5cyh0aGlzLnVzZXJFeHRDb3Vyc2VFbnJvbGwpLmxlbmd0aCA/IHRydWUgOiBmYWxzZVxuICAgICAgcGF5bG9hZFsnbGVhcm5pbmcgcGF0aCBjb250ZW50J10gPSBPYmplY3Qua2V5cyh0aGlzLnVzZXJFeHRDb3Vyc2VFbnJvbGwpLmxlbmd0aCA/IHRydWUgOiBmYWxzZVxuICAgICAgLy8gfVxuICAgICAgaWYgKHRoaXMuZXh0Q29udGVudFJlYWREYXRhICYmIHRoaXMuZXh0Q29udGVudFJlYWREYXRhLnNvdXJjZSkge1xuICAgICAgICBwYXlsb2FkWydjb250ZW50X3Byb3ZpZGVyX25hbWUnXSA9IHRoaXMuZXh0Q29udGVudFJlYWREYXRhLnNvdXJjZVxuICAgICAgfSBlbHNlIGlmICh0aGlzLmV4dENvbnRlbnRSZWFkRGF0YSAmJiB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5jb250ZW50UGFydG5lciAmJlxuICAgICAgICB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5jb250ZW50UGFydG5lci5jb250ZW50UGFydG5lck5hbWVcbiAgICAgICkge1xuICAgICAgICBwYXlsb2FkWydjb250ZW50X3Byb3ZpZGVyX25hbWUnXSA9IHRoaXMuZXh0Q29udGVudFJlYWREYXRhLmNvbnRlbnRQYXJ0bmVyLmNvbnRlbnRQYXJ0bmVyTmFtZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF5bG9hZFsnY29udGVudF9wcm92aWRlcl9uYW1lJ10gPSAnS2FybWF5b2dpIEJoYXJhdCdcbiAgICAgIH1cbiAgICAgIGlmIChldmVudFR5cGUgPT09ICd2aWV3Jykge1xuICAgICAgICB0aGlzLm5ldENvcmVTZXJ2aWNlLnRyYWNrRXZlbnRGb3JDb250ZW50QW5kRXZlbnQoJ2NvbnRlbnRfdmlldycsIHRoaXMuY29uZmlnU3ZjLnVuTWFwcGVkVXNlci5pZGVudGlmaWVyLnRyaW0oKS50b0xvd2VyQ2FzZSgpLCBwYXlsb2FkKVxuICAgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdlbnJvbGwnKSB7XG4gICAgICAgIHRoaXMubmV0Q29yZVNlcnZpY2UudHJhY2tFdmVudEZvckNvbnRlbnRBbmRFdmVudCgnY29udGVudF9lbnJvbG1lbnQnLCB0aGlzLmNvbmZpZ1N2Yy51bk1hcHBlZFVzZXIuaWRlbnRpZmllci50cmltKCkudG9Mb3dlckNhc2UoKSwgcGF5bG9hZClcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnY29tcGxldGlvbicpIHtcbiAgICAgICAgdGhpcy5uZXRDb3JlU2VydmljZS50cmFja0V2ZW50Rm9yQ29udGVudEFuZEV2ZW50KCdjb250ZW50X2NvbXBsZXRpb24nLCB0aGlzLmNvbmZpZ1N2Yy51bk1hcHBlZFVzZXIuaWRlbnRpZmllci50cmltKCkudG9Mb3dlckNhc2UoKSwgcGF5bG9hZClcbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIHNlY29uZHNUb1RpbWUoZDogYW55KSB7XG4gICAgZCA9IE51bWJlcihkKVxuICAgIHZhciBoID0gTWF0aC5mbG9vcihkIC8gMzYwMClcbiAgICB2YXIgbSA9IE1hdGguZmxvb3IoZCAlIDM2MDAgLyA2MClcbiAgICB2YXIgcyA9IE1hdGguZmxvb3IoZCAlIDM2MDAgJSA2MClcblxuICAgIHZhciBoRGlzcGxheSA9IGggPiAwID8gaCArIChoID09IDEgPyBcIiBob3VyLCBcIiA6IFwiIGhvdXJzLCBcIikgOiBcIlwiXG4gICAgdmFyIG1EaXNwbGF5ID0gbSA+IDAgPyBtICsgKG0gPT0gMSA/IFwiIG1pbnV0ZSwgXCIgOiBcIiBtaW51dGVzLCBcIikgOiBcIlwiXG4gICAgdmFyIHNEaXNwbGF5ID0gcyA+IDAgPyBzICsgKHMgPT0gMSA/IFwiIHNlY29uZFwiIDogXCIgc2Vjb25kc1wiKSA6IFwiXCJcbiAgICByZXR1cm4gaERpc3BsYXkgKyBtRGlzcGxheSArIHNEaXNwbGF5XG4gIH1cblxuICBjbGVhckNvbW1lbnRJZEZyb21VcmwoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFF1ZXJ5UGFyYW1zID0geyAuLi50aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zIH1cbiAgICBkZWxldGUgY3VycmVudFF1ZXJ5UGFyYW1zLmNvbW1lbnRJZFxuICAgIHRoaXMuY29tbWVudElkID0gJydcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVFbnJvbGxtZW50RWxpZ2liaWxpdHkoKTogdm9pZCB7XG4gICAgLy8gT25seSB2YWxpZGF0ZSBpZiB1c2VyIGlzIG5vdCBhbHJlYWR5IGVucm9sbGVkIGFuZCBjb250ZW50IGlzIGF2YWlsYWJsZVxuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnVzZXJFeHRDb3Vyc2VFbnJvbGwpLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YSAmJiB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5jb250ZW50SWQgJiYgdGhpcy5leHRDb250ZW50UmVhZERhdGEuY29udGVudFBhcnRuZXIgJiYgdGhpcy5leHRDb250ZW50UmVhZERhdGEuY29udGVudFBhcnRuZXIuaWQpIHtcbiAgICAgIHRoaXMuZW5yb2xsVmFsaWRhdGlvbkxvYWRpbmcgPSB0cnVlXG4gICAgICB0aGlzLmNlcnRTdmMudmFsaWRhdGVFbnJvbGxtZW50RWxpZ2liaWxpdHkodGhpcy5leHRDb250ZW50UmVhZERhdGEuY29udGVudElkLCB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5jb250ZW50UGFydG5lci5pZCkuc3Vic2NyaWJlKFxuICAgICAgICAoX3Jlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmVucm9sbFZhbGlkYXRpb25Mb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICB0aGlzLmNhbkVucm9sbCA9IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oZXJyb3I/LmVycm9yPy5wYXJhbXM/Lm1zZyB8fCAnVW5hYmxlIHRvIHZhbGlkYXRlIGVucm9sbG1lbnQgZWxpZ2liaWxpdHknLCAnWCcsIHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiAxMDAwMCxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHRoaXMuZW5yb2xsVmFsaWRhdGlvbkxvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgIHRoaXMuY2FuRW5yb2xsID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cbiAgfVxuICBzaG93QmFkZ2VJY29uKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGJhZGdlRGV0YWlscyA9IHRoaXMuZXh0Q29udGVudFJlYWREYXRhPy5iYWRnZURldGFpbHNfdjFcbiAgICBpZiAoIWJhZGdlRGV0YWlscyB8fCAhYmFkZ2VEZXRhaWxzLmxlbmd0aCB8fCBiYWRnZURldGFpbHM/LlswXT8uY3JpdGVyaWEgPT0gJ3BhcnRpYWxSYW5kb21Db21wbGV0aW9uJykge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIGNvbnN0IGJhZGdlID0gYmFkZ2VEZXRhaWxzWzBdXG4gICAgLy8gSWYgYmFkZ2VFYXJuaW5nRGF0ZUVuYWJsZWQgaXMgZmFsc2UsIGRvbid0IHNob3cgYmFkZ2VcbiAgICBpZiAoIWJhZGdlLmJhZGdlRWFybmluZ0RhdGVFbmFibGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICAvLyBJZiBiYWRnZUVhcm5pbmdEYXRlRW5hYmxlZCBpcyB0cnVlLCBzaG93IGJhZGdlIG9ubHkgaWYgYmFkZ2VFYXJuaW5nRGF0ZVRpbWUgaGFzIHBhc3NlZFxuICAgIGlmIChiYWRnZT8uYmFkZ2VFYXJuaW5nRGF0ZUVuYWJsZWQgJiYgYmFkZ2U/LmJhZGdlRWFybmluZ0RhdGVUaW1lKSB7XG4gICAgICBjb25zb2xlLmxvZyhiYWRnZS5iYWRnZUVhcm5pbmdEYXRlVGltZSwgRGF0ZS5ub3coKSlcbiAgICAgIHJldHVybiBiYWRnZS5iYWRnZUVhcm5pbmdEYXRlVGltZSA+IERhdGUubm93KClcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgZ2V0IHNob3dFbnJvbGwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMudXNlckV4dENvdXJzZUVucm9sbCkubGVuZ3RoID09PSAwICYmXG4gICAgICAhdGhpcy5lbnJvbGxWYWxpZGF0aW9uTG9hZGluZyAmJlxuICAgICAgdGhpcy5jYW5FbnJvbGwgJiZcbiAgICAgIF8uZ2V0KHRoaXMuZXh0Q29udGVudFJlYWREYXRhLCAnY29udGVudFBhcnRuZXIuaXNBY3RpdmUnLCBmYWxzZSlcbiAgfVxuXG4gIGdldCBzaG93UmVkaXJlY3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMudXNlckV4dENvdXJzZUVucm9sbCkubGVuZ3RoID4gMCAmJlxuICAgICAgXy5nZXQodGhpcy5leHRDb250ZW50UmVhZERhdGEsICdyZWRpcmVjdFVybCcpICYmXG4gICAgICBfLmdldCh0aGlzLmV4dENvbnRlbnRSZWFkRGF0YSwgJ2NvbnRlbnRQYXJ0bmVyLmlzQWN0aXZlJywgZmFsc2UpXG4gIH1cblxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4dENvbnRlbnRBdmFpbGFibGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwidG9jLWJhbm5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtNiBmaXhlZC13aWR0aFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lci1kZXRhaWxzIHRvYy1jb250ZW50XCIgI2Jhbm5lckRldGFpbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIicxMzJweCdcIiBbaGVpZ2h0XT1cIiczMnB4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQgYmx1ZS0yLWxvYWRlcidcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIicxNDBweCdcIiBbaGVpZ2h0XT1cIicyNHB4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQgYmx1ZS0yLWxvYWRlcidcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgdGFnLWRpdiByb3VuZGVkLTJ4bCBnYXAtMSBpdGVtcy1jZW50ZXIgcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIndzLW1hdC1vcmFuZ2UtdGV4dFwiPnZpZGVvX2xpYnJhcnk8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyBmb250LWJvbGQgdGV4dC13aGl0ZSBsZWFkaW5nLTNcIj57eyB0cmFuc2xhdGVMYWJlbChjb250ZW50Py5jb3Vyc2VDYXRlZ29yeSwgJ3NlYXJjaGZpbHRlcnMnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4dENvbnRlbnRSZWFkRGF0YT8udG9waWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIGxlYWRpbmctM1wiPnt7ICdFeHRlcm5hbCBDb3Vyc2UnIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHRleHQtd2hpdGUgbW9iLXNoYXJlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJvbkNsaWNrT2ZTaGFyZSgpXCI+c2hhcmU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEtub3dsZWRnZSBsZXZlbCBibG9jayAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJleHRDb250ZW50UmVhZERhdGE/LmRpZmZpY3VsdHlMZXZlbCB8fCBleHRDb250ZW50UmVhZERhdGE/Lmtub3dsZWRnZUxldmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImtub3dsZWRnZS1sZXZlbC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImV4dENvbnRlbnRSZWFkRGF0YT8uZGlmZmljdWx0eUxldmVsPy50b0xvd2VyQ2FzZSgpID09PSAnYmVnaW5uZXInIHx8IGV4dENvbnRlbnRSZWFkRGF0YT8ua25vd2xlZGdlTGV2ZWw/LnRvTG93ZXJDYXNlKCkgPT09ICdiZWdpbm5lcidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxldmVsLWJhZGdlIGJlZ2lubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwiI0RCRjREQ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy40MjI2NyA1QzcuNjc5MjcgNC41NTU1NSA4LjMyMDc3IDQuNTU1NTYgOC41NzczNyA1TDEyLjA0MTUgMTFDMTIuMjk4MSAxMS40NDQ0IDExLjk3NzMgMTIgMTEuNDY0MSAxMkg0LjUzNTkyQzQuMDIyNzIgMTIgMy43MDE5NyAxMS40NDQ0IDMuOTU4NTcgMTFMNy40MjI2NyA1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0OUM5NTFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tleHRDb250ZW50UmVhZERhdGE/LmRpZmZpY3VsdHlMZXZlbCB8fCBleHRDb250ZW50UmVhZERhdGE/Lmtub3dsZWRnZUxldmVsfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJleHRDb250ZW50UmVhZERhdGE/LmRpZmZpY3VsdHlMZXZlbD8udG9Mb3dlckNhc2UoKSA9PT0gJ2ludGVybWVkaWF0ZScgfHwgZXh0Q29udGVudFJlYWREYXRhPy5rbm93bGVkZ2VMZXZlbD8udG9Mb3dlckNhc2UoKSA9PT0gJ2ludGVybWVkaWF0ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxldmVsLWJhZGdlIGludGVybWVkaWF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIiNEMURCRUNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuNDIyNjcgMi42NjY2NkM3LjY3OTI3IDIuMjIyMjEgOC4zMjA3NyAyLjIyMjIxIDguNTc3MzcgMi42NjY2NkwxMi4wNDE1IDguNjY2NjZDMTIuMjk4MSA5LjExMTEgMTEuOTc3MyA5LjY2NjY2IDExLjQ2NDEgOS42NjY2Nkg0LjUzNTkyQzQuMDIyNzIgOS42NjY2NiAzLjcwMTk3IDkuMTExMSAzLjk1ODU3IDguNjY2NjZMNy40MjI2NyAyLjY2NjY2WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxQjRDQTFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuNDIyNjcgNS42NjY2NkM3LjY3OTI3IDUuMjIyMjEgOC4zMjA3NyA1LjIyMjIxIDguNTc3MzcgNS42NjY2NkwxMi4wNDE1IDExLjY2NjdDMTIuMjk4MSAxMi4xMTExIDExLjk3NzMgMTIuNjY2NyAxMS40NjQxIDEyLjY2NjdINC41MzU5MkM0LjAyMjcyIDEyLjY2NjcgMy43MDE5NyAxMi4xMTExIDMuOTU4NTcgMTEuNjY2N0w3LjQyMjY3IDUuNjY2NjZaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzFCNENBMVwiIHN0cm9rZT1cIiNEMURCRUNcIiBzdHJva2Utd2lkdGg9XCIwLjVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tleHRDb250ZW50UmVhZERhdGE/LmRpZmZpY3VsdHlMZXZlbCB8fCBleHRDb250ZW50UmVhZERhdGE/Lmtub3dsZWRnZUxldmVsfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJleHRDb250ZW50UmVhZERhdGE/LmRpZmZpY3VsdHlMZXZlbD8udG9Mb3dlckNhc2UoKSA9PT0gJ2FkdmFuY2VkJyB8fCBleHRDb250ZW50UmVhZERhdGE/Lmtub3dsZWRnZUxldmVsPy50b0xvd2VyQ2FzZSgpID09PSAnYWR2YW5jZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsZXZlbC1iYWRnZSBhZHZhbmNlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwiI0ZGRTZFMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjQyMjY0IDIuMzMzMzRDNy42NzkyNCAxLjg4ODkgOC4zMjA3NCAxLjg4ODkgOC41NzczNCAyLjMzMzM0TDEyLjA0MTQgOC4zMzMzNEMxMi4yOTggOC43Nzc3OSAxMS45NzczIDkuMzMzMzQgMTEuNDY0MSA5LjMzMzM0SDQuNTM1ODlDNC4wMjI2OSA5LjMzMzM0IDMuNzAxOTQgOC43Nzc3OSAzLjk1ODU0IDguMzMzMzRMNy40MjI2NCAyLjMzMzM0WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkY4MjY4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuNDIyNjQgNUM3LjY3OTI0IDQuNTU1NTUgOC4zMjA3NCA0LjU1NTU2IDguNTc3MzQgNUwxMi4wNDE0IDExQzEyLjI5OCAxMS40NDQ0IDExLjk3NzMgMTIgMTEuNDY0MSAxMkg0LjUzNTg5QzQuMDIyNjkgMTIgMy43MDE5NCAxMS40NDQ0IDMuOTU4NTQgMTFMNy40MjI2NCA1WlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkY4MjY4XCIgc3Ryb2tlPVwiI0ZGRTZFMVwiIHN0cm9rZS13aWR0aD1cIjAuNVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjQyMjY0IDcuNjY2NjlDNy42NzkyNCA3LjIyMjI0IDguMzIwNzQgNy4yMjIyNCA4LjU3NzM0IDcuNjY2NjlMMTIuMDQxNCAxMy42NjY3QzEyLjI5OCAxNC4xMTExIDExLjk3NzMgMTQuNjY2NyAxMS40NjQxIDE0LjY2NjdINC41MzU4OUM0LjAyMjY5IDE0LjY2NjcgMy43MDE5NCAxNC4xMTExIDMuOTU4NTQgMTMuNjY2N0w3LjQyMjY0IDcuNjY2NjlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGRjgyNjhcIiBzdHJva2U9XCIjRkZFNkUxXCIgc3Ryb2tlLXdpZHRoPVwiMC41XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZXh0Q29udGVudFJlYWREYXRhPy5kaWZmaWN1bHR5TGV2ZWwgfHwgZXh0Q29udGVudFJlYWREYXRhPy5rbm93bGVkZ2VMZXZlbH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzkwJSdcIiBbaGVpZ2h0XT1cIiczMnB4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQgYmx1ZS0yLWxvYWRlcidcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic3MCUnXCIgW2hlaWdodF09XCInMzJweCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkIGJsdWUtMi1sb2FkZXInXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhbm5lci10ZXh0IHRleHQtYmFzZSBzbTp0ZXh0LTR4bCBsZWFkaW5nLTYgc206bGVhZGluZy0xMCBmb250LWJvbGRcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDYXBpdGFsaXplKGV4dENvbnRlbnRSZWFkRGF0YT8ubmFtZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgIGNsYXNzPVwia25vd2xlZGdlLWxldmVsLWNvbnRhaW5lciBiYWRnZWRpdlwiPiAtLT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd0JhZGdlSWNvbigpXCIgY2xhc3M9XCJjdXN0b20tYmFkZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImJhZGdlLWltZyB3LTUgaC01XCIgc3JjPVwie3sgZXh0Q29udGVudFJlYWREYXRhPy5iYWRnZURldGFpbHNfdjE/LlswXT8uYmFkZ2VUZW1wbGF0ZSB8IHBpcGVQdWJsaWNVUkwgfX1cIiBhbHQ9XCJcIiBzcmNzZXQ9XCJcIj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gc206dGV4dC1iYXNlIHNvdXJjZS10ZXh0IGZvbnQtc2VtaWJvbGQgYnJlYWstd29yZHNcIiAjY29udGVudFNvdXJjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3NvdXJjZUVsbGlwc2lzJzogc291cmNlRWxsaXBzaXN9XCIgdGl0bGU9XCJ7e2NvbnRlbnQ/LnNvdXJjZX19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjYXJkY29udGVudHYyLmJ5JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImV4dENvbnRlbnRSZWFkRGF0YT8uY29udGVudFBhcnRuZXI/LmNvbnRlbnRQYXJ0bmVyTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJleHRDb250ZW50UmVhZERhdGE/LmNvdXJzZVByb3ZpZGVyPy5sZW5ndGg7ZWxzZSBjb250ZW50UGFydG5lck5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmb3JtYXRjb3Vyc2VQcm92aWRlcnMoZXh0Q29udGVudFJlYWREYXRhPy5jb3Vyc2VQcm92aWRlcikgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29udGVudFBhcnRuZXJOYW1lPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZXh0Q29udGVudFJlYWREYXRhPy5jb250ZW50UGFydG5lcj8uY29udGVudFBhcnRuZXJOYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWV4dENvbnRlbnRSZWFkRGF0YT8uY29udGVudFBhcnRuZXI/LmNvbnRlbnRQYXJ0bmVyTmFtZVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tbW9uLmthcm1heW9naUJoYXJhdCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzEyMHB4J1wiIFtoZWlnaHRdPVwiJzQwcHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkIGJsdWUtMi1sb2FkZXInXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic4OHB4J1wiIFtoZWlnaHRdPVwiJzI0cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkIGJsdWUtMi1sb2FkZXInXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNCBpdGVtcy1jZW50ZXJcIiAqbmdJZj1cImNvbnRlbnQ/LmF2ZXJhZ2VSYXRpbmcgfHwgY29udGVudD8uYWRkaXRpb25hbFRhZ3M/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyByYXRpbmctY2hpcCBweS0yIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJoYW5kbGVOYXZpZ2F0ZVRvUmV2aWV3cygpXCIgKm5nSWY9XCJjb250ZW50Py5hdmVyYWdlUmF0aW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0xIG1hcmdpbi1sZWZ0LXMgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Z3JhZGU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtd2hpdGUgdGV4dC1zbSBsZWFkaW5nLTRcIj57eyBjb250ZW50Py5hdmVyYWdlUmF0aW5nIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXdoaXRlIHRleHQtc20gbGVhZGluZy00IG1hcmdpbi1yaWdodC1tXCI+e3sgY29udGVudD8udG90YWxSYXRpbmcgfCBwaXBlQ291bnRUcmFuc2Zvcm0gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiY29udGVudD8uYWRkaXRpb25hbFRhZ3M/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9zdC1lbnJvbGxlZC1jaGlwIHRleHQteHMgbGVhZGluZy0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnRlbnQ/LmFkZGl0aW9uYWxUYWdzPy5pbmNsdWRlcygnbW9zdFRyZW5kaW5nJylcIj57eyAnY2FyZGNvbnRlbnR2Mi5tb3N0VHJlbmRpbmcnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb250ZW50Py5hZGRpdGlvbmFsVGFncz8uaW5jbHVkZXMoJ21vc3RFbnJvbGxlZCcpXCI+e3sgJ2NhcmRjb250ZW50djIubW9zdEVucm9sbGVkJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIicxODBweCdcIiBbaGVpZ2h0XT1cIicyMHB4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCBibHVlLTItbG9hZGVyJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2tlbGV0b25Mb2FkZXIgJiYgZXh0Q29udGVudFJlYWREYXRhPy5sYXN0VXBkYXRlZE9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyBsZWFkaW5nLTQgc291cmNlLXRleHRcIj4oe3sgJ2FwcHRvYy5sYXN0VXBkYXRlZE9uJyB8IHRyYW5zbGF0ZSB9fSB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dENvbnRlbnRSZWFkRGF0YT8ubGFzdFVwZGF0ZWRPbiB8IGRhdGU6ICdNTU0gZCwgeScgfX0pPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZm9yUHJldmlld1wiPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc01vYmlsZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTQgcC01IGJvcmRlci1ib3R0b20gcG9zaXRpb24tYm90dG9tXCI+XG4gICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiKHVzZXJFeHRDb3Vyc2VFbnJvbGwgfCBqc29uKSAhPT0gJ3t9J1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCB3LWZ1bGwgd3MtbWF0LWJsYWNrLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWJvZHktMiAgd3MtbWF0LWJsYWNrLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3VzZXJFeHRDb3Vyc2VFbnJvbGw/LnByb2dyZXNzfX0lPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzIFtjb250ZW50SWRdPVwidXNlckV4dENvdXJzZUVucm9sbD8ucHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb2dyZXNzXT1cInVzZXJFeHRDb3Vyc2VFbnJvbGw/LnByb2dyZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9ncmVzc1R5cGVdPVwiJ3BlcmNlbnRhZ2UnXCIgW2N1c3RvbUNsYXNzTmFtZV09XCIndmlld2VyLXByb2dyZXNzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+ICAgLS0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dFbnJvbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZsZXggYWN0aW9uLWJ1dHRvbiBqdXN0aWZ5LWNlbnRlciBmbGV4LW1pZGRsZSByZXN1bWVcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlblJvbGxUb0V4dENvdXJzZShleHRDb250ZW50UmVhZERhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPnt7ICdhcHB0b2Nob21lLmVucm9sbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW5yb2xsVmFsaWRhdGlvbkxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIicxMzJweCdcIiBbaGVpZ2h0XT1cIiczMnB4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkIGJsdWUtMi1sb2FkZXInXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UmVkaXJlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmbGV4IGFjdGlvbi1idXR0b24ganVzdGlmeS1jZW50ZXIgZmxleC1taWRkbGUgcmVzdW1lXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImV4dENvbnRlbnRSZWFkRGF0YT8ucmVkaXJlY3RVcmxcIiAoY2xpY2spPVwiY2FwdHVyZVJlZGlyZWN0VGVsZW1ldHJ5KGV4dENvbnRlbnRSZWFkRGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgJ2FwcHRvY2hvbWUucmVkaXJlY3QnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWwtMiB3cy1tYXQtd2hpdGUtdGV4dFwiPm9wZW5faW5fbmV3PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiKHVzZXJFeHRDb3Vyc2VFbnJvbGwgfCBqc29uKSAhPT0gJ3t9JyAmJiB1c2VyRXh0Q291cnNlRW5yb2xsPy5pc3N1ZWRfY2VydGlmaWNhdGVzPy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgICYmIHVzZXJFeHRDb3Vyc2VFbnJvbGw/LnByb2dyZXNzID09PSAxMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZsZXggYWN0aW9uLWJ1dHRvbiBqdXN0aWZ5LWNlbnRlciBmbGV4LW1pZGRsZSByZXN1bWVcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImRvd25sb2FkQ2VydCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJmdXNpb24tYXNzZXRzL2ltYWdlcy9jZXJ0aWZpY2F0ZS1pY28uc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5DZXJ0aWZpY2F0ZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAgKm5nSWY9XCIhZG93bmxvYWRDZXJ0aWZpY2F0ZUxvYWRpbmdcIiBjbGFzcz1cIm1sLTJcIj5hcnJvd19kb3dud2FyZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VudGVyIGZsZXggZmxleC1taWRkbGUgY2VydGlmaWNhdGUtbG9hZGVyIG1hcmdpbi1sZWZ0LXNcIiAqbmdJZj1cImRvd25sb2FkQ2VydGlmaWNhdGVMb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiIHN0cm9rZT1cIid3aGl0ZSdcIiBjbGFzcz1cIndoaXRlLXNwaW5uZXJcIiBbZGlhbWV0ZXJdPVwiMjRcIj48L21hdC1zcGlubmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+ICAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJsb2NrIG1kOmhpZGRlblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW5Qcm9ncmVzc0luZm9cIiA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHB4LTggcHktNCBnYXAtMlwiICpuZ0lmPVwiZXh0Q29udGVudFJlYWREYXRhPy5kdXJhdGlvbiA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ljb25zL3RvYy90aW1lci5zdmdcIiB3aWR0aD1cIjIwcHhcIiBhbHQ9XCJ3ZWIgaW1hZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14c1wiPnt7IGV4dENvbnRlbnRSZWFkRGF0YT8uZHVyYXRpb24gKiA2MCB8IHBpcGVEdXJhdGlvblRyYW5zZm9ybTogJ2htcycgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtNiBmaXhlZC13aWR0aFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9jLWNvbnRlbnRcIiBbbmdDbGFzc109XCJpc01vYmlsZSA/ICcnOidtdC04IG1iLTgnXCI+XG4gICAgICAgICAgICA8bWF0LXRhYi1ncm91cD5cbiAgICAgICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cInt7ICdhcHB0b2NzaW5nbGVwYWdlLmFib3V0JyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCIgW25nQ2xhc3NdPVwiaXNNb2JpbGUgPyAnJzonbXQtNSBtYi01J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzgwcHgnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yIG10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInODAlJ1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInOTUlJ1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInNjUlJ1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LWFwcC10b2MtYWJvdXQgW2NvbnRlbnRSZWFkRGF0YV09XCJleHRDb250ZW50UmVhZERhdGFcIiBbc2hvd1Jldmlld3NdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jhc2VDb250ZW50UmVhZERhdGFdPVwiZXh0Q29udGVudFJlYWREYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93TWFya2V0UGxhY2VDZXJ0aWZpY2F0ZV09XCIodXNlckV4dENvdXJzZUVucm9sbCB8IGpzb24pICE9PSAne30nICYmIHVzZXJFeHRDb3Vyc2VFbnJvbGw/Lmlzc3VlZF9jZXJ0aWZpY2F0ZXM/Lmxlbmd0aCA+ICAwICYmIHVzZXJFeHRDb3Vyc2VFbnJvbGw/LnByb2dyZXNzID09PSAxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiZXh0Q29udGVudFJlYWREYXRhXCIgW2Zyb21NYXJrZXRQbGFjZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtza2VsZXRvbkxvYWRlcl09XCJza2VsZXRvbkxvYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZnJvbU1ET109XCJmcm9tTURPXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3Mtd2lkZ2V0LWFwcC10b2MtYWJvdXQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L21hdC10YWI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnPy5jb21tZW50c1RhYlwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cInt7ICdhcHB0b2NzaW5nbGVwYWdlLmNvbW1lbnRzJyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCByYXRpbmdzLWRpdiBtdC01XCIgaWQ9XCJjb21tZW50c0RpdlwiICpuZ0lmPVwiZGlzY3Vzc1dpZGdldERhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbW1lbnRJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZC12Mi13aWRnZXQtY29tbWVudCBbd2lkZ2V0RGF0YV09XCJkaXNjdXNzV2lkZ2V0RGF0YVwiPjwvZC12Mi13aWRnZXQtY29tbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tbWVudElkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0zIGN1cnNvci1wb2ludGVyIG1iLTVcIiAoY2xpY2spPVwiY2xlYXJDb21tZW50SWRGcm9tVXJsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+YXJyb3dfYmFjazwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNrIHRvIGFsbCBjb21tZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGQtdjItd2lkZ2V0LWNvbW1lbnQgW3dpZGdldERhdGFdPVwiZGlzY3Vzc1dpZGdldERhdGFcIiBbY29tbWVudElkXT1cImNvbW1lbnRJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2tlbGV0b25Mb2FkZXJdPjwvZC12Mi13aWRnZXQtY29tbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDwvbmctdGVtcGxhdGU+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC10YWI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L21hdC10YWItZ3JvdXA+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1jb250ZW50XCIgI3JpZ2h0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzM4NHB4J1wiIFtoZWlnaHRdPVwiJzIyNHB4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGltYWdlLWRpdlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAnYmFja2dyb3VuZC1pbWFnZSc6ICd1cmwoJyArIGV4dENvbnRlbnRSZWFkRGF0YT8uYXBwSWNvbiArICcpJywgJ2JhY2tncm91bmQtcmVwZWF0JzogJ25vLXJlcGVhdCcsICdiYWNrZ3JvdW5kLXNpemUnOiAnY292ZXInfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2ltYWdlLWJhY2tkcm9wJzogc2Nyb2xsZWR9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gdGV4dC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTQganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25DbGlja09mU2hhcmUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIGdhcC0yIHNoYXJlLXRhZ1wiICpuZ0lmPVwiIWZvclByZXZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5zaGFyZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7ICdhcHB0b2NzaW5nbGVwYWdlLnNoYXJlJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMVwiICpuZ0lmPVwic2Nyb2xsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQteGwgbGVhZGluZy02IHRleHQtd2hpdGUgZm9udC1ib2xkIHRleHQtc2Nyb2wtY3VzdG9tXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNhcGl0YWxpemUoZXh0Q29udGVudFJlYWREYXRhPy5uYW1lKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidGV4dC1zbSBzb3VyY2UtdGV4dCBmb250LXNlbWlib2xkIGJyZWFrLXdvcmRzXCIgI2NvbnRlbnRTb3VyY2UgW25nQ2xhc3NdPVwieydzb3VyY2VFbGxpcHNpcyc6IHNvdXJjZUVsbGlwc2lzfVwiIHRpdGxlPVwie3tjb250ZW50Py5zb3VyY2V9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NhcmRjb250ZW50djIuYnknIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImV4dENvbnRlbnRSZWFkRGF0YT8uY29udGVudFBhcnRuZXI/LmNvbnRlbnRQYXJ0bmVyTmFtZVwiPnt7IGV4dENvbnRlbnRSZWFkRGF0YT8uY29udGVudFBhcnRuZXI/LmNvbnRlbnRQYXJ0bmVyTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWV4dENvbnRlbnRSZWFkRGF0YT8uY29udGVudFBhcnRuZXI/LmNvbnRlbnRQYXJ0bmVyTmFtZVwiPnt7ICdjb21tb24ua2FybWF5b2dpQmhhcmF0JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZvclByZXZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTMgcC0zIGJvcmRlci1ib3R0b21cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cIih1c2VyRXh0Q291cnNlRW5yb2xsIHwganNvbikgIT09ICd7fSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktZW5kIHctZnVsbCB3cy1tYXQtYmxhY2stdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWJvZHktMiAgd3MtbWF0LWJsYWNrLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t1c2VyRXh0Q291cnNlRW5yb2xsPy5wcm9ncmVzc319JTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzIFtjb250ZW50SWRdPVwidXNlckV4dENvdXJzZUVucm9sbD8ucHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9ncmVzc109XCJ1c2VyRXh0Q291cnNlRW5yb2xsPy5wcm9ncmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb2dyZXNzVHlwZV09XCIncGVyY2VudGFnZSdcIiBbY3VzdG9tQ2xhc3NOYW1lXT1cIid2aWV3ZXItcHJvZ3Jlc3MnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gICAtLT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dFbnJvbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmxleCBhY3Rpb24tYnV0dG9uIGp1c3RpZnktY2VudGVyIGZsZXgtbWlkZGxlIHJlc3VtZVwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW5Sb2xsVG9FeHRDb3Vyc2UoZXh0Q29udGVudFJlYWREYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPnt7ICdhcHB0b2Nob21lLmVucm9sbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbnJvbGxWYWxpZGF0aW9uTG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInMTAwJSdcIiBbaGVpZ2h0XT1cIiczMnB4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQgJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dSZWRpcmVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZmxleCBhY3Rpb24tYnV0dG9uIGp1c3RpZnktY2VudGVyIGZsZXgtbWlkZGxlIHJlc3VtZVwiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImV4dENvbnRlbnRSZWFkRGF0YT8ucmVkaXJlY3RVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FwdHVyZVJlZGlyZWN0VGVsZW1ldHJ5KGV4dENvbnRlbnRSZWFkRGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyAnYXBwdG9jaG9tZS5yZWRpcmVjdCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1sLTIgd3MtbWF0LXdoaXRlLXRleHRcIj5vcGVuX2luX25ldzwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiKHVzZXJFeHRDb3Vyc2VFbnJvbGwgfCBqc29uKSAhPT0gJ3t9JyAmJiB1c2VyRXh0Q291cnNlRW5yb2xsPy5pc3N1ZWRfY2VydGlmaWNhdGVzPy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiB1c2VyRXh0Q291cnNlRW5yb2xsPy5wcm9ncmVzcyA9PT0gMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmxleCBhY3Rpb24tYnV0dG9uIGp1c3RpZnktY2VudGVyIGZsZXgtbWlkZGxlIHJlc3VtZVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZG93bmxvYWRDZXJ0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImZ1c2lvbi1hc3NldHMvaW1hZ2VzL2NlcnRpZmljYXRlLWljby5zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5DZXJ0aWZpY2F0ZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gICpuZ0lmPVwiIWRvd25sb2FkQ2VydGlmaWNhdGVMb2FkaW5nXCIgY2xhc3M9XCJtbC0yXCI+YXJyb3dfZG93bndhcmQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZW50ZXIgZmxleCBmbGV4LW1pZGRsZSBjZXJ0aWZpY2F0ZS1sb2FkZXIgbWFyZ2luLWxlZnQtc1wiICpuZ0lmPVwiZG93bmxvYWRDZXJ0aWZpY2F0ZUxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiIHN0cm9rZT1cIid3aGl0ZSdcIiBjbGFzcz1cIndoaXRlLXNwaW5uZXJcIiBbZGlhbWV0ZXJdPVwiMjRcIj48L21hdC1zcGlubmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpblByb2dyZXNzSW5mb1wiID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBrcGktdmFsdWVzIGl0ZW1zLWNlbnRlciBnYXAtMlwiICpuZ0lmPVwiZXh0Q29udGVudFJlYWREYXRhPy5kdXJhdGlvbiA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy90b2MvdGltZXIuc3ZnXCIgd2lkdGg9XCIyMHB4XCIgYWx0PVwid2ViIGltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZXh0Q29udGVudFJlYWREYXRhPy5kdXJhdGlvbiB8IHBpcGVEdXJhdGlvblRyYW5zZm9ybTogJ2htcycgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuPGRpdiAqbmdJZj1cIiFleHRDb250ZW50QXZhaWxhYmxlXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgdy1mdWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW4teGwgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9jb21tb24vZXJyb3ItcGFnZXMvZW1wdHlfc2VhcmNoLnN2Z1wiIHdzVXRpbHNJbWFnZVJlc3BvbnNpdmUgYWx0PVwiTm8gcmVzdWx0c1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXJnaW4tdG9wLWwgbWFyZ2luLWJvdHRvbS1zXCI+XG4gICAgICAgICAgICA8aDIgY2xhc3M9XCJtYXQtaDJcIiBpMThuPVwic2VhcmNoIHJvdXRlIG5vIHJlc3VsdFwiPnt7J2xlYXJuc2VhcmNoLm5vUmVzdWx0cycgfCB0cmFuc2xhdGV9fTwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG48L2Rpdj5cblxuPHdzLWFwcC1zaGFyZS10b2MgKm5nSWY9XCJlbmFibGVTaGFyZVwiIFtjb250ZW50TGlua109XCJjb250ZW50TGlua1wiIFtyb290T3JnSWRdPVwicm9vdE9yZ0lkXCIgW2NvbnRlbnRdPVwiZXh0Q29udGVudFJlYWREYXRhXCJcbiAgICAocmVzZXRFbmFibGVTaGFyZSk9XCJyZXNldEVuYWJsZVNoYXJlKCRldmVudClcIj48L3dzLWFwcC1zaGFyZS10b2M+XG5cbjxuZy10ZW1wbGF0ZSAjaW5Qcm9ncmVzc0luZm8+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dQcm92aWRlclRpcHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vLWNlcnRpZmljYXRlLWZvdW5kIG10LTYgbWItNCBteC0yIHAtMlwiID5cbiAgICAgICAgICAgIDx3cy13aWRnZXQtc2xpZGVycy1keW5hbWljIFt3aWRnZXREYXRhXT1cIndpZGdldERhdGFcIj48L3dzLXdpZGdldC1zbGlkZXJzLWR5bmFtaWM+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT4iXX0=
522
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1jaW9zLWhvbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1jaW9zLWhvbWUvYXBwLXRvYy1jaW9zLWhvbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1jaW9zLWhvbWUvYXBwLXRvYy1jaW9zLWhvbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBSXZILE9BQU8sRUFBOEYsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFNM0ksT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUE7QUFFM0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPbkUsTUFBTSxPQUFPLHVCQUF1QjtJQTRCbEMsWUFBWTtRQUVWLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2hFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO2FBQ3ZEO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFBO2FBQ3REO1NBQ0Y7UUFFRCw4Q0FBOEM7UUFDOUMsSUFBSSxNQUFNLENB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Q0FBQyxJQUFJLENBQUMsdUJBQXVCO1lBQzdCLElBQUksQ0FBQyxTQUFTO1lBQ2QsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNyRCxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUM7WUFDN0MsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDcEUsQ0FBQzsrR0F4Z0JVLHVCQUF1QiwrWkF5RHhCLGFBQWE7bUdBekRaLHVCQUF1QiwrT0NuQnBDLDgxMEJBaVljOzs0RkQ5V0QsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLDBCQUEwQjs7MEJBNkRqQyxNQUFNOzJCQUFDLGFBQWE7OzBCQUFHLFFBQVE7NENBMUNMLFNBQVM7c0JBQXJDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQWEzQixZQUFZO3NCQURYLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBDb21tb25NZXRob2RzU2VydmljZSB9IGZyb20gJ0BzdW5iaXJkLWNiL2NvbnN1bXB0aW9uJ1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlLCBFdmVudFNlcnZpY2UsIE11bHRpbGluZ3VhbFRyYW5zbGF0aW9uc1NlcnZpY2UsIFdpZGdldENvbnRlbnRTZXJ2aWNlLCBXc0V2ZW50cyB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xuaW1wb3J0IHsgTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvYWRlci5zZXJ2aWNlJ1xuaW1wb3J0IHsgTWF0TGVnYWN5U25hY2tCYXIgYXMgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktc25hY2stYmFyJ1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJ1xuaW1wb3J0IHsgQ2VydGlmaWNhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2VydGlmaWNhdGUuc2VydmljZSdcbmltcG9ydCB7IE5zRGlzY3Vzc2lvblYyIH0gZnJvbSAnQHN1bmJpcmQtY2IvZGlzY3Vzc2lvbi12MidcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IHsgTmV0Q29yZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9uZXRjb3JlLnNlcnZpY2UnXG5pbXBvcnQgeyBDb25zZW50RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb25zZW50LWRpYWxvZy5jb21wb25lbnQnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dzLWFwcC1hcHAtdG9jLWNpb3MtaG9tZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtdG9jLWNpb3MtaG9tZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FwcC10b2MtY2lvcy1ob21lLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFwcFRvY0Npb3NIb21lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgY29tbWVudElkPzogc3RyaW5nID0gJydcbiAgc2tlbGV0b25Mb2FkZXIgPSB0cnVlXG4gIGV4dENvbnRlbnRSZWFkRGF0YTogYW55ID0ge31cbiAgdXNlckV4dENvdXJzZUVucm9sbDogYW55ID0ge31cbiAgZG93bmxvYWRDZXJ0aWZpY2F0ZUxvYWRpbmcgPSBmYWxzZVxuICBmb3JQcmV2aWV3OiBhbnkgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnL3B1YmxpYy8nKSB8fCB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnP2VkaXRNb2RlPXRydWUnKVxuICBleHRDb250ZW50QXZhaWxhYmxlID0gdHJ1ZVxuICBjYW5FbnJvbGwgPSBmYWxzZVxuICBlbnJvbGxWYWxpZGF0aW9uTG9hZGluZyA9IHRydWVcbiAgcmNFbGVtID0ge1xuICAgIG9mZlNldFRvcDogMCxcbiAgICBCb3R0b21Qb3M6IDAsXG4gIH1cbiAgY29udGVudExpbms6IGFueSA9ICcnXG4gIEBWaWV3Q2hpbGQoJ3JpZ2h0Q29udGFpbmVyJykgcmNFbGVtZW50ITogRWxlbWVudFJlZlxuICBzY3JvbGxMaW1pdDogYW55XG4gIHNjcm9sbGVkOiBib29sZWFuIHwgdW5kZWZpbmVkXG4gIGlzTW9iaWxlID0gZmFsc2VcbiAgY29uZmlnOiBhbnlcbiAgd2lkZ2V0RGF0YTogYW55XG4gIGVuYWJsZVNoYXJlID0gZmFsc2VcbiAgcm9vdE9yZ0lkOiBhbnlcbiAgY3VycmVudExhbmc6IGFueSA9ICdlbidcbiAgZGlzY3Vzc1dpZGdldERhdGEhOiBOc0Rpc2N1c3Npb25WMi5JQ29tbWVudFdpZGdldERhdGFcbiAgc2hvd1Byb3ZpZGVyVGlwcyA9IGZhbHNlXG4gIGZyb21NRE8gPSBmYWxzZVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlU2Nyb2xsKCkge1xuXG4gICAgaWYgKHRoaXMuc2Nyb2xsTGltaXQpIHtcbiAgICAgIGlmICgod2luZG93LnNjcm9sbFkgKyB0aGlzLnJjRWxlbS5Cb3R0b21Qb3MpID49IHRoaXMuc2Nyb2xsTGltaXQpIHtcbiAgICAgICAgdGhpcy5yY0VsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdzdGlja3knXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJjRWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJ1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDIzNi4uLiAoT2Zmc2V0VG9wIG9mIHJpZ2h0IGNvbnRhaW5lciArIDEwNClcbiAgICBpZiAod2luZG93LnNjcm9sbFkgPiAodGhpcy5yY0VsZW0ub2ZmU2V0VG9wICsgMTA0KSkge1xuICAgICAgdGhpcy5zY3JvbGxlZCA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zY3JvbGxlZCA9IGZhbHNlXG4gICAgfVxuICB9XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgY29tbW9uU3ZjOiBDb21tb25NZXRob2RzU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1N2YzogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRzOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsYW5ndHJhbnNsYXRpb25zOiBNdWx0aWxpbmd1YWxUcmFuc2xhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGVudFN2YzogV2lkZ2V0Q29udGVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZXJ0U3ZjOiBDZXJ0aWZpY2F0ZVNlcnZpY2UsXG4gICAgcHVibGljIGxvYWRlcjogTG9hZGVyU2VydmljZSxcbiAgICBwcml2YXRlIG1hdERpYWxvZzogTWF0RGlhbG9nLFxuICAgIHB1YmxpYyBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHVibGljIG5ldENvcmVTZXJ2aWNlOiBOZXRDb3JlU2VydmljZSxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIEBPcHRpb25hbCgpIHByaXZhdGUgZW52aXJvbm1lbnQ6IGFueVxuICApIHtcbiAgICB0aGlzLnJvdXRlLmRhdGEuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZW5yb2xsVmFsaWRhdGlvbkxvYWRpbmcgPSBmYWxzZVxuICAgICAgaWYgKGRhdGEgJiYgZGF0YS5leHRDb250ZW50ICYmIGRhdGEuZXh0Q29udGVudC5kYXRhICYmIGRhdGEuZXh0Q29udGVudC5kYXRhLmNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5leHRDb250ZW50UmVhZERhdGEgPSBkYXRhLmV4dENvbnRlbnQuZGF0YS5jb250ZW50XG4gICAgICAgIHRoaXMuZXh0Q29udGVudFJlYWREYXRhWydjZXJ0aWZpY2F0ZU9iaiddID0ge1xuICAgICAgICAgIGRhdGE6IHt9LFxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2tlbGV0b25Mb2FkZXIgPSBmYWxzZVxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmV4dENvbnRlbnRBdmFpbGFibGUgPSBmYWxzZVxuICAgICAgICB0aGlzLnNrZWxldG9uTG9hZGVyID0gZmFsc2VcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEgJiYgZGF0YS51c2VyRW5yb2xsQ29udGVudCAmJiBkYXRhLnVzZXJFbnJvbGxDb250ZW50LmRhdGEgJiYgZGF0YS51c2VyRW5yb2xsQ29udGVudC5kYXRhLnJlc3VsdCAmJlxuICAgICAgICBPYmplY3Qua2V5cyhkYXRhLnVzZXJFbnJvbGxDb250ZW50LmRhdGEucmVzdWx0KS5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgdGhpcy51c2VyRXh0Q291cnNlRW5yb2xsID0gZGF0YS51c2VyRW5yb2xsQ29udGVudC5kYXRhLnJlc3VsdFxuICAgICAgICBpZiAodGhpcy51c2VyRXh0Q291cnNlRW5yb2xsLmNvbXBsZXRpb25wZXJjZW50YWdlID09PSAxMDApIHtcbiAgICAgICAgICB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YVsnY29tcGxldGlvblN0YXR1cyddID0gMlxuXG4gICAgICAgICAgdGhpcy5kb3dubG9hZENlcnQoKVxuICAgICAgICAgIHRoaXMuY29udGVudFZpZXdFdmVudEZvck5ldENvcmUoJ2NvbXBsZXRpb24nKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbGlkYXRlRW5yb2xsbWVudEVsaWdpYmlsaXR5KClcbiAgICAgIH1cblxuICAgIH0pXG5cbiAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3dlYnNpdGVMYW5ndWFnZScpKSB7XG4gICAgICB0aGlzLnRyYW5zbGF0ZS5zZXREZWZhdWx0TGFuZygnZW4nKVxuICAgICAgdGhpcy5jdXJyZW50TGFuZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJzaXRlTGFuZ3VhZ2UnKSFcbiAgICAgIHRoaXMudHJhbnNsYXRlLnVzZSh0aGlzLmN1cnJlbnRMYW5nKVxuICAgIH1cbiAgICB0aGlzLmNvbmZpZ1N2Yy5sYW5ndWFnZVRyYW5zbGF0aW9uRmxhZy5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJzaXRlTGFuZ3VhZ2UnKSkge1xuICAgICAgICAgIHRoaXMuY3VycmVudExhbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnd2Vic2l0ZUxhbmd1YWdlJykhXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKHRoaXMuY3VycmVudExhbmcpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlKSB7XG4gICAgICB0aGlzLnJvb3RPcmdJZCA9IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnJvb3RPcmdJZFxuICAgIH1cbiAgICB0aGlzLmNvbnRlbnRMaW5rID0gYCR7d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygxKX0ke3dpbmRvdy5sb2NhdGlvbi5zZWFyY2h9YFxuXG4gICAgdGhpcy5jb21tZW50SWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zLmNvbW1lbnRJZCA/IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMuY29tbWVudElkIDogJydcbiAgICBpZiAodGhpcy5jb21tZW50SWQpIHtcbiAgICAgIC8vdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gMlxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEucGFnZURhdGEgJiYgdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLnBhZ2VEYXRhLmRhdGEpIHtcbiAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLnBhZ2VEYXRhLmRhdGFcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZURpc2N1c3NEYXRhKClcbiAgICB9XG4gICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDw9IDEyMDApIHtcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSBmYWxzZVxuICAgIH1cbiAgICB0aGlzLmNvbnRlbnRWaWV3RXZlbnRGb3JOZXRDb3JlKCd2aWV3JylcbiAgfVxuXG4gIGluaXRpYWxpemVEaXNjdXNzRGF0YSgpIHtcbiAgICBpZiAoIV8uZ2V0KHRoaXMuZXh0Q29udGVudFJlYWREYXRhLCAnY29udGVudFBhcnRuZXIuaXNBY3RpdmUnLCBmYWxzZSkpIHtcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbignQ291cnNlcyBmcm9tIHRoaXMgbGVhcm5pbmcgcGFydG5lciBhcmUgdGVtcG9yYXJpbHkgbm90IGF2YWlsYWJsZSBvbiBpR09UIEthcm1heW9naS4gT3VyIHRlYW0gaXMgdXBkYXRpbmcgcGFydG5lciBjb250ZW50LiBJbiB0aGUgbWVhbnRpbWUsIHlvdSBjYW4gY29udGludWUgeW91ciBqb3VybmV5IHdpdGggY291cnNlcyBmcm9tIG90aGVyIHBhcnRuZXJzLicsICdYJywge1xuICAgICAgICBkdXJhdGlvbjogMTAwMDAsXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAoIV8uZ2V0KHRoaXMuZXh0Q29udGVudFJlYWREYXRhLCAnaXNBY3RpdmUnLCBmYWxzZSkpIHtcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbignVGhpcyBjb3Vyc2UgaXMgbm8gbG9uZ2VyIGJlaW5nIG9mZmVyZWQgaW4gaXRzIGN1cnJlbnQgZm9ybS4gV2UgYXJlIHVwZGF0aW5nIG91ciBjYXRhbG9nIHRvIGJyaW5nIHlvdSBpbXByb3ZlZCBsZWFybmluZyBvcHRpb25zLiBQbGVhc2UgY2hvb3NlIGFub3RoZXIgY291cnNlIHdpdGggc2ltaWxhciB0b3BpY3Mgb3IgYnJvd3NlIHJlY29tbWVuZGVkIGNvdXJzZXMuJywgJ1gnLCB7XG4gICAgICAgIGR1cmF0aW9uOiAxMDAwMCxcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5kaXNjdXNzV2lkZ2V0RGF0YSkge1xuICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YSA9IHRoaXMuY29uZmlnLmRpc2N1c3NXaWRnZXREYXRhXG4gICAgICBpZiAodGhpcy5leHRDb250ZW50UmVhZERhdGEgJiYgdGhpcy5leHRDb250ZW50UmVhZERhdGEuY29udGVudElkKSB7XG4gICAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEubmV3Q29tbWVudFNlY3Rpb24uY29tbWVudFRyZWVEYXRhLmVudGl0eUlkID0gdGhpcy5leHRDb250ZW50UmVhZERhdGEuY29udGVudElkXG4gICAgICAgIGlmICh0aGlzLmRpc2N1c3NXaWRnZXREYXRhLmNvbW1lbnRzTGlzdC5yZXBsaWVzU2VjdGlvbiAmJiB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLmNvbW1lbnRzTGlzdC5yZXBsaWVzU2VjdGlvbi5uZXdDb21tZW50UmVwbHkpIHtcbiAgICAgICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLmNvbW1lbnRzTGlzdC5yZXBsaWVzU2VjdGlvbi5uZXdDb21tZW50UmVwbHkuY29tbWVudFRyZWVEYXRhLmVudGl0eUlkID0gdGhpcy5leHRDb250ZW50UmVhZERhdGEuY29udGVudElkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMud2lkZ2V0RGF0YSA9IHtcbiAgICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgICAgIHR5cGU6ICd0aXBzJyxcbiAgICAgICAgY2FyZENsYXNzOiAnc2xpZGVyLWNvbnRhaW5lcicsXG4gICAgICAgIGhlaWdodDogJ2F1dG8nLFxuICAgICAgICBzbGlkZXJEYXRhOiBfLmdldCh0aGlzLmV4dENvbnRlbnRSZWFkRGF0YSwgJ2NvbnRlbnRQYXJ0bmVyLnByb3ZpZGVyVGlwcycsIFtdKVxuICAgICAgfVxuICAgICAgdGhpcy5zaG93UHJvdmlkZXJUaXBzID0gKHRoaXMud2lkZ2V0RGF0YSAmJiB0aGlzLndpZGdldERhdGEuc2xpZGVyRGF0YT8ubGVuZ3RoKSAmJlxuICAgICAgICAoT2JqZWN0LmtleXModGhpcy51c2VyRXh0Q291cnNlRW5yb2xsKS5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgKHRoaXMudXNlckV4dENvdXJzZUVucm9sbD8uaXNzdWVkX2NlcnRpZmljYXRlcz8ubGVuZ3RoID09PSAwICYmXG4gICAgICAgIHRoaXMudXNlckV4dENvdXJzZUVucm9sbD8ucHJvZ3Jlc3MgPD0gMTAwKSlcblxuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMudXNlckV4dENvdXJzZUVucm9sbCkubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEuZW5yb2xsZWRDb250ZW50ID0gdHJ1ZVxuICAgICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLm5ld0NvbW1lbnRTZWN0aW9uLmNvbW1lbnRCb3gucGxhY2Vob2xkZXIgPSAnU3RhcnQgYSBkaXNjdXNzaW9uJ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5lbnJvbGxlZENvbnRlbnQgPSBmYWxzZVxuICAgICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhLm5ld0NvbW1lbnRTZWN0aW9uLmNvbW1lbnRCb3gucGxhY2Vob2xkZXIgPSAnRW5yb2wgdG8gYWRkIHlvdXIgY29tbWVudHMnXG4gICAgICB9XG4gICAgICB0aGlzLmRpc2N1c3NXaWRnZXREYXRhID0geyAuLi50aGlzLmRpc2N1c3NXaWRnZXREYXRhIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVDYXBpdGFsaXplKHN0cjogc3RyaW5nLCB0eXBlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb21tb25TdmMuaGFuZGxlQ2FwaXRhbGl6ZShzdHIsIHR5cGUpXG4gIH1cblxuICB0cmFuc2xhdGVMYWJlbHMobGFiZWw6IHN0cmluZywgdHlwZTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMubGFuZ3RyYW5zbGF0aW9ucy50cmFuc2xhdGVMYWJlbChsYWJlbCwgdHlwZSwgJycpXG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMucmNFbGVtZW50KSB7XG4gICAgICB0aGlzLnJjRWxlbS5Cb3R0b21Qb3MgPSB0aGlzLnJjRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcCArIHRoaXMucmNFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0XG4gICAgICB0aGlzLnJjRWxlbS5vZmZTZXRUb3AgPSB0aGlzLnJjRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcFxuICAgIH1cbiAgfVxuICByZWRpcmVjdFRvQ29udGVudChjb250ZW50RGF0YTogYW55KSB7XG4gICAgY29uc3QgdXNlckRhdGE6IGFueSA9IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlVjJcbiAgICBjb25zdCBleHRVcmw6IHN0cmluZyA9IGNvbnRlbnREYXRhLnJlZGlyZWN0VXJsLnJlcGxhY2UoJzx1c2VybmFtZT4nLCB1c2VyRGF0YS5lbWFpbClcbiAgICByZXR1cm4gZXh0VXJsXG4gIH1cbiAgcmVwbGFjZVRleHQoc3RyOiBhbnksIHJlcGxhY2VUeHQ6IGFueSkge1xuICAgIHJldHVybiBzdHIucmVwbGFjZUFsbChyZXBsYWNlVHh0LCAnJylcbiAgfVxuXG4gIGZvcm1hdGNvdXJzZVByb3ZpZGVycyhwcm92aWRlcnM6IGFueVtdKTogc3RyaW5nIHtcbiAgICBpZiAoIXByb3ZpZGVycyB8fCAhQXJyYXkuaXNBcnJheShwcm92aWRlcnMpKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gICAgcmV0dXJuIHByb3ZpZGVycy5tYXAoKHByb3ZpZGVyOiBhbnkpID0+IHByb3ZpZGVyLm5hbWUpLmpvaW4oJywgJylcbiAgfVxuXG4gIGFzeW5jIGVuUm9sbFRvRXh0Q291cnNlKGNvbnRlbnQ6IGFueSkge1xuICAgIGNvbnN0IGNvbnNlbnRVcmw6IHN0cmluZyA9IGAke3RoaXMuZW52aXJvbm1lbnQ/Lm1pc3Npb25LYXJtYXlvZ2lQYXRofSR7dGhpcy5jb25maWc/LmNvbnRlbnRDb25zZW50Py5jb25zZW50RG9jVXJsfWAgfHwgJydcbiAgICBjb25zdCBhc3NldHNEb2NVcmw6IHN0cmluZyA9IGAke3RoaXMuY29uZmlnPy5jb250ZW50Q29uc2VudD8uYXNzZXRzRG9jVXJsfWAgfHwgJydcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLm1hdERpYWxvZy5vcGVuKENvbnNlbnREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnOTAwcHgnLFxuICAgICAgaGVpZ2h0OiAnNzB2aCcsXG4gICAgICBtYXhIZWlnaHQ6ICc5MHZoJyxcbiAgICAgIG1pbkhlaWdodDogJzQwMHB4JyxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgcGFuZWxDbGFzczogJ2NvbnNlbnQtZGlhbG9nLXBhbmVsJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgY29uc2VudFVybDogY29uc2VudFVybCxcbiAgICAgICAgYXNzZXRzRG9jVXJsOiBhc3NldHNEb2NVcmxcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgLy8gSGFuZGxlIGRpYWxvZyBjbG9zZVxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgIC8vIFVzZXIgYWdyZWVkIC0gcHJvY2VlZCB3aXRoIGVucm9sbG1lbnRcbiAgICAgICAgLy8gbmVlZCB0byBjYWxsIGNvbnNlbnQgYXBpXG4gICAgICAgIHRoaXMuY2FsbENvbnNlbnRBcGkoY29udGVudClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFVzZXIgZGlzYWdyZWVkXG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignWW91IG11c3QgYWdyZWUgdG8gdGhlIHRlcm1zIHRvIGVucm9sbCBpbiB0aGlzIGNvdXJzZS4nLCAnWCcsIHtcbiAgICAgICAgICBkdXJhdGlvbjogNTAwMCxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgY2FsbENvbnNlbnRBcGkoY29udGVudDogYW55KSB7XG4gICAgY29uc29sZS5sb2coY29udGVudClcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgXCJyZXF1ZXN0XCI6IHtcbiAgICAgICAgXCJjb250ZW50SWRcIjogY29udGVudD8uY29udGVudElkLFxuICAgICAgICBcImNvbnNlbnRJZFwiOiB0aGlzLmNvbmZpZz8uY29udGVudENvbnNlbnQ/LmNvbnNlbnRJZCB8fCAnJyxcbiAgICAgICAgXCJhZGRpdGlvbmFsQXR0cmlidXRlc1wiOiB7XG4gICAgICAgICAgXCJ1c2VyUm9sZXNcIjogW1wicHVibGljXCJdLFxuICAgICAgICAgIFwidmVyc2lvbktleVwiOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiSSBoYXZlIHJlYWQgYW5kIGFncmVlIHdpdGggdGhlIGFib3ZlIGRlY2xhcmF0aW9uLlwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNlcnRTdmMuY29uc2VudFN1Ym1pdChyZXF1ZXN0KS5zdWJzY3JpYmUoKF9yZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5wcm9jZWVkV2l0aEVucm9sbG1lbnQoY29udGVudClcbiAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGVycm9yPy5lcnJvcj8ucGFyYW1zPy5tc2cgfHwgJ1VuYWJsZSB0byBzdWJtaXQgY29uc2VudCcsICdYJywge1xuICAgICAgICBkdXJhdGlvbjogNTAwMCxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuICBwcml2YXRlIGFzeW5jIHByb2NlZWRXaXRoRW5yb2xsbWVudChjb250ZW50OiBhbnkpIHtcbiAgICB0aGlzLmxvYWRlci5jaGFuZ2VMb2FkLm5leHQodHJ1ZSlcbiAgICBjb25zdCByZXFib2R5ID0ge1xuICAgICAgY291cnNlSWQ6IGNvbnRlbnQuY29udGVudElkLFxuICAgICAgcGFydG5lcklkOiBjb250ZW50LmNvbnRlbnRQYXJ0bmVyLmlkLFxuICAgIH1cbiAgICBjb25zdCBlbnJvbGxSZXMgPSBhd2FpdCB0aGlzLmNvbnRlbnRTdmMuZXh0Q29udGVudEVucm9sbChyZXFib2R5KS50b1Byb21pc2UoKS5jYXRjaChfZXJyb3IgPT4geyByZXR1cm4gX2Vycm9yIH0pXG4gICAgaWYgKGVucm9sbFJlcyAmJiBlbnJvbGxSZXMucmVzdWx0ICYmIE9iamVjdC5rZXlzKGVucm9sbFJlcy5yZXN1bHQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZGlzY3Vzc1dpZGdldERhdGEuZW5yb2xsZWRDb250ZW50ID0gdHJ1ZVxuICAgICAgdGhpcy5kaXNjdXNzV2lkZ2V0RGF0YS5uZXdDb21tZW50U2VjdGlvbi5jb21tZW50Qm94LnBsYWNlaG9sZGVyID0gJ1N0YXJ0IGEgZGlzY3Vzc2lvbidcbiAgICAgIHRoaXMuZ2V0VXNlckNvbnRlbnRFbnJvbGwoY29udGVudC5jb250ZW50SWQpXG4gICAgICB0aGlzLmNvbnRlbnRWaWV3RXZlbnRGb3JOZXRDb3JlKCdlbnJvbGwnKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvYWRlci5jaGFuZ2VMb2FkLm5leHQoZmFsc2UpXG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oZW5yb2xsUmVzPy5lcnJvcj8ucGFyYW1zPy5tc2cgfHwgJ1VuYWJsZSB0byBlbnJvbGwgdG8gdGhlIGNvbnRlbnQnLCAnWCcsIHtcbiAgICAgICAgZHVyYXRpb246IDEwMDAwLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRVc2VyQ29udGVudEVucm9sbChjb250ZW50SWQ6IGFueSkge1xuICAgIGNvbnN0IGVucm9sbFJlcyA9IGF3YWl0IHRoaXMuY29udGVudFN2Yy5mZXRjaEV4dFVzZXJDb250ZW50RW5yb2xsKGNvbnRlbnRJZCkudG9Qcm9taXNlKCkuY2F0Y2goX2Vycm9yID0+IHsgfSlcbiAgICBpZiAoZW5yb2xsUmVzICYmIGVucm9sbFJlcy5yZXN1bHQgJiYgT2JqZWN0LmtleXMoZW5yb2xsUmVzLnJlc3VsdCkubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy51c2VyRXh0Q291cnNlRW5yb2xsID0gZW5yb2xsUmVzLnJlc3VsdFxuICAgICAgdGhpcy5sb2FkZXIuY2hhbmdlTG9hZC5uZXh0KGZhbHNlKVxuICAgICAgdGhpcy50ZWxlbWV0cnlUb0NhcHR1cmVJbnRlcmFjdChjb250ZW50SWQsICdlbnJvbGwnLCAnZW5yb2wtY29udGVudCcpXG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1N1Y2Nlc3NmdWxseSBlbnJvbGxlZCBpbiB0aGUgY291cnNlLicpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9hZGVyLmNoYW5nZUxvYWQubmV4dChmYWxzZSlcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbignVW5hYmxlIHRvIGdldCB0aGUgZW5yb2xsZWQgZGV0YWlscycpXG4gICAgfVxuICB9XG5cbiAgY2FwdHVyZVJlZGlyZWN0VGVsZW1ldHJ5KGNvbnRlbnQ6IGFueSkge1xuICAgIHRoaXMucmFpc2VUZWxlbXRyeVN0YXJ0RXZlbnQoKVxuICAgIHRoaXMudGVsZW1ldHJ5VG9DYXB0dXJlSW50ZXJhY3QoY29udGVudC5jb250ZW50SWQsICdyZWRpcmVjdCcsICdyZWRpcmVjdC1jb250ZW50JylcbiAgICB0aGlzLnJhaXNlVGVsZW10cnlFbmRFdmVudCgpXG4gIH1cblxuICByYWlzZVRlbGVtdHJ5U3RhcnRFdmVudCgpIHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXG4gICAgICBmcm9tOiAndGVzdCcsXG4gICAgICB0bzogJycsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGVkYXRhOiB7IHR5cGU6ICcnIH0sXG4gICAgICAgIG9iamVjdDoge30sXG4gICAgICAgIHN0YXRlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5Mb2FkZWQsXG4gICAgICAgIHR5cGU6ICdzZXNzaW9uJyxcbiAgICAgICAgbW9kZTogJ3ZpZXcnLFxuICAgICAgfSxcbiAgICB9XG4gICAgdGhpcy5ldmVudHMuZGlzcGF0Y2hFdmVudChldmVudClcblxuICB9XG5cbiAgdGVsZW1ldHJ5VG9DYXB0dXJlSW50ZXJhY3QoY29udGVudElkOiBhbnksIHN1YlR5cGU6IGFueSwgaWQ6IGFueSkge1xuICAgIHRoaXMuZXZlbnRzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdjbGljaycsXG4gICAgICAgIHN1YlR5cGUsXG4gICAgICAgIGlkOiBpZCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiBjb250ZW50SWQsXG4gICAgICAgIHR5cGU6ICdFeHRlcm5hbCBjb250ZW50JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG1vZHVsZTogJ0hvbWUnLFxuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIHJhaXNlVGVsZW10cnlFbmRFdmVudCgpIHtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXG4gICAgICBmcm9tOiAndGVzdCcsXG4gICAgICB0bzogJycsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGVkYXRhOiB7IHR5cGU6ICcnIH0sXG4gICAgICAgIG9iamVjdDoge30sXG4gICAgICAgIHN0YXRlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5VbmxvYWRlZCxcbiAgICAgICAgdHlwZTogJ3Nlc3Npb24nLFxuICAgICAgICBtb2RlOiAndmlldycsXG4gICAgICB9LFxuICAgIH1cbiAgICB0aGlzLmV2ZW50cy5kaXNwYXRjaEV2ZW50KGV2ZW50KVxuICB9XG5cbiAgYXN5bmMgZG93bmxvYWRDZXJ0KCkge1xuICAgIHRoaXMuZG93bmxvYWRDZXJ0aWZpY2F0ZUxvYWRpbmcgPSB0cnVlXG4gICAgY29uc3QgY2VydFJlczogYW55ID0gYXdhaXRcbiAgICAgIHRoaXMuY2VydFN2Yy5kb3dubG9hZENlcnRpZmljYXRlX3YyKHRoaXMudXNlckV4dENvdXJzZUVucm9sbC5pc3N1ZWRfY2VydGlmaWNhdGVzWzBdLmlkZW50aWZpZXIpLnRvUHJvbWlzZSgpLmNhdGNoKF9lcnJvciA9PiB7IH0pXG4gICAgaWYgKGNlcnRSZXMgJiYgT2JqZWN0LmtleXMoY2VydFJlcy5yZXN1bHQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZG93bmxvYWRDZXJ0aWZpY2F0ZUxvYWRpbmcgPSBmYWxzZVxuICAgICAgaWYgKHRoaXMudXNlckV4dENvdXJzZUVucm9sbC5pc3N1ZWRfY2VydGlmaWNhdGVzICYmIHRoaXMudXNlckV4dENvdXJzZUVucm9sbC5pc3N1ZWRfY2VydGlmaWNhdGVzLmxlbmd0aFxuICAgICAgICAmJiB0aGlzLnVzZXJFeHRDb3Vyc2VFbnJvbGwuaXNzdWVkX2NlcnRpZmljYXRlc1swXSkge1xuICAgICAgICB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YVsnY2VydGlmaWNhdGVPYmonXSA9IHtcbiAgICAgICAgICBkYXRhOiB0aGlzLnVzZXJFeHRDb3Vyc2VFbnJvbGwuaXNzdWVkX2NlcnRpZmljYXRlc1swXSxcbiAgICAgICAgICBjZXJ0RGF0YTogY2VydFJlcy5yZXN1bHQucHJpbnRVcmksXG4gICAgICAgICAgY2VydElkOiB0aGlzLnVzZXJFeHRDb3Vyc2VFbnJvbGwuaXNzdWVkX2NlcnRpZmljYXRlc1swXS5pZGVudGlmaWVyLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZG93bmxvYWRDZXJ0aWZpY2F0ZUxvYWRpbmcgPSBmYWxzZVxuICAgIH1cbiAgfVxuICBvbkNsaWNrT2ZTaGFyZSgpIHtcbiAgICB0aGlzLmVuYWJsZVNoYXJlID0gdHJ1ZVxuICAgIC8vdGhpcy5yYWlzZVRlbGVtZXRyeUZvclNoYXJlKCdzaGFyZUNvbnRlbnQnKVxuICB9XG5cbiAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgLy8gcmFpc2VUZWxlbWV0cnlGb3JTaGFyZShzdWJUeXBlOiBhbnkpIHtcbiAgLy8gICAvL2NvbnNvbGUubG9nKHRoaXMuZXh0Q29udGVudFJlYWREYXRhLCB0aGlzLmV2ZW50cywgc3ViVHlwZSlcbiAgLy8gICAvLyB0aGlzLmV2ZW50cy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KFxuICAvLyAgIC8vIHtcbiAgLy8gICAvLyAgIHR5cGU6ICdjbGljaycsXG4gIC8vICAgLy8gICBzdWJUeXBlLFxuICAvLyAgIC8vICAgaWQ6IHRoaXMuY29udGVudCA/IHRoaXMuY29udGVudC5pZGVudGlmaWVyIDogJycsXG4gIC8vICAgLy8gfSxcbiAgLy8gICAvLyB7XG4gIC8vICAgLy8gICBpZDogdGhpcy5jb250ZW50ID8gdGhpcy5jb250ZW50LmlkZW50aWZpZXIgOiAnJyxcbiAgLy8gICAvLyAgIHR5cGU6IHRoaXMuY29udGVudCA/IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgOiAnJyxcbiAgLy8gICAvLyB9LFxuICAvLyAgIC8vIHtcbiAgLy8gICAvLyAgIHBhZ2VJZEV4dDogYGJ0bi0ke3N1YlR5cGV9YCxcbiAgLy8gICAvLyAgIG1vZHVsZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeW1vZHVsZXMuQ09OVEVOVCxcbiAgLy8gICAvLyB9XG4gIC8vICAgLy8gKVxuICAvLyB9XG5cbiAgcmVzZXRFbmFibGVTaGFyZShfZXZlbnREYXRhOiBhbnkpIHtcblxuICAgIHRoaXMuZW5hYmxlU2hhcmUgPSBmYWxzZVxuICB9XG5cbiAgY29udGVudFZpZXdFdmVudEZvck5ldENvcmUoZXZlbnRUeXBlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5jb25maWdTdmMubmV0Y29yZUNvbmZpZyAmJiB0aGlzLmNvbmZpZ1N2Yy5uZXRjb3JlQ29uZmlnLm5ldGNvcmVXZWJDb25maWcgIC8vIE5PU09OQVJcbiAgICAgICYmIHRoaXMuY29uZmlnU3ZjLm5ldGNvcmVDb25maWcubmV0Y29yZVdlYkNvbmZpZy5pc0FjdGl2ZSAvLyBOT1NPTkFSXG4gICAgICAmJiB0aGlzLmNvbmZpZ1N2Yy5uZXRjb3JlQ29uZmlnLm5ldGNvcmVXZWJDb25maWcuZXZlbnRzIC8vIE5PU09OQVJcbiAgICAgICYmIHRoaXMuY29uZmlnU3ZjLm5ldGNvcmVDb25maWcubmV0Y29yZVdlYkNvbmZpZy5ldmVudHMuY29udGVudF92aWV3IC8vIE5PU09OQVJcbiAgICAgICYmIHRoaXMuY29uZmlnU3ZjLm5ldGNvcmVDb25maWcubmV0Y29yZVdlYkNvbmZpZy5ldmVudHMuY29udGVudF92aWV3LmlzQWN0aXZlIC8vIE5PU09OQVJcbiAgICApIHtcbiAgICAgIGxldCBwYXlsb2FkOiBhbnkgPSB7fVxuICAgICAgLy8gaWYgKHRoaXMuY29uZmlnU3ZjICYmIHRoaXMuY29uZmlnU3ZjLnVuTWFwcGVkVXNlciAmJiB0aGlzLmNvbmZpZ1N2Yy51bk1hcHBlZFVzZXIuaWRlbnRpZmllcikgeyAvLyBOT1NPTkFSXG4gICAgICAvLyAgIHBheWxvYWRbJ3BrXnVzZXJpZCddID0gdGhpcy5jb25maWdTdmMudW5NYXBwZWRVc2VyLmlkZW50aWZpZXIudHJpbSgpLnRvTG93ZXJDYXNlKClcbiAgICAgIC8vIH1cbiAgICAgIC8vIGNvbnNvbGUubG9nKCdwYXlsb2FkJywgcGF5bG9hZClcbiAgICAgIGlmICh0aGlzLmV4dENvbnRlbnRSZWFkRGF0YSAmJiB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5uYW1lKSB7XG4gICAgICAgIHBheWxvYWRbJ2NvbnRlbnRfbmFtZSddID0gdGhpcy5leHRDb250ZW50UmVhZERhdGEubmFtZVxuICAgICAgfVxuICAgICAgLy8gaWYodGhpcy5leHRDb250ZW50UmVhZERhdGEgJiYgdGhpcy5leHRDb250ZW50UmVhZERhdGEuY291cnNlQ2F0ZWdvcnkpIHtcbiAgICAgIHBheWxvYWRbJ2NvbnRlbnRfY2F0ZWdvcnknXSA9ICdFeHRlcm5hbCBDb3Vyc2UnXG4gICAgICAvLyB9XG4gICAgICBpZiAodGhpcy5leHRDb250ZW50UmVhZERhdGEgJiYgdGhpcy5leHRDb250ZW50UmVhZERhdGEuZXh0ZXJuYWxJZCkge1xuICAgICAgICBwYXlsb2FkWydjb250ZW50X2lkJ10gPSB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5leHRlcm5hbElkXG4gICAgICB9XG4gICAgICAvLyBpZih0aGlzLmV4dENvbnRlbnRSZWFkRGF0YSAmJiB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5uYW1lKSB7XG4gICAgICBwYXlsb2FkWydjb250ZW50X3VybCddID0gd2luZG93LmxvY2F0aW9uLmhyZWZcbiAgICAgIC8vIH1cbiAgICAgIGlmICh0aGlzLmV4dENvbnRlbnRSZWFkRGF0YSAmJiB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5hcHBJY29uKSB7XG4gICAgICAgIHBheWxvYWRbJ2NvbnRlbnRfaW1hZ2UnXSA9IHRoaXMuZXh0Q29udGVudFJlYWREYXRhLmFwcEljb25cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmV4dENvbnRlbnRSZWFkRGF0YSAmJiB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5kdXJhdGlvbikge1xuICAgICAgICBwYXlsb2FkWydjb250ZW50X2R1cmF0aW9uJ10gPSB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5kdXJhdGlvbiAmJiBOdW1iZXIodGhpcy5leHRDb250ZW50UmVhZERhdGEuZHVyYXRpb24pID4gMCA/IE51bWJlcih0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5kdXJhdGlvbikgOiAwXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXlsb2FkWydjb250ZW50X2R1cmF0aW9uJ10gPSAwXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5leHRDb250ZW50UmVhZERhdGEgJiYgdGhpcy5leHRDb250ZW50UmVhZERhdGEuYXZnUmF0aW5nXG4gICAgICApIHtcbiAgICAgICAgcGF5bG9hZFsnY29udGVudF9yYXRpbmcnXSA9IHRoaXMuZXh0Q29udGVudFJlYWREYXRhLmF2Z1JhdGluZ1xuICAgICAgICBwYXlsb2FkWydjb250ZW50IHJhdGluZyddID0gdGhpcy5leHRDb250ZW50UmVhZERhdGEuYXZnUmF0aW5nXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5leHRDb250ZW50UmVhZERhdGEgJiYgdGhpcy5leHRDb250ZW50UmVhZERhdGEudG90YWxOb09mUmF0aW5nKSB7XG4gICAgICAgIHBheWxvYWRbJ25vX3VzZXJzX3JhdGVkJ10gPSB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS50b3RhbE5vT2ZSYXRpbmdcbiAgICAgIH1cbiAgICAgIC8vIGlmKE9iamVjdC5rZXlzKHRoaXMudXNlckV4dENvdXJzZUVucm9sbCkubGVuZ3RoKSB7XG4gICAgICBwYXlsb2FkWydsZWFybmluZ19wYXRoX2NvbnRlbnQnXSA9IE9iamVjdC5rZXlzKHRoaXMudXNlckV4dENvdXJzZUVucm9sbCkubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlXG4gICAgICBwYXlsb2FkWydsZWFybmluZyBwYXRoIGNvbnRlbnQnXSA9IE9iamVjdC5rZXlzKHRoaXMudXNlckV4dENvdXJzZUVucm9sbCkubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAvLyB9XG4gICAgICBpZiAodGhpcy5leHRDb250ZW50UmVhZERhdGEgJiYgdGhpcy5leHRDb250ZW50UmVhZERhdGEuc291cmNlKSB7XG4gICAgICAgIHBheWxvYWRbJ2NvbnRlbnRfcHJvdmlkZXJfbmFtZSddID0gdGhpcy5leHRDb250ZW50UmVhZERhdGEuc291cmNlXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZXh0Q29udGVudFJlYWREYXRhICYmIHRoaXMuZXh0Q29udGVudFJlYWREYXRhLmNvbnRlbnRQYXJ0bmVyICYmXG4gICAgICAgIHRoaXMuZXh0Q29udGVudFJlYWREYXRhLmNvbnRlbnRQYXJ0bmVyLmNvbnRlbnRQYXJ0bmVyTmFtZVxuICAgICAgKSB7XG4gICAgICAgIHBheWxvYWRbJ2NvbnRlbnRfcHJvdmlkZXJfbmFtZSddID0gdGhpcy5leHRDb250ZW50UmVhZERhdGEuY29udGVudFBhcnRuZXIuY29udGVudFBhcnRuZXJOYW1lXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXlsb2FkWydjb250ZW50X3Byb3ZpZGVyX25hbWUnXSA9ICdLYXJtYXlvZ2kgQmhhcmF0J1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50VHlwZSA9PT0gJ3ZpZXcnKSB7XG4gICAgICAgIHRoaXMubmV0Q29yZVNlcnZpY2UudHJhY2tFdmVudEZvckNvbnRlbnRBbmRFdmVudCgnY29udGVudF92aWV3JywgdGhpcy5jb25maWdTdmMudW5NYXBwZWRVc2VyLmlkZW50aWZpZXIudHJpbSgpLnRvTG93ZXJDYXNlKCksIHBheWxvYWQpXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2Vucm9sbCcpIHtcbiAgICAgICAgdGhpcy5uZXRDb3JlU2VydmljZS50cmFja0V2ZW50Rm9yQ29udGVudEFuZEV2ZW50KCdjb250ZW50X2Vucm9sbWVudCcsIHRoaXMuY29uZmlnU3ZjLnVuTWFwcGVkVXNlci5pZGVudGlmaWVyLnRyaW0oKS50b0xvd2VyQ2FzZSgpLCBwYXlsb2FkKVxuICAgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdjb21wbGV0aW9uJykge1xuICAgICAgICB0aGlzLm5ldENvcmVTZXJ2aWNlLnRyYWNrRXZlbnRGb3JDb250ZW50QW5kRXZlbnQoJ2NvbnRlbnRfY29tcGxldGlvbicsIHRoaXMuY29uZmlnU3ZjLnVuTWFwcGVkVXNlci5pZGVudGlmaWVyLnRyaW0oKS50b0xvd2VyQ2FzZSgpLCBwYXlsb2FkKVxuICAgICAgfVxuXG4gICAgfVxuICB9XG5cbiAgc2Vjb25kc1RvVGltZShkOiBhbnkpIHtcbiAgICBkID0gTnVtYmVyKGQpXG4gICAgdmFyIGggPSBNYXRoLmZsb29yKGQgLyAzNjAwKVxuICAgIHZhciBtID0gTWF0aC5mbG9vcihkICUgMzYwMCAvIDYwKVxuICAgIHZhciBzID0gTWF0aC5mbG9vcihkICUgMzYwMCAlIDYwKVxuXG4gICAgdmFyIGhEaXNwbGF5ID0gaCA+IDAgPyBoICsgKGggPT0gMSA/IFwiIGhvdXIsIFwiIDogXCIgaG91cnMsIFwiKSA6IFwiXCJcbiAgICB2YXIgbURpc3BsYXkgPSBtID4gMCA/IG0gKyAobSA9PSAxID8gXCIgbWludXRlLCBcIiA6IFwiIG1pbnV0ZXMsIFwiKSA6IFwiXCJcbiAgICB2YXIgc0Rpc3BsYXkgPSBzID4gMCA/IHMgKyAocyA9PSAxID8gXCIgc2Vjb25kXCIgOiBcIiBzZWNvbmRzXCIpIDogXCJcIlxuICAgIHJldHVybiBoRGlzcGxheSArIG1EaXNwbGF5ICsgc0Rpc3BsYXlcbiAgfVxuXG4gIGNsZWFyQ29tbWVudElkRnJvbVVybCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UXVlcnlQYXJhbXMgPSB7IC4uLnRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMgfVxuICAgIGRlbGV0ZSBjdXJyZW50UXVlcnlQYXJhbXMuY29tbWVudElkXG4gICAgdGhpcy5jb21tZW50SWQgPSAnJ1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUVucm9sbG1lbnRFbGlnaWJpbGl0eSgpOiB2b2lkIHtcbiAgICAvLyBPbmx5IHZhbGlkYXRlIGlmIHVzZXIgaXMgbm90IGFscmVhZHkgZW5yb2xsZWQgYW5kIGNvbnRlbnQgaXMgYXZhaWxhYmxlXG4gICAgaWYgKE9iamVjdC5rZXlzKHRoaXMudXNlckV4dENvdXJzZUVucm9sbCkubGVuZ3RoID09PSAwICYmIHRoaXMuZXh0Q29udGVudFJlYWREYXRhICYmIHRoaXMuZXh0Q29udGVudFJlYWREYXRhLmNvbnRlbnRJZCAmJiB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5jb250ZW50UGFydG5lciAmJiB0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5jb250ZW50UGFydG5lci5pZCkge1xuICAgICAgdGhpcy5lbnJvbGxWYWxpZGF0aW9uTG9hZGluZyA9IHRydWVcbiAgICAgIHRoaXMuY2VydFN2Yy52YWxpZGF0ZUVucm9sbG1lbnRFbGlnaWJpbGl0eSh0aGlzLmV4dENvbnRlbnRSZWFkRGF0YS5jb250ZW50SWQsIHRoaXMuZXh0Q29udGVudFJlYWREYXRhLmNvbnRlbnRQYXJ0bmVyLmlkKS5zdWJzY3JpYmUoXG4gICAgICAgIChfcmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZW5yb2xsVmFsaWRhdGlvbkxvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgIHRoaXMuY2FuRW5yb2xsID0gdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihlcnJvcj8uZXJyb3I/LnBhcmFtcz8ubXNnIHx8ICdVbmFibGUgdG8gdmFsaWRhdGUgZW5yb2xsbWVudCBlbGlnaWJpbGl0eScsICdYJywge1xuICAgICAgICAgICAgZHVyYXRpb246IDEwMDAwLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgdGhpcy5lbnJvbGxWYWxpZGF0aW9uTG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgdGhpcy5jYW5FbnJvbGwgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuICB9XG4gIHNob3dCYWRnZUljb24oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYmFkZ2VEZXRhaWxzID0gdGhpcy5leHRDb250ZW50UmVhZERhdGE/LmJhZGdlRGV0YWlsc192MVxuICAgIGlmICghYmFkZ2VEZXRhaWxzIHx8ICFiYWRnZURldGFpbHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgY29uc3QgYmFkZ2UgPSBiYWRnZURldGFpbHNbMF1cbiAgICAvLyBJZiBiYWRnZUVhcm5pbmdEYXRlRW5hYmxlZCBpcyBmYWxzZSwgZG9uJ3Qgc2hvdyBiYWRnZVxuICAgIGlmICghYmFkZ2UuYmFkZ2VFYXJuaW5nRGF0ZUVuYWJsZWQpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIC8vIElmIGJhZGdlRWFybmluZ0RhdGVFbmFibGVkIGlzIHRydWUsIHNob3cgYmFkZ2Ugb25seSBpZiBiYWRnZUVhcm5pbmdEYXRlVGltZSBoYXMgcGFzc2VkXG4gICAgaWYgKGJhZGdlPy5iYWRnZUVhcm5pbmdEYXRlRW5hYmxlZCAmJiBiYWRnZT8uYmFkZ2VFYXJuaW5nRGF0ZVRpbWUpIHtcbiAgICAgIGNvbnNvbGUubG9nKGJhZGdlLmJhZGdlRWFybmluZ0RhdGVUaW1lLCBEYXRlLm5vdygpKVxuICAgICAgcmV0dXJuIGJhZGdlLmJhZGdlRWFybmluZ0RhdGVUaW1lID4gRGF0ZS5ub3coKVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBnZXQgc2hvd0Vucm9sbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy51c2VyRXh0Q291cnNlRW5yb2xsKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICF0aGlzLmVucm9sbFZhbGlkYXRpb25Mb2FkaW5nICYmXG4gICAgICB0aGlzLmNhbkVucm9sbCAmJlxuICAgICAgXy5nZXQodGhpcy5leHRDb250ZW50UmVhZERhdGEsICdjb250ZW50UGFydG5lci5pc0FjdGl2ZScsIGZhbHNlKVxuICB9XG5cbiAgZ2V0IHNob3dSZWRpcmVjdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy51c2VyRXh0Q291cnNlRW5yb2xsKS5sZW5ndGggPiAwICYmXG4gICAgICBfLmdldCh0aGlzLmV4dENvbnRlbnRSZWFkRGF0YSwgJ3JlZGlyZWN0VXJsJykgJiZcbiAgICAgIF8uZ2V0KHRoaXMuZXh0Q29udGVudFJlYWREYXRhLCAnY29udGVudFBhcnRuZXIuaXNBY3RpdmUnLCBmYWxzZSlcbiAgfVxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZXh0Q29udGVudEF2YWlsYWJsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0b2MtYmFubmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC02IGZpeGVkLXdpZHRoXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyLWRldGFpbHMgdG9jLWNvbnRlbnRcIiAjYmFubmVyRGV0YWlscz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzEzMnB4J1wiIFtoZWlnaHRdPVwiJzMycHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCBibHVlLTItbG9hZGVyJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzE0MHB4J1wiIFtoZWlnaHRdPVwiJzI0cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCBibHVlLTItbG9hZGVyJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyB0YWctZGl2IHJvdW5kZWQtMnhsIGdhcC0xIGl0ZW1zLWNlbnRlciBwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwid3MtbWF0LW9yYW5nZS10ZXh0XCI+dmlkZW9fbGlicmFyeTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uY291cnNlQ2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIGxlYWRpbmctM1wiPnt7IHRyYW5zbGF0ZUxhYmVsKGNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5LCAnc2VhcmNoZmlsdGVycycpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXh0Q29udGVudFJlYWREYXRhPy50b3BpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQteHMgZm9udC1ib2xkIHRleHQtd2hpdGUgbGVhZGluZy0zXCI+e3sgJ0V4dGVybmFsIENvdXJzZScgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgdGV4dC13aGl0ZSBtb2Itc2hhcmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cIm9uQ2xpY2tPZlNoYXJlKClcIj5zaGFyZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gS25vd2xlZGdlIGxldmVsIGJsb2NrIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImV4dENvbnRlbnRSZWFkRGF0YT8uZGlmZmljdWx0eUxldmVsIHx8IGV4dENvbnRlbnRSZWFkRGF0YT8ua25vd2xlZGdlTGV2ZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwia25vd2xlZGdlLWxldmVsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZXh0Q29udGVudFJlYWREYXRhPy5kaWZmaWN1bHR5TGV2ZWw/LnRvTG93ZXJDYXNlKCkgPT09ICdiZWdpbm5lcicgfHwgZXh0Q29udGVudFJlYWREYXRhPy5rbm93bGVkZ2VMZXZlbD8udG9Mb3dlckNhc2UoKSA9PT0gJ2JlZ2lubmVyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGV2ZWwtYmFkZ2UgYmVnaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCIjREJGNERDXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk03LjQyMjY3IDVDNy42NzkyNyA0LjU1NTU1IDguMzIwNzcgNC41NTU1NiA4LjU3NzM3IDVMMTIuMDQxNSAxMUMxMi4yOTgxIDExLjQ0NDQgMTEuOTc3MyAxMiAxMS40NjQxIDEySDQuNTM1OTJDNC4wMjI3MiAxMiAzLjcwMTk3IDExLjQ0NDQgMy45NTg1NyAxMUw3LjQyMjY3IDVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzQ5Qzk1MVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2V4dENvbnRlbnRSZWFkRGF0YT8uZGlmZmljdWx0eUxldmVsIHx8IGV4dENvbnRlbnRSZWFkRGF0YT8ua25vd2xlZGdlTGV2ZWx9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImV4dENvbnRlbnRSZWFkRGF0YT8uZGlmZmljdWx0eUxldmVsPy50b0xvd2VyQ2FzZSgpID09PSAnaW50ZXJtZWRpYXRlJyB8fCBleHRDb250ZW50UmVhZERhdGE/Lmtub3dsZWRnZUxldmVsPy50b0xvd2VyQ2FzZSgpID09PSAnaW50ZXJtZWRpYXRlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGV2ZWwtYmFkZ2UgaW50ZXJtZWRpYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwiI0QxREJFQ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy40MjI2NyAyLjY2NjY2QzcuNjc5MjcgMi4yMjIyMSA4LjMyMDc3IDIuMjIyMjEgOC41NzczNyAyLjY2NjY2TDEyLjA0MTUgOC42NjY2NkMxMi4yOTgxIDkuMTExMSAxMS45NzczIDkuNjY2NjYgMTEuNDY0MSA5LjY2NjY2SDQuNTM1OTJDNC4wMjI3MiA5LjY2NjY2IDMuNzAxOTcgOS4xMTExIDMuOTU4NTcgOC42NjY2Nkw3LjQyMjY3IDIuNjY2NjZaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzFCNENBMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy40MjI2NyA1LjY2NjY2QzcuNjc5MjcgNS4yMjIyMSA4LjMyMDc3IDUuMjIyMjEgOC41NzczNyA1LjY2NjY2TDEyLjA0MTUgMTEuNjY2N0MxMi4yOTgxIDEyLjExMTEgMTEuOTc3MyAxMi42NjY3IDExLjQ2NDEgMTIuNjY2N0g0LjUzNTkyQzQuMDIyNzIgMTIuNjY2NyAzLjcwMTk3IDEyLjExMTEgMy45NTg1NyAxMS42NjY3TDcuNDIyNjcgNS42NjY2NlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMUI0Q0ExXCIgc3Ryb2tlPVwiI0QxREJFQ1wiIHN0cm9rZS13aWR0aD1cIjAuNVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2V4dENvbnRlbnRSZWFkRGF0YT8uZGlmZmljdWx0eUxldmVsIHx8IGV4dENvbnRlbnRSZWFkRGF0YT8ua25vd2xlZGdlTGV2ZWx9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImV4dENvbnRlbnRSZWFkRGF0YT8uZGlmZmljdWx0eUxldmVsPy50b0xvd2VyQ2FzZSgpID09PSAnYWR2YW5jZWQnIHx8IGV4dENvbnRlbnRSZWFkRGF0YT8ua25vd2xlZGdlTGV2ZWw/LnRvTG93ZXJDYXNlKCkgPT09ICdhZHZhbmNlZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxldmVsLWJhZGdlIGFkdmFuY2VkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIGZpbGw9XCIjRkZFNkUxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuNDIyNjQgMi4zMzMzNEM3LjY3OTI0IDEuODg4OSA4LjMyMDc0IDEuODg4OSA4LjU3NzM0IDIuMzMzMzRMMTIuMDQxNCA4LjMzMzM0QzEyLjI5OCA4Ljc3Nzc5IDExLjk3NzMgOS4zMzMzNCAxMS40NjQxIDkuMzMzMzRINC41MzU4OUM0LjAyMjY5IDkuMzMzMzQgMy43MDE5NCA4Ljc3Nzc5IDMuOTU4NTQgOC4zMzMzNEw3LjQyMjY0IDIuMzMzMzRaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGRjgyNjhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy40MjI2NCA1QzcuNjc5MjQgNC41NTU1NSA4LjMyMDc0IDQuNTU1NTYgOC41NzczNCA1TDEyLjA0MTQgMTFDMTIuMjk4IDExLjQ0NDQgMTEuOTc3MyAxMiAxMS40NjQxIDEySDQuNTM1ODlDNC4wMjI2OSAxMiAzLjcwMTk0IDExLjQ0NDQgMy45NTg1NCAxMUw3LjQyMjY0IDVaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGRjgyNjhcIiBzdHJva2U9XCIjRkZFNkUxXCIgc3Ryb2tlLXdpZHRoPVwiMC41XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuNDIyNjQgNy42NjY2OUM3LjY3OTI0IDcuMjIyMjQgOC4zMjA3NCA3LjIyMjI0IDguNTc3MzQgNy42NjY2OUwxMi4wNDE0IDEzLjY2NjdDMTIuMjk4IDE0LjExMTEgMTEuOTc3MyAxNC42NjY3IDExLjQ2NDEgMTQuNjY2N0g0LjUzNTg5QzQuMDIyNjkgMTQuNjY2NyAzLjcwMTk0IDE0LjExMTEgMy45NTg1NCAxMy42NjY3TDcuNDIyNjQgNy42NjY2OVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGODI2OFwiIHN0cm9rZT1cIiNGRkU2RTFcIiBzdHJva2Utd2lkdGg9XCIwLjVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tleHRDb250ZW50UmVhZERhdGE/LmRpZmZpY3VsdHlMZXZlbCB8fCBleHRDb250ZW50UmVhZERhdGE/Lmtub3dsZWRnZUxldmVsfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInOTAlJ1wiIFtoZWlnaHRdPVwiJzMycHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCBibHVlLTItbG9hZGVyJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzcwJSdcIiBbaGVpZ2h0XT1cIiczMnB4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQgYmx1ZS0yLWxvYWRlcidcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFubmVyLXRleHQgdGV4dC1iYXNlIHNtOnRleHQtNHhsIGxlYWRpbmctNiBzbTpsZWFkaW5nLTEwIGZvbnQtYm9sZFwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNhcGl0YWxpemUoZXh0Q29udGVudFJlYWREYXRhPy5uYW1lKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAgY2xhc3M9XCJrbm93bGVkZ2UtbGV2ZWwtY29udGFpbmVyIGJhZGdlZGl2XCI+IC0tPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzaG93QmFkZ2VJY29uKClcIiBjbGFzcz1cImN1c3RvbS1iYWRnZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiYmFkZ2UtaW1nIHctNSBoLTVcIiBzcmM9XCJ7eyBleHRDb250ZW50UmVhZERhdGE/LmJhZGdlRGV0YWlsc192MT8uWzBdPy5iYWRnZVRlbXBsYXRlIHwgcGlwZVB1YmxpY1VSTCB9fVwiIGFsdD1cIlwiIHNyY3NldD1cIlwiPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwhLS0gPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBzbTp0ZXh0LWJhc2Ugc291cmNlLXRleHQgZm9udC1zZW1pYm9sZCBicmVhay13b3Jkc1wiICNjb250ZW50U291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnc291cmNlRWxsaXBzaXMnOiBzb3VyY2VFbGxpcHNpc31cIiB0aXRsZT1cInt7Y29udGVudD8uc291cmNlfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NhcmRjb250ZW50djIuYnknIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZXh0Q29udGVudFJlYWREYXRhPy5jb250ZW50UGFydG5lcj8uY29udGVudFBhcnRuZXJOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImV4dENvbnRlbnRSZWFkRGF0YT8uY291cnNlUHJvdmlkZXI/Lmxlbmd0aDtlbHNlIGNvbnRlbnRQYXJ0bmVyTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZvcm1hdGNvdXJzZVByb3ZpZGVycyhleHRDb250ZW50UmVhZERhdGE/LmNvdXJzZVByb3ZpZGVyKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb250ZW50UGFydG5lck5hbWU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tleHRDb250ZW50UmVhZERhdGE/LmNvbnRlbnRQYXJ0bmVyPy5jb250ZW50UGFydG5lck5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZXh0Q29udGVudFJlYWREYXRhPy5jb250ZW50UGFydG5lcj8uY29udGVudFBhcnRuZXJOYW1lXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21tb24ua2FybWF5b2dpQmhhcmF0JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInMTIwcHgnXCIgW2hlaWdodF09XCInNDBweCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQgYmx1ZS0yLWxvYWRlcidcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzg4cHgnXCIgW2hlaWdodF09XCInMjRweCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQgYmx1ZS0yLWxvYWRlcidcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC00IGl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiY29udGVudD8uYXZlcmFnZVJhdGluZyB8fCBjb250ZW50Py5hZGRpdGlvbmFsVGFncz8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IHJhdGluZy1jaGlwIHB5LTIgaXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImhhbmRsZU5hdmlnYXRlVG9SZXZpZXdzKClcIiAqbmdJZj1cImNvbnRlbnQ/LmF2ZXJhZ2VSYXRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTEgbWFyZ2luLWxlZnQtcyBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5ncmFkZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC13aGl0ZSB0ZXh0LXNtIGxlYWRpbmctNFwiPnt7IGNvbnRlbnQ/LmF2ZXJhZ2VSYXRpbmcgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtd2hpdGUgdGV4dC1zbSBsZWFkaW5nLTQgbWFyZ2luLXJpZ2h0LW1cIj57eyBjb250ZW50Py50b3RhbFJhdGluZyB8IHBpcGVDb3VudFRyYW5zZm9ybSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCIgKm5nSWY9XCJjb250ZW50Py5hZGRpdGlvbmFsVGFncz8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb3N0LWVucm9sbGVkLWNoaXAgdGV4dC14cyBsZWFkaW5nLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udGVudD8uYWRkaXRpb25hbFRhZ3M/LmluY2x1ZGVzKCdtb3N0VHJlbmRpbmcnKVwiPnt7ICdjYXJkY29udGVudHYyLm1vc3RUcmVuZGluZycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnRlbnQ/LmFkZGl0aW9uYWxUYWdzPy5pbmNsdWRlcygnbW9zdEVucm9sbGVkJylcIj57eyAnY2FyZGNvbnRlbnR2Mi5tb3N0RW5yb2xsZWQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzE4MHB4J1wiIFtoZWlnaHRdPVwiJzIwcHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkIGJsdWUtMi1sb2FkZXInXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbkxvYWRlciAmJiBleHRDb250ZW50UmVhZERhdGE/Lmxhc3RVcGRhdGVkT25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIGxlYWRpbmctNCBzb3VyY2UtdGV4dFwiPih7eyAnYXBwdG9jLmxhc3RVcGRhdGVkT24nIHwgdHJhbnNsYXRlIH19IHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0Q29udGVudFJlYWREYXRhPy5sYXN0VXBkYXRlZE9uIHwgZGF0ZTogJ01NTSBkLCB5JyB9fSk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmb3JQcmV2aWV3XCI+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzTW9iaWxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNCBwLTUgYm9yZGVyLWJvdHRvbSBwb3NpdGlvbi1ib3R0b21cIj5cbiAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCIodXNlckV4dENvdXJzZUVucm9sbCB8IGpzb24pICE9PSAne30nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktZW5kIHctZnVsbCB3cy1tYXQtYmxhY2stdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtYm9keS0yICB3cy1tYXQtYmxhY2stdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dXNlckV4dENvdXJzZUVucm9sbD8ucHJvZ3Jlc3N9fSU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3MgW2NvbnRlbnRJZF09XCJ1c2VyRXh0Q291cnNlRW5yb2xsPy5wcm9ncmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvZ3Jlc3NdPVwidXNlckV4dENvdXJzZUVucm9sbD8ucHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb2dyZXNzVHlwZV09XCIncGVyY2VudGFnZSdcIiBbY3VzdG9tQ2xhc3NOYW1lXT1cIid2aWV3ZXItcHJvZ3Jlc3MnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3M+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gICAtLT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0Vucm9sbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmxleCBhY3Rpb24tYnV0dG9uIGp1c3RpZnktY2VudGVyIGZsZXgtbWlkZGxlIHJlc3VtZVwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVuUm9sbFRvRXh0Q291cnNlKGV4dENvbnRlbnRSZWFkRGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgJ2FwcHRvY2hvbWUuZW5yb2xsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbnJvbGxWYWxpZGF0aW9uTG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzEzMnB4J1wiIFtoZWlnaHRdPVwiJzMycHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQgYmx1ZS0yLWxvYWRlcidcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dSZWRpcmVjdFwiPlxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZsZXggYWN0aW9uLWJ1dHRvbiBqdXN0aWZ5LWNlbnRlciBmbGV4LW1pZGRsZSByZXN1bWVcIiB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiZXh0Q29udGVudFJlYWREYXRhPy5yZWRpcmVjdFVybFwiIChjbGljayk9XCJjYXB0dXJlUmVkaXJlY3RUZWxlbWV0cnkoZXh0Q29udGVudFJlYWREYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyAnYXBwdG9jaG9tZS5yZWRpcmVjdCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtbC0yIHdzLW1hdC13aGl0ZS10ZXh0XCI+b3Blbl9pbl9uZXc8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCIodXNlckV4dENvdXJzZUVucm9sbCB8IGpzb24pICE9PSAne30nICYmIHVzZXJFeHRDb3Vyc2VFbnJvbGw/Lmlzc3VlZF9jZXJ0aWZpY2F0ZXM/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgJiYgdXNlckV4dENvdXJzZUVucm9sbD8ucHJvZ3Jlc3MgPT09IDEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmxleCBhY3Rpb24tYnV0dG9uIGp1c3RpZnktY2VudGVyIGZsZXgtbWlkZGxlIHJlc3VtZVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZG93bmxvYWRDZXJ0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImZ1c2lvbi1hc3NldHMvaW1hZ2VzL2NlcnRpZmljYXRlLWljby5zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkNlcnRpZmljYXRlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICAqbmdJZj1cIiFkb3dubG9hZENlcnRpZmljYXRlTG9hZGluZ1wiIGNsYXNzPVwibWwtMlwiPmFycm93X2Rvd253YXJkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZW50ZXIgZmxleCBmbGV4LW1pZGRsZSBjZXJ0aWZpY2F0ZS1sb2FkZXIgbWFyZ2luLWxlZnQtc1wiICpuZ0lmPVwiZG93bmxvYWRDZXJ0aWZpY2F0ZUxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgc3Ryb2tlV2lkdGg9XCIyXCIgc3Ryb2tlPVwiJ3doaXRlJ1wiIGNsYXNzPVwid2hpdGUtc3Bpbm5lclwiIFtkaWFtZXRlcl09XCIyNFwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gIC0tPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmxvY2sgbWQ6aGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpblByb2dyZXNzSW5mb1wiID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcHgtOCBweS00IGdhcC0yXCIgKm5nSWY9XCJleHRDb250ZW50UmVhZERhdGE/LmR1cmF0aW9uID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvdG9jL3RpbWVyLnN2Z1wiIHdpZHRoPVwiMjBweFwiIGFsdD1cIndlYiBpbWFnZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzXCI+e3sgZXh0Q29udGVudFJlYWREYXRhPy5kdXJhdGlvbiAqIDYwIHwgcGlwZUR1cmF0aW9uVHJhbnNmb3JtOiAnaG1zJyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC02IGZpeGVkLXdpZHRoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b2MtY29udGVudFwiIFtuZ0NsYXNzXT1cImlzTW9iaWxlID8gJyc6J210LTggbWItOCdcIj5cbiAgICAgICAgICAgIDxtYXQtdGFiLWdyb3VwPlxuICAgICAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwie3sgJ2FwcHRvY3NpbmdsZXBhZ2UuYWJvdXQnIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIiBbbmdDbGFzc109XCJpc01vYmlsZSA/ICcnOidtdC01IG1iLTUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInODBweCdcIiBbaGVpZ2h0XT1cIicxNnB4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTIgbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic4MCUnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic5NSUnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic2NSUnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtYXBwLXRvYy1hYm91dCBbY29udGVudFJlYWREYXRhXT1cImV4dENvbnRlbnRSZWFkRGF0YVwiIFtzaG93UmV2aWV3c109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmFzZUNvbnRlbnRSZWFkRGF0YV09XCJleHRDb250ZW50UmVhZERhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dNYXJrZXRQbGFjZUNlcnRpZmljYXRlXT1cIih1c2VyRXh0Q291cnNlRW5yb2xsIHwganNvbikgIT09ICd7fScgJiYgdXNlckV4dENvdXJzZUVucm9sbD8uaXNzdWVkX2NlcnRpZmljYXRlcz8ubGVuZ3RoID4gIDAgJiYgdXNlckV4dENvdXJzZUVucm9sbD8ucHJvZ3Jlc3MgPT09IDEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJleHRDb250ZW50UmVhZERhdGFcIiBbZnJvbU1hcmtldFBsYWNlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NrZWxldG9uTG9hZGVyXT1cInNrZWxldG9uTG9hZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmcm9tTURPXT1cImZyb21NRE9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93cy13aWRnZXQtYXBwLXRvYy1hYm91dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbWF0LXRhYj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWc/LmNvbW1lbnRzVGFiXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwie3sgJ2FwcHRvY3NpbmdsZXBhZ2UuY29tbWVudHMnIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHJhdGluZ3MtZGl2IG10LTVcIiBpZD1cImNvbW1lbnRzRGl2XCIgKm5nSWY9XCJkaXNjdXNzV2lkZ2V0RGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29tbWVudElkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkLXYyLXdpZGdldC1jb21tZW50IFt3aWRnZXREYXRhXT1cImRpc2N1c3NXaWRnZXREYXRhXCI+PC9kLXYyLXdpZGdldC1jb21tZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21tZW50SWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTMgY3Vyc29yLXBvaW50ZXIgbWItNVwiIChjbGljayk9XCJjbGVhckNvbW1lbnRJZEZyb21VcmwoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5hcnJvd19iYWNrPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sgdG8gYWxsIGNvbW1lbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZC12Mi13aWRnZXQtY29tbWVudCBbd2lkZ2V0RGF0YV09XCJkaXNjdXNzV2lkZ2V0RGF0YVwiIFtjb21tZW50SWRdPVwiY29tbWVudElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtza2VsZXRvbkxvYWRlcl0+PC9kLXYyLXdpZGdldC1jb21tZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPC9uZy10ZW1wbGF0ZT4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbWF0LXRhYi1ncm91cD5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LWNvbnRlbnRcIiAjcmlnaHRDb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInMzg0cHgnXCIgW2hlaWdodF09XCInMjI0cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaW1hZ2UtZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICdiYWNrZ3JvdW5kLWltYWdlJzogJ3VybCgnICsgZXh0Q29udGVudFJlYWREYXRhPy5hcHBJY29uICsgJyknLCAnYmFja2dyb3VuZC1yZXBlYXQnOiAnbm8tcmVwZWF0JywgJ2JhY2tncm91bmQtc2l6ZSc6ICdjb3Zlcid9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaW1hZ2UtYmFja2Ryb3AnOiBzY3JvbGxlZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktYmV0d2VlbiB0ZXh0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJvbkNsaWNrT2ZTaGFyZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgZ2FwLTIgc2hhcmUtdGFnXCIgKm5nSWY9XCIhZm9yUHJldmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnNoYXJlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgJ2FwcHRvY3NpbmdsZXBhZ2Uuc2hhcmUnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0xXCIgKm5nSWY9XCJzY3JvbGxlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14bCBsZWFkaW5nLTYgdGV4dC13aGl0ZSBmb250LWJvbGQgdGV4dC1zY3JvbC1jdXN0b21cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2FwaXRhbGl6ZShleHRDb250ZW50UmVhZERhdGE/Lm5hbWUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIHNvdXJjZS10ZXh0IGZvbnQtc2VtaWJvbGQgYnJlYWstd29yZHNcIiAjY29udGVudFNvdXJjZSBbbmdDbGFzc109XCJ7J3NvdXJjZUVsbGlwc2lzJzogc291cmNlRWxsaXBzaXN9XCIgdGl0bGU9XCJ7e2NvbnRlbnQ/LnNvdXJjZX19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnY2FyZGNvbnRlbnR2Mi5ieScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZXh0Q29udGVudFJlYWREYXRhPy5jb250ZW50UGFydG5lcj8uY29udGVudFBhcnRuZXJOYW1lXCI+e3sgZXh0Q29udGVudFJlYWREYXRhPy5jb250ZW50UGFydG5lcj8uY29udGVudFBhcnRuZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZXh0Q29udGVudFJlYWREYXRhPy5jb250ZW50UGFydG5lcj8uY29udGVudFBhcnRuZXJOYW1lXCI+e3sgJ2NvbW1vbi5rYXJtYXlvZ2lCaGFyYXQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZm9yUHJldmlld1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMyBwLTMgYm9yZGVyLWJvdHRvbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiKHVzZXJFeHRDb3Vyc2VFbnJvbGwgfCBqc29uKSAhPT0gJ3t9J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgdy1mdWxsIHdzLW1hdC1ibGFjay10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtYm9keS0yICB3cy1tYXQtYmxhY2stdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3VzZXJFeHRDb3Vyc2VFbnJvbGw/LnByb2dyZXNzfX0lPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3MgW2NvbnRlbnRJZF09XCJ1c2VyRXh0Q291cnNlRW5yb2xsPy5wcm9ncmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb2dyZXNzXT1cInVzZXJFeHRDb3Vyc2VFbnJvbGw/LnByb2dyZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvZ3Jlc3NUeXBlXT1cIidwZXJjZW50YWdlJ1wiIFtjdXN0b21DbGFzc05hbWVdPVwiJ3ZpZXdlci1wcm9ncmVzcydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3M+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgIC0tPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0Vucm9sbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJmbGV4IGFjdGlvbi1idXR0b24ganVzdGlmeS1jZW50ZXIgZmxleC1taWRkbGUgcmVzdW1lXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlblJvbGxUb0V4dENvdXJzZShleHRDb250ZW50UmVhZERhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgJ2FwcHRvY2hvbWUuZW5yb2xsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVucm9sbFZhbGlkYXRpb25Mb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIicxMDAlJ1wiIFtoZWlnaHRdPVwiJzMycHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCAnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1JlZGlyZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmbGV4IGFjdGlvbi1idXR0b24ganVzdGlmeS1jZW50ZXIgZmxleC1taWRkbGUgcmVzdW1lXCIgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiZXh0Q29udGVudFJlYWREYXRhPy5yZWRpcmVjdFVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYXB0dXJlUmVkaXJlY3RUZWxlbWV0cnkoZXh0Q29udGVudFJlYWREYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPnt7ICdhcHB0b2Nob21lLnJlZGlyZWN0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWwtMiB3cy1tYXQtd2hpdGUtdGV4dFwiPm9wZW5faW5fbmV3PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCIodXNlckV4dENvdXJzZUVucm9sbCB8IGpzb24pICE9PSAne30nICYmIHVzZXJFeHRDb3Vyc2VFbnJvbGw/Lmlzc3VlZF9jZXJ0aWZpY2F0ZXM/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIHVzZXJFeHRDb3Vyc2VFbnJvbGw/LnByb2dyZXNzID09PSAxMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJmbGV4IGFjdGlvbi1idXR0b24ganVzdGlmeS1jZW50ZXIgZmxleC1taWRkbGUgcmVzdW1lXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkb3dubG9hZENlcnQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiZnVzaW9uLWFzc2V0cy9pbWFnZXMvY2VydGlmaWNhdGUtaWNvLnN2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkNlcnRpZmljYXRlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAgKm5nSWY9XCIhZG93bmxvYWRDZXJ0aWZpY2F0ZUxvYWRpbmdcIiBjbGFzcz1cIm1sLTJcIj5hcnJvd19kb3dud2FyZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlciBmbGV4IGZsZXgtbWlkZGxlIGNlcnRpZmljYXRlLWxvYWRlciBtYXJnaW4tbGVmdC1zXCIgKm5nSWY9XCJkb3dubG9hZENlcnRpZmljYXRlTG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgc3Ryb2tlV2lkdGg9XCIyXCIgc3Ryb2tlPVwiJ3doaXRlJ1wiIGNsYXNzPVwid2hpdGUtc3Bpbm5lclwiIFtkaWFtZXRlcl09XCIyNFwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+ICAtLT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImluUHJvZ3Jlc3NJbmZvXCIgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGtwaS12YWx1ZXMgaXRlbXMtY2VudGVyIGdhcC0yXCIgKm5nSWY9XCJleHRDb250ZW50UmVhZERhdGE/LmR1cmF0aW9uID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ljb25zL3RvYy90aW1lci5zdmdcIiB3aWR0aD1cIjIwcHhcIiBhbHQ9XCJ3ZWIgaW1hZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQteHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBleHRDb250ZW50UmVhZERhdGE/LmR1cmF0aW9uIHwgcGlwZUR1cmF0aW9uVHJhbnNmb3JtOiAnaG1zJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48ZGl2ICpuZ0lmPVwiIWV4dENvbnRlbnRBdmFpbGFibGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciB3LWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1hcmdpbi14bCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2NvbW1vbi9lcnJvci1wYWdlcy9lbXB0eV9zZWFyY2guc3ZnXCIgd3NVdGlsc0ltYWdlUmVzcG9uc2l2ZSBhbHQ9XCJObyByZXN1bHRzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hcmdpbi10b3AtbCBtYXJnaW4tYm90dG9tLXNcIj5cbiAgICAgICAgICAgIDxoMiBjbGFzcz1cIm1hdC1oMlwiIGkxOG49XCJzZWFyY2ggcm91dGUgbm8gcmVzdWx0XCI+e3snbGVhcm5zZWFyY2gubm9SZXN1bHRzJyB8IHRyYW5zbGF0ZX19PC9oMj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbjwvZGl2PlxuXG48d3MtYXBwLXNoYXJlLXRvYyAqbmdJZj1cImVuYWJsZVNoYXJlXCIgW2NvbnRlbnRMaW5rXT1cImNvbnRlbnRMaW5rXCIgW3Jvb3RPcmdJZF09XCJyb290T3JnSWRcIiBbY29udGVudF09XCJleHRDb250ZW50UmVhZERhdGFcIlxuICAgIChyZXNldEVuYWJsZVNoYXJlKT1cInJlc2V0RW5hYmxlU2hhcmUoJGV2ZW50KVwiPjwvd3MtYXBwLXNoYXJlLXRvYz5cblxuPG5nLXRlbXBsYXRlICNpblByb2dyZXNzSW5mbz5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1Byb3ZpZGVyVGlwc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibm8tY2VydGlmaWNhdGUtZm91bmQgbXQtNiBtYi00IG14LTIgcC0yXCIgPlxuICAgICAgICAgICAgPHdzLXdpZGdldC1zbGlkZXJzLWR5bmFtaWMgW3dpZGdldERhdGFdPVwid2lkZ2V0RGF0YVwiPjwvd3Mtd2lkZ2V0LXNsaWRlcnMtZHluYW1pYz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPiJdfQ==