@reusa/ngx-reusa-app-lib 0.0.999 → 0.1.101

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 (372) hide show
  1. package/README.md +46 -46
  2. package/esm2022/lib/annimations/app-animations.mjs +1 -1
  3. package/esm2022/lib/components/add-employer/add-employer.component.mjs +1130 -2312
  4. package/esm2022/lib/components/add-participant/add-participant.component.mjs +1 -1
  5. package/esm2022/lib/components/add-payment/add-payment.component.mjs +16 -36
  6. package/esm2022/lib/components/address/address.component.mjs +58 -52
  7. package/esm2022/lib/components/bank-details/bank-details.component.mjs +25 -29
  8. package/esm2022/lib/components/captcha/captcha.component.mjs +6 -6
  9. package/esm2022/lib/components/card/card.component.mjs +1 -1
  10. package/esm2022/lib/components/content/content.component.mjs +1 -1
  11. package/esm2022/lib/components/correspondence-download/correspondence-download.component.mjs +1 -1
  12. package/esm2022/lib/components/dependent-grid/dependent-grid.component.mjs +14 -19
  13. package/esm2022/lib/components/disclosure/disclosure.component.mjs +1 -1
  14. package/esm2022/lib/components/dropdown/dropdown.component.mjs +6 -6
  15. package/esm2022/lib/components/dropdown/dropdown.interface.mjs +1 -1
  16. package/esm2022/lib/components/email-update/email-update.component.mjs +32 -14
  17. package/esm2022/lib/components/employer-grid/employer-grid.component.mjs +197 -192
  18. package/esm2022/lib/components/error/error.component.mjs +5 -22
  19. package/esm2022/lib/components/fav-menu/fav-menu.component.mjs +1 -1
  20. package/esm2022/lib/components/file-download/file-download.component.mjs +1 -1
  21. package/esm2022/lib/components/file-uploader/file-uploader.component.mjs +1 -1
  22. package/esm2022/lib/components/footer/footer.component.mjs +67 -90
  23. package/esm2022/lib/components/header/header.component.mjs +105 -169
  24. package/esm2022/lib/components/help/help.component.mjs +1 -1
  25. package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +13 -13
  26. package/esm2022/lib/components/info/info.component.mjs +12 -4
  27. package/esm2022/lib/components/job-search-result-page/job-search-result-page.component.mjs +1 -1
  28. package/esm2022/lib/components/job-title/job-title.component.mjs +94 -93
  29. package/esm2022/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +82 -93
  30. package/esm2022/lib/components/lexis-nexis/lexis-nexis.component.mjs +329 -0
  31. package/esm2022/lib/components/link/link.component.mjs +1 -1
  32. package/esm2022/lib/components/maintenance-detector/maintenance-detector.component.mjs +1 -1
  33. package/esm2022/lib/components/mask/mask.component.mjs +1 -1
  34. package/esm2022/lib/components/menu/menu.component.mjs +35 -44
  35. package/esm2022/lib/components/mfa/mfa.component.mjs +305 -103
  36. package/esm2022/lib/components/mfa-popup/mfa-popup.component.mjs +16 -7
  37. package/esm2022/lib/components/mfa2/mfa2.component.mjs +260 -0
  38. package/esm2022/lib/components/money-expect/money-expect.component.mjs +36 -148
  39. package/esm2022/lib/components/msg/msg.component.mjs +1 -1
  40. package/esm2022/lib/components/news/news.component.mjs +1 -1
  41. package/esm2022/lib/components/overlay-info/overlay-info.component.mjs +1 -1
  42. package/esm2022/lib/components/page/page.component.mjs +1 -1
  43. package/esm2022/lib/components/profile/profile.component.mjs +213 -56
  44. package/esm2022/lib/components/profile-redirect/profile-redirect.component.mjs +33 -106
  45. package/esm2022/lib/components/questionnaire/AppValidators.mjs +14 -165
  46. package/esm2022/lib/components/questionnaire/FbConstants.mjs +1 -1
  47. package/esm2022/lib/components/questionnaire/account-success/account-success.page.mjs +60 -110
  48. package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +123 -367
  49. package/esm2022/lib/components/questionnaire/dynamic-form-panel.component.mjs +9 -9
  50. package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +1029 -769
  51. package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +325 -157
  52. package/esm2022/lib/components/questionnaire/form-builder/form-builder.page.mjs +17 -9
  53. package/esm2022/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +26 -93
  54. package/esm2022/lib/components/questionnaire/question-base.mjs +1 -1
  55. package/esm2022/lib/components/questionnaire/question-control.service.mjs +1 -2
  56. package/esm2022/lib/components/questionnaire/question.service.mjs +7 -5
  57. package/esm2022/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.mjs +25 -14
  58. package/esm2022/lib/components/read-more/read-more.component.mjs +6 -6
  59. package/esm2022/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.mjs +196 -333
  60. package/esm2022/lib/components/search-employer/search-employer.component.mjs +24 -47
  61. package/esm2022/lib/components/security-question/security-question.component.mjs +189 -0
  62. package/esm2022/lib/components/select/select.component.mjs +1 -1
  63. package/esm2022/lib/components/sign-ssn/sign-ssn.component.mjs +3 -3
  64. package/esm2022/lib/components/ssn/ssn.component.mjs +1 -1
  65. package/esm2022/lib/components/ssn-reverify/ssn-reverify.component.mjs +4 -4
  66. package/esm2022/lib/components/test/test.component.mjs +1 -1
  67. package/esm2022/lib/components/user-login/user-login.component.mjs +226 -115
  68. package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +155 -287
  69. package/esm2022/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.mjs +46 -62
  70. package/esm2022/lib/directives/auto-focus/auto-focus.directive.mjs +1 -1
  71. package/esm2022/lib/directives/caps-lock.directive.mjs +1 -1
  72. package/esm2022/lib/directives/required-roles/required-roles.directive.mjs +1 -1
  73. package/esm2022/lib/enums/EmailStatusEnum.mjs +1 -1
  74. package/esm2022/lib/guards/auth.guard.mjs +4 -26
  75. package/esm2022/lib/guards/no-login/no-login.guard.mjs +1 -1
  76. package/esm2022/lib/interceptors/error-interceptor/http-error-interceptor.mjs +1 -1
  77. package/esm2022/lib/interceptors/header-interceptor/http-header.interceptor.mjs +1 -1
  78. package/esm2022/lib/models/EmployerDetailSearchResult.mjs +1 -1
  79. package/esm2022/lib/models/ErrorModel.mjs +1 -1
  80. package/esm2022/lib/models/FileModel.mjs +1 -1
  81. package/esm2022/lib/models/LexisNexisAccountCreationModel.mjs +2 -0
  82. package/esm2022/lib/models/LexisNexisAuthSelectionRequestModel.mjs +2 -0
  83. package/esm2022/lib/models/LexisNexisAuthSelectionResponseModel.mjs +2 -0
  84. package/esm2022/lib/models/LexisNexisResponseModel.mjs +3 -0
  85. package/esm2022/lib/models/LibConstants.mjs +15 -12
  86. package/esm2022/lib/models/NotificationModel.mjs +1 -1
  87. package/esm2022/lib/models/OtpAuthModel.mjs +1 -1
  88. package/esm2022/lib/models/PartialEmploymentModel.mjs +3 -0
  89. package/esm2022/lib/models/PaymentComponentModel.mjs +1 -1
  90. package/esm2022/lib/models/SecurityQuestionModel.mjs +3 -0
  91. package/esm2022/lib/models/TrendModel.mjs +1 -1
  92. package/esm2022/lib/models/UserDetailsModel.mjs +1 -1
  93. package/esm2022/lib/models/UserModel.mjs +1 -1
  94. package/esm2022/lib/models/claimant/ClaimantModel.mjs +1 -1
  95. package/esm2022/lib/models/claimant/JobResultsData.mjs +1 -1
  96. package/esm2022/lib/models/claimant/MatchingJobs.mjs +1 -1
  97. package/esm2022/lib/models/claimant/ResetPasswordModel.mjs +1 -1
  98. package/esm2022/lib/models/dependent.model.mjs +1 -1
  99. package/esm2022/lib/models/questionnaire/ClaimAppEmpResponseModel.mjs +1 -1
  100. package/esm2022/lib/models/questionnaire/ClaimAppEmployerDetailsModel.mjs +1 -2
  101. package/esm2022/lib/models/questionnaire/ClaimOnlyEmployerDataModel.mjs +1 -1
  102. package/esm2022/lib/models/questionnaire/ComboModel.mjs +175 -73
  103. package/esm2022/lib/models/questionnaire/ElementsModel.mjs +1 -1
  104. package/esm2022/lib/models/questionnaire/KeyValueModel.mjs +1 -1
  105. package/esm2022/lib/models/questionnaire/LegalDiscaimarModel.mjs +1 -1
  106. package/esm2022/lib/models/questionnaire/StatusModel.mjs +1 -1
  107. package/esm2022/lib/ngx-reusa-app-lib.component.mjs +5 -5
  108. package/esm2022/lib/ngx-reusa-app-lib.module.mjs +13 -27
  109. package/esm2022/lib/ngx-reusa-app-lib.service.mjs +1 -1
  110. package/esm2022/lib/pages/BasePage.mjs +22 -3
  111. package/esm2022/lib/pages/common/accessibility-policy/accessibility-policy.page.mjs +18 -22
  112. package/esm2022/lib/pages/common/change-password/change-password.page.mjs +124 -142
  113. package/esm2022/lib/pages/common/landing/landing.component.mjs +8 -7
  114. package/esm2022/lib/pages/common/landing2/landing2.component.mjs +4 -4
  115. package/esm2022/lib/pages/common/login/login.component.mjs +5 -5
  116. package/esm2022/lib/pages/common/not-found/not-found.page.mjs +1 -1
  117. package/esm2022/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.mjs +14 -14
  118. package/esm2022/lib/pages/common/security-policy/security-policy.page.mjs +5 -5
  119. package/esm2022/lib/pages/common/unauthorized/unauthorized.page.mjs +1 -1
  120. package/esm2022/lib/pages/popovers/language/language.page.mjs +1 -1
  121. package/esm2022/lib/pages/popovers/my-notifications/my-notifications.page.mjs +1 -1
  122. package/esm2022/lib/pages/popovers/my-profile/my-profile.page.mjs +1 -1
  123. package/esm2022/lib/pages/popovers/user-search/user-search.component.mjs +1 -1
  124. package/esm2022/lib/pipes/filter.pipe.mjs +1 -1
  125. package/esm2022/lib/pipes/mask/mask.email.pipe.mjs +1 -1
  126. package/esm2022/lib/pipes/proper-case/proper-case.pipe.mjs +1 -1
  127. package/esm2022/lib/pipes/translate/dynamic-translate.pipe.mjs +1 -1
  128. package/esm2022/lib/pipes/trust-html/trust-html.pipe.mjs +1 -1
  129. package/esm2022/lib/services/base-service.mjs +1 -1
  130. package/esm2022/lib/services/captcha/captcha.service.mjs +1 -1
  131. package/esm2022/lib/services/chatbot/chatbot.service.mjs +2 -1
  132. package/esm2022/lib/services/chatbot/script.const.mjs +1 -1
  133. package/esm2022/lib/services/claimant/claimant.service.mjs +1 -1
  134. package/esm2022/lib/services/claimant-service/claimant-usps-redirect.service.mjs +36 -0
  135. package/esm2022/lib/services/claimant-service/claimant.service.mjs +13 -1
  136. package/esm2022/lib/services/claims/claims.service.mjs +14 -57
  137. package/esm2022/lib/services/dms-service/dms.service.mjs +1 -1
  138. package/esm2022/lib/services/fpjs/fingerprint.service.mjs +1 -1
  139. package/esm2022/lib/services/google-analytics/google-analytics.service.mjs +1 -1
  140. package/esm2022/lib/services/help/help.service.mjs +1 -1
  141. package/esm2022/lib/services/idle/idle.service.mjs +1 -1
  142. package/esm2022/lib/services/lexis-nexis/lexis.nexis.service.mjs +49 -0
  143. package/esm2022/lib/services/logger/logger.service.mjs +1 -1
  144. package/esm2022/lib/services/login/login.service.mjs +11 -1
  145. package/esm2022/lib/services/maintenance/maintenance.service.mjs +1 -1
  146. package/esm2022/lib/services/notification/notification.service.mjs +1 -1
  147. package/esm2022/lib/services/ovp/ovp.service.mjs +43 -0
  148. package/esm2022/lib/services/questionnaire/questionnaire.service.mjs +1 -4
  149. package/esm2022/lib/services/questionnaire/validation.service.mjs +1 -4
  150. package/esm2022/lib/services/security-service/security.service.mjs +6 -5
  151. package/esm2022/lib/services/tour/tour.service.mjs +1 -1
  152. package/esm2022/lib/services/util/util.service.mjs +5 -5
  153. package/esm2022/lib/services/weekly-cert/weekly-cert-v2.service.mjs +42 -0
  154. package/esm2022/lib/validations/AppRegex.mjs +1 -1
  155. package/esm2022/lib/validations/AppValidators.mjs +14 -34
  156. package/esm2022/public-api.mjs +5 -16
  157. package/fesm2022/reusa-ngx-reusa-app-lib.mjs +7480 -10431
  158. package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -1
  159. package/lib/components/add-employer/add-employer.component.d.ts +48 -77
  160. package/lib/components/add-employer/add-employer.component.d.ts.map +1 -1
  161. package/lib/components/add-payment/add-payment.component.d.ts +2 -7
  162. package/lib/components/add-payment/add-payment.component.d.ts.map +1 -1
  163. package/lib/components/address/address.component.d.ts +3 -2
  164. package/lib/components/address/address.component.d.ts.map +1 -1
  165. package/lib/components/email-update/email-update.component.d.ts +7 -1
  166. package/lib/components/email-update/email-update.component.d.ts.map +1 -1
  167. package/lib/components/employer-grid/employer-grid.component.d.ts +3 -1
  168. package/lib/components/employer-grid/employer-grid.component.d.ts.map +1 -1
  169. package/lib/components/error/error.component.d.ts +2 -3
  170. package/lib/components/error/error.component.d.ts.map +1 -1
  171. package/lib/components/footer/footer.component.d.ts.map +1 -1
  172. package/lib/components/header/header.component.d.ts +0 -1
  173. package/lib/components/header/header.component.d.ts.map +1 -1
  174. package/lib/components/job-title/job-title.component.d.ts +21 -22
  175. package/lib/components/job-title/job-title.component.d.ts.map +1 -1
  176. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts +2 -5
  177. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts.map +1 -1
  178. package/lib/components/lexis-nexis/lexis-nexis.component.d.ts +55 -0
  179. package/lib/components/lexis-nexis/lexis-nexis.component.d.ts.map +1 -0
  180. package/lib/components/menu/menu.component.d.ts.map +1 -1
  181. package/lib/components/mfa/mfa.component.d.ts +26 -3
  182. package/lib/components/mfa/mfa.component.d.ts.map +1 -1
  183. package/lib/components/mfa-popup/mfa-popup.component.d.ts +4 -1
  184. package/lib/components/mfa-popup/mfa-popup.component.d.ts.map +1 -1
  185. package/lib/components/mfa2/mfa2.component.d.ts +48 -0
  186. package/lib/components/mfa2/mfa2.component.d.ts.map +1 -0
  187. package/lib/components/money-expect/money-expect.component.d.ts +4 -15
  188. package/lib/components/money-expect/money-expect.component.d.ts.map +1 -1
  189. package/lib/components/profile/profile.component.d.ts +32 -4
  190. package/lib/components/profile/profile.component.d.ts.map +1 -1
  191. package/lib/components/profile-redirect/profile-redirect.component.d.ts +2 -9
  192. package/lib/components/profile-redirect/profile-redirect.component.d.ts.map +1 -1
  193. package/lib/components/questionnaire/AppValidators.d.ts +0 -1
  194. package/lib/components/questionnaire/AppValidators.d.ts.map +1 -1
  195. package/lib/components/questionnaire/account-success/account-success.page.d.ts +10 -13
  196. package/lib/components/questionnaire/account-success/account-success.page.d.ts.map +1 -1
  197. package/lib/components/questionnaire/common-success/common-success.page.d.ts +0 -7
  198. package/lib/components/questionnaire/common-success/common-success.page.d.ts.map +1 -1
  199. package/lib/components/questionnaire/dynamic-form-question.component.d.ts +32 -14
  200. package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
  201. package/lib/components/questionnaire/dynamic-form.component.d.ts +24 -3
  202. package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -1
  203. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts +3 -0
  204. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts.map +1 -1
  205. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts +1 -6
  206. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts.map +1 -1
  207. package/lib/components/questionnaire/question-control.service.d.ts.map +1 -1
  208. package/lib/components/questionnaire/question.service.d.ts +1 -0
  209. package/lib/components/questionnaire/question.service.d.ts.map +1 -1
  210. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts +3 -1
  211. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts.map +1 -1
  212. package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts +3 -6
  213. package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts.map +1 -1
  214. package/lib/components/search-employer/search-employer.component.d.ts +2 -1
  215. package/lib/components/search-employer/search-employer.component.d.ts.map +1 -1
  216. package/lib/components/security-question/security-question.component.d.ts +37 -0
  217. package/lib/components/security-question/security-question.component.d.ts.map +1 -0
  218. package/lib/components/user-login/user-login.component.d.ts +22 -5
  219. package/lib/components/user-login/user-login.component.d.ts.map +1 -1
  220. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts +0 -6
  221. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts.map +1 -1
  222. package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts +0 -1
  223. package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts.map +1 -1
  224. package/lib/guards/auth.guard.d.ts +1 -3
  225. package/lib/guards/auth.guard.d.ts.map +1 -1
  226. package/lib/models/EmployerDetailSearchResult.d.ts +1 -3
  227. package/lib/models/EmployerDetailSearchResult.d.ts.map +1 -1
  228. package/lib/models/LexisNexisAccountCreationModel.d.ts +15 -0
  229. package/lib/models/LexisNexisAccountCreationModel.d.ts.map +1 -0
  230. package/lib/models/LexisNexisAuthSelectionRequestModel.d.ts +16 -0
  231. package/lib/models/LexisNexisAuthSelectionRequestModel.d.ts.map +1 -0
  232. package/lib/models/LexisNexisAuthSelectionResponseModel.d.ts +39 -0
  233. package/lib/models/LexisNexisAuthSelectionResponseModel.d.ts.map +1 -0
  234. package/lib/models/LexisNexisResponseModel.d.ts +7 -0
  235. package/lib/models/LexisNexisResponseModel.d.ts.map +1 -0
  236. package/lib/models/LibConstants.d.ts +12 -9
  237. package/lib/models/LibConstants.d.ts.map +1 -1
  238. package/lib/models/PartialEmploymentModel.d.ts +6 -0
  239. package/lib/models/PartialEmploymentModel.d.ts.map +1 -0
  240. package/lib/models/PaymentComponentModel.d.ts +1 -1
  241. package/lib/models/PaymentComponentModel.d.ts.map +1 -1
  242. package/lib/models/SecurityQuestionModel.d.ts +7 -0
  243. package/lib/models/SecurityQuestionModel.d.ts.map +1 -0
  244. package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts +0 -1
  245. package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts.map +1 -1
  246. package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts +3 -13
  247. package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts.map +1 -1
  248. package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts +1 -2
  249. package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts.map +1 -1
  250. package/lib/models/questionnaire/ComboModel.d.ts +16 -20
  251. package/lib/models/questionnaire/ComboModel.d.ts.map +1 -1
  252. package/lib/models/questionnaire/ElementsModel.d.ts +1 -0
  253. package/lib/models/questionnaire/ElementsModel.d.ts.map +1 -1
  254. package/lib/models/questionnaire/LegalDiscaimarModel.d.ts +0 -2
  255. package/lib/models/questionnaire/LegalDiscaimarModel.d.ts.map +1 -1
  256. package/lib/models/questionnaire/StatusModel.d.ts +0 -1
  257. package/lib/models/questionnaire/StatusModel.d.ts.map +1 -1
  258. package/lib/ngx-reusa-app-lib.module.d.ts +86 -95
  259. package/lib/ngx-reusa-app-lib.module.d.ts.map +1 -1
  260. package/lib/pages/BasePage.d.ts +6 -3
  261. package/lib/pages/BasePage.d.ts.map +1 -1
  262. package/lib/pages/common/change-password/change-password.page.d.ts +0 -3
  263. package/lib/pages/common/change-password/change-password.page.d.ts.map +1 -1
  264. package/lib/services/claimant-service/claimant-usps-redirect.service.d.ts +16 -0
  265. package/lib/services/claimant-service/claimant-usps-redirect.service.d.ts.map +1 -0
  266. package/lib/services/claimant-service/claimant.service.d.ts +5 -0
  267. package/lib/services/claimant-service/claimant.service.d.ts.map +1 -1
  268. package/lib/services/claims/claims.service.d.ts +5 -24
  269. package/lib/services/claims/claims.service.d.ts.map +1 -1
  270. package/lib/services/lexis-nexis/lexis.nexis.service.d.ts +23 -0
  271. package/lib/services/lexis-nexis/lexis.nexis.service.d.ts.map +1 -0
  272. package/lib/services/login/login.service.d.ts +3 -0
  273. package/lib/services/login/login.service.d.ts.map +1 -1
  274. package/lib/services/ovp/ovp.service.d.ts +17 -0
  275. package/lib/services/ovp/ovp.service.d.ts.map +1 -0
  276. package/lib/services/questionnaire/questionnaire.service.d.ts +0 -1
  277. package/lib/services/questionnaire/questionnaire.service.d.ts.map +1 -1
  278. package/lib/services/questionnaire/validation.service.d.ts +0 -3
  279. package/lib/services/questionnaire/validation.service.d.ts.map +1 -1
  280. package/lib/services/security-service/security.service.d.ts +4 -5
  281. package/lib/services/security-service/security.service.d.ts.map +1 -1
  282. package/lib/services/weekly-cert/weekly-cert-v2.service.d.ts +17 -0
  283. package/lib/services/weekly-cert/weekly-cert-v2.service.d.ts.map +1 -0
  284. package/lib/validations/AppValidators.d.ts +3 -7
  285. package/lib/validations/AppValidators.d.ts.map +1 -1
  286. package/package.json +2 -2
  287. package/public-api.d.ts +4 -15
  288. package/public-api.d.ts.map +1 -1
  289. package/esm2022/lib/components/add-wage/add-wage.component.mjs +0 -160
  290. package/esm2022/lib/components/associate-ssn/associate-ssn.component.mjs +0 -174
  291. package/esm2022/lib/components/dua-request-popup/dua-request-popup.component.mjs +0 -335
  292. package/esm2022/lib/components/employer-info/employer-info.component.mjs +0 -326
  293. package/esm2022/lib/components/employer-pay/employer-pay.component.mjs +0 -243
  294. package/esm2022/lib/components/employer-pay-grid/employer-pay-grid.component.mjs +0 -302
  295. package/esm2022/lib/components/farm-usage/farm-usage.component.mjs +0 -172
  296. package/esm2022/lib/components/gross-earnings/gross-earnings.component.mjs +0 -179
  297. package/esm2022/lib/components/idme/idme.component.mjs +0 -80
  298. package/esm2022/lib/components/scrollable-text/scrollable-text.component.mjs +0 -25
  299. package/esm2022/lib/components/sms/sms.component.mjs +0 -334
  300. package/esm2022/lib/components/wage-grid/wage-grid.component.mjs +0 -274
  301. package/esm2022/lib/models/CountyModel.mjs +0 -3
  302. package/esm2022/lib/models/DuaRequestModel.mjs +0 -3
  303. package/esm2022/lib/models/DuaRetroWeeksComponentModel.mjs +0 -6
  304. package/esm2022/lib/models/EmployerInfoComponentModel.mjs +0 -4
  305. package/esm2022/lib/models/EmployerPayInfoModel.mjs +0 -6
  306. package/esm2022/lib/models/FarmUsageComponentModel.mjs +0 -2
  307. package/esm2022/lib/models/GrossEarningsModel.mjs +0 -3
  308. package/esm2022/lib/models/LexisNexisOtpDetailsResponseModel.mjs +0 -3
  309. package/esm2022/lib/models/ReasonSeparationRequestModel.mjs +0 -3
  310. package/esm2022/lib/models/RetroWeeksModel.mjs +0 -3
  311. package/esm2022/lib/models/SendOtpRequestModel.mjs +0 -3
  312. package/esm2022/lib/models/VerifyOtpRequestModel.mjs +0 -3
  313. package/esm2022/lib/models/WageInfoModel.mjs +0 -4
  314. package/esm2022/lib/models/questionnaire/ScrollableTextModel.mjs +0 -3
  315. package/esm2022/lib/models/questionnaire/WbaHelperTextModel.mjs +0 -3
  316. package/esm2022/lib/services/employer/employer-service.mjs +0 -35
  317. package/lib/components/add-wage/add-wage.component.d.ts +0 -29
  318. package/lib/components/add-wage/add-wage.component.d.ts.map +0 -1
  319. package/lib/components/associate-ssn/associate-ssn.component.d.ts +0 -28
  320. package/lib/components/associate-ssn/associate-ssn.component.d.ts.map +0 -1
  321. package/lib/components/dua-request-popup/dua-request-popup.component.d.ts +0 -59
  322. package/lib/components/dua-request-popup/dua-request-popup.component.d.ts.map +0 -1
  323. package/lib/components/employer-info/employer-info.component.d.ts +0 -48
  324. package/lib/components/employer-info/employer-info.component.d.ts.map +0 -1
  325. package/lib/components/employer-pay/employer-pay.component.d.ts +0 -51
  326. package/lib/components/employer-pay/employer-pay.component.d.ts.map +0 -1
  327. package/lib/components/employer-pay-grid/employer-pay-grid.component.d.ts +0 -43
  328. package/lib/components/employer-pay-grid/employer-pay-grid.component.d.ts.map +0 -1
  329. package/lib/components/farm-usage/farm-usage.component.d.ts +0 -33
  330. package/lib/components/farm-usage/farm-usage.component.d.ts.map +0 -1
  331. package/lib/components/gross-earnings/gross-earnings.component.d.ts +0 -37
  332. package/lib/components/gross-earnings/gross-earnings.component.d.ts.map +0 -1
  333. package/lib/components/idme/idme.component.d.ts +0 -19
  334. package/lib/components/idme/idme.component.d.ts.map +0 -1
  335. package/lib/components/scrollable-text/scrollable-text.component.d.ts +0 -11
  336. package/lib/components/scrollable-text/scrollable-text.component.d.ts.map +0 -1
  337. package/lib/components/sms/sms.component.d.ts +0 -63
  338. package/lib/components/sms/sms.component.d.ts.map +0 -1
  339. package/lib/components/wage-grid/wage-grid.component.d.ts +0 -43
  340. package/lib/components/wage-grid/wage-grid.component.d.ts.map +0 -1
  341. package/lib/models/CountyModel.d.ts +0 -8
  342. package/lib/models/CountyModel.d.ts.map +0 -1
  343. package/lib/models/DuaRequestModel.d.ts +0 -10
  344. package/lib/models/DuaRequestModel.d.ts.map +0 -1
  345. package/lib/models/DuaRetroWeeksComponentModel.d.ts +0 -5
  346. package/lib/models/DuaRetroWeeksComponentModel.d.ts.map +0 -1
  347. package/lib/models/EmployerInfoComponentModel.d.ts +0 -9
  348. package/lib/models/EmployerInfoComponentModel.d.ts.map +0 -1
  349. package/lib/models/EmployerPayInfoModel.d.ts +0 -20
  350. package/lib/models/EmployerPayInfoModel.d.ts.map +0 -1
  351. package/lib/models/FarmUsageComponentModel.d.ts +0 -10
  352. package/lib/models/FarmUsageComponentModel.d.ts.map +0 -1
  353. package/lib/models/GrossEarningsModel.d.ts +0 -6
  354. package/lib/models/GrossEarningsModel.d.ts.map +0 -1
  355. package/lib/models/LexisNexisOtpDetailsResponseModel.d.ts +0 -7
  356. package/lib/models/LexisNexisOtpDetailsResponseModel.d.ts.map +0 -1
  357. package/lib/models/ReasonSeparationRequestModel.d.ts +0 -7
  358. package/lib/models/ReasonSeparationRequestModel.d.ts.map +0 -1
  359. package/lib/models/RetroWeeksModel.d.ts +0 -10
  360. package/lib/models/RetroWeeksModel.d.ts.map +0 -1
  361. package/lib/models/SendOtpRequestModel.d.ts +0 -12
  362. package/lib/models/SendOtpRequestModel.d.ts.map +0 -1
  363. package/lib/models/VerifyOtpRequestModel.d.ts +0 -8
  364. package/lib/models/VerifyOtpRequestModel.d.ts.map +0 -1
  365. package/lib/models/WageInfoModel.d.ts +0 -9
  366. package/lib/models/WageInfoModel.d.ts.map +0 -1
  367. package/lib/models/questionnaire/ScrollableTextModel.d.ts +0 -4
  368. package/lib/models/questionnaire/ScrollableTextModel.d.ts.map +0 -1
  369. package/lib/models/questionnaire/WbaHelperTextModel.d.ts +0 -4
  370. package/lib/models/questionnaire/WbaHelperTextModel.d.ts.map +0 -1
  371. package/lib/services/employer/employer-service.d.ts +0 -16
  372. package/lib/services/employer/employer-service.d.ts.map +0 -1
@@ -18,7 +18,7 @@ import * as i11 from "@ngx-translate/core";
18
18
  const _c0 = ["addressFormDirective"];
19
19
  const _c1 = () => ({ required: "required" });
20
20
  function AddressComponent_ion_col_54_Template(rf, ctx) { if (rf & 1) {
21
- i0.ɵɵelementStart(0, "ion-col", 17)(1, "div", 14)(2, "label", 5);
21
+ i0.ɵɵelementStart(0, "ion-col", 18)(1, "div", 14)(2, "label", 5);
22
22
  i0.ɵɵtext(3);
23
23
  i0.ɵɵpipe(4, "translate");
24
24
  i0.ɵɵelementEnd();
@@ -31,15 +31,15 @@ function AddressComponent_ion_col_54_Template(rf, ctx) { if (rf & 1) {
31
31
  i0.ɵɵadvance(2);
32
32
  i0.ɵɵproperty("for", ctx_r1.inputId ? ctx_r1.inputId + "-county" : "county");
33
33
  i0.ɵɵadvance(1);
34
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 12, "County"));
34
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 13, "County"));
35
35
  i0.ɵɵadvance(3);
36
- i0.ɵɵproperty("options", ctx_r1.countyOptions)("formControl", ctx_r1.county)("autoDisplayFirst", false)("inputId", ctx_r1.inputId ? ctx_r1.inputId + "-county" : "county");
36
+ i0.ɵɵproperty("readonly", ctx_r1.readonly)("options", ctx_r1.countyOptions)("formControl", ctx_r1.county)("autoDisplayFirst", false)("inputId", ctx_r1.inputId ? ctx_r1.inputId + "-county" : "county");
37
37
  i0.ɵɵadvance(2);
38
38
  i0.ɵɵclassMap("app-grid");
39
- i0.ɵɵproperty("field", ctx_r1.county)("form", _r0)("errDef", i0.ɵɵpureFunction0(14, _c1));
39
+ i0.ɵɵproperty("field", ctx_r1.county)("form", _r0)("errDef", i0.ɵɵpureFunction0(15, _c1));
40
40
  } }
41
41
  function AddressComponent_ion_col_55_Template(rf, ctx) { if (rf & 1) {
42
- i0.ɵɵelementStart(0, "ion-col", 17)(1, "div", 14)(2, "label", 5);
42
+ i0.ɵɵelementStart(0, "ion-col", 18)(1, "div", 14)(2, "label", 5);
43
43
  i0.ɵɵtext(3);
44
44
  i0.ɵɵpipe(4, "translate");
45
45
  i0.ɵɵelementEnd();
@@ -52,12 +52,12 @@ function AddressComponent_ion_col_55_Template(rf, ctx) { if (rf & 1) {
52
52
  i0.ɵɵadvance(2);
53
53
  i0.ɵɵproperty("for", ctx_r2.inputId ? ctx_r2.inputId + "-town" : "town");
54
54
  i0.ɵɵadvance(1);
55
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 12, "Town"));
55
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 13, "Town"));
56
56
  i0.ɵɵadvance(3);
57
- i0.ɵɵproperty("options", ctx_r2.townOptions)("formControl", ctx_r2.town)("autoDisplayFirst", false)("inputId", ctx_r2.inputId ? ctx_r2.inputId + "-town" : "town");
57
+ i0.ɵɵproperty("readonly", ctx_r2.readonly)("options", ctx_r2.townOptions)("formControl", ctx_r2.town)("autoDisplayFirst", false)("inputId", ctx_r2.inputId ? ctx_r2.inputId + "-town" : "town");
58
58
  i0.ɵɵadvance(2);
59
59
  i0.ɵɵclassMap("app-grid");
60
- i0.ɵɵproperty("field", ctx_r2.town)("form", _r0)("errDef", i0.ɵɵpureFunction0(14, _c1));
60
+ i0.ɵɵproperty("field", ctx_r2.town)("form", _r0)("errDef", i0.ɵɵpureFunction0(15, _c1));
61
61
  } }
62
62
  const _c2 = () => ({ required: "required", invalidLength: "Zip code should be of 5 or 9 digits.", invalidNumber: "Zip code should only have numbers.", invalidZipCode: "please enter a valid zip code" });
63
63
  export class AddressComponent {
@@ -73,6 +73,7 @@ export class AddressComponent {
73
73
  this.countryOptions = ComboOption.COUNTRY;
74
74
  this.addressData = new AddressComponentModel();
75
75
  this.address = new EventEmitter();
76
+ this.readonly = false;
76
77
  this.usZipcodeValidations = [Validators.required, AppValidators.isValidZipCode];
77
78
  this.canadaZipcodeValidations = [Validators.required, AppValidators.isValidCanadianZipCode];
78
79
  this.onTouched = () => { };
@@ -172,25 +173,28 @@ export class AddressComponent {
172
173
  return this.addressForm.controls['optionalAddress'];
173
174
  }
174
175
  getAddressData(event) {
175
- if (this.zip && this.zip.value) {
176
- this.dms
177
- .getAddress(this.zip.value)
178
- .subscribe(res => {
179
- this.addressData = res;
180
- if (this.addressData.city) {
181
- this.city.patchValue(this.addressData.city);
182
- }
183
- if (this.addressData.state) {
184
- this.state.patchValue(this.addressData.state);
185
- }
186
- if (this.addressData.county) {
187
- this.county.patchValue(this.addressData.county);
188
- }
189
- this.state.updateValueAndValidity();
190
- }, err => {
191
- this.logger.debug(err);
192
- });
193
- }
176
+ /**Uncomment when zip-lookup if fixed */
177
+ // if (this.zip && this.zip.value) {
178
+ // this.dms
179
+ // .getAddress(this.zip.value)
180
+ // .subscribe(
181
+ // res => {
182
+ // this.addressData = res;
183
+ // if(this.addressData.city){
184
+ // this.city.patchValue(this.addressData.city);
185
+ // }
186
+ // if(this.addressData.state){
187
+ // this.state.patchValue(this.addressData.state);
188
+ // }
189
+ // if(this.addressData.county){
190
+ // this.county.patchValue(this.addressData.county);
191
+ // }
192
+ // this.state.updateValueAndValidity();
193
+ // },
194
+ // err => {
195
+ // this.logger.debug(err);
196
+ // });
197
+ // }
194
198
  }
195
199
  filterCountry(event) {
196
200
  this.logger.debug('event', event);
@@ -291,7 +295,7 @@ export class AddressComponent {
291
295
  formValue.state = state;
292
296
  }
293
297
  if (formValue.county && !formValue.county.text && formValue.county.value && formValue.state.value === 'MS') {
294
- this.setMSCounty(formValue['zip'], formValue.county);
298
+ this.setMSCounty(formValue.county);
295
299
  }
296
300
  if (formValue.town && !formValue.town.text && formValue.town.value && formValue.state.value === 'ME') {
297
301
  this.setMETown(formValue['zip'], formValue.town);
@@ -333,8 +337,8 @@ export class AddressComponent {
333
337
  this.town.patchValue(selectedCounty);
334
338
  });
335
339
  }
336
- setMSCounty(zipCode, county) {
337
- this.questionnaireService.getCounty('MS', zipCode).subscribe(res => {
340
+ setMSCounty(county) {
341
+ this.questionnaireService.getCounty('MS', this.zip.value).subscribe(res => {
338
342
  this.countyOptions = res['choices'];
339
343
  let selectedCounty = this.countyOptions.filter(c => {
340
344
  return c.value == county.value;
@@ -356,7 +360,7 @@ export class AddressComponent {
356
360
  } if (rf & 2) {
357
361
  let _t;
358
362
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.addressFormDirective = _t.first);
359
- } }, inputs: { countyRequired: "countyRequired", fromPopup: "fromPopup", inputId: "inputId" }, outputs: { address: "address" }, features: [i0.ɵɵProvidersFeature([{
363
+ } }, inputs: { countyRequired: "countyRequired", fromPopup: "fromPopup", inputId: "inputId", readonly: "readonly" }, outputs: { address: "address" }, features: [i0.ɵɵProvidersFeature([{
360
364
  provide: NG_VALUE_ACCESSOR,
361
365
  useExisting: AddressComponent,
362
366
  multi: true
@@ -366,7 +370,7 @@ export class AddressComponent {
366
370
  multi: true,
367
371
  useExisting: AddressComponent
368
372
  }
369
- ])], decls: 56, vars: 76, consts: [[2, "margin-bottom", "0px", "margin-left", "0px", 3, "formGroup"], ["addressFormDirective", "ngForm"], [1, "p-formgrid", 3, "id"], [3, "ngClass"], [1, "field"], [3, "for"], ["optionLabel", "text", "appendTo", "body", 3, "options", "formControl", "autoDisplayFirst", "inputId"], [3, "field", "form", "errDef"], ["type", "input", "pInputText", "", "minlength", "5", "maxlength", "9", 3, "id", "formControl", "blur"], [2, "padding-right", "0px", 3, "ngClass"], [1, "field", "p-fluid"], ["type", "input", "pInputText", "", "maxlength", "40", 3, "id", "formControl"], ["type", "input", "pInputText", "", "placeholder", "Optional", "maxlength", "40", 3, "id", "formControl"], [2, "padding-bottom", "0px", 3, "ngClass"], [1, "field", 2, "margin-bottom", "0px"], ["type", "input", "pInputText", "", "maxlength", "30", 3, "id", "formControl"], ["size", "12", "style", "padding-bottom: 0px;", 3, "ngClass", 4, "ngIf"], ["size", "12", 2, "padding-bottom", "0px", 3, "ngClass"]], template: function AddressComponent_Template(rf, ctx) { if (rf & 1) {
373
+ ])], decls: 56, vars: 83, consts: [[2, "margin-bottom", "0px", "margin-left", "0px", 3, "formGroup"], ["addressFormDirective", "ngForm"], [1, "p-formgrid", 3, "id"], [3, "ngClass"], [1, "field"], [3, "for"], ["optionLabel", "text", "appendTo", "body", 3, "readonly", "options", "formControl", "autoDisplayFirst", "inputId"], [3, "field", "form", "errDef"], ["type", "input", "pInputText", "", "minlength", "5", "maxlength", "9", 3, "readonly", "id", "formControl", "blur"], [2, "padding-right", "0px", 3, "ngClass"], [1, "field", "p-fluid"], ["type", "input", "pInputText", "", "maxlength", "40", 3, "readonly", "id", "formControl"], ["type", "input", "pInputText", "", "placeholder", "Optional", "maxlength", "40", 3, "readonly", "id", "formControl"], [2, "padding-bottom", "0px", 3, "ngClass"], [1, "field", 2, "margin-bottom", "0px"], ["type", "input", "pInputText", "", "maxlength", "30", 3, "readonly", "id", "formControl"], ["optionLabel", "text", "appendTo", "body", 3, "readonly", "options", "formControl", "autoDisplayFirst", "inputId", "ariaLabel"], ["size", "12", "style", "padding-bottom: 0px;", 3, "ngClass", 4, "ngIf"], ["size", "12", 2, "padding-bottom", "0px", 3, "ngClass"]], template: function AddressComponent_Template(rf, ctx) { if (rf & 1) {
370
374
  i0.ɵɵelementStart(0, "form", 0, 1)(2, "div", 2)(3, "ion-row")(4, "ion-col", 3)(5, "div", 4)(6, "label", 5);
371
375
  i0.ɵɵtext(7);
372
376
  i0.ɵɵpipe(8, "translate");
@@ -402,9 +406,9 @@ export class AddressComponent {
402
406
  i0.ɵɵtext(48);
403
407
  i0.ɵɵpipe(49, "translate");
404
408
  i0.ɵɵelementEnd();
405
- i0.ɵɵelement(50, "br")(51, "app-dropdown", 6)(52, "br")(53, "app-error", 7);
409
+ i0.ɵɵelement(50, "br")(51, "app-dropdown", 16)(52, "br")(53, "app-error", 7);
406
410
  i0.ɵɵelementEnd()();
407
- i0.ɵɵtemplate(54, AddressComponent_ion_col_54_Template, 9, 15, "ion-col", 16)(55, AddressComponent_ion_col_55_Template, 9, 15, "ion-col", 16);
411
+ i0.ɵɵtemplate(54, AddressComponent_ion_col_54_Template, 9, 16, "ion-col", 17)(55, AddressComponent_ion_col_55_Template, 9, 16, "ion-col", 17);
408
412
  i0.ɵɵelementEnd()()();
409
413
  } if (rf & 2) {
410
414
  const _r0 = i0.ɵɵreference(1);
@@ -416,60 +420,60 @@ export class AddressComponent {
416
420
  i0.ɵɵadvance(2);
417
421
  i0.ɵɵproperty("for", ctx.inputId ? ctx.inputId + "-country" : "country");
418
422
  i0.ɵɵadvance(1);
419
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 61, "Country"));
423
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 68, "Country"));
420
424
  i0.ɵɵadvance(3);
421
- i0.ɵɵproperty("options", ctx.countryOptions)("formControl", ctx.country)("autoDisplayFirst", false)("inputId", ctx.inputId ? ctx.inputId + "-country" : "country");
425
+ i0.ɵɵproperty("readonly", ctx.readonly)("options", ctx.countryOptions)("formControl", ctx.country)("autoDisplayFirst", false)("inputId", ctx.inputId ? ctx.inputId + "-country" : "country");
422
426
  i0.ɵɵadvance(1);
423
427
  i0.ɵɵclassMap("app-grid");
424
- i0.ɵɵproperty("field", ctx.country)("form", _r0)("errDef", i0.ɵɵpureFunction0(71, _c1));
428
+ i0.ɵɵproperty("field", ctx.country)("form", _r0)("errDef", i0.ɵɵpureFunction0(78, _c1));
425
429
  i0.ɵɵadvance(1);
426
430
  i0.ɵɵproperty("ngClass", ctx.fromPopup ? "col app-col" : "col col-fit-content");
427
431
  i0.ɵɵadvance(2);
428
432
  i0.ɵɵproperty("for", ctx.inputId ? ctx.inputId + "-zip" : "zip");
429
433
  i0.ɵɵadvance(1);
430
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(16, 63, "Zip code"));
434
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(16, 70, "Zipcode"));
431
435
  i0.ɵɵadvance(3);
432
- i0.ɵɵproperty("id", ctx.inputId ? ctx.inputId + "-zip" : "zip")("formControl", ctx.zip);
436
+ i0.ɵɵproperty("readonly", ctx.readonly)("id", ctx.inputId ? ctx.inputId + "-zip" : "zip")("formControl", ctx.zip);
433
437
  i0.ɵɵadvance(2);
434
438
  i0.ɵɵclassMap("app-grid");
435
- i0.ɵɵproperty("field", ctx.zip)("form", _r0)("errDef", i0.ɵɵpureFunction0(72, _c2));
439
+ i0.ɵɵproperty("field", ctx.zip)("form", _r0)("errDef", i0.ɵɵpureFunction0(79, _c2));
436
440
  i0.ɵɵadvance(2);
437
441
  i0.ɵɵproperty("ngClass", ctx.fromPopup ? "col" : "col col-fit-content");
438
442
  i0.ɵɵadvance(2);
439
443
  i0.ɵɵproperty("for", ctx.inputId ? ctx.inputId + "-streetAddress" : "streetAddress");
440
444
  i0.ɵɵadvance(1);
441
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(26, 65, "Street Address"));
445
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(26, 72, "Street Address"));
442
446
  i0.ɵɵadvance(3);
443
- i0.ɵɵproperty("id", ctx.inputId ? ctx.inputId + "-streetAddress" : "streetAddress")("formControl", ctx.streetAddress);
447
+ i0.ɵɵproperty("readonly", ctx.readonly)("id", ctx.inputId ? ctx.inputId + "-streetAddress" : "streetAddress")("formControl", ctx.streetAddress);
444
448
  i0.ɵɵadvance(2);
445
449
  i0.ɵɵclassMap("app-grid");
446
- i0.ɵɵproperty("field", ctx.streetAddress)("form", _r0)("errDef", i0.ɵɵpureFunction0(73, _c1));
450
+ i0.ɵɵproperty("field", ctx.streetAddress)("form", _r0)("errDef", i0.ɵɵpureFunction0(80, _c1));
447
451
  i0.ɵɵadvance(2);
448
452
  i0.ɵɵproperty("ngClass", ctx.fromPopup ? "col" : "col col-fit-content");
449
453
  i0.ɵɵadvance(2);
450
- i0.ɵɵproperty("id", ctx.inputId ? ctx.inputId + "-optionalAddress" : "optionalAddress")("formControl", ctx.optionalAddress);
454
+ i0.ɵɵproperty("readonly", ctx.readonly)("id", ctx.inputId ? ctx.inputId + "-optionalAddress" : "optionalAddress")("formControl", ctx.optionalAddress);
451
455
  i0.ɵɵadvance(2);
452
456
  i0.ɵɵproperty("ngClass", ctx.fromPopup ? "col" : "col col-fit-content");
453
457
  i0.ɵɵadvance(2);
454
458
  i0.ɵɵproperty("for", ctx.inputId ? ctx.inputId + "-city" : "city");
455
459
  i0.ɵɵadvance(1);
456
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(40, 67, "City"));
460
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(40, 74, "City"));
457
461
  i0.ɵɵadvance(3);
458
- i0.ɵɵproperty("id", ctx.inputId ? ctx.inputId + "-city" : "city")("formControl", ctx.city);
462
+ i0.ɵɵproperty("readonly", ctx.readonly)("id", ctx.inputId ? ctx.inputId + "-city" : "city")("formControl", ctx.city);
459
463
  i0.ɵɵadvance(2);
460
464
  i0.ɵɵclassMap("app-grid");
461
- i0.ɵɵproperty("field", ctx.city)("form", _r0)("errDef", i0.ɵɵpureFunction0(74, _c1));
465
+ i0.ɵɵproperty("field", ctx.city)("form", _r0)("errDef", i0.ɵɵpureFunction0(81, _c1));
462
466
  i0.ɵɵadvance(1);
463
467
  i0.ɵɵproperty("ngClass", ctx.fromPopup ? "col app-col" : "col col-fit-content");
464
468
  i0.ɵɵadvance(2);
465
469
  i0.ɵɵproperty("for", ctx.inputId ? ctx.inputId + "-state" : "state");
466
470
  i0.ɵɵadvance(1);
467
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(49, 69, "State"));
471
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(49, 76, "State"));
468
472
  i0.ɵɵadvance(3);
469
- i0.ɵɵproperty("options", ctx.stateOptions)("formControl", ctx.state)("autoDisplayFirst", false)("inputId", ctx.inputId ? ctx.inputId + "-state" : "state");
473
+ i0.ɵɵproperty("readonly", ctx.readonly)("options", ctx.stateOptions)("formControl", ctx.state)("autoDisplayFirst", false)("inputId", ctx.inputId ? ctx.inputId + "-state" : "state")("ariaLabel", ctx.inputId ? ctx.inputId + "-state" : "state");
470
474
  i0.ɵɵadvance(2);
471
475
  i0.ɵɵclassMap("app-grid");
472
- i0.ɵɵproperty("field", ctx.state)("form", _r0)("errDef", i0.ɵɵpureFunction0(75, _c1));
476
+ i0.ɵɵproperty("field", ctx.state)("form", _r0)("errDef", i0.ɵɵpureFunction0(82, _c1));
473
477
  i0.ɵɵadvance(1);
474
478
  i0.ɵɵproperty("ngIf", ctx.state.value && (ctx.state.value.value === "MS" && ctx.forState === "MS" || ctx.state.value.value === "CT" && ctx.forState === "MS") && ctx.countyRequired === true);
475
479
  i0.ɵɵadvance(1);
@@ -488,7 +492,7 @@ export class AddressComponent {
488
492
  multi: true,
489
493
  useExisting: AddressComponent
490
494
  }
491
- ], template: "<form [formGroup]=\"addressForm\" #addressFormDirective=\"ngForm\" style=\"margin-bottom: 0px; margin-left: 0px;\">\r\n <!-- <div [formGroup]=\"addressForm\" #addressFormDirective=\"ngForm\" > -->\r\n\r\n <div class=\"p-formgrid\" [id]=\"inputId ? inputId : 'address-div'\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" >\r\n <div class=\"field\">\r\n <label [for]=\"inputId ? inputId + '-country' : 'country'\">{{'Country' | translate}}</label><br />\r\n <app-dropdown [options]=\"countryOptions\" [formControl]=\"country\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-country' : 'country'\" ></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='country' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col app-col' : 'col col-fit-content'\" >\r\n <div class=\"field\">\r\n <label [for]=\"inputId ? inputId + '-zip' : 'zip'\">{{'Zip code' | translate}}</label><br />\r\n <input [id]=\"inputId ? inputId + '-zip' : 'zip'\" type=\"input\" pInputText [formControl]=\"zip\" minlength=\"5\" maxlength=\"9\"\r\n (blur)=\"getAddressData($event)\" /><br />\r\n <app-error [class]=\"'app-grid'\" [field]='zip' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n invalidLength: 'Zip code should be of 5 or 9 digits.',\r\n invalidNumber: 'Zip code should only have numbers.',\r\n invalidZipCode: 'please enter a valid zip code',\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n \r\n\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-right: 0px;\">\r\n <div class=\"field p-fluid\">\r\n <label [for]=\"inputId ? inputId + '-streetAddress' : 'streetAddress'\">{{'Street Address' | translate}}</label><br />\r\n <input [id]=\"inputId ? inputId + '-streetAddress' : 'streetAddress'\" type=\"input\" pInputText [formControl]=\"streetAddress\" maxlength=\"40\" /><br />\r\n <app-error [class]=\"'app-grid'\" [field]='streetAddress' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-right: 0px;\">\r\n <div class=\"field p-fluid\">\r\n <input [id]=\"inputId ? inputId + '-optionalAddress' : 'optionalAddress'\" type=\"input\" pInputText [formControl]=\"optionalAddress\" placeholder=\"Optional\"\r\n maxlength=\"40\" />\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-city' : 'city'\">{{'City' | translate}}</label><br />\r\n <input [id]=\"inputId ? inputId + '-city' : 'city'\" type=\"input\" pInputText [formControl]=\"city\" maxlength=\"30\" /><br />\r\n <app-error [class]=\"'app-grid'\" [field]='city' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col app-col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-state' : 'state'\">{{'State' | translate}}</label><br />\r\n <app-dropdown [options]=\"stateOptions\" [formControl]=\"state\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-state' : 'state'\"></app-dropdown><br />\r\n <app-error [class]=\"'app-grid'\" [field]='state' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" *ngIf=\"state.value && (state.value.value==='MS' && forState==='MS' \r\n || (state.value.value==='CT' && forState==='MS')) && countyRequired===true\" size=\"12\"style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-county' : 'county'\">{{'County' | translate}}</label><br />\r\n <app-dropdown [options]=\"countyOptions\" [formControl]=\"county\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-county' : 'county'\"></app-dropdown><br/>\r\n <app-error [class]=\"'app-grid'\" [field]='county' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" *ngIf=\"state.value && state.value.value==='ME' && forState==='ME' && countyRequired===true\" size=\"12\" style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-town' : 'town'\">{{'Town' | translate}}</label><br />\r\n <app-dropdown [options]=\"townOptions\" [formControl]=\"town\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-town' : 'town'\"></app-dropdown><br/>\r\n <app-error [class]=\"'app-grid'\" [field]='town' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n <!-- </div> -->\r\n</form>", styles: [".col{padding-top:0;padding-bottom:0}.form-lbl{padding-bottom:6px}.inline-flex{display:inline-flex}ion-col{padding-left:0}.app-col{margin-left:27px;padding-right:0}\n"] }]
495
+ ], template: "<form [formGroup]=\"addressForm\" #addressFormDirective=\"ngForm\" style=\"margin-bottom: 0px; margin-left: 0px;\">\r\n <!-- <div [formGroup]=\"addressForm\" #addressFormDirective=\"ngForm\" > -->\r\n\r\n <div class=\"p-formgrid\" [id]=\"inputId ? inputId : 'address-div'\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" >\r\n <div class=\"field\">\r\n <label [for]=\"inputId ? inputId + '-country' : 'country'\">{{'Country' | translate}}</label><br />\r\n <app-dropdown [readonly]=\"readonly\" [options]=\"countryOptions\" [formControl]=\"country\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-country' : 'country'\" ></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='country' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col app-col' : 'col col-fit-content'\" >\r\n <div class=\"field\">\r\n <label [for]=\"inputId ? inputId + '-zip' : 'zip'\">{{'Zipcode' | translate}}</label><br />\r\n <input [readonly]=\"readonly\" [id]=\"inputId ? inputId + '-zip' : 'zip'\" type=\"input\" pInputText [formControl]=\"zip\" minlength=\"5\" maxlength=\"9\"\r\n (blur)=\"getAddressData($event)\" /><br />\r\n <app-error [class]=\"'app-grid'\" [field]='zip' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n invalidLength: 'Zip code should be of 5 or 9 digits.',\r\n invalidNumber: 'Zip code should only have numbers.',\r\n invalidZipCode: 'please enter a valid zip code',\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n \r\n\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-right: 0px;\">\r\n <div class=\"field p-fluid\">\r\n <label [for]=\"inputId ? inputId + '-streetAddress' : 'streetAddress'\">{{'Street Address' | translate}}</label><br />\r\n <input [readonly]=\"readonly\" [id]=\"inputId ? inputId + '-streetAddress' : 'streetAddress'\" type=\"input\" pInputText [formControl]=\"streetAddress\" maxlength=\"40\" /><br />\r\n <app-error [class]=\"'app-grid'\" [field]='streetAddress' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-right: 0px;\">\r\n <div class=\"field p-fluid\">\r\n <input [readonly]=\"readonly\" [id]=\"inputId ? inputId + '-optionalAddress' : 'optionalAddress'\" type=\"input\" pInputText [formControl]=\"optionalAddress\" placeholder=\"Optional\"\r\n maxlength=\"40\" />\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-city' : 'city'\">{{'City' | translate}}</label><br />\r\n <input [readonly]=\"readonly\" [id]=\"inputId ? inputId + '-city' : 'city'\" type=\"input\" pInputText [formControl]=\"city\" maxlength=\"30\" /><br />\r\n <app-error [class]=\"'app-grid'\" [field]='city' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col app-col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-state' : 'state'\">{{'State' | translate}}</label><br />\r\n <app-dropdown [readonly]=\"readonly\" [options]=\"stateOptions\" [formControl]=\"state\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-state' : 'state'\" [ariaLabel]=\"inputId ? inputId + '-state' : 'state'\"></app-dropdown><br />\r\n <app-error [class]=\"'app-grid'\" [field]='state' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" *ngIf=\"state.value && (state.value.value==='MS' && forState==='MS' \r\n || (state.value.value==='CT' && forState==='MS')) && countyRequired===true\" size=\"12\"style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-county' : 'county'\">{{'County' | translate}}</label><br />\r\n <app-dropdown [readonly]=\"readonly\" [options]=\"countyOptions\" [formControl]=\"county\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-county' : 'county'\"></app-dropdown><br/>\r\n <app-error [class]=\"'app-grid'\" [field]='county' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" *ngIf=\"state.value && state.value.value==='ME' && forState==='ME' && countyRequired===true\" size=\"12\" style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-town' : 'town'\">{{'Town' | translate}}</label><br />\r\n <app-dropdown [readonly]=\"readonly\" [options]=\"townOptions\" [formControl]=\"town\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-town' : 'town'\"></app-dropdown><br/>\r\n <app-error [class]=\"'app-grid'\" [field]='town' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n <!-- </div> -->\r\n</form>", styles: [".col{padding-top:0;padding-bottom:0}.form-lbl{padding-bottom:6px}.inline-flex{display:inline-flex}ion-col{padding-left:0}.app-col{margin-left:27px;padding-right:0}\n"] }]
492
496
  }], () => [{ type: i1.UntypedFormBuilder }, { type: i2.UtilService }, { type: i3.QuestionnaireService }, { type: i4.LoggerService }, { type: i5.DmsService }], { addressFormDirective: [{
493
497
  type: ViewChild,
494
498
  args: ['addressFormDirective', { static: false }]
@@ -500,6 +504,8 @@ export class AddressComponent {
500
504
  type: Input
501
505
  }], inputId: [{
502
506
  type: Input
507
+ }], readonly: [{
508
+ type: Input
503
509
  }] }); })();
504
510
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AddressComponent, { className: "AddressComponent", filePath: "lib\\components\\address\\address.component.ts", lineNumber: 29 }); })();
505
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYWRkcmVzcy9hZGRyZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9hZGRyZXNzL2FkZHJlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBdUYsYUFBYSxFQUFFLGlCQUFpQixFQUFhLFVBQVUsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBRTNMLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUtwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNnRTFELG1DQUNzSCxjQUFBLGVBQUE7SUFFeEQsWUFBd0I7O0lBQUEsaUJBQVE7SUFBQSxxQkFBTSxzQkFBQSxTQUFBLG1CQUFBO0lBTWhHLGlCQUFNLEVBQUE7Ozs7SUFURCwwRUFBcUQ7SUFHakQsZUFBZ0Q7SUFBaEQsNEVBQWdEO0lBQUMsZUFBd0I7SUFBeEIscURBQXdCO0lBQ2xFLGVBQXlCO0lBQXpCLDhDQUF5Qiw4QkFBQSwyQkFBQSxtRUFBQTtJQUU1QixlQUFvQjtJQUFwQix5QkFBb0I7SUFBQyxxQ0FBZ0IsYUFBQSx1Q0FBQTs7O0lBS3RELG1DQUFtTSxjQUFBLGVBQUE7SUFFekksWUFBc0I7O0lBQUEsaUJBQVE7SUFBQSxxQkFBTSxzQkFBQSxTQUFBLG1C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QUF0QixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSztZQUNHLE9BQU87a0JBQWYsS0FBSzs7a0ZBZEssZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgTmdGb3JtLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9yLCBWYWxpZGF0b3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWRkcmVzc0NvbXBvbmVudE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0FkZHJlc3NDb21wb25lbnRNb2RlbCc7XG5pbXBvcnQgeyBDb21ib09wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0NvbWJvTW9kZWwnO1xuaW1wb3J0IHsgRG1zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rtcy1zZXJ2aWNlL2Rtcy5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUXVlc3Rpb25uYWlyZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xdWVzdGlvbm5haXJlL3F1ZXN0aW9ubmFpcmUuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi92YWxpZGF0aW9ucy9BcHBWYWxpZGF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFkZHJlc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkcmVzcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FkZHJlc3MuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbe1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBBZGRyZXNzQ29tcG9uZW50LFxuICAgIG11bHRpOiB0cnVlXG4gIH0sXG4gIHtcbiAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgIG11bHRpOiB0cnVlLFxuICAgIHVzZUV4aXN0aW5nOiBBZGRyZXNzQ29tcG9uZW50XG4gIH1cbiAgXSxcblxufSlcbmV4cG9ydCBjbGFzcyBBZGRyZXNzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBWYWxpZGF0b3Ige1xuXG4gIEBWaWV3Q2hpbGQoJ2FkZHJlc3NGb3JtRGlyZWN0aXZlJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyBhZGRyZXNzRm9ybURpcmVjdGl2ZTogTmdGb3JtO1xuXG4gIHB1YmxpYyBhZGRyZXNzRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgcHVibGljIHN0YXRlT3B0aW9uczogYW55ID0gW107XG4gIHB1YmxpYyBjb3VudHlPcHRpb25zOiBhbnkgPSBbXTtcbiAgcHVibGljIHRvd25PcHRpb25zOiBhbnkgPSBbXTtcbiAgcHVibGljIGNvdW50cnlPcHRpb25zID0gQ29tYm9PcHRpb24uQ09VTlRSWTtcbiAgcHVibGljIGFkZHJlc3NEYXRhOiBBZGRyZXNzQ29tcG9uZW50TW9kZWwgPSBuZXcgQWRkcmVzc0NvbXBvbmVudE1vZGVsKCk7XG4gIEBPdXRwdXQoKSBhZGRyZXNzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBASW5wdXQoKSBjb3VudHlSZXF1aXJlZDogQm9vbGVhbjtcbiAgQElucHV0KCkgZnJvbVBvcHVwOiBCb29sZWFuO1xuICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmc7XG4gIHB1YmxpYyBmb3JTdGF0ZTogc3RyaW5nO1xuICB1c1ppcGNvZGVWYWxpZGF0aW9uczogVmFsaWRhdG9yRm5bXSA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBBcHBWYWxpZGF0b3JzLmlzVmFsaWRaaXBDb2RlXTtcbiAgY2FuYWRhWmlwY29kZVZhbGlkYXRpb25zOiBWYWxpZGF0b3JGbltdID0gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEFwcFZhbGlkYXRvcnMuaXNWYWxpZENhbmFkaWFuWmlwQ29kZV07XG5cbiAgY29uc3RydWN0b3IocHVibGljIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHB1YmxpYyB1dGlsOiBVdGlsU2VydmljZSwgcHVibGljIHF1ZXN0aW9ubmFpcmVTZXJ2aWNlOiBRdWVzdGlvbm5haXJlU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSwgcHJpdmF0ZSBkbXM6IERtc1NlcnZpY2UpIHtcbiAgICB0aGlzLmZvclN0YXRlID0gdXRpbC5nZXRTdGF0ZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICB0aGlzLmFkZHJlc3NGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAnY291bnRyeSc6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICd6aXAnOiBbbnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSldLFxuICAgICAgJ3N0cmVldEFkZHJlc3MnOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAnc3RhdGUnOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAnb3B0aW9uYWxBZGRyZXNzJzogW251bGxdLFxuICAgICAgJ3Rvd24nOiBbbnVsbF0sXG4gICAgICAnY291bnR5JzogW251bGxdLFxuICAgICAgJ2NpdHknOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy5zZXRSZXF1aXJlZFZhbGlkYXRpb24oKTtcblxuICAgIHRoaXMuY291bnRyeS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGNvdW50cnkgPT4ge1xuICAgICAgdGhpcy5maWx0ZXJTdGF0ZShjb3VudHJ5KVxuICAgIH0pO1xuXG4gICAgdGhpcy5zdGF0ZS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgIGlmKHN0YXRlKXtcbiAgICAgICAgaWYodGhpcy51dGlsLmlzU3RhdGUoJ01TJykgJiYgc3RhdGUudmFsdWUgPT0gJ01TJyl7XG4gICAgICAgICAgdGhpcy5maWx0ZXJDb3VudHkoc3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXMudXRpbC5pc1N0YXRlKCdDVCcpICYmIHN0YXRlLnZhbHVlID09ICdDVCcpe1xuICAgICAgICAgIHRoaXMuZmlsdGVyQ291bnR5KHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLnV0aWwuaXNTdGF0ZSgnTUUnKSAmJiBzdGF0ZS52YWx1ZSA9PSAnTUUnKXtcbiAgICAgICAgICB0aGlzLmZpbHRlclRvd24oc3RhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnppcC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCB6aXAgPT4ge1xuICAgICAgaWYoemlwICYmIHRoaXMuc3RhdGUudmFsdWUgPT0gdGhpcy5mb3JTdGF0ZSl7XG4gICAgICAgIHRoaXMuZmlsdGVyQ291bnR5KHRoaXMuc3RhdGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5jb3VudHJ5LnNldFZhbHVlKHsgdmFsdWU6IFwiVVNcIiwgdGV4dDogXCJVbml0ZWQgU3RhdGVzXCIgfSk7XG4gIH1cblxuICBzZXRSZXF1aXJlZFZhbGlkYXRpb24oKSB7XG4gICAgdGhpcy5jb3VudHJ5LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoYyA9PiB7XG4gICAgICBpZihjLnZhbHVlID09ICdVUycpe1xuICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuemlwKTtcbiAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy56aXAsIHRoaXMudXNaaXBjb2RlVmFsaWRhdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmKGMudmFsdWUgPT0gJ0NBJyl7XG4gICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy56aXApO1xuICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLnppcCwgdGhpcy5jYW5hZGFaaXBjb2RlVmFsaWRhdGlvbnMpO1xuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5zdGF0ZS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHN0YXRlVmFsdWUgPT4ge1xuICAgICAgaWYgKHN0YXRlVmFsdWUpIHtcbiAgICAgICAgaWYgKCgoc3RhdGVWYWx1ZS52YWx1ZSA9PT0gJ01TJyAmJiB0aGlzLmZvclN0YXRlID09PSAnTVMnKVxuICAgICAgICAgIHx8IChzdGF0ZVZhbHVlLnZhbHVlID09PSAnQ1QnICYmIHRoaXMuZm9yU3RhdGUgPT09ICdDVCcpKSAmJiB0aGlzLmNvdW50eVJlcXVpcmVkID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuY291bnR5KTtcbiAgICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMudG93bik7XG4gICAgICAgICAgdGhpcy50b3duLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlVmFsdWUudmFsdWUgPT09ICdNRScgJiYgdGhpcy5mb3JTdGF0ZSA9PT0gJ01FJyAmJiB0aGlzLmNvdW50eVJlcXVpcmVkID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMudG93bik7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNvdW50eSk7XG4gICAgICAgICAgdGhpcy5jb3VudHkuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNvdW50eSk7XG4gICAgICAgICAgdGhpcy5jb3VudHkuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnRvd24pO1xuICAgICAgICAgIHRoaXMudG93bi5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgfSk7XG5cbiAgfVxuXG4gIGdldCB0b3duKCkge1xuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWyd0b3duJ107XG4gIH1cblxuICBnZXQgY291bnR5KCkge1xuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWydjb3VudHknXTtcbiAgfVxuXG4gIGdldCBjaXR5KCkge1xuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWydjaXR5J107XG4gIH1cblxuICBnZXQgY291bnRyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1snY291bnRyeSddO1xuICB9XG5cbiAgZ2V0IHN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWydzdGF0ZSddO1xuICB9XG5cbiAgZ2V0IHppcCgpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1snemlwJ107XG4gIH1cblxuICBnZXQgc3RyZWV0QWRkcmVzcygpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1snc3RyZWV0QWRkcmVzcyddO1xuICB9XG5cbiAgZ2V0IG9wdGlvbmFsQWRkcmVzcygpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1snb3B0aW9uYWxBZGRyZXNzJ107XG4gIH1cblxuICBnZXRBZGRyZXNzRGF0YShldmVudCkge1xuICAgIGlmICh0aGlzLnppcCAmJiB0aGlzLnppcC52YWx1ZSkge1xuICAgICAgdGhpcy5kbXNcbiAgICAgICAgLmdldEFkZHJlc3ModGhpcy56aXAudmFsdWUpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWRkcmVzc0RhdGEgPSByZXM7XG4gICAgICAgICAgICBpZih0aGlzLmFkZHJlc3NEYXRhLmNpdHkpe1xuICAgICAgICAgICAgICB0aGlzLmNpdHkucGF0Y2hWYWx1ZSh0aGlzLmFkZHJlc3NEYXRhLmNpdHkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZih0aGlzLmFkZHJlc3NEYXRhLnN0YXRlKXtcbiAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5wYXRjaFZhbHVlKHRoaXMuYWRkcmVzc0RhdGEuc3RhdGUpO1xuICAgICAgICAgICAgfSBcblxuICAgICAgICAgICAgaWYodGhpcy5hZGRyZXNzRGF0YS5jb3VudHkpe1xuICAgICAgICAgICAgICB0aGlzLmNvdW50eS5wYXRjaFZhbHVlKHRoaXMuYWRkcmVzc0RhdGEuY291bnR5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhdGUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGVycik7XG4gICAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZmlsdGVyQ291bnRyeShldmVudCkge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdldmVudCcsIGV2ZW50KVxuICAgIGxldCBmaWx0ZXJlZDogYW55W10gPSBbXTtcbiAgICBsZXQgcXVlcnkgPSBldmVudC5xdWVyeTtcbiAgICB0aGlzLmNvdW50cnlPcHRpb25zID0gQ29tYm9PcHRpb24uQ09VTlRSWTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY291bnRyeU9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjb3VudHJ5ID0gdGhpcy5jb3VudHJ5T3B0aW9uc1tpXTtcbiAgICAgIGlmIChjb3VudHJ5LnRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpID09IDApIHtcbiAgICAgICAgZmlsdGVyZWQucHVzaChjb3VudHJ5KTtcbiAgICAgICAgdGhpcy5zdGF0ZS5zZXRWYWx1ZShudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jb3VudHJ5T3B0aW9ucyA9IGZpbHRlcmVkO1xuXG4gIH1cblxuICBmaWx0ZXJDb3VudHkoZXZlbnQpIHtcbiAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLmdldENvdW50eSh0aGlzLnN0YXRlLnZhbHVlWyd2YWx1ZSddLCB0aGlzLnppcC52YWx1ZSkuc3Vic2NyaWJlKFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgLyp0aGlzLmxvZ2dlci5kZWJ1ZygncmVzJywgcmVzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNbJ2Nob2ljZXMnXS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGxldCBjaG9pY2UgPSByZXNbJ2Nob2ljZXMnXVtpXTtcbiAgICAgICAgICBpZiAoY2hvaWNlLnRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpID09IDApIHtcbiAgICAgICAgICAgIGZpbHRlcmVkLnB1c2goY2hvaWNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0qL1xuICAgICAgICB0aGlzLmNvdW50eU9wdGlvbnMgPSByZXNbJ2Nob2ljZXMnXTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZmlsdGVyVG93bihldmVudCkge1xuICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UuZ2V0Q291bnR5KHRoaXMuc3RhdGUudmFsdWVbJ3ZhbHVlJ10sIHRoaXMuemlwLnZhbHVlKS5zdWJzY3JpYmUoXG4gICAgICByZXMgPT4ge1xuICAgICAgICB0aGlzLnRvd25PcHRpb25zID0gcmVzWydjaG9pY2VzJ107XG4gICAgICB9KTtcbiAgfVxuXG4gIGZpbHRlclN0YXRlKGV2ZW50KSB7XG4gICAgbGV0IGNob2ljZTogYW55O1xuICAgIGlmICh0aGlzLmNvdW50cnk/LnZhbHVlPy52YWx1ZSA9PT0gJ1VTJykge1xuICAgICAgY29uc3QgY3VycmVudFN0YXRlID0gQ29tYm9PcHRpb24uVVNfU1RBVEVTLmZpbmQoc3RhdGUgPT4gc3RhdGUudmFsdWUgPT0gdGhpcy51dGlsLmdldFN0YXRlKCkpXG4gICAgICBjaG9pY2UgPSBbY3VycmVudFN0YXRlLCAuLi5Db21ib09wdGlvbi5VU19TVEFURVMuZmlsdGVyKHN0YXRlID0+IHN0YXRlLnZhbHVlICE9IHRoaXMudXRpbC5nZXRTdGF0ZSgpKV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY291bnRyeT8udmFsdWU/LnZhbHVlID09PSAnQ0EnKSB7XG4gICAgICBjaG9pY2UgPSBDb21ib09wdGlvbi5DQV9TVEFURVM7XG4gICAgfVxuXG4gICAgLypmb3IgKGxldCBpID0gMDsgaSA8IGNob2ljZS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGNob2ljZVtpXS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxdWVyeS50b0xvd2VyQ2FzZSgpKSA9PSAwKSB7XG4gICAgICAgIGZpbHRlcmVkLnB1c2goY2hvaWNlW2ldKTtcbiAgICAgIH1cbiAgICB9Ki9cbiAgICB0aGlzLnN0YXRlT3B0aW9ucyA9IGNob2ljZTtcblxuICB9XG5cbiAgc2V0V2lkdGhTdHlsZSgpOiBvYmplY3Qge1xuICAgIGlmICh0aGlzLmZyb21Qb3B1cCkge1xuICAgICAgbGV0IHN0eWxlT2JqID0ge1xuICAgICAgICAnbWF4LXdpZHRoJzogJ2luaXRpYWwnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oc3R5bGVPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgc3R5bGVPYmogPSB7XG4gICAgICAgICdtYXgtd2lkdGgnOiAnZml0LWNvbnRlbnQnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oc3R5bGVPYmopO1xuICAgIH1cbiAgfVxuXG4gIG9uVG91Y2hlZDogRnVuY3Rpb24gPSAoKSA9PiB7IH07XG5cbiAgb25DaGFuZ2VTdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGZvciAobGV0IHN1YiBvZiB0aGlzLm9uQ2hhbmdlU3Vicykge1xuICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KSB7XG4gICAgY29uc3Qgc3ViID0gdGhpcy5hZGRyZXNzRm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKG9uQ2hhbmdlKTtcbiAgICB0aGlzLm9uQ2hhbmdlU3Vicy5wdXNoKHN1Yik7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IEZ1bmN0aW9uKSB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICB0aGlzLmFkZHJlc3NGb3JtLmRpc2FibGUoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmFkZHJlc3NGb3JtLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgbGV0IGZvcm1WYWx1ZSA6IEFkZHJlc3NDb21wb25lbnRNb2RlbDtcbiAgICBpZih0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpe1xuICAgICAgZm9ybVZhbHVlID0gSlNPTi5wYXJzZSh2YWx1ZS50b1N0cmluZygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybVZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGlmIChmb3JtVmFsdWUpIHtcbiAgICAgIGlmIChmb3JtVmFsdWUuY291bnRyeSAmJiAhZm9ybVZhbHVlLmNvdW50cnkudGV4dCAmJiBmb3JtVmFsdWUuY291bnRyeS52YWx1ZSkge1xuICAgICAgICBsZXQgY291bnRyeSA9IHRoaXMuZ2V0Q291bnRyeShmb3JtVmFsdWUuY291bnRyeT8udmFsdWUpXG4gICAgICAgIGZvcm1WYWx1ZS5jb3VudHJ5ID0gY291bnRyeTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZvcm1WYWx1ZS5zdGF0ZSAmJiAhZm9ybVZhbHVlLnN0YXRlLnRleHQgJiYgZm9ybVZhbHVlLnN0YXRlLnZhbHVlKSB7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGUoZm9ybVZhbHVlLmNvdW50cnk/LnZhbHVlLCBmb3JtVmFsdWUuc3RhdGUudmFsdWUudHJpbSgpKVxuICAgICAgICBmb3JtVmFsdWUuc3RhdGUgPSBzdGF0ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZvcm1WYWx1ZS5jb3VudHkgJiYgIWZvcm1WYWx1ZS5jb3VudHkudGV4dCAmJiBmb3JtVmFsdWUuY291bnR5LnZhbHVlICYmIGZvcm1WYWx1ZS5zdGF0ZS52YWx1ZSA9PT0gJ01TJykge1xuICAgICAgICB0aGlzLnNldE1TQ291bnR5KGZvcm1WYWx1ZVsnemlwJ10sIGZvcm1WYWx1ZS5jb3VudHkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZm9ybVZhbHVlLnRvd24gJiYgIWZvcm1WYWx1ZS50b3duLnRleHQgJiYgZm9ybVZhbHVlLnRvd24udmFsdWUgJiYgZm9ybVZhbHVlLnN0YXRlLnZhbHVlID09PSAnTUUnKSB7XG4gICAgICAgIHRoaXMuc2V0TUVUb3duKGZvcm1WYWx1ZVsnemlwJ10gLGZvcm1WYWx1ZS50b3duKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYWRkcmVzc0Zvcm0ucGF0Y2hWYWx1ZShmb3JtVmFsdWUpO1xuICAgIH1cbiAgfVxuXG5cblxuICBnZXRDb3VudHJ5KGNvdW50cnkpIHtcbiAgICBpZiAoY291bnRyeSA9PSBudWxsIHx8IGNvdW50cnkgPT0gJ1VTJykge1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IFwiVVNcIiwgdGV4dDogXCJVbml0ZWQgU3RhdGVzXCIgfTtcbiAgICB9IGVsc2UgaWYgKGNvdW50cnkgPT0gJ0NBJykge1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IFwiQ0FcIiwgdGV4dDogXCJDYW5hZGFcIiB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdObyBDb3VudHJ5IGNvbmZpZ3VyZWQgJywgY291bnRyeSk7XG4gICAgfVxuXG4gIH1cblxuICBnZXRTdGF0ZShjb3VudHJ5LCBzdGF0ZSkge1xuICAgIGlmIChjb3VudHJ5ID09IG51bGwgfHwgY291bnRyeSA9PSAnVVMnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTdGF0ZVZhbHVlKENvbWJvT3B0aW9uLlVTX1NUQVRFUywgc3RhdGUpO1xuICAgIH0gZWxzZSBpZiAoY291bnRyeSA9PSAnQ0EnKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTdGF0ZVZhbHVlKENvbWJvT3B0aW9uLkNBX1NUQVRFUywgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdObyBDb3VudHJ5IGNvbmZpZ3VyZWQgJywgY291bnRyeSk7XG4gICAgfVxuICB9XG5cblxuICBnZXRTdGF0ZVZhbHVlKHN0YXRlczogQ29tYm9PcHRpb25bXSwgbmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0YXRlcy5maWx0ZXIoc3RhdGUgPT4gc3RhdGUudmFsdWUgPT0gbmFtZSlbMF07XG4gIH1cblxuICBzZXRNRVRvd24oemlwQ29kZSA6IHN0cmluZywgdG93bjogQ29tYm9PcHRpb24pIHtcbiAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLmdldENvdW50eSgnTUUnLCB6aXBDb2RlKS5zdWJzY3JpYmUoXG4gICAgICByZXMgPT4ge1xuICAgICAgICB0aGlzLnRvd25PcHRpb25zID0gcmVzWydjaG9pY2VzJ107XG4gICAgICAgIGxldCBzZWxlY3RlZENvdW50eSA9IHRoaXMudG93bk9wdGlvbnMuZmlsdGVyKGMgPT4ge1xuICAgICAgICAgIHJldHVybiBjLnZhbHVlID09IHRvd24udmFsdWU7XG4gICAgICAgIH0pWzBdO1xuICAgICAgICB0aGlzLnRvd24ucGF0Y2hWYWx1ZShzZWxlY3RlZENvdW50eSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHNldE1TQ291bnR5KHppcENvZGU6IHN0cmluZywgY291bnR5OiBDb21ib09wdGlvbikge1xuICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UuZ2V0Q291bnR5KCdNUycsIHppcENvZGUpLnN1YnNjcmliZShcbiAgICAgIHJlcyA9PiB7XG4gICAgICAgIHRoaXMuY291bnR5T3B0aW9ucyA9IHJlc1snY2hvaWNlcyddO1xuICAgICAgICBsZXQgc2VsZWN0ZWRDb3VudHkgPSB0aGlzLmNvdW50eU9wdGlvbnMuZmlsdGVyKGMgPT4ge1xuICAgICAgICAgIHJldHVybiBjLnZhbHVlID09IGNvdW50eS52YWx1ZTtcbiAgICAgICAgfSlbMF07XG4gICAgICAgIHRoaXMuY291bnR5LnBhdGNoVmFsdWUoc2VsZWN0ZWRDb3VudHkpO1xuICAgICAgfSk7XG4gIH1cblxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGlmICh0aGlzLmFkZHJlc3NGb3JtLnZhbGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBzdWJtaXQoKXtcbiAgICB0aGlzLmFkZHJlc3NGb3JtRGlyZWN0aXZlLm9uU3VibWl0KHVuZGVmaW5lZCk7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiYWRkcmVzc0Zvcm1cIiAjYWRkcmVzc0Zvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDtcIj5cclxuICA8IS0tIDxkaXYgW2Zvcm1Hcm91cF09XCJhZGRyZXNzRm9ybVwiICAjYWRkcmVzc0Zvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIiA+IC0tPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicC1mb3JtZ3JpZFwiIFtpZF09XCJpbnB1dElkID8gaW5wdXRJZCA6ICdhZGRyZXNzLWRpdidcIj5cclxuICAgIDxpb24tcm93PlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctY291bnRyeScgOiAnY291bnRyeSdcIj57eydDb3VudHJ5JyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbb3B0aW9uc109XCJjb3VudHJ5T3B0aW9uc1wiIFtmb3JtQ29udHJvbF09XCJjb3VudHJ5XCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBbaW5wdXRJZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctY291bnRyeScgOiAnY291bnRyeSdcIiA+PC9hcHAtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdjb3VudHJ5JyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCBhcHAtY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctemlwJyA6ICd6aXAnXCI+e3snWmlwIGNvZGUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxiciAvPlxyXG4gICAgICAgICAgICA8aW5wdXQgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy16aXAnIDogJ3ppcCdcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJ6aXBcIiBtaW5sZW5ndGg9XCI1XCIgbWF4bGVuZ3RoPVwiOVwiXHJcbiAgICAgICAgICAgICAgKGJsdXIpPVwiZ2V0QWRkcmVzc0RhdGEoJGV2ZW50KVwiIC8+PGJyIC8+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd6aXAnIFtmb3JtXT1cImFkZHJlc3NGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsXHJcbiAgICAgICAgICAgICAgICBpbnZhbGlkTGVuZ3RoOiAnWmlwIGNvZGUgc2hvdWxkIGJlIG9mIDUgb3IgOSBkaWdpdHMuJyxcclxuICAgICAgICAgICAgICAgIGludmFsaWROdW1iZXI6ICdaaXAgY29kZSBzaG91bGQgb25seSBoYXZlIG51bWJlcnMuJyxcclxuICAgICAgICAgICAgICAgIGludmFsaWRaaXBDb2RlOiAncGxlYXNlIGVudGVyIGEgdmFsaWQgemlwIGNvZGUnLFxyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcbiAgXHJcblxyXG4gICAgPGlvbi1yb3c+XHJcbiAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiAwcHg7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIHAtZmx1aWRcIj5cclxuICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1zdHJlZXRBZGRyZXNzJyA6ICdzdHJlZXRBZGRyZXNzJ1wiPnt7J1N0cmVldCBBZGRyZXNzJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgIDxpbnB1dCBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXN0cmVldEFkZHJlc3MnIDogJ3N0cmVldEFkZHJlc3MnXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwic3RyZWV0QWRkcmVzc1wiIG1heGxlbmd0aD1cIjQwXCIgLz48YnIgLz5cclxuICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdzdHJlZXRBZGRyZXNzJyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG5cclxuICAgIDxpb24tcm93PlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiICBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBwLWZsdWlkXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLW9wdGlvbmFsQWRkcmVzcycgOiAnb3B0aW9uYWxBZGRyZXNzJ1wiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cIm9wdGlvbmFsQWRkcmVzc1wiIHBsYWNlaG9sZGVyPVwiT3B0aW9uYWxcIlxyXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCI0MFwiIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG5cclxuXHJcbiAgICA8aW9uLXJvdz5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiAgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1jaXR5JyA6ICdjaXR5J1wiPnt7J0NpdHknIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxiciAvPlxyXG4gICAgICAgICAgICA8aW5wdXQgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1jaXR5JyA6ICdjaXR5J1wiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cImNpdHlcIiBtYXhsZW5ndGg9XCIzMFwiIC8+PGJyIC8+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdjaXR5JyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sIGFwcC1jb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctc3RhdGUnIDogJ3N0YXRlJ1wiPnt7J1N0YXRlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbb3B0aW9uc109XCJzdGF0ZU9wdGlvbnNcIiBbZm9ybUNvbnRyb2xdPVwic3RhdGVcIiBvcHRpb25MYWJlbD1cInRleHRcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIFtpbnB1dElkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1zdGF0ZScgOiAnc3RhdGUnXCI+PC9hcHAtZHJvcGRvd24+PGJyIC8+XHJcbiAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nc3RhdGUnIFtmb3JtXT1cImFkZHJlc3NGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiAqbmdJZj1cInN0YXRlLnZhbHVlICYmIChzdGF0ZS52YWx1ZS52YWx1ZT09PSdNUycgJiYgZm9yU3RhdGU9PT0nTVMnIFxyXG4gICAgICAgIHx8IChzdGF0ZS52YWx1ZS52YWx1ZT09PSdDVCcgICYmIGZvclN0YXRlPT09J01TJykpICAmJiBjb3VudHlSZXF1aXJlZD09PXRydWVcIiBzaXplPVwiMTJcInN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctY291bnR5JyA6ICdjb3VudHknXCI+e3snQ291bnR5JyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbb3B0aW9uc109XCJjb3VudHlPcHRpb25zXCIgW2Zvcm1Db250cm9sXT1cImNvdW50eVwiIG9wdGlvbkxhYmVsPVwidGV4dFwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBbaW5wdXRJZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctY291bnR5JyA6ICdjb3VudHknXCI+PC9hcHAtZHJvcGRvd24+PGJyLz5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2NvdW50eScgW2Zvcm1dPVwiYWRkcmVzc0Zvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgKm5nSWY9XCJzdGF0ZS52YWx1ZSAmJiBzdGF0ZS52YWx1ZS52YWx1ZT09PSdNRScgJiYgZm9yU3RhdGU9PT0nTUUnICYmIGNvdW50eVJlcXVpcmVkPT09dHJ1ZVwiIHNpemU9XCIxMlwiICBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXRvd24nIDogJ3Rvd24nXCI+e3snVG93bicgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gW29wdGlvbnNdPVwidG93bk9wdGlvbnNcIiBbZm9ybUNvbnRyb2xdPVwidG93blwiIG9wdGlvbkxhYmVsPVwidGV4dFwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBbaW5wdXRJZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctdG93bicgOiAndG93bidcIj48L2FwcC1kcm9wZG93bj48YnIvPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0ndG93bicgW2Zvcm1dPVwiYWRkcmVzc0Zvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLSA8L2Rpdj4gLS0+XHJcbjwvZm9ybT4iXX0=
511
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYWRkcmVzcy9hZGRyZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9hZGRyZXNzL2FkZHJlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBdUYsYUFBYSxFQUFFLGlCQUFpQixFQUFhLFVBQVUsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBRTNMLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUtwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNnRTFELG1DQUNzSCxjQUFBLGVBQUE7SUFFeEQsWUFBd0I7O0lBQUEsaUJBQVE7SUFBQSxxQkFBTSxzQkFBQSxTQUFBLG1CQUFBO0lBTWhHLGlCQUFNLEVBQUE7Ozs7SUFURCwwRUFBcUQ7SUFHakQsZUFBZ0Q7SUFBaEQsNEVBQWdEO0lBQUMsZUFBd0I7SUFBeEIscURBQXdCO0lBQ2xFLGVBQXFCO0lBQXJCLDBDQUFxQixpQ0FBQSw4QkFBQSwyQkFBQSxtRUFBQTtJQUV4QixlQUFvQjtJQUFwQix5QkFBb0I7SUFBQyxxQ0FBZ0IsYUFBQSx1Q0FBQTs7O0lBS3RELG1DQUFtTSxjQUFBLGVBQUE7SUFFekksWUFBc0I7O0lBQUEsaUJBQVE7SUFBQSxxQkFBTSxzQkFBQSxT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QUszQyxlQUE2RDtZQUE3RCwrRUFBNkQ7WUFFekQsZUFBOEM7WUFBOUMsb0VBQThDO1lBQUMsZUFBdUI7WUFBdkIscURBQXVCO1lBQy9ELGVBQXFCO1lBQXJCLHVDQUFxQiw2QkFBQSwwQkFBQSwyQkFBQSwyREFBQSw2REFBQTtZQUUxQixlQUFvQjtZQUFwQix5QkFBb0I7WUFBQyxpQ0FBZSxhQUFBLHVDQUFBO1lBS2EsZUFDYTtZQURiLDZMQUNhO1lBVWIsZUFBeUY7WUFBekYsZ0lBQXlGOzs7aUZEeERsSixnQkFBZ0I7Y0FqQjVCLFNBQVM7MkJBQ0UsYUFBYSxhQUdaLENBQUM7d0JBQ1YsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxrQkFBa0I7d0JBQzdCLEtBQUssRUFBRSxJQUFJO3FCQUNaO29CQUNEO3dCQUNFLE9BQU8sRUFBRSxhQUFhO3dCQUN0QixLQUFLLEVBQUUsSUFBSTt3QkFDWCxXQUFXLGtCQUFrQjtxQkFDOUI7aUJBQ0E7cUtBTU0sb0JBQW9CO2tCQUQxQixTQUFTO21CQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQVMxQyxPQUFPO2tCQUFoQixNQUFNO1lBQ0UsY0FBYztrQkFBdEIsS0FBSztZQUNHLFNBQVM7a0JBQWpCLEtBQUs7WUFDRyxPQUFPO2tCQUFmLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLOztrRkFmSyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIE5nRm9ybSwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvciwgVmFsaWRhdG9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBZGRyZXNzQ29tcG9uZW50TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvQWRkcmVzc0NvbXBvbmVudE1vZGVsJztcclxuaW1wb3J0IHsgQ29tYm9PcHRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9Db21ib01vZGVsJztcclxuaW1wb3J0IHsgRG1zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rtcy1zZXJ2aWNlL2Rtcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcXVlc3Rpb25uYWlyZS9xdWVzdGlvbm5haXJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWwvdXRpbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwVmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uL3ZhbGlkYXRpb25zL0FwcFZhbGlkYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYWRkcmVzcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZHJlc3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FkZHJlc3MuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBBZGRyZXNzQ29tcG9uZW50LFxyXG4gICAgbXVsdGk6IHRydWVcclxuICB9LFxyXG4gIHtcclxuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICBtdWx0aTogdHJ1ZSxcclxuICAgIHVzZUV4aXN0aW5nOiBBZGRyZXNzQ29tcG9uZW50XHJcbiAgfVxyXG4gIF0sXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkcmVzc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSwgVmFsaWRhdG9yIHtcclxuXHJcbiAgQFZpZXdDaGlsZCgnYWRkcmVzc0Zvcm1EaXJlY3RpdmUnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwdWJsaWMgYWRkcmVzc0Zvcm1EaXJlY3RpdmU6IE5nRm9ybTtcclxuXHJcbiAgcHVibGljIGFkZHJlc3NGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBzdGF0ZU9wdGlvbnM6IGFueSA9IFtdO1xyXG4gIHB1YmxpYyBjb3VudHlPcHRpb25zOiBhbnkgPSBbXTtcclxuICBwdWJsaWMgdG93bk9wdGlvbnM6IGFueSA9IFtdO1xyXG4gIHB1YmxpYyBjb3VudHJ5T3B0aW9ucyA9IENvbWJvT3B0aW9uLkNPVU5UUlk7XHJcbiAgcHVibGljIGFkZHJlc3NEYXRhOiBBZGRyZXNzQ29tcG9uZW50TW9kZWwgPSBuZXcgQWRkcmVzc0NvbXBvbmVudE1vZGVsKCk7XHJcbiAgQE91dHB1dCgpIGFkZHJlc3M6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQElucHV0KCkgY291bnR5UmVxdWlyZWQ6IEJvb2xlYW47XHJcbiAgQElucHV0KCkgZnJvbVBvcHVwOiBCb29sZWFuO1xyXG4gIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZztcclxuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBmb3JTdGF0ZTogc3RyaW5nO1xyXG4gIHVzWmlwY29kZVZhbGlkYXRpb25zOiBWYWxpZGF0b3JGbltdID0gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIEFwcFZhbGlkYXRvcnMuaXNWYWxpZFppcENvZGVdO1xyXG4gIGNhbmFkYVppcGNvZGVWYWxpZGF0aW9uczogVmFsaWRhdG9yRm5bXSA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBBcHBWYWxpZGF0b3JzLmlzVmFsaWRDYW5hZGlhblppcENvZGVdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlciwgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLCBwdWJsaWMgcXVlc3Rpb25uYWlyZVNlcnZpY2U6IFF1ZXN0aW9ubmFpcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsIHByaXZhdGUgZG1zOiBEbXNTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmZvclN0YXRlID0gdXRpbC5nZXRTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgdGhpcy5hZGRyZXNzRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICAnY291bnRyeSc6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgJ3ppcCc6IFtudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKV0sXHJcbiAgICAgICdzdHJlZXRBZGRyZXNzJzogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAnc3RhdGUnOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICdvcHRpb25hbEFkZHJlc3MnOiBbbnVsbF0sXHJcbiAgICAgICd0b3duJzogW251bGxdLFxyXG4gICAgICAnY291bnR5JzogW251bGxdLFxyXG4gICAgICAnY2l0eSc6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICB0aGlzLnNldFJlcXVpcmVkVmFsaWRhdGlvbigpO1xyXG5cclxuICAgIHRoaXMuY291bnRyeS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGNvdW50cnkgPT4ge1xyXG4gICAgICB0aGlzLmZpbHRlclN0YXRlKGNvdW50cnkpXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnN0YXRlLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoc3RhdGUgPT4ge1xyXG4gICAgICBpZihzdGF0ZSl7XHJcbiAgICAgICAgaWYodGhpcy51dGlsLmlzU3RhdGUoJ01TJykgJiYgc3RhdGUudmFsdWUgPT0gJ01TJyl7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlckNvdW50eShzdGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRoaXMudXRpbC5pc1N0YXRlKCdDVCcpICYmIHN0YXRlLnZhbHVlID09ICdDVCcpe1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJDb3VudHkoc3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLnV0aWwuaXNTdGF0ZSgnTUUnKSAmJiBzdGF0ZS52YWx1ZSA9PSAnTUUnKXtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyVG93bihzdGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnppcC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCB6aXAgPT4ge1xyXG4gICAgICBpZih6aXAgJiYgdGhpcy5zdGF0ZS52YWx1ZSA9PSB0aGlzLmZvclN0YXRlKXtcclxuICAgICAgICB0aGlzLmZpbHRlckNvdW50eSh0aGlzLnN0YXRlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb3VudHJ5LnNldFZhbHVlKHsgdmFsdWU6IFwiVVNcIiwgdGV4dDogXCJVbml0ZWQgU3RhdGVzXCIgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRSZXF1aXJlZFZhbGlkYXRpb24oKSB7XHJcbiAgICB0aGlzLmNvdW50cnkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShjID0+IHtcclxuICAgICAgaWYoYy52YWx1ZSA9PSAnVVMnKXtcclxuICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuemlwKTtcclxuICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLnppcCwgdGhpcy51c1ppcGNvZGVWYWxpZGF0aW9ucyk7XHJcbiAgICAgIH0gZWxzZSBpZihjLnZhbHVlID09ICdDQScpe1xyXG4gICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy56aXApO1xyXG4gICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuemlwLCB0aGlzLmNhbmFkYVppcGNvZGVWYWxpZGF0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICB0aGlzLnN0YXRlLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoc3RhdGVWYWx1ZSA9PiB7XHJcbiAgICAgIGlmIChzdGF0ZVZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCgoc3RhdGVWYWx1ZS52YWx1ZSA9PT0gJ01TJyAmJiB0aGlzLmZvclN0YXRlID09PSAnTVMnKVxyXG4gICAgICAgICAgfHwgKHN0YXRlVmFsdWUudmFsdWUgPT09ICdDVCcgJiYgdGhpcy5mb3JTdGF0ZSA9PT0gJ0NUJykpICYmIHRoaXMuY291bnR5UmVxdWlyZWQgPT09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmNvdW50eSk7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMudG93bik7XHJcbiAgICAgICAgICB0aGlzLnRvd24uc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0ZVZhbHVlLnZhbHVlID09PSAnTUUnICYmIHRoaXMuZm9yU3RhdGUgPT09ICdNRScgJiYgdGhpcy5jb3VudHlSZXF1aXJlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMudG93bik7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuY291bnR5KTtcclxuICAgICAgICAgIHRoaXMuY291bnR5LnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5jb3VudHkpO1xyXG4gICAgICAgICAgdGhpcy5jb3VudHkuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMudG93bik7XHJcbiAgICAgICAgICB0aGlzLnRvd24uc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0IHRvd24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1sndG93biddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvdW50eSgpIHtcclxuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWydjb3VudHknXTtcclxuICB9XHJcblxyXG4gIGdldCBjaXR5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ2NpdHknXTtcclxuICB9XHJcblxyXG4gIGdldCBjb3VudHJ5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ2NvdW50cnknXTtcclxuICB9XHJcblxyXG4gIGdldCBzdGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWydzdGF0ZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHppcCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWyd6aXAnXTtcclxuICB9XHJcblxyXG4gIGdldCBzdHJlZXRBZGRyZXNzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ3N0cmVldEFkZHJlc3MnXTtcclxuICB9XHJcblxyXG4gIGdldCBvcHRpb25hbEFkZHJlc3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1snb3B0aW9uYWxBZGRyZXNzJ107XHJcbiAgfVxyXG5cclxuICBnZXRBZGRyZXNzRGF0YShldmVudCkge1xyXG5cclxuICAgIC8qKlVuY29tbWVudCB3aGVuIHppcC1sb29rdXAgaWYgZml4ZWQgKi9cclxuXHJcbiAgICAvLyBpZiAodGhpcy56aXAgJiYgdGhpcy56aXAudmFsdWUpIHtcclxuICAgIC8vICAgdGhpcy5kbXNcclxuICAgIC8vICAgICAuZ2V0QWRkcmVzcyh0aGlzLnppcC52YWx1ZSlcclxuICAgIC8vICAgICAuc3Vic2NyaWJlKFxyXG4gICAgLy8gICAgICAgcmVzID0+IHtcclxuICAgIC8vICAgICAgICAgdGhpcy5hZGRyZXNzRGF0YSA9IHJlcztcclxuICAgIC8vICAgICAgICAgaWYodGhpcy5hZGRyZXNzRGF0YS5jaXR5KXtcclxuICAgIC8vICAgICAgICAgICB0aGlzLmNpdHkucGF0Y2hWYWx1ZSh0aGlzLmFkZHJlc3NEYXRhLmNpdHkpO1xyXG4gICAgLy8gICAgICAgICB9XHJcblxyXG4gICAgLy8gICAgICAgICBpZih0aGlzLmFkZHJlc3NEYXRhLnN0YXRlKXtcclxuICAgIC8vICAgICAgICAgICB0aGlzLnN0YXRlLnBhdGNoVmFsdWUodGhpcy5hZGRyZXNzRGF0YS5zdGF0ZSk7XHJcbiAgICAvLyAgICAgICAgIH0gXHJcblxyXG4gICAgLy8gICAgICAgICBpZih0aGlzLmFkZHJlc3NEYXRhLmNvdW50eSl7XHJcbiAgICAvLyAgICAgICAgICAgdGhpcy5jb3VudHkucGF0Y2hWYWx1ZSh0aGlzLmFkZHJlc3NEYXRhLmNvdW50eSk7XHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgdGhpcy5zdGF0ZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAvLyAgICAgICB9LFxyXG4gICAgLy8gICAgICAgZXJyID0+IHtcclxuICAgIC8vICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoZXJyKTtcclxuICAgIC8vICAgICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgZmlsdGVyQ291bnRyeShldmVudCkge1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ2V2ZW50JywgZXZlbnQpXHJcbiAgICBsZXQgZmlsdGVyZWQ6IGFueVtdID0gW107XHJcbiAgICBsZXQgcXVlcnkgPSBldmVudC5xdWVyeTtcclxuICAgIHRoaXMuY291bnRyeU9wdGlvbnMgPSBDb21ib09wdGlvbi5DT1VOVFJZO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvdW50cnlPcHRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjb3VudHJ5ID0gdGhpcy5jb3VudHJ5T3B0aW9uc1tpXTtcclxuICAgICAgaWYgKGNvdW50cnkudGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YocXVlcnkudG9Mb3dlckNhc2UoKSkgPT0gMCkge1xyXG4gICAgICAgIGZpbHRlcmVkLnB1c2goY291bnRyeSk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5jb3VudHJ5T3B0aW9ucyA9IGZpbHRlcmVkO1xyXG5cclxuICB9XHJcblxyXG4gIGZpbHRlckNvdW50eShldmVudCkge1xyXG4gICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5nZXRDb3VudHkodGhpcy5zdGF0ZS52YWx1ZVsndmFsdWUnXSwgdGhpcy56aXAudmFsdWUpLnN1YnNjcmliZShcclxuICAgICAgcmVzID0+IHtcclxuICAgICAgICAvKnRoaXMubG9nZ2VyLmRlYnVnKCdyZXMnLCByZXMpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzWydjaG9pY2VzJ10ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBjaG9pY2UgPSByZXNbJ2Nob2ljZXMnXVtpXTtcclxuICAgICAgICAgIGlmIChjaG9pY2UudGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YocXVlcnkudG9Mb3dlckNhc2UoKSkgPT0gMCkge1xyXG4gICAgICAgICAgICBmaWx0ZXJlZC5wdXNoKGNob2ljZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSovXHJcbiAgICAgICAgdGhpcy5jb3VudHlPcHRpb25zID0gcmVzWydjaG9pY2VzJ107XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyVG93bihldmVudCkge1xyXG4gICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5nZXRDb3VudHkodGhpcy5zdGF0ZS52YWx1ZVsndmFsdWUnXSwgdGhpcy56aXAudmFsdWUpLnN1YnNjcmliZShcclxuICAgICAgcmVzID0+IHtcclxuICAgICAgICB0aGlzLnRvd25PcHRpb25zID0gcmVzWydjaG9pY2VzJ107XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZmlsdGVyU3RhdGUoZXZlbnQpIHtcclxuICAgIGxldCBjaG9pY2U6IGFueTtcclxuICAgIGlmICh0aGlzLmNvdW50cnk/LnZhbHVlPy52YWx1ZSA9PT0gJ1VTJykge1xyXG4gICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSBDb21ib09wdGlvbi5VU19TVEFURVMuZmluZChzdGF0ZSA9PiBzdGF0ZS52YWx1ZSA9PSB0aGlzLnV0aWwuZ2V0U3RhdGUoKSlcclxuICAgICAgY2hvaWNlID0gW2N1cnJlbnRTdGF0ZSwgLi4uQ29tYm9PcHRpb24uVVNfU1RBVEVTLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS52YWx1ZSAhPSB0aGlzLnV0aWwuZ2V0U3RhdGUoKSldO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvdW50cnk/LnZhbHVlPy52YWx1ZSA9PT0gJ0NBJykge1xyXG4gICAgICBjaG9pY2UgPSBDb21ib09wdGlvbi5DQV9TVEFURVM7XHJcbiAgICB9XHJcblxyXG4gICAgLypmb3IgKGxldCBpID0gMDsgaSA8IGNob2ljZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoY2hvaWNlW2ldLnRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpID09IDApIHtcclxuICAgICAgICBmaWx0ZXJlZC5wdXNoKGNob2ljZVtpXSk7XHJcbiAgICAgIH1cclxuICAgIH0qL1xyXG4gICAgdGhpcy5zdGF0ZU9wdGlvbnMgPSBjaG9pY2U7XHJcblxyXG4gIH1cclxuXHJcbiAgc2V0V2lkdGhTdHlsZSgpOiBvYmplY3Qge1xyXG4gICAgaWYgKHRoaXMuZnJvbVBvcHVwKSB7XHJcbiAgICAgIGxldCBzdHlsZU9iaiA9IHtcclxuICAgICAgICAnbWF4LXdpZHRoJzogJ2luaXRpYWwnXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN0eWxlT2JqKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBzdHlsZU9iaiA9IHtcclxuICAgICAgICAnbWF4LXdpZHRoJzogJ2ZpdC1jb250ZW50J1xyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdHlsZU9iaik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xyXG5cclxuICBvbkNoYW5nZVN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgZm9yIChsZXQgc3ViIG9mIHRoaXMub25DaGFuZ2VTdWJzKSB7XHJcbiAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KSB7XHJcbiAgICBjb25zdCBzdWIgPSB0aGlzLmFkZHJlc3NGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUob25DaGFuZ2UpO1xyXG4gICAgdGhpcy5vbkNoYW5nZVN1YnMucHVzaChzdWIpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBGdW5jdGlvbikge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5hZGRyZXNzRm9ybS5kaXNhYmxlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5hZGRyZXNzRm9ybS5lbmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGxldCBmb3JtVmFsdWUgOiBBZGRyZXNzQ29tcG9uZW50TW9kZWw7XHJcbiAgICBpZih0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpe1xyXG4gICAgICBmb3JtVmFsdWUgPSBKU09OLnBhcnNlKHZhbHVlLnRvU3RyaW5nKCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9ybVZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBpZiAoZm9ybVZhbHVlKSB7XHJcbiAgICAgIGlmIChmb3JtVmFsdWUuY291bnRyeSAmJiAhZm9ybVZhbHVlLmNvdW50cnkudGV4dCAmJiBmb3JtVmFsdWUuY291bnRyeS52YWx1ZSkge1xyXG4gICAgICAgIGxldCBjb3VudHJ5ID0gdGhpcy5nZXRDb3VudHJ5KGZvcm1WYWx1ZS5jb3VudHJ5Py52YWx1ZSlcclxuICAgICAgICBmb3JtVmFsdWUuY291bnRyeSA9IGNvdW50cnk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChmb3JtVmFsdWUuc3RhdGUgJiYgIWZvcm1WYWx1ZS5zdGF0ZS50ZXh0ICYmIGZvcm1WYWx1ZS5zdGF0ZS52YWx1ZSkge1xyXG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGUoZm9ybVZhbHVlLmNvdW50cnk/LnZhbHVlLCBmb3JtVmFsdWUuc3RhdGUudmFsdWUudHJpbSgpKVxyXG4gICAgICAgIGZvcm1WYWx1ZS5zdGF0ZSA9IHN0YXRlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZm9ybVZhbHVlLmNvdW50eSAmJiAhZm9ybVZhbHVlLmNvdW50eS50ZXh0ICYmIGZvcm1WYWx1ZS5jb3VudHkudmFsdWUgJiYgZm9ybVZhbHVlLnN0YXRlLnZhbHVlID09PSAnTVMnKSB7XHJcbiAgICAgICAgdGhpcy5zZXRNU0NvdW50eShmb3JtVmFsdWUuY291bnR5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGZvcm1WYWx1ZS50b3duICYmICFmb3JtVmFsdWUudG93bi50ZXh0ICYmIGZvcm1WYWx1ZS50b3duLnZhbHVlICYmIGZvcm1WYWx1ZS5zdGF0ZS52YWx1ZSA9PT0gJ01FJykge1xyXG4gICAgICAgIHRoaXMuc2V0TUVUb3duKGZvcm1WYWx1ZVsnemlwJ10gLGZvcm1WYWx1ZS50b3duKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFkZHJlc3NGb3JtLnBhdGNoVmFsdWUoZm9ybVZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0Q291bnRyeShjb3VudHJ5KSB7XHJcbiAgICBpZiAoY291bnRyeSA9PSBudWxsIHx8IGNvdW50cnkgPT0gJ1VTJykge1xyXG4gICAgICByZXR1cm4geyB2YWx1ZTogXCJVU1wiLCB0ZXh0OiBcIlVuaXRlZCBTdGF0ZXNcIiB9O1xyXG4gICAgfSBlbHNlIGlmIChjb3VudHJ5ID09ICdDQScpIHtcclxuICAgICAgcmV0dXJuIHsgdmFsdWU6IFwiQ0FcIiwgdGV4dDogXCJDYW5hZGFcIiB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcignTm8gQ291bnRyeSBjb25maWd1cmVkICcsIGNvdW50cnkpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldFN0YXRlKGNvdW50cnksIHN0YXRlKSB7XHJcbiAgICBpZiAoY291bnRyeSA9PSBudWxsIHx8IGNvdW50cnkgPT0gJ1VTJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRTdGF0ZVZhbHVlKENvbWJvT3B0aW9uLlVTX1NUQVRFUywgc3RhdGUpO1xyXG4gICAgfSBlbHNlIGlmIChjb3VudHJ5ID09ICdDQScpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhdGVWYWx1ZShDb21ib09wdGlvbi5DQV9TVEFURVMsIHN0YXRlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIENvdW50cnkgY29uZmlndXJlZCAnLCBjb3VudHJ5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBnZXRTdGF0ZVZhbHVlKHN0YXRlczogQ29tYm9PcHRpb25bXSwgbmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gc3RhdGVzLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS52YWx1ZSA9PSBuYW1lKVswXTtcclxuICB9XHJcblxyXG4gIHNldE1FVG93bih6aXBDb2RlIDogc3RyaW5nLCB0b3duOiBDb21ib09wdGlvbikge1xyXG4gICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5nZXRDb3VudHkoJ01FJywgemlwQ29kZSkuc3Vic2NyaWJlKFxyXG4gICAgICByZXMgPT4ge1xyXG4gICAgICAgIHRoaXMudG93bk9wdGlvbnMgPSByZXNbJ2Nob2ljZXMnXTtcclxuICAgICAgICBsZXQgc2VsZWN0ZWRDb3VudHkgPSB0aGlzLnRvd25PcHRpb25zLmZpbHRlcihjID0+IHtcclxuICAgICAgICAgIHJldHVybiBjLnZhbHVlID09IHRvd24udmFsdWU7XHJcbiAgICAgICAgfSlbMF07XHJcbiAgICAgICAgdGhpcy50b3duLnBhdGNoVmFsdWUoc2VsZWN0ZWRDb3VudHkpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldE1TQ291bnR5KGNvdW50eTogQ29tYm9PcHRpb24pIHtcclxuICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UuZ2V0Q291bnR5KCdNUycsIHRoaXMuemlwLnZhbHVlKS5zdWJzY3JpYmUoXHJcbiAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5jb3VudHlPcHRpb25zID0gcmVzWydjaG9pY2VzJ107XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkQ291bnR5ID0gdGhpcy5jb3VudHlPcHRpb25zLmZpbHRlcihjID0+IHtcclxuICAgICAgICAgIHJldHVybiBjLnZhbHVlID09IGNvdW50eS52YWx1ZTtcclxuICAgICAgICB9KVswXTtcclxuICAgICAgICB0aGlzLmNvdW50eS5wYXRjaFZhbHVlKHNlbGVjdGVkQ291bnR5KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XHJcbiAgICBpZiAodGhpcy5hZGRyZXNzRm9ybS52YWxpZCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN1Ym1pdCgpe1xyXG4gICAgdGhpcy5hZGRyZXNzRm9ybURpcmVjdGl2ZS5vblN1Ym1pdCh1bmRlZmluZWQpO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImFkZHJlc3NGb3JtXCIgI2FkZHJlc3NGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7XCI+XHJcbiAgPCEtLSA8ZGl2IFtmb3JtR3JvdXBdPVwiYWRkcmVzc0Zvcm1cIiAgI2FkZHJlc3NGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCIgPiAtLT5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInAtZm9ybWdyaWRcIiBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgOiAnYWRkcmVzcy1kaXYnXCI+XHJcbiAgICA8aW9uLXJvdz5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWNvdW50cnknIDogJ2NvdW50cnknXCI+e3snQ291bnRyeScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW29wdGlvbnNdPVwiY291bnRyeU9wdGlvbnNcIiBbZm9ybUNvbnRyb2xdPVwiY291bnRyeVwiIG9wdGlvbkxhYmVsPVwidGV4dFwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgW2lucHV0SWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWNvdW50cnknIDogJ2NvdW50cnknXCIgPjwvYXBwLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nY291bnRyeScgW2Zvcm1dPVwiYWRkcmVzc0Zvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wgYXBwLWNvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXppcCcgOiAnemlwJ1wiPnt7J1ppcGNvZGUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxiciAvPlxyXG4gICAgICAgICAgICA8aW5wdXQgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy16aXAnIDogJ3ppcCdcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJ6aXBcIiBtaW5sZW5ndGg9XCI1XCIgbWF4bGVuZ3RoPVwiOVwiXHJcbiAgICAgICAgICAgICAgKGJsdXIpPVwiZ2V0QWRkcmVzc0RhdGEoJGV2ZW50KVwiIC8+PGJyIC8+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd6aXAnIFtmb3JtXT1cImFkZHJlc3NGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsXHJcbiAgICAgICAgICAgICAgICBpbnZhbGlkTGVuZ3RoOiAnWmlwIGNvZGUgc2hvdWxkIGJlIG9mIDUgb3IgOSBkaWdpdHMuJyxcclxuICAgICAgICAgICAgICAgIGludmFsaWROdW1iZXI6ICdaaXAgY29kZSBzaG91bGQgb25seSBoYXZlIG51bWJlcnMuJyxcclxuICAgICAgICAgICAgICAgIGludmFsaWRaaXBDb2RlOiAncGxlYXNlIGVudGVyIGEgdmFsaWQgemlwIGNvZGUnLFxyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcbiAgXHJcblxyXG4gICAgPGlvbi1yb3c+XHJcbiAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiAwcHg7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIHAtZmx1aWRcIj5cclxuICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1zdHJlZXRBZGRyZXNzJyA6ICdzdHJlZXRBZGRyZXNzJ1wiPnt7J1N0cmVldCBBZGRyZXNzJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgIDxpbnB1dCBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXN0cmVldEFkZHJlc3MnIDogJ3N0cmVldEFkZHJlc3MnXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwic3RyZWV0QWRkcmVzc1wiIG1heGxlbmd0aD1cIjQwXCIgLz48YnIgLz5cclxuICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdzdHJlZXRBZGRyZXNzJyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG5cclxuICAgIDxpb24tcm93PlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiICBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBwLWZsdWlkXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLW9wdGlvbmFsQWRkcmVzcycgOiAnb3B0aW9uYWxBZGRyZXNzJ1wiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cIm9wdGlvbmFsQWRkcmVzc1wiIHBsYWNlaG9sZGVyPVwiT3B0aW9uYWxcIlxyXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCI0MFwiIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG5cclxuXHJcbiAgICA8aW9uLXJvdz5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiAgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1jaXR5JyA6ICdjaXR5J1wiPnt7J0NpdHknIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxiciAvPlxyXG4gICAgICAgICAgICA8aW5wdXQgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1jaXR5JyA6ICdjaXR5J1wiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cImNpdHlcIiBtYXhsZW5ndGg9XCIzMFwiIC8+PGJyIC8+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdjaXR5JyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sIGFwcC1jb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctc3RhdGUnIDogJ3N0YXRlJ1wiPnt7J1N0YXRlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbb3B0aW9uc109XCJzdGF0ZU9wdGlvbnNcIiBbZm9ybUNvbnRyb2xdPVwic3RhdGVcIiBvcHRpb25MYWJlbD1cInRleHRcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIFtpbnB1dElkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1zdGF0ZScgOiAnc3RhdGUnXCIgW2FyaWFMYWJlbF09XCJpbnB1dElkID8gaW5wdXRJZCArICctc3RhdGUnIDogJ3N0YXRlJ1wiPjwvYXBwLWRyb3Bkb3duPjxiciAvPlxyXG4gICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3N0YXRlJyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgKm5nSWY9XCJzdGF0ZS52YWx1ZSAmJiAoc3RhdGUudmFsdWUudmFsdWU9PT0nTVMnICYmIGZvclN0YXRlPT09J01TJyBcclxuICAgICAgICB8fCAoc3RhdGUudmFsdWUudmFsdWU9PT0nQ1QnICAmJiBmb3JTdGF0ZT09PSdNUycpKSAgJiYgY291bnR5UmVxdWlyZWQ9PT10cnVlXCIgc2l6ZT1cIjEyXCJzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWNvdW50eScgOiAnY291bnR5J1wiPnt7J0NvdW50eScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW29wdGlvbnNdPVwiY291bnR5T3B0aW9uc1wiIFtmb3JtQ29udHJvbF09XCJjb3VudHlcIiBvcHRpb25MYWJlbD1cInRleHRcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgW2lucHV0SWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWNvdW50eScgOiAnY291bnR5J1wiPjwvYXBwLWRyb3Bkb3duPjxici8+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdjb3VudHknIFtmb3JtXT1cImFkZHJlc3NGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiICpuZ0lmPVwic3RhdGUudmFsdWUgJiYgc3RhdGUudmFsdWUudmFsdWU9PT0nTUUnICYmIGZvclN0YXRlPT09J01FJyAmJiBjb3VudHlSZXF1aXJlZD09PXRydWVcIiBzaXplPVwiMTJcIiAgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy10b3duJyA6ICd0b3duJ1wiPnt7J1Rvd24nIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxiciAvPlxyXG4gICAgICAgICAgICA8YXBwLWRyb3Bkb3duIFtyZWFkb25seV09XCJyZWFkb25seVwiIFtvcHRpb25zXT1cInRvd25PcHRpb25zXCIgW2Zvcm1Db250cm9sXT1cInRvd25cIiBvcHRpb25MYWJlbD1cInRleHRcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgW2lucHV0SWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXRvd24nIDogJ3Rvd24nXCI+PC9hcHAtZHJvcGRvd24+PGJyLz5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3Rvd24nIFtmb3JtXT1cImFkZHJlc3NGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0gPC9kaXY+IC0tPlxyXG48L2Zvcm0+Il19