@reusa/ngx-reusa-app-lib 0.0.1374 → 0.0.1377

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 (545) hide show
  1. package/esm2022/lib/components/add-employer/add-employer.component.mjs +2392 -1322
  2. package/esm2022/lib/components/add-participant/add-participant.component.mjs +159 -105
  3. package/esm2022/lib/components/add-payment/add-payment.component.mjs +59 -53
  4. package/esm2022/lib/components/add-wage/add-wage.component.mjs +161 -0
  5. package/esm2022/lib/components/address/address.component.mjs +287 -152
  6. package/esm2022/lib/components/address-popup/address-popup.component.mjs +97 -0
  7. package/esm2022/lib/components/address-suggestion/address-suggestion.component.mjs +289 -0
  8. package/esm2022/lib/components/appointment-self-scheduler/appointment-self-scheduler.component.mjs +245 -0
  9. package/esm2022/lib/components/associate-ssn/associate-ssn.component.mjs +203 -0
  10. package/esm2022/lib/components/bank-details/bank-details.component.mjs +79 -219
  11. package/esm2022/lib/components/claim-info/claim-info.component.mjs +408 -0
  12. package/esm2022/lib/components/contact-us/contact-us.component.mjs +17 -43
  13. package/esm2022/lib/components/correspondence-download/correspondence-download.component.mjs +3 -9
  14. package/esm2022/lib/components/dashboard-card/dashboard-card.component.mjs +32 -4
  15. package/esm2022/lib/components/dependent-grid/dependent-grid.component.mjs +30 -15
  16. package/esm2022/lib/components/disclosure/disclosure.component.mjs +1 -1
  17. package/esm2022/lib/components/dropdown/dropdown.component.mjs +4 -4
  18. package/esm2022/lib/components/dropdown/dropdown.interface.mjs +1 -1
  19. package/esm2022/lib/components/dua-request-page/dua-request-page.component.mjs +596 -0
  20. package/esm2022/lib/components/dua-request-popup/dua-request-popup.component.mjs +356 -0
  21. package/esm2022/lib/components/email-update/email-update.component.mjs +63 -140
  22. package/esm2022/lib/components/employer-grid/employer-grid.component.mjs +422 -574
  23. package/esm2022/lib/components/employer-info/employer-info.component.mjs +319 -0
  24. package/esm2022/lib/components/employer-pay/employer-pay.component.mjs +238 -0
  25. package/esm2022/lib/components/employer-pay-grid/employer-pay-grid.component.mjs +302 -0
  26. package/esm2022/lib/components/error/error.component.mjs +22 -5
  27. package/esm2022/lib/components/farm-usage/farm-usage.component.mjs +172 -0
  28. package/esm2022/lib/components/fav-menu/fav-menu.component.mjs +1 -1
  29. package/esm2022/lib/components/file-uploader/file-uploader.component.mjs +178 -49
  30. package/esm2022/lib/components/footer/footer.component.mjs +112 -101
  31. package/esm2022/lib/components/gross-earnings/gross-earnings.component.mjs +201 -0
  32. package/esm2022/lib/components/header/header.component.mjs +440 -174
  33. package/esm2022/lib/components/history-page/history-page.component.mjs +571 -0
  34. package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +25 -36
  35. package/esm2022/lib/components/idme/idme.component.mjs +84 -0
  36. package/esm2022/lib/components/info/info.component.mjs +4 -12
  37. package/esm2022/lib/components/job-search-result-page/job-search-result-page.component.mjs +16 -22
  38. package/esm2022/lib/components/job-title/job-title.component.mjs +92 -97
  39. package/esm2022/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +143 -513
  40. package/esm2022/lib/components/link/link.component.mjs +1 -1
  41. package/esm2022/lib/components/menu/menu.component.mjs +68 -100
  42. package/esm2022/lib/components/mfa/mfa.component.mjs +158 -288
  43. package/esm2022/lib/components/mfa-popup/mfa-popup.component.mjs +11 -18
  44. package/esm2022/lib/components/money-expect/money-expect.component.mjs +158 -54
  45. package/esm2022/lib/components/offline-add-employer/offline-add-employer.component.mjs +3661 -0
  46. package/esm2022/lib/components/offline-bank-details/offline-bank-details.component.mjs +258 -0
  47. package/esm2022/lib/components/offline-employer-grid/offline-employer-grid.component.mjs +853 -0
  48. package/esm2022/lib/components/offline-legal-disclaimar/offline-legal-disclaimar.component.mjs +251 -0
  49. package/esm2022/lib/components/profile/profile.component.mjs +749 -353
  50. package/esm2022/lib/components/profile-redirect/profile-redirect.component.mjs +108 -38
  51. package/esm2022/lib/components/proof-of-anything/proof-of-anything.component.mjs +261 -0
  52. package/esm2022/lib/components/proof-of-document-upload/proof-of-document-upload.component.mjs +560 -0
  53. package/esm2022/lib/components/questionnaire/AppValidators.mjs +296 -47
  54. package/esm2022/lib/components/questionnaire/account-success/account-success.page.mjs +110 -65
  55. package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +377 -173
  56. package/esm2022/lib/components/questionnaire/dynamic-form-panel.component.mjs +76 -95
  57. package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +877 -1153
  58. package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +208 -699
  59. package/esm2022/lib/components/questionnaire/form-builder/form-builder.page.mjs +28 -22
  60. package/esm2022/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +128 -41
  61. package/esm2022/lib/components/questionnaire/question-control.service.mjs +2 -1
  62. package/esm2022/lib/components/questionnaire/question.service.mjs +5 -7
  63. package/esm2022/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.mjs +15 -29
  64. package/esm2022/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.mjs +497 -237
  65. package/esm2022/lib/components/scrollable-text/scrollable-text.component.mjs +25 -0
  66. package/esm2022/lib/components/search-employer/search-employer.component.mjs +155 -30
  67. package/esm2022/lib/components/select/select.component.mjs +5 -10
  68. package/esm2022/lib/components/sign-ssn/sign-ssn.component.mjs +3 -3
  69. package/esm2022/lib/components/sms/sms.component.mjs +336 -0
  70. package/esm2022/lib/components/ssn-reverify/ssn-reverify.component.mjs +52 -72
  71. package/esm2022/lib/components/user-login/user-login.component.mjs +139 -360
  72. package/esm2022/lib/components/wage-calculator/wage-calculator.component.mjs +527 -0
  73. package/esm2022/lib/components/wage-grid/wage-grid.component.mjs +274 -0
  74. package/esm2022/lib/components/weekly-acknowledgement-ms/acknowledgement-ms.component.mjs +147 -0
  75. package/esm2022/lib/components/weekly-acknowledgement-v2/acknowledgement.component-v2.mjs +167 -0
  76. package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +655 -387
  77. package/esm2022/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.mjs +125 -61
  78. package/esm2022/lib/components/weekly-certification/weekly-certification.component.mjs +828 -0
  79. package/esm2022/lib/components/weekly-confirmation/confirmation.component.mjs +129 -0
  80. package/esm2022/lib/components/weekly-interim-confirmation/interim-confirmation.component.mjs +136 -0
  81. package/esm2022/lib/components/weekly-summary-v2/summary.component-v2.mjs +72 -0
  82. package/esm2022/lib/components/weekly-work-performed-popup/weekly-work-performed-popup.component.mjs +50 -0
  83. package/esm2022/lib/components/weekly-work-search-counter/work-search-counter.component.mjs +92 -0
  84. package/esm2022/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.mjs +1190 -0
  85. package/esm2022/lib/components/weekly-work-search-employer-ms/work-search-employer-ms.component.mjs +690 -0
  86. package/esm2022/lib/components/weekly-work-search-employer-v2/work-search-employer.component-v2.mjs +524 -0
  87. package/esm2022/lib/components/weekly-work-search-journal/weekly-work-search-journal.component.mjs +394 -0
  88. package/esm2022/lib/components/weekly-work-search-question-v2/work-search-question.component-v2.mjs +640 -0
  89. package/esm2022/lib/directives/strip-invisible-characters/strip-invisible-characters.directive.mjs +33 -0
  90. package/esm2022/lib/enums/AddressValidationResponseEnum.mjs +9 -0
  91. package/esm2022/lib/enums/AddressValidationSourceFunctionEnum.mjs +5 -0
  92. package/esm2022/lib/guards/auth.guard.mjs +50 -2
  93. package/esm2022/lib/guards/no-login/no-login.guard.mjs +1 -1
  94. package/esm2022/lib/interceptors/error-interceptor/http-error-interceptor.mjs +51 -3
  95. package/esm2022/lib/interceptors/header-interceptor/http-header.interceptor.mjs +1 -1
  96. package/esm2022/lib/models/ActiveClaimModel.mjs +3 -0
  97. package/esm2022/lib/models/CountyModel.mjs +3 -0
  98. package/esm2022/lib/models/DuaAppDataModel.mjs +3 -0
  99. package/esm2022/lib/models/DuaRequestModel.mjs +3 -0
  100. package/esm2022/lib/models/DuaRetroWeeksComponentModel.mjs +6 -0
  101. package/esm2022/lib/models/EmployerDetailSearchResult.mjs +1 -1
  102. package/esm2022/lib/models/EmployerInfoComponentModel.mjs +4 -0
  103. package/esm2022/lib/models/EmployerPayInfoModel.mjs +6 -0
  104. package/esm2022/lib/models/FarmUsageComponentModel.mjs +2 -0
  105. package/esm2022/lib/models/GrossEarningsModel.mjs +3 -0
  106. package/esm2022/lib/models/HelpConstants.mjs +5 -0
  107. package/esm2022/lib/models/LexisNexisOtpDetailsResponseModel.mjs +3 -0
  108. package/esm2022/lib/models/LibConstants.mjs +45 -6
  109. package/esm2022/lib/models/OtpAuthModel.mjs +1 -1
  110. package/esm2022/lib/models/PaymentComponentModel.mjs +1 -1
  111. package/esm2022/lib/models/ReasonSeparationRequestModel.mjs +3 -0
  112. package/esm2022/lib/models/RetroWeeksModel.mjs +3 -0
  113. package/esm2022/lib/models/SecurityQuestionAnswerModel.mjs +3 -0
  114. package/esm2022/lib/models/SendOtpRequestModel.mjs +3 -0
  115. package/esm2022/lib/models/UserModel.mjs +1 -1
  116. package/esm2022/lib/models/VerifyOtpRequestModel.mjs +3 -0
  117. package/esm2022/lib/models/WageCalculatorModel.mjs +3 -0
  118. package/esm2022/lib/models/WageInfoModel.mjs +4 -0
  119. package/esm2022/lib/models/addressValidation/AddressRecommendationModel.mjs +3 -0
  120. package/esm2022/lib/models/addressValidation/AddressValidationRequestComponentModel.mjs +3 -0
  121. package/esm2022/lib/models/addressValidation/AddressValidationResponseComponentModel.mjs +3 -0
  122. package/esm2022/lib/models/addressValidation/AddressValidationReturnComponentModel.mjs +3 -0
  123. package/esm2022/lib/models/combo-model.mjs +343 -0
  124. package/esm2022/lib/models/dashboard-model.mjs +1 -1
  125. package/esm2022/lib/models/dependent.model.mjs +1 -1
  126. package/esm2022/lib/models/fileupload/DocUploadModel.mjs +7 -0
  127. package/esm2022/lib/models/fileupload/EmployerDataModel.mjs +3 -0
  128. package/esm2022/lib/models/fileupload/FileObject.mjs +3 -0
  129. package/esm2022/lib/models/fileupload/FileObjectArray.mjs +7 -0
  130. package/esm2022/lib/models/questionnaire/AppealParticipantModel.mjs +8 -0
  131. package/esm2022/lib/models/questionnaire/ClaimAppEmpResponseModel.mjs +1 -1
  132. package/esm2022/lib/models/questionnaire/ClaimAppEmployerDetailsModel.mjs +2 -1
  133. package/esm2022/lib/models/questionnaire/ClaimOnlyEmployerDataModel.mjs +1 -1
  134. package/esm2022/lib/models/questionnaire/ComboModel.mjs +96 -653
  135. package/esm2022/lib/models/questionnaire/ElementsModel.mjs +1 -1
  136. package/esm2022/lib/models/questionnaire/LegalDiscaimarModel.mjs +1 -1
  137. package/esm2022/lib/models/questionnaire/QuestionnaireSaveModel.mjs +1 -1
  138. package/esm2022/lib/models/questionnaire/ScrollableTextModel.mjs +3 -0
  139. package/esm2022/lib/models/questionnaire/StatusModel.mjs +1 -1
  140. package/esm2022/lib/models/questionnaire/WbaHelperTextModel.mjs +3 -0
  141. package/esm2022/lib/models/weekly-cert/WorkSearchWaiverModel.mjs +3 -0
  142. package/esm2022/lib/models/weekly-cert/address-detail-model.mjs +2 -0
  143. package/esm2022/lib/models/weekly-cert/admin-leave-details-model.mjs +7 -0
  144. package/esm2022/lib/models/weekly-cert/employer-info-v2-model.mjs +7 -0
  145. package/esm2022/lib/models/weekly-cert/weekly-cert-eligibility-v2-model.mjs +6 -0
  146. package/esm2022/lib/models/weekly-cert/weekly-certification-v2-model.mjs +34 -0
  147. package/esm2022/lib/models/weekly-cert/work-search-record-v2-model.mjs +15 -0
  148. package/esm2022/lib/models/weekly-cert/work-search-v2-model.mjs +11 -0
  149. package/esm2022/lib/ngx-reusa-app-lib.module.mjs +135 -23
  150. package/esm2022/lib/pages/BasePage.mjs +4 -23
  151. package/esm2022/lib/pages/common/accessibility-policy/accessibility-policy.page.mjs +22 -18
  152. package/esm2022/lib/pages/common/change-password/change-password.page.mjs +142 -124
  153. package/esm2022/lib/pages/common/landing/landing.component.mjs +7 -8
  154. package/esm2022/lib/pages/common/landing2/landing2.component.mjs +4 -4
  155. package/esm2022/lib/pages/common/login/login.component.mjs +7 -13
  156. package/esm2022/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.mjs +14 -14
  157. package/esm2022/lib/pages/common/security-policy/security-policy.page.mjs +5 -5
  158. package/esm2022/lib/pages/popovers/language/language.page.mjs +1 -2
  159. package/esm2022/lib/pages/popovers/my-notifications/my-notifications.page.mjs +4 -4
  160. package/esm2022/lib/pages/popovers/my-profile/my-profile.page.mjs +7 -2
  161. package/esm2022/lib/pipes/format-worksearch/format-worksearch.pipe.mjs +101 -0
  162. package/esm2022/lib/pipes/translate/dynamic-translate.pipe.mjs +2 -2
  163. package/esm2022/lib/services/address-validation-service/address-validation.service.mjs +151 -0
  164. package/esm2022/lib/services/appeal/appeal.service.mjs +37 -0
  165. package/esm2022/lib/services/base-service.mjs +4 -1
  166. package/esm2022/lib/services/birt-service/birt.service.mjs +57 -0
  167. package/esm2022/lib/services/chatbot/chatbot.service.mjs +1 -2
  168. package/esm2022/lib/services/claimant-service/claimant.service.mjs +7 -13
  169. package/esm2022/lib/services/claims/claims.service.mjs +105 -14
  170. package/esm2022/lib/services/employer/employer-service.mjs +35 -0
  171. package/esm2022/lib/services/event-service/event-service.mjs +44 -0
  172. package/esm2022/lib/services/help/help.service.mjs +1 -1
  173. package/esm2022/lib/services/logger/logger.service.mjs +1 -1
  174. package/esm2022/lib/services/login/login.service.mjs +29 -14
  175. package/esm2022/lib/services/offline-claims/offline-claims.service.mjs +327 -0
  176. package/esm2022/lib/services/questionnaire/questionnaire.service.mjs +4 -1
  177. package/esm2022/lib/services/questionnaire/validation.service.mjs +4 -1
  178. package/esm2022/lib/services/security-service/security.service.mjs +23 -6
  179. package/esm2022/lib/services/util/util.service.mjs +61 -5
  180. package/esm2022/lib/services/weekly-cert/review.service.mjs +101 -0
  181. package/esm2022/lib/services/weekly-cert/weekly-cert-v2.service.mjs +186 -14
  182. package/esm2022/lib/services/weekly-cert/weekly-cert.service.mjs +37 -0
  183. package/esm2022/lib/services/weekly-cert/work-search.service.mjs +58 -0
  184. package/esm2022/lib/validations/AppRegex.mjs +1 -3
  185. package/esm2022/lib/validations/AppValidators.mjs +78 -62
  186. package/esm2022/public-api.mjs +47 -5
  187. package/fesm2022/reusa-ngx-reusa-app-lib.mjs +41277 -23401
  188. package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -1
  189. package/lib/components/add-employer/add-employer.component.d.ts +137 -53
  190. package/lib/components/add-employer/add-employer.component.d.ts.map +1 -1
  191. package/lib/components/add-participant/add-participant.component.d.ts +11 -5
  192. package/lib/components/add-participant/add-participant.component.d.ts.map +1 -1
  193. package/lib/components/add-payment/add-payment.component.d.ts +9 -3
  194. package/lib/components/add-payment/add-payment.component.d.ts.map +1 -1
  195. package/lib/components/add-wage/add-wage.component.d.ts +30 -0
  196. package/lib/components/add-wage/add-wage.component.d.ts.map +1 -0
  197. package/lib/components/address/address.component.d.ts +42 -15
  198. package/lib/components/address/address.component.d.ts.map +1 -1
  199. package/lib/components/address-popup/address-popup.component.d.ts +16 -0
  200. package/lib/components/address-popup/address-popup.component.d.ts.map +1 -0
  201. package/lib/components/address-suggestion/address-suggestion.component.d.ts +43 -0
  202. package/lib/components/address-suggestion/address-suggestion.component.d.ts.map +1 -0
  203. package/lib/components/appointment-self-scheduler/appointment-self-scheduler.component.d.ts +37 -0
  204. package/lib/components/appointment-self-scheduler/appointment-self-scheduler.component.d.ts.map +1 -0
  205. package/lib/components/associate-ssn/associate-ssn.component.d.ts +33 -0
  206. package/lib/components/associate-ssn/associate-ssn.component.d.ts.map +1 -0
  207. package/lib/components/bank-details/bank-details.component.d.ts +1 -23
  208. package/lib/components/bank-details/bank-details.component.d.ts.map +1 -1
  209. package/lib/components/claim-info/claim-info.component.d.ts +49 -0
  210. package/lib/components/claim-info/claim-info.component.d.ts.map +1 -0
  211. package/lib/components/contact-us/contact-us.component.d.ts +1 -4
  212. package/lib/components/contact-us/contact-us.component.d.ts.map +1 -1
  213. package/lib/components/correspondence-download/correspondence-download.component.d.ts.map +1 -1
  214. package/lib/components/dashboard-card/dashboard-card.component.d.ts.map +1 -1
  215. package/lib/components/dua-request-page/dua-request-page.component.d.ts +74 -0
  216. package/lib/components/dua-request-page/dua-request-page.component.d.ts.map +1 -0
  217. package/lib/components/dua-request-popup/dua-request-popup.component.d.ts +61 -0
  218. package/lib/components/dua-request-popup/dua-request-popup.component.d.ts.map +1 -0
  219. package/lib/components/email-update/email-update.component.d.ts +1 -12
  220. package/lib/components/email-update/email-update.component.d.ts.map +1 -1
  221. package/lib/components/employer-grid/employer-grid.component.d.ts +25 -15
  222. package/lib/components/employer-grid/employer-grid.component.d.ts.map +1 -1
  223. package/lib/components/employer-info/employer-info.component.d.ts +50 -0
  224. package/lib/components/employer-info/employer-info.component.d.ts.map +1 -0
  225. package/lib/components/employer-pay/employer-pay.component.d.ts +51 -0
  226. package/lib/components/employer-pay/employer-pay.component.d.ts.map +1 -0
  227. package/lib/components/employer-pay-grid/employer-pay-grid.component.d.ts +43 -0
  228. package/lib/components/employer-pay-grid/employer-pay-grid.component.d.ts.map +1 -0
  229. package/lib/components/error/error.component.d.ts +3 -2
  230. package/lib/components/error/error.component.d.ts.map +1 -1
  231. package/lib/components/farm-usage/farm-usage.component.d.ts +33 -0
  232. package/lib/components/farm-usage/farm-usage.component.d.ts.map +1 -0
  233. package/lib/components/file-uploader/file-uploader.component.d.ts +5 -1
  234. package/lib/components/file-uploader/file-uploader.component.d.ts.map +1 -1
  235. package/lib/components/footer/footer.component.d.ts.map +1 -1
  236. package/lib/components/gross-earnings/gross-earnings.component.d.ts +42 -0
  237. package/lib/components/gross-earnings/gross-earnings.component.d.ts.map +1 -0
  238. package/lib/components/header/header.component.d.ts +17 -5
  239. package/lib/components/header/header.component.d.ts.map +1 -1
  240. package/lib/components/history-page/history-page.component.d.ts +80 -0
  241. package/lib/components/history-page/history-page.component.d.ts.map +1 -0
  242. package/lib/components/idme/idme.component.d.ts +19 -0
  243. package/lib/components/idme/idme.component.d.ts.map +1 -0
  244. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts +1 -3
  245. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts.map +1 -1
  246. package/lib/components/job-title/job-title.component.d.ts +22 -23
  247. package/lib/components/job-title/job-title.component.d.ts.map +1 -1
  248. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts +5 -6
  249. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts.map +1 -1
  250. package/lib/components/menu/menu.component.d.ts +3 -12
  251. package/lib/components/menu/menu.component.d.ts.map +1 -1
  252. package/lib/components/mfa/mfa.component.d.ts +7 -19
  253. package/lib/components/mfa/mfa.component.d.ts.map +1 -1
  254. package/lib/components/mfa-popup/mfa-popup.component.d.ts +6 -8
  255. package/lib/components/mfa-popup/mfa-popup.component.d.ts.map +1 -1
  256. package/lib/components/money-expect/money-expect.component.d.ts +15 -4
  257. package/lib/components/money-expect/money-expect.component.d.ts.map +1 -1
  258. package/lib/components/offline-add-employer/offline-add-employer.component.d.ts +311 -0
  259. package/lib/components/offline-add-employer/offline-add-employer.component.d.ts.map +1 -0
  260. package/lib/components/offline-bank-details/offline-bank-details.component.d.ts +33 -0
  261. package/lib/components/offline-bank-details/offline-bank-details.component.d.ts.map +1 -0
  262. package/lib/components/offline-employer-grid/offline-employer-grid.component.d.ts +97 -0
  263. package/lib/components/offline-employer-grid/offline-employer-grid.component.d.ts.map +1 -0
  264. package/lib/components/offline-legal-disclaimar/offline-legal-disclaimar.component.d.ts +33 -0
  265. package/lib/components/offline-legal-disclaimar/offline-legal-disclaimar.component.d.ts.map +1 -0
  266. package/lib/components/profile/profile.component.d.ts +82 -49
  267. package/lib/components/profile/profile.component.d.ts.map +1 -1
  268. package/lib/components/profile-redirect/profile-redirect.component.d.ts +9 -2
  269. package/lib/components/profile-redirect/profile-redirect.component.d.ts.map +1 -1
  270. package/lib/components/proof-of-anything/proof-of-anything.component.d.ts +54 -0
  271. package/lib/components/proof-of-anything/proof-of-anything.component.d.ts.map +1 -0
  272. package/lib/components/proof-of-document-upload/proof-of-document-upload.component.d.ts +74 -0
  273. package/lib/components/proof-of-document-upload/proof-of-document-upload.component.d.ts.map +1 -0
  274. package/lib/components/questionnaire/AppValidators.d.ts +1 -0
  275. package/lib/components/questionnaire/AppValidators.d.ts.map +1 -1
  276. package/lib/components/questionnaire/account-success/account-success.page.d.ts +13 -10
  277. package/lib/components/questionnaire/account-success/account-success.page.d.ts.map +1 -1
  278. package/lib/components/questionnaire/common-success/common-success.page.d.ts +7 -1
  279. package/lib/components/questionnaire/common-success/common-success.page.d.ts.map +1 -1
  280. package/lib/components/questionnaire/dynamic-form-panel.component.d.ts +3 -1
  281. package/lib/components/questionnaire/dynamic-form-panel.component.d.ts.map +1 -1
  282. package/lib/components/questionnaire/dynamic-form-question.component.d.ts +33 -35
  283. package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
  284. package/lib/components/questionnaire/dynamic-form.component.d.ts +10 -34
  285. package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -1
  286. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts +0 -7
  287. package/lib/components/questionnaire/form-builder/form-builder.page.d.ts.map +1 -1
  288. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts +7 -1
  289. package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts.map +1 -1
  290. package/lib/components/questionnaire/question-control.service.d.ts.map +1 -1
  291. package/lib/components/questionnaire/question.service.d.ts +0 -1
  292. package/lib/components/questionnaire/question.service.d.ts.map +1 -1
  293. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts +1 -7
  294. package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts.map +1 -1
  295. package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts +11 -3
  296. package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts.map +1 -1
  297. package/lib/components/scrollable-text/scrollable-text.component.d.ts +11 -0
  298. package/lib/components/scrollable-text/scrollable-text.component.d.ts.map +1 -0
  299. package/lib/components/search-employer/search-employer.component.d.ts +5 -4
  300. package/lib/components/search-employer/search-employer.component.d.ts.map +1 -1
  301. package/lib/components/sms/sms.component.d.ts +63 -0
  302. package/lib/components/sms/sms.component.d.ts.map +1 -0
  303. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts +1 -5
  304. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts.map +1 -1
  305. package/lib/components/user-login/user-login.component.d.ts +5 -38
  306. package/lib/components/user-login/user-login.component.d.ts.map +1 -1
  307. package/lib/components/wage-calculator/wage-calculator.component.d.ts +44 -0
  308. package/lib/components/wage-calculator/wage-calculator.component.d.ts.map +1 -0
  309. package/lib/components/wage-grid/wage-grid.component.d.ts +43 -0
  310. package/lib/components/wage-grid/wage-grid.component.d.ts.map +1 -0
  311. package/lib/components/weekly-acknowledgement-ms/acknowledgement-ms.component.d.ts +28 -0
  312. package/lib/components/weekly-acknowledgement-ms/acknowledgement-ms.component.d.ts.map +1 -0
  313. package/lib/components/weekly-acknowledgement-v2/acknowledgement.component-v2.d.ts +28 -0
  314. package/lib/components/weekly-acknowledgement-v2/acknowledgement.component-v2.d.ts.map +1 -0
  315. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts +27 -10
  316. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts.map +1 -1
  317. package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts +9 -3
  318. package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts.map +1 -1
  319. package/lib/components/weekly-certification/weekly-certification.component.d.ts +101 -0
  320. package/lib/components/weekly-certification/weekly-certification.component.d.ts.map +1 -0
  321. package/lib/components/weekly-confirmation/confirmation.component.d.ts +21 -0
  322. package/lib/components/weekly-confirmation/confirmation.component.d.ts.map +1 -0
  323. package/lib/components/weekly-interim-confirmation/interim-confirmation.component.d.ts +34 -0
  324. package/lib/components/weekly-interim-confirmation/interim-confirmation.component.d.ts.map +1 -0
  325. package/lib/components/weekly-summary-v2/summary.component-v2.d.ts +17 -0
  326. package/lib/components/weekly-summary-v2/summary.component-v2.d.ts.map +1 -0
  327. package/lib/components/weekly-work-performed-popup/weekly-work-performed-popup.component.d.ts +10 -0
  328. package/lib/components/weekly-work-performed-popup/weekly-work-performed-popup.component.d.ts.map +1 -0
  329. package/lib/components/weekly-work-search-counter/work-search-counter.component.d.ts +17 -0
  330. package/lib/components/weekly-work-search-counter/work-search-counter.component.d.ts.map +1 -0
  331. package/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.d.ts +105 -0
  332. package/lib/components/weekly-work-search-employer-me/work-search-employer.component-me.d.ts.map +1 -0
  333. package/lib/components/weekly-work-search-employer-ms/work-search-employer-ms.component.d.ts +71 -0
  334. package/lib/components/weekly-work-search-employer-ms/work-search-employer-ms.component.d.ts.map +1 -0
  335. package/lib/components/weekly-work-search-employer-v2/work-search-employer.component-v2.d.ts +59 -0
  336. package/lib/components/weekly-work-search-employer-v2/work-search-employer.component-v2.d.ts.map +1 -0
  337. package/lib/components/weekly-work-search-journal/weekly-work-search-journal.component.d.ts +47 -0
  338. package/lib/components/weekly-work-search-journal/weekly-work-search-journal.component.d.ts.map +1 -0
  339. package/lib/components/weekly-work-search-question-v2/work-search-question.component-v2.d.ts +78 -0
  340. package/lib/components/weekly-work-search-question-v2/work-search-question.component-v2.d.ts.map +1 -0
  341. package/lib/directives/strip-invisible-characters/strip-invisible-characters.directive.d.ts +8 -0
  342. package/lib/directives/strip-invisible-characters/strip-invisible-characters.directive.d.ts.map +1 -0
  343. package/lib/enums/AddressValidationResponseEnum.d.ts +8 -0
  344. package/lib/enums/AddressValidationResponseEnum.d.ts.map +1 -0
  345. package/lib/enums/AddressValidationSourceFunctionEnum.d.ts +4 -0
  346. package/lib/enums/AddressValidationSourceFunctionEnum.d.ts.map +1 -0
  347. package/lib/guards/auth.guard.d.ts.map +1 -1
  348. package/lib/interceptors/error-interceptor/http-error-interceptor.d.ts.map +1 -1
  349. package/lib/models/ActiveClaimModel.d.ts +8 -0
  350. package/lib/models/ActiveClaimModel.d.ts.map +1 -0
  351. package/lib/models/CountyModel.d.ts +8 -0
  352. package/lib/models/CountyModel.d.ts.map +1 -0
  353. package/lib/models/DuaAppDataModel.d.ts +5 -0
  354. package/lib/models/DuaAppDataModel.d.ts.map +1 -0
  355. package/lib/models/DuaRequestModel.d.ts +10 -0
  356. package/lib/models/DuaRequestModel.d.ts.map +1 -0
  357. package/lib/models/DuaRetroWeeksComponentModel.d.ts +5 -0
  358. package/lib/models/DuaRetroWeeksComponentModel.d.ts.map +1 -0
  359. package/lib/models/EmployerDetailSearchResult.d.ts +4 -1
  360. package/lib/models/EmployerDetailSearchResult.d.ts.map +1 -1
  361. package/lib/models/EmployerInfoComponentModel.d.ts +9 -0
  362. package/lib/models/EmployerInfoComponentModel.d.ts.map +1 -0
  363. package/lib/models/EmployerPayInfoModel.d.ts +20 -0
  364. package/lib/models/EmployerPayInfoModel.d.ts.map +1 -0
  365. package/lib/models/FarmUsageComponentModel.d.ts +10 -0
  366. package/lib/models/FarmUsageComponentModel.d.ts.map +1 -0
  367. package/lib/models/GrossEarningsModel.d.ts +6 -0
  368. package/lib/models/GrossEarningsModel.d.ts.map +1 -0
  369. package/lib/models/HelpConstants.d.ts +5 -0
  370. package/lib/models/HelpConstants.d.ts.map +1 -0
  371. package/lib/models/LexisNexisOtpDetailsResponseModel.d.ts +7 -0
  372. package/lib/models/LexisNexisOtpDetailsResponseModel.d.ts.map +1 -0
  373. package/lib/models/LibConstants.d.ts +40 -1
  374. package/lib/models/LibConstants.d.ts.map +1 -1
  375. package/lib/models/OtpAuthModel.d.ts +0 -1
  376. package/lib/models/OtpAuthModel.d.ts.map +1 -1
  377. package/lib/models/PaymentComponentModel.d.ts +1 -1
  378. package/lib/models/PaymentComponentModel.d.ts.map +1 -1
  379. package/lib/models/ReasonSeparationRequestModel.d.ts +7 -0
  380. package/lib/models/ReasonSeparationRequestModel.d.ts.map +1 -0
  381. package/lib/models/RetroWeeksModel.d.ts +11 -0
  382. package/lib/models/RetroWeeksModel.d.ts.map +1 -0
  383. package/lib/models/SecurityQuestionAnswerModel.d.ts +7 -0
  384. package/lib/models/SecurityQuestionAnswerModel.d.ts.map +1 -0
  385. package/lib/models/SendOtpRequestModel.d.ts +12 -0
  386. package/lib/models/SendOtpRequestModel.d.ts.map +1 -0
  387. package/lib/models/UserModel.d.ts +0 -1
  388. package/lib/models/UserModel.d.ts.map +1 -1
  389. package/lib/models/VerifyOtpRequestModel.d.ts +8 -0
  390. package/lib/models/VerifyOtpRequestModel.d.ts.map +1 -0
  391. package/lib/models/WageCalculatorModel.d.ts +15 -0
  392. package/lib/models/WageCalculatorModel.d.ts.map +1 -0
  393. package/lib/models/WageInfoModel.d.ts +9 -0
  394. package/lib/models/WageInfoModel.d.ts.map +1 -0
  395. package/lib/models/addressValidation/AddressRecommendationModel.d.ts +12 -0
  396. package/lib/models/addressValidation/AddressRecommendationModel.d.ts.map +1 -0
  397. package/lib/models/addressValidation/AddressValidationRequestComponentModel.d.ts +11 -0
  398. package/lib/models/addressValidation/AddressValidationRequestComponentModel.d.ts.map +1 -0
  399. package/lib/models/addressValidation/AddressValidationResponseComponentModel.d.ts +6 -0
  400. package/lib/models/addressValidation/AddressValidationResponseComponentModel.d.ts.map +1 -0
  401. package/lib/models/addressValidation/AddressValidationReturnComponentModel.d.ts +16 -0
  402. package/lib/models/addressValidation/AddressValidationReturnComponentModel.d.ts.map +1 -0
  403. package/lib/models/combo-model.d.ts +42 -0
  404. package/lib/models/combo-model.d.ts.map +1 -0
  405. package/lib/models/dashboard-model.d.ts +22 -0
  406. package/lib/models/dashboard-model.d.ts.map +1 -1
  407. package/lib/models/fileupload/DocUploadModel.d.ts +22 -0
  408. package/lib/models/fileupload/DocUploadModel.d.ts.map +1 -0
  409. package/lib/models/fileupload/EmployerDataModel.d.ts +6 -0
  410. package/lib/models/fileupload/EmployerDataModel.d.ts.map +1 -0
  411. package/lib/models/fileupload/FileObject.d.ts +8 -0
  412. package/lib/models/fileupload/FileObject.d.ts.map +1 -0
  413. package/lib/models/fileupload/FileObjectArray.d.ts +8 -0
  414. package/lib/models/fileupload/FileObjectArray.d.ts.map +1 -0
  415. package/lib/models/questionnaire/AppealParticipantModel.d.ts +17 -0
  416. package/lib/models/questionnaire/AppealParticipantModel.d.ts.map +1 -0
  417. package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts +3 -0
  418. package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts.map +1 -1
  419. package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts +15 -4
  420. package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts.map +1 -1
  421. package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts +4 -1
  422. package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts.map +1 -1
  423. package/lib/models/questionnaire/ComboModel.d.ts +14 -82
  424. package/lib/models/questionnaire/ComboModel.d.ts.map +1 -1
  425. package/lib/models/questionnaire/ElementsModel.d.ts +0 -1
  426. package/lib/models/questionnaire/ElementsModel.d.ts.map +1 -1
  427. package/lib/models/questionnaire/LegalDiscaimarModel.d.ts +2 -0
  428. package/lib/models/questionnaire/LegalDiscaimarModel.d.ts.map +1 -1
  429. package/lib/models/questionnaire/QuestionnaireSaveModel.d.ts +0 -1
  430. package/lib/models/questionnaire/QuestionnaireSaveModel.d.ts.map +1 -1
  431. package/lib/models/questionnaire/ScrollableTextModel.d.ts +4 -0
  432. package/lib/models/questionnaire/ScrollableTextModel.d.ts.map +1 -0
  433. package/lib/models/questionnaire/StatusModel.d.ts +1 -0
  434. package/lib/models/questionnaire/StatusModel.d.ts.map +1 -1
  435. package/lib/models/questionnaire/WbaHelperTextModel.d.ts +4 -0
  436. package/lib/models/questionnaire/WbaHelperTextModel.d.ts.map +1 -0
  437. package/lib/models/weekly-cert/WorkSearchWaiverModel.d.ts +9 -0
  438. package/lib/models/weekly-cert/WorkSearchWaiverModel.d.ts.map +1 -0
  439. package/lib/models/weekly-cert/address-detail-model.d.ts +14 -0
  440. package/lib/models/weekly-cert/address-detail-model.d.ts.map +1 -0
  441. package/lib/models/weekly-cert/admin-leave-details-model.d.ts +15 -0
  442. package/lib/models/weekly-cert/admin-leave-details-model.d.ts.map +1 -0
  443. package/lib/models/weekly-cert/employer-info-v2-model.d.ts +27 -0
  444. package/lib/models/weekly-cert/employer-info-v2-model.d.ts.map +1 -0
  445. package/lib/models/weekly-cert/weekly-cert-eligibility-v2-model.d.ts +57 -0
  446. package/lib/models/weekly-cert/weekly-cert-eligibility-v2-model.d.ts.map +1 -0
  447. package/lib/models/weekly-cert/weekly-certification-v2-model.d.ts +59 -0
  448. package/lib/models/weekly-cert/weekly-certification-v2-model.d.ts.map +1 -0
  449. package/lib/models/weekly-cert/work-search-record-v2-model.d.ts +66 -0
  450. package/lib/models/weekly-cert/work-search-record-v2-model.d.ts.map +1 -0
  451. package/lib/models/weekly-cert/work-search-v2-model.d.ts +18 -0
  452. package/lib/models/weekly-cert/work-search-v2-model.d.ts.map +1 -0
  453. package/lib/ngx-reusa-app-lib.module.d.ts +124 -86
  454. package/lib/ngx-reusa-app-lib.module.d.ts.map +1 -1
  455. package/lib/pages/BasePage.d.ts +3 -6
  456. package/lib/pages/BasePage.d.ts.map +1 -1
  457. package/lib/pages/common/change-password/change-password.page.d.ts +3 -0
  458. package/lib/pages/common/change-password/change-password.page.d.ts.map +1 -1
  459. package/lib/pages/common/login/login.component.d.ts.map +1 -1
  460. package/lib/pages/popovers/language/language.page.d.ts.map +1 -1
  461. package/lib/pages/popovers/my-profile/my-profile.page.d.ts.map +1 -1
  462. package/lib/pipes/format-worksearch/format-worksearch.pipe.d.ts +14 -0
  463. package/lib/pipes/format-worksearch/format-worksearch.pipe.d.ts.map +1 -0
  464. package/lib/services/address-validation-service/address-validation.service.d.ts +44 -0
  465. package/lib/services/address-validation-service/address-validation.service.d.ts.map +1 -0
  466. package/lib/services/appeal/appeal.service.d.ts +16 -0
  467. package/lib/services/appeal/appeal.service.d.ts.map +1 -0
  468. package/lib/services/base-service.d.ts +12 -0
  469. package/lib/services/base-service.d.ts.map +1 -1
  470. package/lib/services/birt-service/birt.service.d.ts +17 -0
  471. package/lib/services/birt-service/birt.service.d.ts.map +1 -0
  472. package/lib/services/claimant-service/claimant.service.d.ts +5 -6
  473. package/lib/services/claimant-service/claimant.service.d.ts.map +1 -1
  474. package/lib/services/claims/claims.service.d.ts +39 -5
  475. package/lib/services/claims/claims.service.d.ts.map +1 -1
  476. package/lib/services/employer/employer-service.d.ts +16 -0
  477. package/lib/services/employer/employer-service.d.ts.map +1 -0
  478. package/lib/services/event-service/event-service.d.ts +20 -0
  479. package/lib/services/event-service/event-service.d.ts.map +1 -0
  480. package/lib/services/login/login.service.d.ts +5 -3
  481. package/lib/services/login/login.service.d.ts.map +1 -1
  482. package/lib/services/offline-claims/offline-claims.service.d.ts +64 -0
  483. package/lib/services/offline-claims/offline-claims.service.d.ts.map +1 -0
  484. package/lib/services/questionnaire/questionnaire.service.d.ts +1 -0
  485. package/lib/services/questionnaire/questionnaire.service.d.ts.map +1 -1
  486. package/lib/services/questionnaire/validation.service.d.ts +3 -0
  487. package/lib/services/questionnaire/validation.service.d.ts.map +1 -1
  488. package/lib/services/security-service/security.service.d.ts +12 -4
  489. package/lib/services/security-service/security.service.d.ts.map +1 -1
  490. package/lib/services/util/util.service.d.ts +6 -0
  491. package/lib/services/util/util.service.d.ts.map +1 -1
  492. package/lib/services/weekly-cert/review.service.d.ts +23 -0
  493. package/lib/services/weekly-cert/review.service.d.ts.map +1 -0
  494. package/lib/services/weekly-cert/weekly-cert-v2.service.d.ts +47 -5
  495. package/lib/services/weekly-cert/weekly-cert-v2.service.d.ts.map +1 -1
  496. package/lib/services/weekly-cert/weekly-cert.service.d.ts +17 -0
  497. package/lib/services/weekly-cert/weekly-cert.service.d.ts.map +1 -0
  498. package/lib/services/weekly-cert/work-search.service.d.ts +26 -0
  499. package/lib/services/weekly-cert/work-search.service.d.ts.map +1 -0
  500. package/lib/validations/AppRegex.d.ts +0 -2
  501. package/lib/validations/AppRegex.d.ts.map +1 -1
  502. package/lib/validations/AppValidators.d.ts +20 -24
  503. package/lib/validations/AppValidators.d.ts.map +1 -1
  504. package/package.json +2 -2
  505. package/public-api.d.ts +46 -4
  506. package/public-api.d.ts.map +1 -1
  507. package/esm2022/lib/components/lexis-nexis/lexis-nexis.component.mjs +0 -402
  508. package/esm2022/lib/components/mfa2/mfa2.component.mjs +0 -285
  509. package/esm2022/lib/components/security-question/security-question.component.mjs +0 -199
  510. package/esm2022/lib/models/LexisNexisAccountCreationModel.mjs +0 -2
  511. package/esm2022/lib/models/LexisNexisAuthSelectionRequestModel.mjs +0 -2
  512. package/esm2022/lib/models/LexisNexisAuthSelectionResponseModel.mjs +0 -2
  513. package/esm2022/lib/models/LexisNexisEnabledResponseModel.mjs +0 -2
  514. package/esm2022/lib/models/LexisNexisResponseModel.mjs +0 -3
  515. package/esm2022/lib/models/PartialEmploymentModel.mjs +0 -3
  516. package/esm2022/lib/models/SecurityQuestionModel.mjs +0 -3
  517. package/esm2022/lib/services/claimant-service/claimant-usps-redirect.service.mjs +0 -36
  518. package/esm2022/lib/services/lexis-nexis/lexis.nexis.service.mjs +0 -60
  519. package/esm2022/lib/services/ovp/ovp.service.mjs +0 -43
  520. package/lib/components/lexis-nexis/lexis-nexis.component.d.ts +0 -59
  521. package/lib/components/lexis-nexis/lexis-nexis.component.d.ts.map +0 -1
  522. package/lib/components/mfa2/mfa2.component.d.ts +0 -48
  523. package/lib/components/mfa2/mfa2.component.d.ts.map +0 -1
  524. package/lib/components/security-question/security-question.component.d.ts +0 -37
  525. package/lib/components/security-question/security-question.component.d.ts.map +0 -1
  526. package/lib/models/LexisNexisAccountCreationModel.d.ts +0 -15
  527. package/lib/models/LexisNexisAccountCreationModel.d.ts.map +0 -1
  528. package/lib/models/LexisNexisAuthSelectionRequestModel.d.ts +0 -16
  529. package/lib/models/LexisNexisAuthSelectionRequestModel.d.ts.map +0 -1
  530. package/lib/models/LexisNexisAuthSelectionResponseModel.d.ts +0 -39
  531. package/lib/models/LexisNexisAuthSelectionResponseModel.d.ts.map +0 -1
  532. package/lib/models/LexisNexisEnabledResponseModel.d.ts +0 -5
  533. package/lib/models/LexisNexisEnabledResponseModel.d.ts.map +0 -1
  534. package/lib/models/LexisNexisResponseModel.d.ts +0 -7
  535. package/lib/models/LexisNexisResponseModel.d.ts.map +0 -1
  536. package/lib/models/PartialEmploymentModel.d.ts +0 -6
  537. package/lib/models/PartialEmploymentModel.d.ts.map +0 -1
  538. package/lib/models/SecurityQuestionModel.d.ts +0 -7
  539. package/lib/models/SecurityQuestionModel.d.ts.map +0 -1
  540. package/lib/services/claimant-service/claimant-usps-redirect.service.d.ts +0 -16
  541. package/lib/services/claimant-service/claimant-usps-redirect.service.d.ts.map +0 -1
  542. package/lib/services/lexis-nexis/lexis.nexis.service.d.ts +0 -26
  543. package/lib/services/lexis-nexis/lexis.nexis.service.d.ts.map +0 -1
  544. package/lib/services/ovp/ovp.service.d.ts +0 -17
  545. package/lib/services/ovp/ovp.service.d.ts.map +0 -1
@@ -9,20 +9,20 @@ import * as i2 from "../../services/util/util.service";
9
9
  import * as i3 from "../../services/questionnaire/questionnaire.service";
10
10
  import * as i4 from "../../services/logger/logger.service";
11
11
  import * as i5 from "../../services/dms-service/dms.service";
12
- import * as i6 from "@ngx-translate/core";
13
- import * as i7 from "@ionic/angular";
14
- import * as i8 from "@angular/common";
15
- import * as i9 from "primeng/inputtext";
16
- import * as i10 from "../error/error.component";
17
- import * as i11 from "../dropdown/dropdown.component";
18
12
  const _c0 = ["addressFormDirective"];
19
- const _c1 = a0 => ({ required: a0 });
20
- function AddressComponent_ion_col_55_Template(rf, ctx) { if (rf & 1) {
21
- i0.ɵɵelementStart(0, "ion-col", 18)(1, "div", 14)(2, "label", 5);
13
+ const _c1 = ["addressSuggestion"];
14
+ const _c2 = () => ({ required: "required" });
15
+ function AddressComponent_ion_col_54_Template(rf, ctx) { if (rf & 1) {
16
+ const _r7 = i0.ɵɵgetCurrentView();
17
+ i0.ɵɵelementStart(0, "ion-col", 20)(1, "div", 14)(2, "label", 5);
22
18
  i0.ɵɵtext(3);
23
19
  i0.ɵɵpipe(4, "translate");
24
20
  i0.ɵɵelementEnd();
25
- i0.ɵɵelement(5, "br")(6, "app-dropdown", 6)(7, "br")(8, "app-error", 7);
21
+ i0.ɵɵelement(5, "br");
22
+ i0.ɵɵelementStart(6, "app-dropdown", 6);
23
+ i0.ɵɵlistener("onChange", function AddressComponent_ion_col_54_Template_app_dropdown_onChange_6_listener() { i0.ɵɵrestoreView(_r7); const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.getAddressSuggestion()); });
24
+ i0.ɵɵelementEnd();
25
+ i0.ɵɵelement(7, "br")(8, "app-error", 7);
26
26
  i0.ɵɵelementEnd()();
27
27
  } if (rf & 2) {
28
28
  const ctx_r1 = i0.ɵɵnextContext();
@@ -31,19 +31,24 @@ function AddressComponent_ion_col_55_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, 13, "common.county"));
34
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 12, "County"));
35
35
  i0.ɵɵadvance(3);
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");
36
+ i0.ɵɵproperty("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.ɵɵpureFunction1(15, _c1, ctx_r1.required));
39
+ i0.ɵɵproperty("field", ctx_r1.county)("form", _r0)("errDef", i0.ɵɵpureFunction0(14, _c2));
40
40
  } }
41
- function AddressComponent_ion_col_56_Template(rf, ctx) { if (rf & 1) {
42
- i0.ɵɵelementStart(0, "ion-col", 18)(1, "div", 14)(2, "label", 5);
41
+ function AddressComponent_ion_col_55_Template(rf, ctx) { if (rf & 1) {
42
+ const _r9 = i0.ɵɵgetCurrentView();
43
+ i0.ɵɵelementStart(0, "ion-col", 20)(1, "div", 14)(2, "label", 5);
43
44
  i0.ɵɵtext(3);
44
45
  i0.ɵɵpipe(4, "translate");
45
46
  i0.ɵɵelementEnd();
46
- i0.ɵɵelement(5, "br")(6, "app-dropdown", 6)(7, "br")(8, "app-error", 7);
47
+ i0.ɵɵelement(5, "br");
48
+ i0.ɵɵelementStart(6, "app-dropdown", 6);
49
+ i0.ɵɵlistener("onChange", function AddressComponent_ion_col_55_Template_app_dropdown_onChange_6_listener() { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.getAddressSuggestion()); });
50
+ i0.ɵɵelementEnd();
51
+ i0.ɵɵelement(7, "br")(8, "app-error", 7);
47
52
  i0.ɵɵelementEnd()();
48
53
  } if (rf & 2) {
49
54
  const ctx_r2 = i0.ɵɵnextContext();
@@ -52,38 +57,92 @@ function AddressComponent_ion_col_56_Template(rf, ctx) { if (rf & 1) {
52
57
  i0.ɵɵadvance(2);
53
58
  i0.ɵɵproperty("for", ctx_r2.inputId ? ctx_r2.inputId + "-town" : "town");
54
59
  i0.ɵɵadvance(1);
55
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 13, "Town"));
60
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 12, "Town"));
56
61
  i0.ɵɵadvance(3);
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");
62
+ i0.ɵɵproperty("options", ctx_r2.townOptions)("formControl", ctx_r2.town)("autoDisplayFirst", false)("inputId", ctx_r2.inputId ? ctx_r2.inputId + "-town" : "town");
63
+ i0.ɵɵadvance(2);
64
+ i0.ɵɵclassMap("app-grid");
65
+ i0.ɵɵproperty("field", ctx_r2.town)("form", _r0)("errDef", i0.ɵɵpureFunction0(14, _c2));
66
+ } }
67
+ function AddressComponent_ion_col_57_Template(rf, ctx) { if (rf & 1) {
68
+ i0.ɵɵelementStart(0, "ion-col", 21)(1, "div", 4)(2, "label", 5);
69
+ i0.ɵɵtext(3);
70
+ i0.ɵɵpipe(4, "translate");
71
+ i0.ɵɵelementEnd();
72
+ i0.ɵɵelement(5, "br")(6, "p-selectButton", 22)(7, "app-error", 7);
73
+ i0.ɵɵelementEnd()();
74
+ } if (rf & 2) {
75
+ const ctx_r3 = i0.ɵɵnextContext();
76
+ const _r0 = i0.ɵɵreference(1);
77
+ i0.ɵɵproperty("ngClass", ctx_r3.fromPopup ? "col" : "col col-fit-content");
78
+ i0.ɵɵadvance(2);
79
+ i0.ɵɵproperty("for", ctx_r3.inputId ? ctx_r3.inputId + "-neighbourFlag" : "neighbourFlag");
80
+ i0.ɵɵadvance(1);
81
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 11, "Are you continuing to look for work in Maine?"));
82
+ i0.ɵɵadvance(3);
83
+ i0.ɵɵproperty("inputId", ctx_r3.inputId ? ctx_r3.inputId + "-neighbourFlag" : "neighbourFlag")("options", ctx_r3.yesNoOptions)("formControl", ctx_r3.neighbourFlag);
84
+ i0.ɵɵadvance(1);
85
+ i0.ɵɵclassMap("app-grid");
86
+ i0.ɵɵproperty("field", ctx_r3.neighbourFlag)("form", _r0)("errDef", i0.ɵɵpureFunction0(13, _c2));
87
+ } }
88
+ function AddressComponent_ion_col_58_Template(rf, ctx) { if (rf & 1) {
89
+ i0.ɵɵelementStart(0, "ion-col", 21)(1, "div", 4)(2, "label", 5);
90
+ i0.ɵɵtext(3);
91
+ i0.ɵɵpipe(4, "translate");
92
+ i0.ɵɵelementEnd();
93
+ i0.ɵɵelement(5, "br")(6, "p-selectButton", 22)(7, "app-error", 7);
94
+ i0.ɵɵelementEnd()();
95
+ } if (rf & 2) {
96
+ const ctx_r4 = i0.ɵɵnextContext();
97
+ const _r0 = i0.ɵɵreference(1);
98
+ i0.ɵɵproperty("ngClass", ctx_r4.fromPopup ? "col" : "col col-fit-content");
58
99
  i0.ɵɵadvance(2);
100
+ i0.ɵɵproperty("for", ctx_r4.inputId ? ctx_r4.inputId + "-neighbourFlag" : "neighbourFlag");
101
+ i0.ɵɵadvance(1);
102
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 11, "Do you normally work in Mississippi?"));
103
+ i0.ɵɵadvance(3);
104
+ i0.ɵɵproperty("inputId", ctx_r4.inputId ? ctx_r4.inputId + "-neighbourFlag" : "neighbourFlag")("options", ctx_r4.yesNoOptions)("formControl", ctx_r4.neighbourFlag);
105
+ i0.ɵɵadvance(1);
59
106
  i0.ɵɵclassMap("app-grid");
60
- i0.ɵɵproperty("field", ctx_r2.town)("form", _r0)("errDef", i0.ɵɵpureFunction1(15, _c1, ctx_r2.required));
107
+ i0.ɵɵproperty("field", ctx_r4.neighbourFlag)("form", _r0)("errDef", i0.ɵɵpureFunction0(13, _c2));
108
+ } }
109
+ function AddressComponent_app_address_suggestion_59_Template(rf, ctx) { if (rf & 1) {
110
+ const _r12 = i0.ɵɵgetCurrentView();
111
+ i0.ɵɵelementStart(0, "app-address-suggestion", 23, 24);
112
+ i0.ɵɵlistener("checkFormIsBlur", function AddressComponent_app_address_suggestion_59_Template_app_address_suggestion_checkFormIsBlur_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r11.checkFormBlurr()); });
113
+ i0.ɵɵelementEnd();
114
+ } if (rf & 2) {
115
+ const ctx_r5 = i0.ɵɵnextContext();
116
+ i0.ɵɵproperty("form", ctx_r5.addressForm)("formName", ctx_r5.inputId)("diffMailAddressFlag", ctx_r5.diffMailAddress)("formBlur", ctx_r5.checkFormBlurr())("questionaireForm", ctx_r5.questionaireForm)("standaloneAddressForm", ctx_r5.standaloneAddressForm)("parentFormComponent", ctx_r5.parentFormComponent);
61
117
  } }
62
- const _c2 = (a0, a1, a2, a3) => ({ required: a0, invalidLength: a1, invalidNumber: a2, invalidZipCode: a3 });
118
+ const _c3 = () => ({ 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
119
  export class AddressComponent {
64
- constructor(formBuilder, util, questionnaireService, logger, dms, translateService) {
120
+ constructor(formBuilder, util, questionnaireService, logger, dms) {
65
121
  this.formBuilder = formBuilder;
66
122
  this.util = util;
67
123
  this.questionnaireService = questionnaireService;
68
124
  this.logger = logger;
69
125
  this.dms = dms;
70
- this.translateService = translateService;
71
126
  this.stateOptions = [];
72
127
  this.countyOptions = [];
73
128
  this.townOptions = [];
129
+ this.yesNoOptions = ComboOption.YES_NO;
74
130
  this.countryOptions = ComboOption.COUNTRY;
75
131
  this.addressData = new AddressComponentModel();
76
132
  this.address = new EventEmitter();
77
- this.readonly = false;
133
+ this.addressTypeForNeighbourCheck = "N";
134
+ this.neighbouringStateME = ['NH', 'VT', 'MA'];
135
+ this.neighbouringStateMS = ['AL', 'AR', 'LA', 'TN'];
136
+ this.showNeighbourQuestion = false;
137
+ this.blurFromField = false;
78
138
  this.usZipcodeValidations = [Validators.required, AppValidators.isValidZipCode];
79
139
  this.canadaZipcodeValidations = [Validators.required, AppValidators.isValidCanadianZipCode];
140
+ this.addressFieldFocusStatus = {};
80
141
  this.onTouched = () => { };
81
142
  this.onChangeSubs = [];
82
143
  this.forState = util.getState();
83
- this.translateService.use(localStorage.getItem("language"));
84
144
  }
85
145
  ngOnInit() {
86
- this.translateService.use(localStorage.getItem("language"));
87
146
  this.addressForm = this.formBuilder.group({
88
147
  'country': [null, Validators.required],
89
148
  'zip': [null, Validators.compose([Validators.required])],
@@ -93,16 +152,21 @@ export class AddressComponent {
93
152
  'town': [null],
94
153
  'county': [null],
95
154
  'city': [null, Validators.required],
155
+ 'neighbourFlag': [null],
156
+ 'neighborStateCheckRequired': [null]
96
157
  });
97
158
  this.setRequiredValidation();
159
+ if (this.componentData != null) {
160
+ const obj = JSON.parse(this.componentData);
161
+ this.addressTypeForNeighbourCheck = obj["neighboringStateCheckRequired"];
162
+ // this.neighborStateCheckRequired.setValue(this.neighboringStateCheckRequired);
163
+ }
98
164
  this.country.valueChanges.subscribe(country => {
99
165
  this.filterState(country);
166
+ this.getAddressSuggestion();
100
167
  });
101
168
  this.state.valueChanges.subscribe(state => {
102
169
  if (state) {
103
- if (this.util.isState('KS') && state.value == 'KS') {
104
- this.filterCounty(state);
105
- }
106
170
  if (this.util.isState('MS') && state.value == 'MS') {
107
171
  this.filterCounty(state);
108
172
  }
@@ -112,6 +176,37 @@ export class AddressComponent {
112
176
  if (this.util.isState('ME') && state.value == 'ME') {
113
177
  this.filterTown(state);
114
178
  }
179
+ if (this.addressTypeForNeighbourCheck === 'Y') {
180
+ this.logger.debug('neighbour check to happen');
181
+ if (this.util.isState('MS')) {
182
+ if (this.neighbouringStateMS.includes(state.value)) {
183
+ //console.log('neighbour question should display');
184
+ this.showNeighbourQuestion = true;
185
+ this.util.setRequiredValidator(this.neighbourFlag);
186
+ this.neighborStateCheckRequired.setValue("Y");
187
+ }
188
+ else {
189
+ this.showNeighbourQuestion = false;
190
+ this.util.clearValidation(this.neighbourFlag);
191
+ this.neighbourFlag.setValue(null);
192
+ this.neighborStateCheckRequired.setValue(null);
193
+ }
194
+ }
195
+ if (this.util.isState('ME')) {
196
+ if (this.neighbouringStateME.includes(state.value)) {
197
+ //console.log('neighbour question should display');
198
+ this.showNeighbourQuestion = true;
199
+ this.util.setRequiredValidator(this.neighbourFlag);
200
+ this.neighborStateCheckRequired.setValue("Y");
201
+ }
202
+ else {
203
+ this.showNeighbourQuestion = false;
204
+ this.util.clearValidation(this.neighbourFlag);
205
+ this.neighbourFlag.setValue(null);
206
+ this.neighborStateCheckRequired.setValue(null);
207
+ }
208
+ }
209
+ }
115
210
  }
116
211
  });
117
212
  this.zip.valueChanges.subscribe(zip => {
@@ -120,21 +215,60 @@ export class AddressComponent {
120
215
  }
121
216
  });
122
217
  this.country.setValue({ value: "US", text: "United States" });
218
+ this.formBlur = this.checkFormBlurr();
219
+ }
220
+ ngOnChanges(change) {
221
+ if (change['diffMailAddress']) {
222
+ if (change['diffMailAddress'].currentValue === false && (this.inputId === 'resAddress' || this.inputId === 'resAdress')) {
223
+ this.diffMailAddress = false;
224
+ if (this.checkFormBlurr() && this.addressForm?.valid) {
225
+ this.addressSuggestion.getValidateAddress(true);
226
+ }
227
+ }
228
+ }
229
+ }
230
+ setFieldBlur(field) {
231
+ this.addressFieldFocusStatus[field] = false;
232
+ }
233
+ setFieldFocus(field) {
234
+ this.addressFieldFocusStatus[field] = true;
235
+ }
236
+ getAddressSuggestion() {
237
+ this.blurFromField = this.addressForm.dirty && this.addressForm.valid;
238
+ setTimeout(() => {
239
+ if (this.blurFromField && this.addressSuggestion && this.enableAddressValidation && this.checkFormBlurr()) {
240
+ this.addressSuggestion.getValidateAddress(false);
241
+ this.addressForm.markAsPristine();
242
+ }
243
+ }, 10);
244
+ }
245
+ checkFormBlurr() {
246
+ let fieldBlur = true;
247
+ for (const key in this.addressFieldFocusStatus) {
248
+ if (this.addressFieldFocusStatus[key]) {
249
+ fieldBlur = false;
250
+ }
251
+ }
252
+ this.formBlur = fieldBlur;
253
+ return fieldBlur;
254
+ }
255
+ validAddress(address) {
256
+ this.lastValidAddress = address;
123
257
  }
124
258
  setRequiredValidation() {
125
259
  this.country.valueChanges.subscribe(c => {
126
- if (c.value == 'US') {
260
+ if (c?.value == 'US') {
127
261
  this.util.clearValidation(this.zip);
128
262
  this.util.setValidation(this.zip, this.usZipcodeValidations);
129
263
  }
130
- else if (c.value == 'CA') {
264
+ else if (c?.value == 'CA') {
131
265
  this.util.clearValidation(this.zip);
132
266
  this.util.setValidation(this.zip, this.canadaZipcodeValidations);
133
267
  }
134
268
  });
135
269
  this.state.valueChanges.subscribe(stateValue => {
136
270
  if (stateValue) {
137
- if (((stateValue.value === 'KS' && this.forState === 'KS')
271
+ if (((stateValue.value === 'MS' && this.forState === 'MS')
138
272
  || (stateValue.value === 'CT' && this.forState === 'CT')) && this.countyRequired === true) {
139
273
  this.util.setRequiredValidator(this.county);
140
274
  this.util.clearValidation(this.town);
@@ -154,6 +288,9 @@ export class AddressComponent {
154
288
  }
155
289
  });
156
290
  }
291
+ get neighborStateCheckRequired() {
292
+ return this.addressForm.controls['neighborStateCheckRequired'];
293
+ }
157
294
  get town() {
158
295
  return this.addressForm.controls['town'];
159
296
  }
@@ -178,40 +315,36 @@ export class AddressComponent {
178
315
  get optionalAddress() {
179
316
  return this.addressForm.controls['optionalAddress'];
180
317
  }
318
+ get neighbourFlag() {
319
+ return this.addressForm.controls['neighbourFlag'];
320
+ }
181
321
  getAddressData(event) {
182
- /**Uncomment when zip-lookup if fixed */
183
- // if (this.zip && this.zip.value) {
184
- // this.dms
185
- // .getAddress(this.zip.value)
186
- // .subscribe(
187
- // res => {
188
- // this.addressData = res;
189
- // if(this.addressData.city){
190
- // this.city.patchValue(this.addressData.city);
191
- // }
192
- // if(this.addressData.state){
193
- // this.state.patchValue(this.addressData.state);
194
- // }
195
- // if(this.addressData.county){
196
- // this.county.patchValue(this.addressData.county);
197
- // }
198
- // this.state.updateValueAndValidity();
199
- // },
200
- // err => {
201
- // this.logger.debug(err);
202
- // });
203
- // }
322
+ if (this.zip && this.zip.value) {
323
+ this.dms
324
+ .getAddress(this.zip.value)
325
+ .subscribe(res => {
326
+ this.addressData = res;
327
+ if (this.addressData.city) {
328
+ this.city.patchValue(this.addressData.city);
329
+ }
330
+ if (this.addressData.state) {
331
+ this.state.patchValue(this.addressData.state);
332
+ }
333
+ if (this.addressData.county) {
334
+ this.county.patchValue(this.addressData.county);
335
+ }
336
+ this.state.updateValueAndValidity();
337
+ // this.getAddressSuggestion();
338
+ }, err => {
339
+ this.logger.debug(err);
340
+ });
341
+ }
204
342
  }
205
343
  filterCountry(event) {
206
344
  this.logger.debug('event', event);
207
345
  let filtered = [];
208
346
  let query = event.query;
209
- if (localStorage.getItem("language") === "es") {
210
- this.countryOptions = ComboOption.COUNTRY_ES;
211
- }
212
- else {
213
- this.countryOptions = ComboOption.COUNTRY;
214
- }
347
+ this.countryOptions = ComboOption.COUNTRY;
215
348
  for (let i = 0; i < this.countryOptions.length; i++) {
216
349
  let country = this.countryOptions[i];
217
350
  if (country.text.toLowerCase().indexOf(query.toLowerCase()) == 0) {
@@ -242,20 +375,10 @@ export class AddressComponent {
242
375
  let choice;
243
376
  if (this.country?.value?.value === 'US') {
244
377
  const currentState = ComboOption.US_STATES.find(state => state.value == this.util.getState());
245
- if (localStorage.getItem("language") === "es") {
246
- choice = [currentState, ...ComboOption.US_STATES_ES.filter(state => state.value != this.util.getState())];
247
- }
248
- else {
249
- choice = [currentState, ...ComboOption.US_STATES.filter(state => state.value != this.util.getState())];
250
- }
378
+ choice = [currentState, ...ComboOption.US_STATES.filter(state => state.value != this.util.getState())];
251
379
  }
252
380
  if (this.country?.value?.value === 'CA') {
253
- if (localStorage.getItem("language") === "es") {
254
- choice = ComboOption.CA_STATES_ES;
255
- }
256
- else {
257
- choice = ComboOption.CA_STATES;
258
- }
381
+ choice = ComboOption.CA_STATES;
259
382
  }
260
383
  /*for (let i = 0; i < choice.length; i++) {
261
384
  if (choice[i].text.toLowerCase().indexOf(query.toLowerCase()) == 0) {
@@ -315,8 +438,8 @@ export class AddressComponent {
315
438
  let state = this.getState(formValue.country?.value, formValue.state.value.trim());
316
439
  formValue.state = state;
317
440
  }
318
- if (formValue.county && !formValue.county.text && formValue.county.value && formValue.state.value === 'KS') {
319
- this.setMSCounty(formValue.county);
441
+ if (formValue.county && !formValue.county.text && formValue.county.value && formValue.state.value === 'MS') {
442
+ this.setMSCounty(formValue['zip'], formValue.county);
320
443
  }
321
444
  if (formValue.town && !formValue.town.text && formValue.town.value && formValue.state.value === 'ME') {
322
445
  this.setMETown(formValue['zip'], formValue.town);
@@ -337,20 +460,10 @@ export class AddressComponent {
337
460
  }
338
461
  getState(country, state) {
339
462
  if (country == null || country == 'US') {
340
- if (localStorage.getItem("language") === "es") {
341
- return this.getStateValue(ComboOption.US_STATES_ES, state);
342
- }
343
- else {
344
- return this.getStateValue(ComboOption.US_STATES, state);
345
- }
463
+ return this.getStateValue(ComboOption.US_STATES, state);
346
464
  }
347
465
  else if (country == 'CA') {
348
- if (localStorage.getItem("language") === "es") {
349
- return this.getStateValue(ComboOption.CA_STATES_ES, state);
350
- }
351
- else {
352
- return this.getStateValue(ComboOption.CA_STATES, state);
353
- }
466
+ return this.getStateValue(ComboOption.CA_STATES, state);
354
467
  }
355
468
  else {
356
469
  console.error('No Country configured ', country);
@@ -368,8 +481,8 @@ export class AddressComponent {
368
481
  this.town.patchValue(selectedCounty);
369
482
  });
370
483
  }
371
- setMSCounty(county) {
372
- this.questionnaireService.getCounty('KS', this.zip.value).subscribe(res => {
484
+ setMSCounty(zipCode, county) {
485
+ this.questionnaireService.getCounty('MS', zipCode).subscribe(res => {
373
486
  this.countyOptions = res['choices'];
374
487
  let selectedCounty = this.countyOptions.filter(c => {
375
488
  return c.value == county.value;
@@ -385,34 +498,15 @@ export class AddressComponent {
385
498
  submit() {
386
499
  this.addressFormDirective.onSubmit(undefined);
387
500
  }
388
- get required() {
389
- return this.translateService.instant('common.required');
390
- }
391
- get zipLength() {
392
- return this.translateService.instant('common.zipcode.length');
393
- }
394
- get zipOnlyNumbers() {
395
- return this.translateService.instant('common.zipcode.only.numbers');
396
- }
397
- get zipInvalid() {
398
- return this.translateService.instant('common.zipcode.invalid');
399
- }
400
- get zipCodeNumeric() {
401
- return this.translateService.instant('weeklies.weeklycert.employer.zipcode.numeric');
402
- }
403
- get zipCodeLength() {
404
- return this.translateService.instant('weeklies.weeklycert.employer.zipcode.length');
405
- }
406
- get zipCodeInvalid() {
407
- return this.translateService.instant('weeklies.weeklycert.employer.zipcode.invalid');
408
- }
409
- static { this.ɵfac = function AddressComponent_Factory(t) { return new (t || AddressComponent)(i0.ɵɵdirectiveInject(i1.UntypedFormBuilder), i0.ɵɵdirectiveInject(i2.UtilService), i0.ɵɵdirectiveInject(i3.QuestionnaireService), i0.ɵɵdirectiveInject(i4.LoggerService), i0.ɵɵdirectiveInject(i5.DmsService), i0.ɵɵdirectiveInject(i6.TranslateService)); }; }
501
+ static { this.ɵfac = function AddressComponent_Factory(t) { return new (t || AddressComponent)(i0.ɵɵdirectiveInject(i1.UntypedFormBuilder), i0.ɵɵdirectiveInject(i2.UtilService), i0.ɵɵdirectiveInject(i3.QuestionnaireService), i0.ɵɵdirectiveInject(i4.LoggerService), i0.ɵɵdirectiveInject(i5.DmsService)); }; }
410
502
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AddressComponent, selectors: [["app-address"]], viewQuery: function AddressComponent_Query(rf, ctx) { if (rf & 1) {
411
503
  i0.ɵɵviewQuery(_c0, 5);
504
+ i0.ɵɵviewQuery(_c1, 5);
412
505
  } if (rf & 2) {
413
506
  let _t;
414
507
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.addressFormDirective = _t.first);
415
- } }, inputs: { countyRequired: "countyRequired", fromPopup: "fromPopup", inputId: "inputId", readonly: "readonly" }, outputs: { address: "address" }, features: [i0.ɵɵProvidersFeature([{
508
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.addressSuggestion = _t.first);
509
+ } }, inputs: { countyRequired: "countyRequired", fromPopup: "fromPopup", inputId: "inputId", componentData: "componentData", showSuggestion: "showSuggestion", diffMailAddress: "diffMailAddress", enableAddressValidation: "enableAddressValidation", questionaireForm: "questionaireForm", standaloneAddressForm: "standaloneAddressForm", parentFormComponent: "parentFormComponent" }, outputs: { address: "address" }, features: [i0.ɵɵProvidersFeature([{
416
510
  provide: NG_VALUE_ACCESSOR,
417
511
  useExisting: AddressComponent,
418
512
  multi: true
@@ -422,12 +516,16 @@ export class AddressComponent {
422
516
  multi: true,
423
517
  useExisting: AddressComponent
424
518
  }
425
- ])], decls: 57, vars: 94, 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", "", "maxlength", "40", 3, "readonly", "id", "formControl", "placeholder"], [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) {
519
+ ]), i0.ɵɵNgOnChangesFeature], decls: 60, vars: 79, 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", "onChange"], [3, "field", "form", "errDef"], ["type", "input", "pInputText", "", "minlength", "5", "maxlength", "9", "appStripInvisibleChars", "", 3, "id", "formControl", "blur", "focus"], [2, "padding-right", "0px", 3, "ngClass"], [1, "field", "p-fluid"], ["type", "input", "pInputText", "", "maxlength", "40", "appStripInvisibleChars", "", 3, "id", "formControl", "blur", "focus"], ["type", "input", "pInputText", "", "placeholder", "Optional", "maxlength", "40", "appStripInvisibleChars", "", 3, "id", "formControl", "blur", "focus"], [2, "padding-bottom", "0px", 3, "ngClass"], [1, "field", 2, "margin-bottom", "0px"], ["type", "input", "pInputText", "", "maxlength", "30", "appStripInvisibleChars", "", 3, "id", "formControl", "blur", "focus"], ["size", "12", "style", "padding-bottom: 0px;", 3, "ngClass", 4, "ngIf"], [2, "padding-top", "4px"], ["style", "padding-top: 0px;", 3, "ngClass", 4, "ngIf"], [3, "form", "formName", "diffMailAddressFlag", "formBlur", "questionaireForm", "standaloneAddressForm", "parentFormComponent", "checkFormIsBlur", 4, "ngIf"], ["size", "12", 2, "padding-bottom", "0px", 3, "ngClass"], [2, "padding-top", "0px", 3, "ngClass"], ["unselectable", "true", "optionLabel", "text", "optionValue", "value", "appendTo", "body", 3, "inputId", "options", "formControl"], [3, "form", "formName", "diffMailAddressFlag", "formBlur", "questionaireForm", "standaloneAddressForm", "parentFormComponent", "checkFormIsBlur"], ["addressSuggestion", ""]], template: function AddressComponent_Template(rf, ctx) { if (rf & 1) {
426
520
  i0.ɵɵelementStart(0, "form", 0, 1)(2, "div", 2)(3, "ion-row")(4, "ion-col", 3)(5, "div", 4)(6, "label", 5);
427
521
  i0.ɵɵtext(7);
428
522
  i0.ɵɵpipe(8, "translate");
429
523
  i0.ɵɵelementEnd();
430
- i0.ɵɵelement(9, "br")(10, "app-dropdown", 6)(11, "app-error", 7);
524
+ i0.ɵɵelement(9, "br");
525
+ i0.ɵɵelementStart(10, "app-dropdown", 6);
526
+ i0.ɵɵlistener("onChange", function AddressComponent_Template_app_dropdown_onChange_10_listener() { return ctx.getAddressSuggestion(); });
527
+ i0.ɵɵelementEnd();
528
+ i0.ɵɵelement(11, "app-error", 7);
431
529
  i0.ɵɵelementEnd()();
432
530
  i0.ɵɵelementStart(12, "ion-col", 3)(13, "div", 4)(14, "label", 5);
433
531
  i0.ɵɵtext(15);
@@ -435,7 +533,7 @@ export class AddressComponent {
435
533
  i0.ɵɵelementEnd();
436
534
  i0.ɵɵelement(17, "br");
437
535
  i0.ɵɵelementStart(18, "input", 8);
438
- i0.ɵɵlistener("blur", function AddressComponent_Template_input_blur_18_listener($event) { return ctx.getAddressData($event); });
536
+ i0.ɵɵlistener("blur", function AddressComponent_Template_input_blur_18_listener($event) { ctx.getAddressData($event); ctx.getAddressSuggestion(); return ctx.setFieldBlur("zip"); })("focus", function AddressComponent_Template_input_focus_18_listener() { return ctx.setFieldFocus("zip"); });
439
537
  i0.ɵɵelementEnd();
440
538
  i0.ɵɵelement(19, "br")(20, "app-error", 7);
441
539
  i0.ɵɵelementEnd()()();
@@ -443,26 +541,41 @@ export class AddressComponent {
443
541
  i0.ɵɵtext(25);
444
542
  i0.ɵɵpipe(26, "translate");
445
543
  i0.ɵɵelementEnd();
446
- i0.ɵɵelement(27, "br")(28, "input", 11)(29, "br")(30, "app-error", 7);
447
- i0.ɵɵelementEnd()()();
448
- i0.ɵɵelementStart(31, "ion-row")(32, "ion-col", 9)(33, "div", 10);
449
- i0.ɵɵelement(34, "input", 12);
450
- i0.ɵɵpipe(35, "translate");
544
+ i0.ɵɵelement(27, "br");
545
+ i0.ɵɵelementStart(28, "input", 11);
546
+ i0.ɵɵlistener("blur", function AddressComponent_Template_input_blur_28_listener() { ctx.getAddressSuggestion(); return ctx.setFieldBlur("streetAddress"); })("focus", function AddressComponent_Template_input_focus_28_listener() { return ctx.setFieldFocus("streetAddress"); });
547
+ i0.ɵɵelementEnd();
548
+ i0.ɵɵelement(29, "br")(30, "app-error", 7);
451
549
  i0.ɵɵelementEnd()()();
452
- i0.ɵɵelementStart(36, "ion-row")(37, "ion-col", 13)(38, "div", 14)(39, "label", 5);
453
- i0.ɵɵtext(40);
454
- i0.ɵɵpipe(41, "translate");
550
+ i0.ɵɵelementStart(31, "ion-row")(32, "ion-col", 9)(33, "div", 10)(34, "input", 12);
551
+ i0.ɵɵlistener("blur", function AddressComponent_Template_input_blur_34_listener() { ctx.getAddressSuggestion(); return ctx.setFieldBlur("optionalAddress"); })("focus", function AddressComponent_Template_input_focus_34_listener() { return ctx.setFieldFocus("optionalAddress"); });
552
+ i0.ɵɵelementEnd()()()();
553
+ i0.ɵɵelementStart(35, "ion-row")(36, "ion-col", 13)(37, "div", 14)(38, "label", 5);
554
+ i0.ɵɵtext(39);
555
+ i0.ɵɵpipe(40, "translate");
556
+ i0.ɵɵelementEnd();
557
+ i0.ɵɵelement(41, "br");
558
+ i0.ɵɵelementStart(42, "input", 15);
559
+ i0.ɵɵlistener("blur", function AddressComponent_Template_input_blur_42_listener() { ctx.getAddressSuggestion(); return ctx.setFieldBlur("city"); })("focus", function AddressComponent_Template_input_focus_42_listener() { return ctx.setFieldFocus("city"); });
455
560
  i0.ɵɵelementEnd();
456
- i0.ɵɵelement(42, "br")(43, "input", 15)(44, "br")(45, "app-error", 7);
561
+ i0.ɵɵelement(43, "br")(44, "app-error", 7);
457
562
  i0.ɵɵelementEnd()();
458
- i0.ɵɵelementStart(46, "ion-col", 13)(47, "div", 14)(48, "label", 5);
459
- i0.ɵɵtext(49);
460
- i0.ɵɵpipe(50, "translate");
563
+ i0.ɵɵelementStart(45, "ion-col", 13)(46, "div", 14)(47, "label", 5);
564
+ i0.ɵɵtext(48);
565
+ i0.ɵɵpipe(49, "translate");
566
+ i0.ɵɵelementEnd();
567
+ i0.ɵɵelement(50, "br");
568
+ i0.ɵɵelementStart(51, "app-dropdown", 6);
569
+ i0.ɵɵlistener("onChange", function AddressComponent_Template_app_dropdown_onChange_51_listener() { return ctx.getAddressSuggestion(); });
461
570
  i0.ɵɵelementEnd();
462
- i0.ɵɵelement(51, "br")(52, "app-dropdown", 16)(53, "br")(54, "app-error", 7);
571
+ i0.ɵɵelement(52, "br")(53, "app-error", 7);
463
572
  i0.ɵɵelementEnd()();
464
- i0.ɵɵtemplate(55, AddressComponent_ion_col_55_Template, 9, 17, "ion-col", 17)(56, AddressComponent_ion_col_56_Template, 9, 17, "ion-col", 17);
573
+ i0.ɵɵtemplate(54, AddressComponent_ion_col_54_Template, 9, 15, "ion-col", 16)(55, AddressComponent_ion_col_55_Template, 9, 15, "ion-col", 16);
574
+ i0.ɵɵelementEnd();
575
+ i0.ɵɵelementStart(56, "ion-row", 17);
576
+ i0.ɵɵtemplate(57, AddressComponent_ion_col_57_Template, 8, 14, "ion-col", 18)(58, AddressComponent_ion_col_58_Template, 8, 14, "ion-col", 18);
465
577
  i0.ɵɵelementEnd()()();
578
+ i0.ɵɵtemplate(59, AddressComponent_app_address_suggestion_59_Template, 2, 7, "app-address-suggestion", 19);
466
579
  } if (rf & 2) {
467
580
  const _r0 = i0.ɵɵreference(1);
468
581
  i0.ɵɵproperty("formGroup", ctx.addressForm);
@@ -473,66 +586,71 @@ export class AddressComponent {
473
586
  i0.ɵɵadvance(2);
474
587
  i0.ɵɵproperty("for", ctx.inputId ? ctx.inputId + "-country" : "country");
475
588
  i0.ɵɵadvance(1);
476
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 69, "common.country"));
589
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 64, "Country"));
477
590
  i0.ɵɵadvance(3);
478
- i0.ɵɵproperty("readonly", ctx.readonly)("options", ctx.countryOptions)("formControl", ctx.country)("autoDisplayFirst", false)("inputId", ctx.inputId ? ctx.inputId + "-country" : "country");
591
+ i0.ɵɵproperty("options", ctx.countryOptions)("formControl", ctx.country)("autoDisplayFirst", false)("inputId", ctx.inputId ? ctx.inputId + "-country" : "country");
479
592
  i0.ɵɵadvance(1);
480
593
  i0.ɵɵclassMap("app-grid");
481
- i0.ɵɵproperty("field", ctx.country)("form", _r0)("errDef", i0.ɵɵpureFunction1(81, _c1, ctx.required));
594
+ i0.ɵɵproperty("field", ctx.country)("form", _r0)("errDef", i0.ɵɵpureFunction0(74, _c2));
482
595
  i0.ɵɵadvance(1);
483
596
  i0.ɵɵproperty("ngClass", ctx.fromPopup ? "col app-col" : "col col-fit-content");
484
597
  i0.ɵɵadvance(2);
485
598
  i0.ɵɵproperty("for", ctx.inputId ? ctx.inputId + "-zip" : "zip");
486
599
  i0.ɵɵadvance(1);
487
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(16, 71, "common.zipcode"));
600
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(16, 66, "Zip code"));
488
601
  i0.ɵɵadvance(3);
489
- i0.ɵɵproperty("readonly", ctx.readonly)("id", ctx.inputId ? ctx.inputId + "-zip" : "zip")("formControl", ctx.zip);
602
+ i0.ɵɵproperty("id", ctx.inputId ? ctx.inputId + "-zip" : "zip")("formControl", ctx.zip);
490
603
  i0.ɵɵadvance(2);
491
604
  i0.ɵɵclassMap("app-grid");
492
- i0.ɵɵproperty("field", ctx.zip)("form", _r0)("errDef", i0.ɵɵpureFunction4(83, _c2, ctx.required, ctx.zipCodeLength, ctx.zipCodeNumeric, ctx.zipCodeInvalid));
605
+ i0.ɵɵproperty("field", ctx.zip)("form", _r0)("errDef", i0.ɵɵpureFunction0(75, _c3));
493
606
  i0.ɵɵadvance(2);
494
607
  i0.ɵɵproperty("ngClass", ctx.fromPopup ? "col" : "col col-fit-content");
495
608
  i0.ɵɵadvance(2);
496
609
  i0.ɵɵproperty("for", ctx.inputId ? ctx.inputId + "-streetAddress" : "streetAddress");
497
610
  i0.ɵɵadvance(1);
498
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(26, 73, "common.streetaddress"));
611
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(26, 68, "Street Address"));
499
612
  i0.ɵɵadvance(3);
500
- i0.ɵɵproperty("readonly", ctx.readonly)("id", ctx.inputId ? ctx.inputId + "-streetAddress" : "streetAddress")("formControl", ctx.streetAddress);
613
+ i0.ɵɵproperty("id", ctx.inputId ? ctx.inputId + "-streetAddress" : "streetAddress")("formControl", ctx.streetAddress);
501
614
  i0.ɵɵadvance(2);
502
615
  i0.ɵɵclassMap("app-grid");
503
- i0.ɵɵproperty("field", ctx.streetAddress)("form", _r0)("errDef", i0.ɵɵpureFunction1(88, _c1, ctx.required));
616
+ i0.ɵɵproperty("field", ctx.streetAddress)("form", _r0)("errDef", i0.ɵɵpureFunction0(76, _c2));
504
617
  i0.ɵɵadvance(2);
505
618
  i0.ɵɵproperty("ngClass", ctx.fromPopup ? "col" : "col col-fit-content");
506
619
  i0.ɵɵadvance(2);
507
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(35, 75, "common.optional"));
508
- i0.ɵɵproperty("readonly", ctx.readonly)("id", ctx.inputId ? ctx.inputId + "-optionalAddress" : "optionalAddress")("formControl", ctx.optionalAddress);
509
- i0.ɵɵadvance(3);
620
+ i0.ɵɵproperty("id", ctx.inputId ? ctx.inputId + "-optionalAddress" : "optionalAddress")("formControl", ctx.optionalAddress);
621
+ i0.ɵɵadvance(2);
510
622
  i0.ɵɵproperty("ngClass", ctx.fromPopup ? "col" : "col col-fit-content");
511
623
  i0.ɵɵadvance(2);
512
624
  i0.ɵɵproperty("for", ctx.inputId ? ctx.inputId + "-city" : "city");
513
625
  i0.ɵɵadvance(1);
514
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(41, 77, "common.city"));
626
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(40, 70, "City"));
515
627
  i0.ɵɵadvance(3);
516
- i0.ɵɵproperty("readonly", ctx.readonly)("id", ctx.inputId ? ctx.inputId + "-city" : "city")("formControl", ctx.city);
628
+ i0.ɵɵproperty("id", ctx.inputId ? ctx.inputId + "-city" : "city")("formControl", ctx.city);
517
629
  i0.ɵɵadvance(2);
518
630
  i0.ɵɵclassMap("app-grid");
519
- i0.ɵɵproperty("field", ctx.city)("form", _r0)("errDef", i0.ɵɵpureFunction1(90, _c1, ctx.required));
631
+ i0.ɵɵproperty("field", ctx.city)("form", _r0)("errDef", i0.ɵɵpureFunction0(77, _c2));
520
632
  i0.ɵɵadvance(1);
521
633
  i0.ɵɵproperty("ngClass", ctx.fromPopup ? "col app-col" : "col col-fit-content");
522
634
  i0.ɵɵadvance(2);
523
635
  i0.ɵɵproperty("for", ctx.inputId ? ctx.inputId + "-state" : "state");
524
636
  i0.ɵɵadvance(1);
525
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(50, 79, "common.state"));
637
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(49, 72, "State"));
526
638
  i0.ɵɵadvance(3);
527
- 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");
639
+ i0.ɵɵproperty("options", ctx.stateOptions)("formControl", ctx.state)("autoDisplayFirst", false)("inputId", ctx.inputId ? ctx.inputId + "-state" : "state");
528
640
  i0.ɵɵadvance(2);
529
641
  i0.ɵɵclassMap("app-grid");
530
- i0.ɵɵproperty("field", ctx.state)("form", _r0)("errDef", i0.ɵɵpureFunction1(92, _c1, ctx.required));
642
+ i0.ɵɵproperty("field", ctx.state)("form", _r0)("errDef", i0.ɵɵpureFunction0(78, _c2));
531
643
  i0.ɵɵadvance(1);
532
- i0.ɵɵproperty("ngIf", ctx.state.value && (ctx.state.value.value === "KS" && ctx.forState === "KS" || ctx.state.value.value === "CT" && ctx.forState === "KS") && ctx.countyRequired === true);
644
+ 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);
533
645
  i0.ɵɵadvance(1);
534
646
  i0.ɵɵproperty("ngIf", ctx.state.value && ctx.state.value.value === "ME" && ctx.forState === "ME" && ctx.countyRequired === true);
535
- } }, dependencies: [i7.IonCol, i7.IonRow, i8.NgClass, i8.NgIf, i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.MinLengthValidator, i1.MaxLengthValidator, i1.FormControlDirective, i1.FormGroupDirective, i9.InputText, i10.ErrorComponent, i11.Dropdown, i6.TranslatePipe], styles: [".col[_ngcontent-%COMP%]{padding-top:0;padding-bottom:0}.form-lbl[_ngcontent-%COMP%]{padding-bottom:6px}.inline-flex[_ngcontent-%COMP%]{display:inline-flex}ion-col[_ngcontent-%COMP%]{padding-left:0}.app-col[_ngcontent-%COMP%]{margin-left:27px;padding-right:0}"] }); }
647
+ i0.ɵɵadvance(2);
648
+ i0.ɵɵproperty("ngIf", ctx.showNeighbourQuestion === true && ctx.forState === "ME");
649
+ i0.ɵɵadvance(1);
650
+ i0.ɵɵproperty("ngIf", ctx.showNeighbourQuestion === true && ctx.forState === "MS");
651
+ i0.ɵɵadvance(1);
652
+ i0.ɵɵproperty("ngIf", ctx.enableAddressValidation && ctx.addressForm.valid && ((ctx.inputId === "resAddress" || ctx.inputId === "resAdress") && ctx.diffMailAddress === false || ctx.inputId === "mailAddress" && ctx.diffMailAddress === true || ctx.standaloneAddressForm === true));
653
+ } }, styles: [".col[_ngcontent-%COMP%]{padding-top:0;padding-bottom:0}.form-lbl[_ngcontent-%COMP%]{padding-bottom:6px}.inline-flex[_ngcontent-%COMP%]{display:inline-flex}ion-col[_ngcontent-%COMP%]{padding-left:0}.app-col[_ngcontent-%COMP%]{margin-left:27px;padding-right:0}"] }); }
536
654
  }
537
655
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AddressComponent, [{
538
656
  type: Component,
@@ -546,10 +664,13 @@ export class AddressComponent {
546
664
  multi: true,
547
665
  useExisting: AddressComponent
548
666
  }
549
- ], 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'\">{{'common.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'\">{{'common.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: zipCodeLength,\r\n invalidNumber: zipCodeNumeric,\r\n invalidZipCode: zipCodeInvalid,\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'\">{{'common.streetaddress' | 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='{{\"common.optional\" | translate}}'\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'\">{{'common.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'\">{{'common.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==='KS' && forState==='KS' \r\n || (state.value.value==='CT' && forState==='KS')) && 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'\">{{'common.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"] }]
550
- }], () => [{ type: i1.UntypedFormBuilder }, { type: i2.UtilService }, { type: i3.QuestionnaireService }, { type: i4.LoggerService }, { type: i5.DmsService }, { type: i6.TranslateService }], { addressFormDirective: [{
667
+ ], 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'\" (onChange)=\"getAddressSuggestion()\"></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\" appStripInvisibleChars\r\n (blur)=\"getAddressData($event); getAddressSuggestion(); setFieldBlur('zip')\" (focus)=\"setFieldFocus('zip')\" /><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 \r\n [formControl]=\"streetAddress\" maxlength=\"40\" (blur)=\"getAddressSuggestion(); setFieldBlur('streetAddress')\" (focus)=\"setFieldFocus('streetAddress')\" appStripInvisibleChars/><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 \r\n [formControl]=\"optionalAddress\" placeholder=\"Optional\" (blur)=\"getAddressSuggestion();setFieldBlur('optionalAddress')\" (focus)=\"setFieldFocus('optionalAddress')\"\r\n maxlength=\"40\" appStripInvisibleChars/>\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\" \r\n maxlength=\"30\" (blur)=\"getAddressSuggestion(); setFieldBlur('city')\" (focus)=\"setFieldFocus('city')\" appStripInvisibleChars/><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'\" (onChange)=\"getAddressSuggestion()\"></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'\" (onChange)=\"getAddressSuggestion()\"></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'\" (onChange)=\"getAddressSuggestion()\" ></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 <ion-row style=\"padding-top: 4px;\">\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-top: 0px;\"\r\n *ngIf=\"showNeighbourQuestion===true && forState==='ME'\" >\r\n <div class=\"field\">\r\n <label [for]=\"inputId ? inputId + '-neighbourFlag' : 'neighbourFlag'\">{{'Are you continuing to look for work in Maine?' | translate}}</label><br />\r\n <p-selectButton [inputId]=\"inputId ? inputId + '-neighbourFlag' : 'neighbourFlag'\" unselectable=\"true\" [options]=\"yesNoOptions\"\r\n [formControl]=\"neighbourFlag\" optionLabel=\"text\" optionValue=\"value\" appendTo=\"body\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='neighbourFlag' [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'\" style=\"padding-top: 0px;\"\r\n *ngIf=\"showNeighbourQuestion===true && forState==='MS'\" >\r\n <div class=\"field\">\r\n <label [for]=\"inputId ? inputId + '-neighbourFlag' : 'neighbourFlag'\">{{'Do you normally work in Mississippi?' | translate}}</label><br />\r\n <p-selectButton [inputId]=\"inputId ? inputId + '-neighbourFlag' : 'neighbourFlag'\" unselectable=\"true\" [options]=\"yesNoOptions\"\r\n [formControl]=\"neighbourFlag\" optionLabel=\"text\" optionValue=\"value\" appendTo=\"body\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='neighbourFlag' [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>\r\n<app-address-suggestion #addressSuggestion *ngIf=\"(enableAddressValidation) && this.addressForm.valid && (((inputId==='resAddress' || inputId==='resAdress') && diffMailAddress=== false) || (inputId==='mailAddress' && diffMailAddress=== true) || (standaloneAddressForm === true))\"\r\n[form]=\"addressForm\" [formName]=\"inputId\" [diffMailAddressFlag]=\"diffMailAddress\" [formBlur]=\"checkFormBlurr()\" (checkFormIsBlur)=\"checkFormBlurr()\" [questionaireForm]=\"questionaireForm\" [standaloneAddressForm]=\"standaloneAddressForm\" [parentFormComponent]=\"parentFormComponent\"></app-address-suggestion>\r\n", 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"] }]
668
+ }], () => [{ type: i1.UntypedFormBuilder }, { type: i2.UtilService }, { type: i3.QuestionnaireService }, { type: i4.LoggerService }, { type: i5.DmsService }], { addressFormDirective: [{
551
669
  type: ViewChild,
552
670
  args: ['addressFormDirective', { static: false }]
671
+ }], addressSuggestion: [{
672
+ type: ViewChild,
673
+ args: ['addressSuggestion']
553
674
  }], address: [{
554
675
  type: Output
555
676
  }], countyRequired: [{
@@ -558,8 +679,22 @@ export class AddressComponent {
558
679
  type: Input
559
680
  }], inputId: [{
560
681
  type: Input
561
- }], readonly: [{
682
+ }], componentData: [{
683
+ type: Input
684
+ }], showSuggestion: [{
685
+ type: Input
686
+ }], diffMailAddress: [{
687
+ type: Input
688
+ }], enableAddressValidation: [{
689
+ type: Input
690
+ }], questionaireForm: [{
691
+ type: Input
692
+ }], standaloneAddressForm: [{
693
+ type: Input
694
+ }], parentFormComponent: [{
562
695
  type: Input
563
696
  }] }); })();
564
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AddressComponent, { className: "AddressComponent", filePath: "lib\\components\\address\\address.component.ts", lineNumber: 31 }); })();
565
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYWRkcmVzcy9hZGRyZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9hZGRyZXNzL2FkZHJlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBdUYsYUFBYSxFQUFFLGlCQUFpQixFQUFhLFVBQVUsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBRTNMLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUtwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNnRTFELG1DQUNzSCxjQUFBLGVBQUE7SUFFeEQsWUFBK0I7O0lBQUEsaUJBQVE7SUFBQSxxQkFBTSxzQkFBQSxTQUFBLG1CQUFBO0lBTXZHLGlCQUFNLEVBQUE7Ozs7SUFURCwwRUFBcUQ7SUFHakQsZUFBZ0Q7SUFBaEQsNEVBQWdEO0lBQUMsZUFBK0I7SUFBL0IsNERBQStCO0lBQ3pFLGVBQXFCO0lBQXJCLDBDQUFxQixpQ0FBQSw4QkFBQSwyQkFBQSxtRUFBQTtJQUV4QixlQUFvQjtJQUFwQix5QkFBb0I7SUFBQyxxQ0FBZ0IsYUFBQSx3REFBQTs7O0lBS3RELG1DQUFtTSxjQUFBLGVBQUE7SUFFekksWUFBc0I7O0lBQUEsaUJBQVE7SUFBQSxxQkFBTSxzQkFBQSxT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NkRBQUE7WUFFMUIsZUFBb0I7WUFBcEIseUJBQW9CO1lBQUMsaUNBQWUsYUFBQSxxREFBQTtZQUthLGVBQ2E7WUFEYiw2TEFDYTtZQVViLGVBQXlGO1lBQXpGLGdJQUF5Rjs7O2lGRHREbEosZ0JBQWdCO2NBakI1QixTQUFTOzJCQUNFLGFBQWEsYUFHWixDQUFDO3dCQUNWLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsa0JBQWtCO3dCQUM3QixLQUFLLEVBQUUsSUFBSTtxQkFDWjtvQkFDRDt3QkFDRSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsS0FBSyxFQUFFLElBQUk7d0JBQ1gsV0FBVyxrQkFBa0I7cUJBQzlCO2lCQUNBO29NQU1NLG9CQUFvQjtrQkFEMUIsU0FBUzttQkFBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFTMUMsT0FBTztrQkFBaEIsTUFBTTtZQUNFLGNBQWM7a0JBQXRCLEtBQUs7WUFDRyxTQUFTO2tCQUFqQixLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSzs7a0ZBZkssZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBOZ0Zvcm0sIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IsIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQWRkcmVzc0NvbXBvbmVudE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0FkZHJlc3NDb21wb25lbnRNb2RlbCc7XHJcbmltcG9ydCB7IENvbWJvT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvQ29tYm9Nb2RlbCc7XHJcbmltcG9ydCB7IERtc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kbXMtc2VydmljZS9kbXMuc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb25uYWlyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcFZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi92YWxpZGF0aW9ucy9BcHBWYWxpZGF0b3JzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWFkZHJlc3MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGRyZXNzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hZGRyZXNzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICB1c2VFeGlzdGluZzogQWRkcmVzc0NvbXBvbmVudCxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfSxcclxuICB7XHJcbiAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgbXVsdGk6IHRydWUsXHJcbiAgICB1c2VFeGlzdGluZzogQWRkcmVzc0NvbXBvbmVudFxyXG4gIH1cclxuICBdLFxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZHJlc3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3ksIFZhbGlkYXRvciB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2FkZHJlc3NGb3JtRGlyZWN0aXZlJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcHVibGljIGFkZHJlc3NGb3JtRGlyZWN0aXZlOiBOZ0Zvcm07XHJcblxyXG4gIHB1YmxpYyBhZGRyZXNzRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBwdWJsaWMgc3RhdGVPcHRpb25zOiBhbnkgPSBbXTtcclxuICBwdWJsaWMgY291bnR5T3B0aW9uczogYW55ID0gW107XHJcbiAgcHVibGljIHRvd25PcHRpb25zOiBhbnkgPSBbXTtcclxuICBwdWJsaWMgY291bnRyeU9wdGlvbnMgPSBDb21ib09wdGlvbi5DT1VOVFJZO1xyXG4gIHB1YmxpYyBhZGRyZXNzRGF0YTogQWRkcmVzc0NvbXBvbmVudE1vZGVsID0gbmV3IEFkZHJlc3NDb21wb25lbnRNb2RlbCgpO1xyXG4gIEBPdXRwdXQoKSBhZGRyZXNzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBJbnB1dCgpIGNvdW50eVJlcXVpcmVkOiBCb29sZWFuO1xyXG4gIEBJbnB1dCgpIGZyb21Qb3B1cDogQm9vbGVhbjtcclxuICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBwdWJsaWMgZm9yU3RhdGU6IHN0cmluZztcclxuICB1c1ppcGNvZGVWYWxpZGF0aW9uczogVmFsaWRhdG9yRm5bXSA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBBcHBWYWxpZGF0b3JzLmlzVmFsaWRaaXBDb2RlXTtcclxuICBjYW5hZGFaaXBjb2RlVmFsaWRhdGlvbnM6IFZhbGlkYXRvckZuW10gPSBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQXBwVmFsaWRhdG9ycy5pc1ZhbGlkQ2FuYWRpYW5aaXBDb2RlXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHB1YmxpYyB1dGlsOiBVdGlsU2VydmljZSwgcHVibGljIHF1ZXN0aW9ubmFpcmVTZXJ2aWNlOiBRdWVzdGlvbm5haXJlU2VydmljZSxcclxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwcml2YXRlIGRtczogRG1zU2VydmljZSwgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2UgOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmZvclN0YXRlID0gdXRpbC5nZXRTdGF0ZSgpO1xyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpKTtcclxuICAgIHRoaXMuYWRkcmVzc0Zvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgJ2NvdW50cnknOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICd6aXAnOiBbbnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSldLFxyXG4gICAgICAnc3RyZWV0QWRkcmVzcyc6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgJ3N0YXRlJzogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAnb3B0aW9uYWxBZGRyZXNzJzogW251bGxdLFxyXG4gICAgICAndG93bic6IFtudWxsXSxcclxuICAgICAgJ2NvdW50eSc6IFtudWxsXSxcclxuICAgICAgJ2NpdHknOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICB9KTtcclxuICAgIFxyXG4gICAgdGhpcy5zZXRSZXF1aXJlZFZhbGlkYXRpb24oKTtcclxuXHJcbiAgICB0aGlzLmNvdW50cnkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShjb3VudHJ5ID0+IHtcclxuICAgICAgdGhpcy5maWx0ZXJTdGF0ZShjb3VudHJ5KVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zdGF0ZS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHN0YXRlID0+IHtcclxuICAgICAgaWYoc3RhdGUpe1xyXG4gICAgICAgIGlmKHRoaXMudXRpbC5pc1N0YXRlKCdLUycpICYmIHN0YXRlLnZhbHVlID09ICdLUycpe1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJDb3VudHkoc3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLnV0aWwuaXNTdGF0ZSgnTVMnKSAmJiBzdGF0ZS52YWx1ZSA9PSAnTVMnKXtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyQ291bnR5KHN0YXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpcy51dGlsLmlzU3RhdGUoJ0NUJykgJiYgc3RhdGUudmFsdWUgPT0gJ0NUJyl7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlckNvdW50eShzdGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRoaXMudXRpbC5pc1N0YXRlKCdNRScpICYmIHN0YXRlLnZhbHVlID09ICdNRScpe1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJUb3duKHN0YXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuemlwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoIHppcCA9PiB7XHJcbiAgICAgIGlmKHppcCAmJiB0aGlzLnN0YXRlLnZhbHVlID09IHRoaXMuZm9yU3RhdGUpe1xyXG4gICAgICAgIHRoaXMuZmlsdGVyQ291bnR5KHRoaXMuc3RhdGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNvdW50cnkuc2V0VmFsdWUoeyB2YWx1ZTogXCJVU1wiLCB0ZXh0OiBcIlVuaXRlZCBTdGF0ZXNcIiB9KTtcclxuICB9XHJcblxyXG4gIHNldFJlcXVpcmVkVmFsaWRhdGlvbigpIHtcclxuICAgIHRoaXMuY291bnRyeS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICBpZihjLnZhbHVlID09ICdVUycpe1xyXG4gICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy56aXApO1xyXG4gICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuemlwLCB0aGlzLnVzWmlwY29kZVZhbGlkYXRpb25zKTtcclxuICAgICAgfSBlbHNlIGlmKGMudmFsdWUgPT0gJ0NBJyl7XHJcbiAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnppcCk7XHJcbiAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy56aXAsIHRoaXMuY2FuYWRhWmlwY29kZVZhbGlkYXRpb25zKTtcclxuICAgICAgfVxyXG4gICAgfSkgXHJcbiAgICB0aGlzLnN0YXRlLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoc3RhdGVWYWx1ZSA9PiB7XHJcbiAgICAgIGlmIChzdGF0ZVZhbHVlKSB7XHJcbiAgICAgICAgaWYgKCgoc3RhdGVWYWx1ZS52YWx1ZSA9PT0gJ0tTJyAmJiB0aGlzLmZvclN0YXRlID09PSAnS1MnKVxyXG4gICAgICAgICAgfHwgKHN0YXRlVmFsdWUudmFsdWUgPT09ICdDVCcgJiYgdGhpcy5mb3JTdGF0ZSA9PT0gJ0NUJykpICYmIHRoaXMuY291bnR5UmVxdWlyZWQgPT09IHRydWUpIHtcclxuICAgICAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmNvdW50eSk7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMudG93bik7XHJcbiAgICAgICAgICB0aGlzLnRvd24uc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0ZVZhbHVlLnZhbHVlID09PSAnTUUnICYmIHRoaXMuZm9yU3RhdGUgPT09ICdNRScgJiYgdGhpcy5jb3VudHlSZXF1aXJlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMudG93bik7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuY291bnR5KTtcclxuICAgICAgICAgIHRoaXMuY291bnR5LnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5jb3VudHkpO1xyXG4gICAgICAgICAgdGhpcy5jb3VudHkuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMudG93bik7XHJcbiAgICAgICAgICB0aGlzLnRvd24uc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0IHRvd24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1sndG93biddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvdW50eSgpIHtcclxuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWydjb3VudHknXTtcclxuICB9XHJcblxyXG4gIGdldCBjaXR5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ2NpdHknXTtcclxuICB9XHJcblxyXG4gIGdldCBjb3VudHJ5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ2NvdW50cnknXTtcclxuICB9XHJcblxyXG4gIGdldCBzdGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWydzdGF0ZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHppcCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWyd6aXAnXTtcclxuICB9XHJcblxyXG4gIGdldCBzdHJlZXRBZGRyZXNzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ3N0cmVldEFkZHJlc3MnXTtcclxuICB9XHJcblxyXG4gIGdldCBvcHRpb25hbEFkZHJlc3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1snb3B0aW9uYWxBZGRyZXNzJ107XHJcbiAgfVxyXG5cclxuICBnZXRBZGRyZXNzRGF0YShldmVudCkge1xyXG5cclxuICAgIC8qKlVuY29tbWVudCB3aGVuIHppcC1sb29rdXAgaWYgZml4ZWQgKi9cclxuXHJcbiAgICAvLyBpZiAodGhpcy56aXAgJiYgdGhpcy56aXAudmFsdWUpIHtcclxuICAgIC8vICAgdGhpcy5kbXNcclxuICAgIC8vICAgICAuZ2V0QWRkcmVzcyh0aGlzLnppcC52YWx1ZSlcclxuICAgIC8vICAgICAuc3Vic2NyaWJlKFxyXG4gICAgLy8gICAgICAgcmVzID0+IHtcclxuICAgIC8vICAgICAgICAgdGhpcy5hZGRyZXNzRGF0YSA9IHJlcztcclxuICAgIC8vICAgICAgICAgaWYodGhpcy5hZGRyZXNzRGF0YS5jaXR5KXtcclxuICAgIC8vICAgICAgICAgICB0aGlzLmNpdHkucGF0Y2hWYWx1ZSh0aGlzLmFkZHJlc3NEYXRhLmNpdHkpO1xyXG4gICAgLy8gICAgICAgICB9XHJcblxyXG4gICAgLy8gICAgICAgICBpZih0aGlzLmFkZHJlc3NEYXRhLnN0YXRlKXtcclxuICAgIC8vICAgICAgICAgICB0aGlzLnN0YXRlLnBhdGNoVmFsdWUodGhpcy5hZGRyZXNzRGF0YS5zdGF0ZSk7XHJcbiAgICAvLyAgICAgICAgIH0gXHJcblxyXG4gICAgLy8gICAgICAgICBpZih0aGlzLmFkZHJlc3NEYXRhLmNvdW50eSl7XHJcbiAgICAvLyAgICAgICAgICAgdGhpcy5jb3VudHkucGF0Y2hWYWx1ZSh0aGlzLmFkZHJlc3NEYXRhLmNvdW50eSk7XHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgdGhpcy5zdGF0ZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAvLyAgICAgICB9LFxyXG4gICAgLy8gICAgICAgZXJyID0+IHtcclxuICAgIC8vICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoZXJyKTtcclxuICAgIC8vICAgICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgZmlsdGVyQ291bnRyeShldmVudCkge1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ2V2ZW50JywgZXZlbnQpXHJcbiAgICBsZXQgZmlsdGVyZWQ6IGFueVtdID0gW107XHJcbiAgICBsZXQgcXVlcnkgPSBldmVudC5xdWVyeTtcclxuICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgIHRoaXMuY291bnRyeU9wdGlvbnMgPSBDb21ib09wdGlvbi5DT1VOVFJZX0VTO1xyXG4gICAgfSBlbHNle1xyXG4gICAgICB0aGlzLmNvdW50cnlPcHRpb25zID0gQ29tYm9PcHRpb24uQ09VTlRSWTtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb3VudHJ5T3B0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgY291bnRyeSA9IHRoaXMuY291bnRyeU9wdGlvbnNbaV07XHJcbiAgICAgIGlmIChjb3VudHJ5LnRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpID09IDApIHtcclxuICAgICAgICBmaWx0ZXJlZC5wdXNoKGNvdW50cnkpO1xyXG4gICAgICAgIHRoaXMuc3RhdGUuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY291bnRyeU9wdGlvbnMgPSBmaWx0ZXJlZDtcclxuXHJcbiAgfVxyXG5cclxuICBmaWx0ZXJDb3VudHkoZXZlbnQpIHtcclxuICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UuZ2V0Q291bnR5KHRoaXMuc3RhdGUudmFsdWVbJ3ZhbHVlJ10sIHRoaXMuemlwLnZhbHVlKS5zdWJzY3JpYmUoXHJcbiAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgLyp0aGlzLmxvZ2dlci5kZWJ1ZygncmVzJywgcmVzKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc1snY2hvaWNlcyddLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgY2hvaWNlID0gcmVzWydjaG9pY2VzJ11baV07XHJcbiAgICAgICAgICBpZiAoY2hvaWNlLnRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpID09IDApIHtcclxuICAgICAgICAgICAgZmlsdGVyZWQucHVzaChjaG9pY2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0qL1xyXG4gICAgICAgIHRoaXMuY291bnR5T3B0aW9ucyA9IHJlc1snY2hvaWNlcyddO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGZpbHRlclRvd24oZXZlbnQpIHtcclxuICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UuZ2V0Q291bnR5KHRoaXMuc3RhdGUudmFsdWVbJ3ZhbHVlJ10sIHRoaXMuemlwLnZhbHVlKS5zdWJzY3JpYmUoXHJcbiAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy50b3duT3B0aW9ucyA9IHJlc1snY2hvaWNlcyddO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGZpbHRlclN0YXRlKGV2ZW50KSB7XHJcbiAgICBsZXQgY2hvaWNlOiBhbnk7XHJcbiAgICBpZiAodGhpcy5jb3VudHJ5Py52YWx1ZT8udmFsdWUgPT09ICdVUycpIHtcclxuICAgICAgY29uc3QgY3VycmVudFN0YXRlID0gQ29tYm9PcHRpb24uVVNfU1RBVEVTLmZpbmQoc3RhdGUgPT4gc3RhdGUudmFsdWUgPT0gdGhpcy51dGlsLmdldFN0YXRlKCkpXHJcbiAgICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgICAgY2hvaWNlID0gW2N1cnJlbnRTdGF0ZSwgLi4uQ29tYm9PcHRpb24uVVNfU1RBVEVTX0VTLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS52YWx1ZSAhPSB0aGlzLnV0aWwuZ2V0U3RhdGUoKSldO1xyXG4gICAgICB9ZWxzZSB7XHJcbiAgICAgICAgY2hvaWNlID0gW2N1cnJlbnRTdGF0ZSwgLi4uQ29tYm9PcHRpb24uVVNfU1RBVEVTLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS52YWx1ZSAhPSB0aGlzLnV0aWwuZ2V0U3RhdGUoKSldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY291bnRyeT8udmFsdWU/LnZhbHVlID09PSAnQ0EnKSB7XHJcbiAgICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgICAgY2hvaWNlID0gQ29tYm9PcHRpb24uQ0FfU1RBVEVTX0VTO1xyXG4gICAgICB9ZWxzZSB7XHJcbiAgICAgICAgY2hvaWNlID0gQ29tYm9PcHRpb24uQ0FfU1RBVEVTO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLypmb3IgKGxldCBpID0gMDsgaSA8IGNob2ljZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoY2hvaWNlW2ldLnRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpID09IDApIHtcclxuICAgICAgICBmaWx0ZXJlZC5wdXNoKGNob2ljZVtpXSk7XHJcbiAgICAgIH1cclxuICAgIH0qL1xyXG4gICAgdGhpcy5zdGF0ZU9wdGlvbnMgPSBjaG9pY2U7XHJcblxyXG4gIH1cclxuXHJcbiAgc2V0V2lkdGhTdHlsZSgpOiBvYmplY3Qge1xyXG4gICAgaWYgKHRoaXMuZnJvbVBvcHVwKSB7XHJcbiAgICAgIGxldCBzdHlsZU9iaiA9IHtcclxuICAgICAgICAnbWF4LXdpZHRoJzogJ2luaXRpYWwnXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN0eWxlT2JqKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBzdHlsZU9iaiA9IHtcclxuICAgICAgICAnbWF4LXdpZHRoJzogJ2ZpdC1jb250ZW50J1xyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdHlsZU9iaik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xyXG5cclxuICBvbkNoYW5nZVN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgZm9yIChsZXQgc3ViIG9mIHRoaXMub25DaGFuZ2VTdWJzKSB7XHJcbiAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KSB7XHJcbiAgICBjb25zdCBzdWIgPSB0aGlzLmFkZHJlc3NGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUob25DaGFuZ2UpO1xyXG4gICAgdGhpcy5vbkNoYW5nZVN1YnMucHVzaChzdWIpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBGdW5jdGlvbikge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAoZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5hZGRyZXNzRm9ybS5kaXNhYmxlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5hZGRyZXNzRm9ybS5lbmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGxldCBmb3JtVmFsdWUgOiBBZGRyZXNzQ29tcG9uZW50TW9kZWw7XHJcbiAgICBpZih0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpe1xyXG4gICAgICBmb3JtVmFsdWUgPSBKU09OLnBhcnNlKHZhbHVlLnRvU3RyaW5nKCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9ybVZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBpZiAoZm9ybVZhbHVlKSB7XHJcbiAgICAgIGlmIChmb3JtVmFsdWUuY291bnRyeSAmJiAhZm9ybVZhbHVlLmNvdW50cnkudGV4dCAmJiBmb3JtVmFsdWUuY291bnRyeS52YWx1ZSkge1xyXG4gICAgICAgIGxldCBjb3VudHJ5ID0gdGhpcy5nZXRDb3VudHJ5KGZvcm1WYWx1ZS5jb3VudHJ5Py52YWx1ZSlcclxuICAgICAgICBmb3JtVmFsdWUuY291bnRyeSA9IGNvdW50cnk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChmb3JtVmFsdWUuc3RhdGUgJiYgIWZvcm1WYWx1ZS5zdGF0ZS50ZXh0ICYmIGZvcm1WYWx1ZS5zdGF0ZS52YWx1ZSkge1xyXG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGUoZm9ybVZhbHVlLmNvdW50cnk/LnZhbHVlLCBmb3JtVmFsdWUuc3RhdGUudmFsdWUudHJpbSgpKVxyXG4gICAgICAgIGZvcm1WYWx1ZS5zdGF0ZSA9IHN0YXRlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZm9ybVZhbHVlLmNvdW50eSAmJiAhZm9ybVZhbHVlLmNvdW50eS50ZXh0ICYmIGZvcm1WYWx1ZS5jb3VudHkudmFsdWUgJiYgZm9ybVZhbHVlLnN0YXRlLnZhbHVlID09PSAnS1MnKSB7XHJcbiAgICAgICAgdGhpcy5zZXRNU0NvdW50eShmb3JtVmFsdWUuY291bnR5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGZvcm1WYWx1ZS50b3duICYmICFmb3JtVmFsdWUudG93bi50ZXh0ICYmIGZvcm1WYWx1ZS50b3duLnZhbHVlICYmIGZvcm1WYWx1ZS5zdGF0ZS52YWx1ZSA9PT0gJ01FJykge1xyXG4gICAgICAgIHRoaXMuc2V0TUVUb3duKGZvcm1WYWx1ZVsnemlwJ10gLGZvcm1WYWx1ZS50b3duKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFkZHJlc3NGb3JtLnBhdGNoVmFsdWUoZm9ybVZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0Q291bnRyeShjb3VudHJ5KSB7XHJcbiAgICBpZiAoY291bnRyeSA9PSBudWxsIHx8IGNvdW50cnkgPT0gJ1VTJykge1xyXG4gICAgICByZXR1cm4geyB2YWx1ZTogXCJVU1wiLCB0ZXh0OiBcIlVuaXRlZCBTdGF0ZXNcIiB9O1xyXG4gICAgfSBlbHNlIGlmIChjb3VudHJ5ID09ICdDQScpIHtcclxuICAgICAgcmV0dXJuIHsgdmFsdWU6IFwiQ0FcIiwgdGV4dDogXCJDYW5hZGFcIiB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcignTm8gQ291bnRyeSBjb25maWd1cmVkICcsIGNvdW50cnkpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdldFN0YXRlKGNvdW50cnksIHN0YXRlKSB7XHJcbiAgICBpZiAoY291bnRyeSA9PSBudWxsIHx8IGNvdW50cnkgPT0gJ1VTJykge1xyXG4gICAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpID09PSBcImVzXCIpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0YXRlVmFsdWUoQ29tYm9PcHRpb24uVVNfU1RBVEVTX0VTLCBzdGF0ZSk7XHJcbiAgICAgIH1lbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGF0ZVZhbHVlKENvbWJvT3B0aW9uLlVTX1NUQVRFUywgc3RhdGUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGNvdW50cnkgPT0gJ0NBJykge1xyXG4gICAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpID09PSBcImVzXCIpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0YXRlVmFsdWUoQ29tYm9PcHRpb24uQ0FfU1RBVEVTX0VTLCBzdGF0ZSk7XHJcbiAgICAgIH1lbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGF0ZVZhbHVlKENvbWJvT3B0aW9uLkNBX1NUQVRFUywgc3RhdGUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdObyBDb3VudHJ5IGNvbmZpZ3VyZWQgJywgY291bnRyeSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0U3RhdGVWYWx1ZShzdGF0ZXM6IENvbWJvT3B0aW9uW10sIG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHN0YXRlcy5maWx0ZXIoc3RhdGUgPT4gc3RhdGUudmFsdWUgPT0gbmFtZSlbMF07XHJcbiAgfVxyXG5cclxuICBzZXRNRVRvd24oemlwQ29kZSA6IHN0cmluZywgdG93bjogQ29tYm9PcHRpb24pIHtcclxuICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UuZ2V0Q291bnR5KCdNRScsIHppcENvZGUpLnN1YnNjcmliZShcclxuICAgICAgcmVzID0+IHtcclxuICAgICAgICB0aGlzLnRvd25PcHRpb25zID0gcmVzWydjaG9pY2VzJ107XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkQ291bnR5ID0gdGhpcy50b3duT3B0aW9ucy5maWx0ZXIoYyA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gYy52YWx1ZSA9PSB0b3duLnZhbHVlO1xyXG4gICAgICAgIH0pWzBdO1xyXG4gICAgICAgIHRoaXMudG93bi5wYXRjaFZhbHVlKHNlbGVjdGVkQ291bnR5KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRNU0NvdW50eShjb3VudHk6IENvbWJvT3B0aW9uKSB7XHJcbiAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLmdldENvdW50eSgnS1MnLCB0aGlzLnppcC52YWx1ZSkuc3Vic2NyaWJlKFxyXG4gICAgICByZXMgPT4ge1xyXG4gICAgICAgIHRoaXMuY291bnR5T3B0aW9ucyA9IHJlc1snY2hvaWNlcyddO1xyXG4gICAgICAgIGxldCBzZWxlY3RlZENvdW50eSA9IHRoaXMuY291bnR5T3B0aW9ucy5maWx0ZXIoYyA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gYy52YWx1ZSA9PSBjb3VudHkudmFsdWU7XHJcbiAgICAgICAgfSlbMF07XHJcbiAgICAgICAgdGhpcy5jb3VudHkucGF0Y2hWYWx1ZShzZWxlY3RlZENvdW50eSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xyXG4gICAgaWYgKHRoaXMuYWRkcmVzc0Zvcm0udmFsaWQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdWJtaXQoKXtcclxuICAgIHRoaXMuYWRkcmVzc0Zvcm1EaXJlY3RpdmUub25TdWJtaXQodW5kZWZpbmVkKTtcclxuICB9XHJcblxyXG4gIGdldCByZXF1aXJlZCgpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdjb21tb24ucmVxdWlyZWQnKTtcclxuICB9XHJcblxyXG4gIGdldCB6aXBMZW5ndGgoKXtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnY29tbW9uLnppcGNvZGUubGVuZ3RoJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgemlwT25seU51bWJlcnMoKXtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnY29tbW9uLnppcGNvZGUub25seS5udW1iZXJzJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgemlwSW52YWxpZCgpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdjb21tb24uemlwY29kZS5pbnZhbGlkJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgemlwQ29kZU51bWVyaWMoKXtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnd2Vla2xpZXMud2Vla2x5Y2VydC5lbXBsb3llci56aXBjb2RlLm51bWVyaWMnKTtcclxuICB9XHJcblxyXG4gIGdldCB6aXBDb2RlTGVuZ3RoKCl7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3dlZWtsaWVzLndlZWtseWNlcnQuZW1wbG95ZXIuemlwY29kZS5sZW5ndGgnKTtcclxuICB9XHJcblxyXG4gIGdldCB6aXBDb2RlSW52YWxpZCgpe1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCd3ZWVrbGllcy53ZWVrbHljZXJ0LmVtcGxveWVyLnppcGNvZGUuaW52YWxpZCcpO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImFkZHJlc3NGb3JtXCIgI2FkZHJlc3NGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7XCI+XHJcbiAgPCEtLSA8ZGl2IFtmb3JtR3JvdXBdPVwiYWRkcmVzc0Zvcm1cIiAgI2FkZHJlc3NGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCIgPiAtLT5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInAtZm9ybWdyaWRcIiBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgOiAnYWRkcmVzcy1kaXYnXCI+XHJcbiAgICA8aW9uLXJvdz5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWNvdW50cnknIDogJ2NvdW50cnknXCI+e3snY29tbW9uLmNvdW50cnknIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxiciAvPlxyXG4gICAgICAgICAgICA8YXBwLWRyb3Bkb3duIFtyZWFkb25seV09XCJyZWFkb25seVwiIFtvcHRpb25zXT1cImNvdW50cnlPcHRpb25zXCIgW2Zvcm1Db250cm9sXT1cImNvdW50cnlcIiBvcHRpb25MYWJlbD1cInRleHRcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIFtpbnB1dElkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1jb3VudHJ5JyA6ICdjb3VudHJ5J1wiID48L2FwcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2NvdW50cnknIFtmb3JtXT1cImFkZHJlc3NGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wgYXBwLWNvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXppcCcgOiAnemlwJ1wiPnt7J2NvbW1vbi56aXBjb2RlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPGlucHV0IFtyZWFkb25seV09XCJyZWFkb25seVwiIFtpZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctemlwJyA6ICd6aXAnXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiemlwXCIgbWlubGVuZ3RoPVwiNVwiIG1heGxlbmd0aD1cIjlcIlxyXG4gICAgICAgICAgICAgIChibHVyKT1cImdldEFkZHJlc3NEYXRhKCRldmVudClcIiAvPjxiciAvPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nemlwJyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcclxuICAgICAgICAgICAgICAgIGludmFsaWRMZW5ndGg6IHppcENvZGVMZW5ndGgsXHJcbiAgICAgICAgICAgICAgICBpbnZhbGlkTnVtYmVyOiB6aXBDb2RlTnVtZXJpYyxcclxuICAgICAgICAgICAgICAgIGludmFsaWRaaXBDb2RlOiB6aXBDb2RlSW52YWxpZCxcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG4gIFxyXG5cclxuICAgIDxpb24tcm93PlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1yaWdodDogMHB4O1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBwLWZsdWlkXCI+XHJcbiAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctc3RyZWV0QWRkcmVzcycgOiAnc3RyZWV0QWRkcmVzcydcIj57eydjb21tb24uc3RyZWV0YWRkcmVzcycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICA8aW5wdXQgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1zdHJlZXRBZGRyZXNzJyA6ICdzdHJlZXRBZGRyZXNzJ1wiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cInN0cmVldEFkZHJlc3NcIiBtYXhsZW5ndGg9XCI0MFwiIC8+PGJyIC8+XHJcbiAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nc3RyZWV0QWRkcmVzcycgW2Zvcm1dPVwiYWRkcmVzc0Zvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgIHJlcXVpcmVkOiAgcmVxdWlyZWRcclxuICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG5cclxuICAgIDxpb24tcm93PlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiICBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBwLWZsdWlkXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLW9wdGlvbmFsQWRkcmVzcycgOiAnb3B0aW9uYWxBZGRyZXNzJ1wiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cIm9wdGlvbmFsQWRkcmVzc1wiIHBsYWNlaG9sZGVyPSd7e1wiY29tbW9uLm9wdGlvbmFsXCIgfCB0cmFuc2xhdGV9fSdcclxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNDBcIiAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuXHJcblxyXG4gICAgPGlvbi1yb3c+XHJcbiAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctY2l0eScgOiAnY2l0eSdcIj57eydjb21tb24uY2l0eScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWNpdHknIDogJ2NpdHknXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiY2l0eVwiIG1heGxlbmd0aD1cIjMwXCIgLz48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2NpdHknIFtmb3JtXT1cImFkZHJlc3NGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiAgcmVxdWlyZWRcclxuICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCBhcHAtY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiICBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXN0YXRlJyA6ICdzdGF0ZSdcIj57eydjb21tb24uc3RhdGUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxiciAvPlxyXG4gICAgICAgICAgICA8YXBwLWRyb3Bkb3duIFtyZWFkb25seV09XCJyZWFkb25seVwiIFtvcHRpb25zXT1cInN0YXRlT3B0aW9uc1wiIFtmb3JtQ29udHJvbF09XCJzdGF0ZVwiIG9wdGlvbkxhYmVsPVwidGV4dFwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgW2lucHV0SWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXN0YXRlJyA6ICdzdGF0ZSdcIiBbYXJpYUxhYmVsXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1zdGF0ZScgOiAnc3RhdGUnXCI+PC9hcHAtZHJvcGRvd24+PGJyIC8+XHJcbiAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nc3RhdGUnIFtmb3JtXT1cImFkZHJlc3NGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICByZXF1aXJlZDogIHJlcXVpcmVkXHJcbiAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiICpuZ0lmPVwic3RhdGUudmFsdWUgJiYgKHN0YXRlLnZhbHVlLnZhbHVlPT09J0tTJyAmJiBmb3JTdGF0ZT09PSdLUycgXHJcbiAgICAgICAgfHwgKHN0YXRlLnZhbHVlLnZhbHVlPT09J0NUJyAgJiYgZm9yU3RhdGU9PT0nS1MnKSkgICYmIGNvdW50eVJlcXVpcmVkPT09dHJ1ZVwiIHNpemU9XCIxMlwic3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1jb3VudHknIDogJ2NvdW50eSdcIj57eydjb21tb24uY291bnR5JyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbb3B0aW9uc109XCJjb3VudHlPcHRpb25zXCIgW2Zvcm1Db250cm9sXT1cImNvdW50eVwiIG9wdGlvbkxhYmVsPVwidGV4dFwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBbaW5wdXRJZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctY291bnR5JyA6ICdjb3VudHknXCI+PC9hcHAtZHJvcGRvd24+PGJyLz5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2NvdW50eScgW2Zvcm1dPVwiYWRkcmVzc0Zvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiAqbmdJZj1cInN0YXRlLnZhbHVlICYmIHN0YXRlLnZhbHVlLnZhbHVlPT09J01FJyAmJiBmb3JTdGF0ZT09PSdNRScgJiYgY291bnR5UmVxdWlyZWQ9PT10cnVlXCIgc2l6ZT1cIjEyXCIgIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctdG93bicgOiAndG93bidcIj57eydUb3duJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbb3B0aW9uc109XCJ0b3duT3B0aW9uc1wiIFtmb3JtQ29udHJvbF09XCJ0b3duXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIFtpbnB1dElkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy10b3duJyA6ICd0b3duJ1wiPjwvYXBwLWRyb3Bkb3duPjxici8+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd0b3duJyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAgcmVxdWlyZWRcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0gPC9kaXY+IC0tPlxyXG48L2Zvcm0+Il19
697
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AddressComponent, { className: "AddressComponent", filePath: "lib\\components\\address\\address.component.ts", lineNumber: 29 }); })();
698
+ export class AddressFieldFocusStatus {
699
+ }
700
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYWRkcmVzcy9hZGRyZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9hZGRyZXNzL2FkZHJlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWEsU0FBUyxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUM5SCxPQUFPLEVBQXVGLGFBQWEsRUFBRSxpQkFBaUIsRUFBYSxVQUFVLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzTCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFLcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7SUNtRTFELG1DQUNzSCxjQUFBLGVBQUE7SUFFeEQsWUFBd0I7O0lBQUEsaUJBQVE7SUFBQSxxQkFBTTtJQUM5Rix1Q0FDc0g7SUFBcEMsOEtBQVksZUFBQSw2QkFBc0IsQ0FBQSxJQUFDO0lBQUMsaUJBQWU7SUFBQSxxQkFBSyxtQkFBQTtJQUk1SSxpQkFBTSxFQUFBOzs7O0lBVEQsMEVBQXFEO0lBR2pELGVBQWdEO0lBQWhELDRFQUFnRDtJQUFDLGVBQXdCO0lBQXhCLHFEQUF3QjtJQUNsRSxlQUF5QjtJQUF6Qiw4Q0FBeUIsOEJBQUEsMkJBQUEsbUVBQUE7SUFFNUIsZUFBb0I7SUFBcEIseUJBQW9CO0lBQUMscUNBQWdCLGFBQUEsdUNBQUE7Ozs7SUFLdEQsbUNBQW1NLGNB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SztZQUNHLE9BQU87a0JBQWYsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csZUFBZTtrQkFBdkIsS0FBSztZQUNHLHVCQUF1QjtrQkFBL0IsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNHLHFCQUFxQjtrQkFBN0IsS0FBSztZQUNHLG1CQUFtQjtrQkFBM0IsS0FBSzs7a0ZBekJLLGdCQUFnQjtBQXVjN0IsTUFBTSxPQUFPLHVCQUF1QjtDQU9uQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgT25DaGFuZ2VzLCBWaWV3Q2hpbGQsU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBOZ0Zvcm0sIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IsIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBZGRyZXNzQ29tcG9uZW50TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvQWRkcmVzc0NvbXBvbmVudE1vZGVsJztcbmltcG9ydCB7IENvbWJvT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvQ29tYm9Nb2RlbCc7XG5pbXBvcnQgeyBEbXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG1zLXNlcnZpY2UvZG1zLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb25uYWlyZS5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwVmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uL3ZhbGlkYXRpb25zL0FwcFZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgQWRkcmVzc1N1Z2dlc3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi9hZGRyZXNzLXN1Z2dlc3Rpb24vYWRkcmVzcy1zdWdnZXN0aW9uLmNvbXBvbmVudCc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYWRkcmVzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGRyZXNzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWRkcmVzcy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IEFkZHJlc3NDb21wb25lbnQsXG4gICAgbXVsdGk6IHRydWVcbiAgfSxcbiAge1xuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgbXVsdGk6IHRydWUsXG4gICAgdXNlRXhpc3Rpbmc6IEFkZHJlc3NDb21wb25lbnRcbiAgfVxuICBdLFxuXG59KVxuZXhwb3J0IGNsYXNzIEFkZHJlc3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3ksIFZhbGlkYXRvcixPbkNoYW5nZXN7XG5cbiAgQFZpZXdDaGlsZCgnYWRkcmVzc0Zvcm1EaXJlY3RpdmUnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIGFkZHJlc3NGb3JtRGlyZWN0aXZlOiBOZ0Zvcm07XG5cbiAgQFZpZXdDaGlsZCgnYWRkcmVzc1N1Z2dlc3Rpb24nKVxuICBwdWJsaWMgYWRkcmVzc1N1Z2dlc3Rpb246QWRkcmVzc1N1Z2dlc3Rpb25Db21wb25lbnQ7XG5cbiAgcHVibGljIGFkZHJlc3NGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBwdWJsaWMgc3RhdGVPcHRpb25zOiBhbnkgPSBbXTtcbiAgcHVibGljIGNvdW50eU9wdGlvbnM6IGFueSA9IFtdO1xuICBwdWJsaWMgdG93bk9wdGlvbnM6IGFueSA9IFtdO1xuICBwdWJsaWMgeWVzTm9PcHRpb25zID0gQ29tYm9PcHRpb24uWUVTX05PO1xuICBwdWJsaWMgY291bnRyeU9wdGlvbnMgPSBDb21ib09wdGlvbi5DT1VOVFJZO1xuICBwdWJsaWMgYWRkcmVzc0RhdGE6IEFkZHJlc3NDb21wb25lbnRNb2RlbCA9IG5ldyBBZGRyZXNzQ29tcG9uZW50TW9kZWwoKTtcbiAgQE91dHB1dCgpIGFkZHJlc3M6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGNvdW50eVJlcXVpcmVkOiBCb29sZWFuO1xuICBASW5wdXQoKSBmcm9tUG9wdXA6IEJvb2xlYW47XG4gIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZztcbiAgQElucHV0KCkgY29tcG9uZW50RGF0YTpzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dTdWdnZXN0aW9uOiBib29sZWFuO1xuICBASW5wdXQoKSBkaWZmTWFpbEFkZHJlc3M6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGVuYWJsZUFkZHJlc3NWYWxpZGF0aW9uOmJvb2xlYW5cbiAgQElucHV0KCkgcXVlc3Rpb25haXJlRm9ybTtcbiAgQElucHV0KCkgc3RhbmRhbG9uZUFkZHJlc3NGb3JtOiBib29sZWFuO1xuICBASW5wdXQoKSBwYXJlbnRGb3JtQ29tcG9uZW50OiBzdHJpbmc7XG4gIGFkZHJlc3NUeXBlRm9yTmVpZ2hib3VyQ2hlY2s6IHN0cmluZyA9IFwiTlwiO1xuICBuZWlnaGJvdXJpbmdTdGF0ZU1FOiBzdHJpbmdbXSA9IFsnTkgnLCdWVCcsJ01BJ107XG4gIG5laWdoYm91cmluZ1N0YXRlTVM6IHN0cmluZ1tdID0gWydBTCcsJ0FSJywnTEEnLCdUTiddO1xuICBzaG93TmVpZ2hib3VyUXVlc3Rpb246Ym9vbGVhbiA9IGZhbHNlO1xuICBibHVyRnJvbUZpZWxkOiBib29sZWFuID0gZmFsc2U7XG4gIGZvcm1CbHVyOiBib29sZWFuO1xuICBwdWJsaWMgZm9yU3RhdGU6IHN0cmluZztcbiAgdXNaaXBjb2RlVmFsaWRhdGlvbnM6IFZhbGlkYXRvckZuW10gPSBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQXBwVmFsaWRhdG9ycy5pc1ZhbGlkWmlwQ29kZV07XG4gIGNhbmFkYVppcGNvZGVWYWxpZGF0aW9uczogVmFsaWRhdG9yRm5bXSA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBBcHBWYWxpZGF0b3JzLmlzVmFsaWRDYW5hZGlhblppcENvZGVdO1xuICBhZGRyZXNzRmllbGRGb2N1c1N0YXR1czpBZGRyZXNzRmllbGRGb2N1c1N0YXR1cz0ge307XG4gIGxhc3RWYWxpZEFkZHJlc3M6YW55O1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlciwgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLCBwdWJsaWMgcXVlc3Rpb25uYWlyZVNlcnZpY2U6IFF1ZXN0aW9ubmFpcmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwcml2YXRlIGRtczogRG1zU2VydmljZSkge1xuICAgIHRoaXMuZm9yU3RhdGUgPSB1dGlsLmdldFN0YXRlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFkZHJlc3NGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAnY291bnRyeSc6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICd6aXAnOiBbbnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSldLFxuICAgICAgJ3N0cmVldEFkZHJlc3MnOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAnc3RhdGUnOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAnb3B0aW9uYWxBZGRyZXNzJzogW251bGxdLFxuICAgICAgJ3Rvd24nOiBbbnVsbF0sXG4gICAgICAnY291bnR5JzogW251bGxdLFxuICAgICAgJ2NpdHknOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAnbmVpZ2hib3VyRmxhZyc6IFtudWxsXSxcbiAgICAgICduZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZCc6IFtudWxsXVxuICAgIH0pO1xuICAgIFxuICAgIHRoaXMuc2V0UmVxdWlyZWRWYWxpZGF0aW9uKCk7XG4gICAgaWYodGhpcy5jb21wb25lbnREYXRhICE9bnVsbCl7XG4gICAgICBjb25zdCBvYmogPSBKU09OLnBhcnNlKHRoaXMuY29tcG9uZW50RGF0YSk7XG4gICAgICB0aGlzLmFkZHJlc3NUeXBlRm9yTmVpZ2hib3VyQ2hlY2sgPSBvYmpbXCJuZWlnaGJvcmluZ1N0YXRlQ2hlY2tSZXF1aXJlZFwiXTtcbiAgICAgLy8gdGhpcy5uZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZC5zZXRWYWx1ZSh0aGlzLm5laWdoYm9yaW5nU3RhdGVDaGVja1JlcXVpcmVkKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvdW50cnkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShjb3VudHJ5ID0+IHtcbiAgICAgIHRoaXMuZmlsdGVyU3RhdGUoY291bnRyeSlcbiAgICAgIHRoaXMuZ2V0QWRkcmVzc1N1Z2dlc3Rpb24oKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGUudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICBpZihzdGF0ZSl7XG4gICAgICAgIGlmKHRoaXMudXRpbC5pc1N0YXRlKCdNUycpICYmIHN0YXRlLnZhbHVlID09ICdNUycpe1xuICAgICAgICAgIHRoaXMuZmlsdGVyQ291bnR5KHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLnV0aWwuaXNTdGF0ZSgnQ1QnKSAmJiBzdGF0ZS52YWx1ZSA9PSAnQ1QnKXtcbiAgICAgICAgICB0aGlzLmZpbHRlckNvdW50eShzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYodGhpcy51dGlsLmlzU3RhdGUoJ01FJykgJiYgc3RhdGUudmFsdWUgPT0gJ01FJyl7XG4gICAgICAgICAgdGhpcy5maWx0ZXJUb3duKHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLmFkZHJlc3NUeXBlRm9yTmVpZ2hib3VyQ2hlY2sgPT09ICdZJyl7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ25laWdoYm91ciBjaGVjayB0byBoYXBwZW4nKTtcbiAgICAgICAgICBpZih0aGlzLnV0aWwuaXNTdGF0ZSgnTVMnKSl7XG4gICAgICAgICAgICBpZih0aGlzLm5laWdoYm91cmluZ1N0YXRlTVMuaW5jbHVkZXMoc3RhdGUudmFsdWUpKXtcbiAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnbmVpZ2hib3VyIHF1ZXN0aW9uIHNob3VsZCBkaXNwbGF5Jyk7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd05laWdoYm91clF1ZXN0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMubmVpZ2hib3VyRmxhZyk7XG4gICAgICAgICAgICAgIHRoaXMubmVpZ2hib3JTdGF0ZUNoZWNrUmVxdWlyZWQuc2V0VmFsdWUoXCJZXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93TmVpZ2hib3VyUXVlc3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLm5laWdoYm91ckZsYWcpO1xuICAgICAgICAgICAgICB0aGlzLm5laWdoYm91ckZsYWcuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICAgIHRoaXMubmVpZ2hib3JTdGF0ZUNoZWNrUmVxdWlyZWQuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKHRoaXMudXRpbC5pc1N0YXRlKCdNRScpKXtcbiAgICAgICAgICAgIGlmKHRoaXMubmVpZ2hib3VyaW5nU3RhdGVNRS5pbmNsdWRlcyhzdGF0ZS52YWx1ZSkpe1xuICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCduZWlnaGJvdXIgcXVlc3Rpb24gc2hvdWxkIGRpc3BsYXknKTtcbiAgICAgICAgICAgICAgdGhpcy5zaG93TmVpZ2hib3VyUXVlc3Rpb24gPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5uZWlnaGJvdXJGbGFnKTtcbiAgICAgICAgICAgICAgdGhpcy5uZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZC5zZXRWYWx1ZShcIllcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNob3dOZWlnaGJvdXJRdWVzdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMubmVpZ2hib3VyRmxhZyk7XG4gICAgICAgICAgICAgIHRoaXMubmVpZ2hib3VyRmxhZy5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgdGhpcy5uZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZC5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gICAgICAgIFxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuemlwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoIHppcCA9PiB7XG4gICAgICBpZih6aXAgJiYgdGhpcy5zdGF0ZS52YWx1ZSA9PSB0aGlzLmZvclN0YXRlKXtcbiAgICAgICAgdGhpcy5maWx0ZXJDb3VudHkodGhpcy5zdGF0ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmNvdW50cnkuc2V0VmFsdWUoeyB2YWx1ZTogXCJVU1wiLCB0ZXh0OiBcIlVuaXRlZCBTdGF0ZXNcIiB9KTtcbiAgICB0aGlzLmZvcm1CbHVyID0gdGhpcy5jaGVja0Zvcm1CbHVycigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlOlNpbXBsZUNoYW5nZXMpe1xuICAgIGlmKGNoYW5nZVsnZGlmZk1haWxBZGRyZXNzJ10pe1xuICAgICAgaWYoY2hhbmdlWydkaWZmTWFpbEFkZHJlc3MnXS5jdXJyZW50VmFsdWUgPT09IGZhbHNlICYmICh0aGlzLmlucHV0SWQgPT09ICdyZXNBZGRyZXNzJ3x8IHRoaXMuaW5wdXRJZD09PSdyZXNBZHJlc3MnKSl7XG4gICAgICAgIHRoaXMuZGlmZk1haWxBZGRyZXNzID0gZmFsc2U7XG4gICAgICAgIGlmKHRoaXMuY2hlY2tGb3JtQmx1cnIoKSAmJiB0aGlzLmFkZHJlc3NGb3JtPy52YWxpZCl7XG4gICAgICAgICAgdGhpcy5hZGRyZXNzU3VnZ2VzdGlvbi5nZXRWYWxpZGF0ZUFkZHJlc3ModHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgc2V0RmllbGRCbHVyKGZpZWxkKXtcbiAgICB0aGlzLmFkZHJlc3NGaWVsZEZvY3VzU3RhdHVzW2ZpZWxkXSA9IGZhbHNlO1xuICB9XG4gIFxuICBzZXRGaWVsZEZvY3VzKGZpZWxkKXtcbiAgICB0aGlzLmFkZHJlc3NGaWVsZEZvY3VzU3RhdHVzW2ZpZWxkXSA9IHRydWU7XG4gIH1cblxuICBnZXRBZGRyZXNzU3VnZ2VzdGlvbigpe1xuICAgIHRoaXMuYmx1ckZyb21GaWVsZCA9IHRoaXMuYWRkcmVzc0Zvcm0uZGlydHkgJiYgdGhpcy5hZGRyZXNzRm9ybS52YWxpZDtcblxuICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgIGlmKHRoaXMuYmx1ckZyb21GaWVsZCAmJiB0aGlzLmFkZHJlc3NTdWdnZXN0aW9uICYmIHRoaXMuZW5hYmxlQWRkcmVzc1ZhbGlkYXRpb24gJiYgdGhpcy5jaGVja0Zvcm1CbHVycigpKXtcbiAgICAgICAgdGhpcy5hZGRyZXNzU3VnZ2VzdGlvbi5nZXRWYWxpZGF0ZUFkZHJlc3MoZmFsc2UpO1xuICAgICAgICB0aGlzLmFkZHJlc3NGb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB9XG4gICAgfSwxMClcbiAgICBcbiAgfVxuICBjaGVja0Zvcm1CbHVycigpe1xuICAgIGxldCBmaWVsZEJsdXIgPSB0cnVlO1xuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuYWRkcmVzc0ZpZWxkRm9jdXNTdGF0dXMpIHtcbiAgICAgIGlmKHRoaXMuYWRkcmVzc0ZpZWxkRm9jdXNTdGF0dXNba2V5XSl7XG4gICAgICAgIGZpZWxkQmx1ciA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmZvcm1CbHVyID0gZmllbGRCbHVyXG4gICAgcmV0dXJuIGZpZWxkQmx1cjtcbiAgfVxuXG4gIHZhbGlkQWRkcmVzcyhhZGRyZXNzKXtcbiAgICB0aGlzLmxhc3RWYWxpZEFkZHJlc3MgPSBhZGRyZXNzXG4gIH1cbiAgc2V0UmVxdWlyZWRWYWxpZGF0aW9uKCkge1xuICAgIHRoaXMuY291bnRyeS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGMgPT4ge1xuICAgICAgaWYoYz8udmFsdWUgPT0gJ1VTJyl7XG4gICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy56aXApO1xuICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLnppcCwgdGhpcy51c1ppcGNvZGVWYWxpZGF0aW9ucyk7XG4gICAgICB9IGVsc2UgaWYoYz8udmFsdWUgPT0gJ0NBJyl7XG4gICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy56aXApO1xuICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLnppcCwgdGhpcy5jYW5hZGFaaXBjb2RlVmFsaWRhdGlvbnMpO1xuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5zdGF0ZS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHN0YXRlVmFsdWUgPT4ge1xuICAgICAgaWYgKHN0YXRlVmFsdWUpIHtcbiAgICAgICAgaWYgKCgoc3RhdGVWYWx1ZS52YWx1ZSA9PT0gJ01TJyAmJiB0aGlzLmZvclN0YXRlID09PSAnTVMnKVxuICAgICAgICAgIHx8IChzdGF0ZVZhbHVlLnZhbHVlID09PSAnQ1QnICYmIHRoaXMuZm9yU3RhdGUgPT09ICdDVCcpKSAmJiB0aGlzLmNvdW50eVJlcXVpcmVkID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuY291bnR5KTtcbiAgICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMudG93bik7XG4gICAgICAgICAgdGhpcy50b3duLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlVmFsdWUudmFsdWUgPT09ICdNRScgJiYgdGhpcy5mb3JTdGF0ZSA9PT0gJ01FJyAmJiB0aGlzLmNvdW50eVJlcXVpcmVkID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMudG93bik7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNvdW50eSk7XG4gICAgICAgICAgdGhpcy5jb3VudHkuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNvdW50eSk7XG4gICAgICAgICAgdGhpcy5jb3VudHkuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnRvd24pO1xuICAgICAgICAgIHRoaXMudG93bi5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgfSk7XG5cbiAgfVxuXG4gIGdldCBuZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZCgpe1xuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWyduZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZCddO1xuICB9XG4gIFxuICBnZXQgdG93bigpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1sndG93biddO1xuICB9XG5cbiAgZ2V0IGNvdW50eSgpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1snY291bnR5J107XG4gIH1cblxuICBnZXQgY2l0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1snY2l0eSddO1xuICB9XG5cbiAgZ2V0IGNvdW50cnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ2NvdW50cnknXTtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1snc3RhdGUnXTtcbiAgfVxuXG4gIGdldCB6aXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ3ppcCddO1xuICB9XG5cbiAgZ2V0IHN0cmVldEFkZHJlc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ3N0cmVldEFkZHJlc3MnXTtcbiAgfVxuXG4gIGdldCBvcHRpb25hbEFkZHJlc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ29wdGlvbmFsQWRkcmVzcyddO1xuICB9XG5cbiAgZ2V0IG5laWdoYm91ckZsYWcoKXtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1snbmVpZ2hib3VyRmxhZyddO1xuICB9XG5cbiAgZ2V0QWRkcmVzc0RhdGEoZXZlbnQpIHtcbiAgICBpZiAodGhpcy56aXAgJiYgdGhpcy56aXAudmFsdWUpIHtcbiAgICAgIHRoaXMuZG1zXG4gICAgICAgIC5nZXRBZGRyZXNzKHRoaXMuemlwLnZhbHVlKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmFkZHJlc3NEYXRhID0gcmVzO1xuICAgICAgICAgICAgaWYodGhpcy5hZGRyZXNzRGF0YS5jaXR5KXtcbiAgICAgICAgICAgICAgdGhpcy5jaXR5LnBhdGNoVmFsdWUodGhpcy5hZGRyZXNzRGF0YS5jaXR5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYodGhpcy5hZGRyZXNzRGF0YS5zdGF0ZSl7XG4gICAgICAgICAgICAgIHRoaXMuc3RhdGUucGF0Y2hWYWx1ZSh0aGlzLmFkZHJlc3NEYXRhLnN0YXRlKTtcbiAgICAgICAgICAgIH0gXG5cbiAgICAgICAgICAgIGlmKHRoaXMuYWRkcmVzc0RhdGEuY291bnR5KXtcbiAgICAgICAgICAgICAgdGhpcy5jb3VudHkucGF0Y2hWYWx1ZSh0aGlzLmFkZHJlc3NEYXRhLmNvdW50eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIC8vIHRoaXMuZ2V0QWRkcmVzc1N1Z2dlc3Rpb24oKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlcnIpO1xuICAgICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlckNvdW50cnkoZXZlbnQpIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnZXZlbnQnLCBldmVudClcbiAgICBsZXQgZmlsdGVyZWQ6IGFueVtdID0gW107XG4gICAgbGV0IHF1ZXJ5ID0gZXZlbnQucXVlcnk7XG4gICAgdGhpcy5jb3VudHJ5T3B0aW9ucyA9IENvbWJvT3B0aW9uLkNPVU5UUlk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvdW50cnlPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY291bnRyeSA9IHRoaXMuY291bnRyeU9wdGlvbnNbaV07XG4gICAgICBpZiAoY291bnRyeS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxdWVyeS50b0xvd2VyQ2FzZSgpKSA9PSAwKSB7XG4gICAgICAgIGZpbHRlcmVkLnB1c2goY291bnRyeSk7XG4gICAgICAgIHRoaXMuc3RhdGUuc2V0VmFsdWUobnVsbCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY291bnRyeU9wdGlvbnMgPSBmaWx0ZXJlZDtcblxuICB9XG5cbiAgZmlsdGVyQ291bnR5KGV2ZW50KSB7XG4gICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5nZXRDb3VudHkodGhpcy5zdGF0ZS52YWx1ZVsndmFsdWUnXSwgdGhpcy56aXAudmFsdWUpLnN1YnNjcmliZShcbiAgICAgIHJlcyA9PiB7XG4gICAgICAgIC8qdGhpcy5sb2dnZXIuZGVidWcoJ3JlcycsIHJlcyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzWydjaG9pY2VzJ10ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBsZXQgY2hvaWNlID0gcmVzWydjaG9pY2VzJ11baV07XG4gICAgICAgICAgaWYgKGNob2ljZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxdWVyeS50b0xvd2VyQ2FzZSgpKSA9PSAwKSB7XG4gICAgICAgICAgICBmaWx0ZXJlZC5wdXNoKGNob2ljZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9Ki9cbiAgICAgICAgdGhpcy5jb3VudHlPcHRpb25zID0gcmVzWydjaG9pY2VzJ107XG4gICAgICB9KTtcbiAgfVxuXG4gIGZpbHRlclRvd24oZXZlbnQpIHtcbiAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLmdldENvdW50eSh0aGlzLnN0YXRlLnZhbHVlWyd2YWx1ZSddLCB0aGlzLnppcC52YWx1ZSkuc3Vic2NyaWJlKFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgdGhpcy50b3duT3B0aW9ucyA9IHJlc1snY2hvaWNlcyddO1xuICAgICAgfSk7XG4gIH1cblxuICBmaWx0ZXJTdGF0ZShldmVudCkge1xuICAgIGxldCBjaG9pY2U6IGFueTtcbiAgICBpZiAodGhpcy5jb3VudHJ5Py52YWx1ZT8udmFsdWUgPT09ICdVUycpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IENvbWJvT3B0aW9uLlVTX1NUQVRFUy5maW5kKHN0YXRlID0+IHN0YXRlLnZhbHVlID09IHRoaXMudXRpbC5nZXRTdGF0ZSgpKVxuICAgICAgY2hvaWNlID0gW2N1cnJlbnRTdGF0ZSwgLi4uQ29tYm9PcHRpb24uVVNfU1RBVEVTLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS52YWx1ZSAhPSB0aGlzLnV0aWwuZ2V0U3RhdGUoKSldO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvdW50cnk/LnZhbHVlPy52YWx1ZSA9PT0gJ0NBJykge1xuICAgICAgY2hvaWNlID0gQ29tYm9PcHRpb24uQ0FfU1RBVEVTO1xuICAgIH1cblxuICAgIC8qZm9yIChsZXQgaSA9IDA7IGkgPCBjaG9pY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChjaG9pY2VbaV0udGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YocXVlcnkudG9Mb3dlckNhc2UoKSkgPT0gMCkge1xuICAgICAgICBmaWx0ZXJlZC5wdXNoKGNob2ljZVtpXSk7XG4gICAgICB9XG4gICAgfSovXG4gICAgdGhpcy5zdGF0ZU9wdGlvbnMgPSBjaG9pY2U7XG5cbiAgfVxuXG4gIHNldFdpZHRoU3R5bGUoKTogb2JqZWN0IHtcbiAgICBpZiAodGhpcy5mcm9tUG9wdXApIHtcbiAgICAgIGxldCBzdHlsZU9iaiA9IHtcbiAgICAgICAgJ21heC13aWR0aCc6ICdpbml0aWFsJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN0eWxlT2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHN0eWxlT2JqID0ge1xuICAgICAgICAnbWF4LXdpZHRoJzogJ2ZpdC1jb250ZW50J1xuICAgICAgfTtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN0eWxlT2JqKTtcbiAgICB9XG4gIH1cblxuICBvblRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xuXG4gIG9uQ2hhbmdlU3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBmb3IgKGxldCBzdWIgb2YgdGhpcy5vbkNoYW5nZVN1YnMpIHtcbiAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSkge1xuICAgIGNvbnN0IHN1YiA9IHRoaXMuYWRkcmVzc0Zvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShvbkNoYW5nZSk7XG4gICAgdGhpcy5vbkNoYW5nZVN1YnMucHVzaChzdWIpO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBGdW5jdGlvbikge1xuICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgdGhpcy5hZGRyZXNzRm9ybS5kaXNhYmxlKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5hZGRyZXNzRm9ybS5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGxldCBmb3JtVmFsdWUgOiBBZGRyZXNzQ29tcG9uZW50TW9kZWw7XG4gICAgaWYodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKXtcbiAgICAgIGZvcm1WYWx1ZSA9IEpTT04ucGFyc2UodmFsdWUudG9TdHJpbmcoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcm1WYWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBpZiAoZm9ybVZhbHVlKSB7XG4gICAgICBpZiAoZm9ybVZhbHVlLmNvdW50cnkgJiYgIWZvcm1WYWx1ZS5jb3VudHJ5LnRleHQgJiYgZm9ybVZhbHVlLmNvdW50cnkudmFsdWUpIHtcbiAgICAgICAgbGV0IGNvdW50cnkgPSB0aGlzLmdldENvdW50cnkoZm9ybVZhbHVlLmNvdW50cnk/LnZhbHVlKVxuICAgICAgICBmb3JtVmFsdWUuY291bnRyeSA9IGNvdW50cnk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JtVmFsdWUuc3RhdGUgJiYgIWZvcm1WYWx1ZS5zdGF0ZS50ZXh0ICYmIGZvcm1WYWx1ZS5zdGF0ZS52YWx1ZSkge1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmdldFN0YXRlKGZvcm1WYWx1ZS5jb3VudHJ5Py52YWx1ZSwgZm9ybVZhbHVlLnN0YXRlLnZhbHVlLnRyaW0oKSlcbiAgICAgICAgZm9ybVZhbHVlLnN0YXRlID0gc3RhdGU7XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JtVmFsdWUuY291bnR5ICYmICFmb3JtVmFsdWUuY291bnR5LnRleHQgJiYgZm9ybVZhbHVlLmNvdW50eS52YWx1ZSAmJiBmb3JtVmFsdWUuc3RhdGUudmFsdWUgPT09ICdNUycpIHtcbiAgICAgICAgdGhpcy5zZXRNU0NvdW50eShmb3JtVmFsdWVbJ3ppcCddLCBmb3JtVmFsdWUuY291bnR5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZvcm1WYWx1ZS50b3duICYmICFmb3JtVmFsdWUudG93bi50ZXh0ICYmIGZvcm1WYWx1ZS50b3duLnZhbHVlICYmIGZvcm1WYWx1ZS5zdGF0ZS52YWx1ZSA9PT0gJ01FJykge1xuICAgICAgICB0aGlzLnNldE1FVG93bihmb3JtVmFsdWVbJ3ppcCddICxmb3JtVmFsdWUudG93bik7XG4gICAgICB9XG4gICAgICB0aGlzLmFkZHJlc3NGb3JtLnBhdGNoVmFsdWUoZm9ybVZhbHVlKTtcbiAgICB9XG4gIH1cblxuXG5cbiAgZ2V0Q291bnRyeShjb3VudHJ5KSB7XG4gICAgaWYgKGNvdW50cnkgPT0gbnVsbCB8fCBjb3VudHJ5ID09ICdVUycpIHtcbiAgICAgIHJldHVybiB7IHZhbHVlOiBcIlVTXCIsIHRleHQ6IFwiVW5pdGVkIFN0YXRlc1wiIH07XG4gICAgfSBlbHNlIGlmIChjb3VudHJ5ID09ICdDQScpIHtcbiAgICAgIHJldHVybiB7IHZhbHVlOiBcIkNBXCIsIHRleHQ6IFwiQ2FuYWRhXCIgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignTm8gQ291bnRyeSBjb25maWd1cmVkICcsIGNvdW50cnkpO1xuICAgIH1cblxuICB9XG5cbiAgZ2V0U3RhdGUoY291bnRyeSwgc3RhdGUpIHtcbiAgICBpZiAoY291bnRyeSA9PSBudWxsIHx8IGNvdW50cnkgPT0gJ1VTJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhdGVWYWx1ZShDb21ib09wdGlvbi5VU19TVEFURVMsIHN0YXRlKTtcbiAgICB9IGVsc2UgaWYgKGNvdW50cnkgPT0gJ0NBJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhdGVWYWx1ZShDb21ib09wdGlvbi5DQV9TVEFURVMsIHN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignTm8gQ291bnRyeSBjb25maWd1cmVkICcsIGNvdW50cnkpO1xuICAgIH1cbiAgfVxuXG5cbiAgZ2V0U3RhdGVWYWx1ZShzdGF0ZXM6IENvbWJvT3B0aW9uW10sIG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBzdGF0ZXMuZmlsdGVyKHN0YXRlID0+IHN0YXRlLnZhbHVlID09IG5hbWUpWzBdO1xuICB9XG5cbiAgc2V0TUVUb3duKHppcENvZGUgOiBzdHJpbmcsIHRvd246IENvbWJvT3B0aW9uKSB7XG4gICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5nZXRDb3VudHkoJ01FJywgemlwQ29kZSkuc3Vic2NyaWJlKFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgdGhpcy50b3duT3B0aW9ucyA9IHJlc1snY2hvaWNlcyddO1xuICAgICAgICBsZXQgc2VsZWN0ZWRDb3VudHkgPSB0aGlzLnRvd25PcHRpb25zLmZpbHRlcihjID0+IHtcbiAgICAgICAgICByZXR1cm4gYy52YWx1ZSA9PSB0b3duLnZhbHVlO1xuICAgICAgICB9KVswXTtcbiAgICAgICAgdGhpcy50b3duLnBhdGNoVmFsdWUoc2VsZWN0ZWRDb3VudHkpO1xuICAgICAgfSk7XG4gIH1cblxuICBzZXRNU0NvdW50eSh6aXBDb2RlOiBzdHJpbmcsIGNvdW50eTogQ29tYm9PcHRpb24pIHtcbiAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLmdldENvdW50eSgnTVMnLCB6aXBDb2RlKS5zdWJzY3JpYmUoXG4gICAgICByZXMgPT4ge1xuICAgICAgICB0aGlzLmNvdW50eU9wdGlvbnMgPSByZXNbJ2Nob2ljZXMnXTtcbiAgICAgICAgbGV0IHNlbGVjdGVkQ291bnR5ID0gdGhpcy5jb3VudHlPcHRpb25zLmZpbHRlcihjID0+IHtcbiAgICAgICAgICByZXR1cm4gYy52YWx1ZSA9PSBjb3VudHkudmFsdWU7XG4gICAgICAgIH0pWzBdO1xuICAgICAgICB0aGlzLmNvdW50eS5wYXRjaFZhbHVlKHNlbGVjdGVkQ291bnR5KTtcbiAgICAgIH0pO1xuICB9XG5cblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAodGhpcy5hZGRyZXNzRm9ybS52YWxpZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgc3VibWl0KCl7XG4gICAgdGhpcy5hZGRyZXNzRm9ybURpcmVjdGl2ZS5vblN1Ym1pdCh1bmRlZmluZWQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGRyZXNzRmllbGRGb2N1c1N0YXR1cyB7XG4gIHN0cmVldEFkZHJlc3M/OmJvb2xlYW47XG4gIG9wdGlvbmFsQWRkcmVzcz86Ym9vbGVhbjtcbiAgY2l0eT86Ym9vbGVhbjtcbiAgemlwPzpib29sZWFuO1xuICBzdGF0ZT86Ym9vbGVhbjtcbiAgY291bnR5Pzpib29sZWFuO1xufSIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiYWRkcmVzc0Zvcm1cIiAjYWRkcmVzc0Zvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDtcIj5cclxuICA8IS0tIDxkaXYgW2Zvcm1Hcm91cF09XCJhZGRyZXNzRm9ybVwiICAjYWRkcmVzc0Zvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIiA+IC0tPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicC1mb3JtZ3JpZFwiIFtpZF09XCJpbnB1dElkID8gaW5wdXRJZCA6ICdhZGRyZXNzLWRpdidcIj5cclxuICAgIDxpb24tcm93PlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctY291bnRyeScgOiAnY291bnRyeSdcIj57eydDb3VudHJ5JyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbb3B0aW9uc109XCJjb3VudHJ5T3B0aW9uc1wiIFtmb3JtQ29udHJvbF09XCJjb3VudHJ5XCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBbaW5wdXRJZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctY291bnRyeScgOiAnY291bnRyeSdcIiAob25DaGFuZ2UpPVwiZ2V0QWRkcmVzc1N1Z2dlc3Rpb24oKVwiPjwvYXBwLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nY291bnRyeScgW2Zvcm1dPVwiYWRkcmVzc0Zvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wgYXBwLWNvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXppcCcgOiAnemlwJ1wiPnt7J1ppcCBjb2RlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPGlucHV0IFtpZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctemlwJyA6ICd6aXAnXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiemlwXCIgbWlubGVuZ3RoPVwiNVwiIG1heGxlbmd0aD1cIjlcIiBhcHBTdHJpcEludmlzaWJsZUNoYXJzXHJcbiAgICAgICAgICAgICAgKGJsdXIpPVwiZ2V0QWRkcmVzc0RhdGEoJGV2ZW50KTsgZ2V0QWRkcmVzc1N1Z2dlc3Rpb24oKTsgc2V0RmllbGRCbHVyKCd6aXAnKVwiIChmb2N1cyk9XCJzZXRGaWVsZEZvY3VzKCd6aXAnKVwiIC8+PGJyIC8+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd6aXAnIFtmb3JtXT1cImFkZHJlc3NGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsXHJcbiAgICAgICAgICAgICAgICBpbnZhbGlkTGVuZ3RoOiAnWmlwIGNvZGUgc2hvdWxkIGJlIG9mIDUgb3IgOSBkaWdpdHMuJyxcclxuICAgICAgICAgICAgICAgIGludmFsaWROdW1iZXI6ICdaaXAgY29kZSBzaG91bGQgb25seSBoYXZlIG51bWJlcnMuJyxcclxuICAgICAgICAgICAgICAgIGludmFsaWRaaXBDb2RlOiAncGxlYXNlIGVudGVyIGEgdmFsaWQgemlwIGNvZGUnLFxyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcbiAgXHJcblxyXG4gICAgPGlvbi1yb3c+XHJcbiAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiAwcHg7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIHAtZmx1aWRcIj5cclxuICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1zdHJlZXRBZGRyZXNzJyA6ICdzdHJlZXRBZGRyZXNzJ1wiPnt7J1N0cmVldCBBZGRyZXNzJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgIDxpbnB1dCBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXN0cmVldEFkZHJlc3MnIDogJ3N0cmVldEFkZHJlc3MnXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBcclxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzdHJlZXRBZGRyZXNzXCIgbWF4bGVuZ3RoPVwiNDBcIiAoYmx1cik9XCJnZXRBZGRyZXNzU3VnZ2VzdGlvbigpOyBzZXRGaWVsZEJsdXIoJ3N0cmVldEFkZHJlc3MnKVwiIChmb2N1cyk9XCJzZXRGaWVsZEZvY3VzKCdzdHJlZXRBZGRyZXNzJylcIiBhcHBTdHJpcEludmlzaWJsZUNoYXJzLz48YnIgLz5cclxuICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdzdHJlZXRBZGRyZXNzJyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG5cclxuICAgIDxpb24tcm93PlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiICBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBwLWZsdWlkXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLW9wdGlvbmFsQWRkcmVzcycgOiAnb3B0aW9uYWxBZGRyZXNzJ1wiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgXHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJvcHRpb25hbEFkZHJlc3NcIiBwbGFjZWhvbGRlcj1cIk9wdGlvbmFsXCIgKGJsdXIpPVwiZ2V0QWRkcmVzc1N1Z2dlc3Rpb24oKTtzZXRGaWVsZEJsdXIoJ29wdGlvbmFsQWRkcmVzcycpXCIgKGZvY3VzKT1cInNldEZpZWxkRm9jdXMoJ29wdGlvbmFsQWRkcmVzcycpXCJcclxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNDBcIiBhcHBTdHJpcEludmlzaWJsZUNoYXJzLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcblxyXG5cclxuICAgIDxpb24tcm93PlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiICBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWNpdHknIDogJ2NpdHknXCI+e3snQ2l0eScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWNpdHknIDogJ2NpdHknXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBbZm9ybUNvbnRyb2xdPVwiY2l0eVwiIFxyXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIzMFwiIChibHVyKT1cImdldEFkZHJlc3NTdWdnZXN0aW9uKCk7IHNldEZpZWxkQmx1cignY2l0eScpXCIgKGZvY3VzKT1cInNldEZpZWxkRm9jdXMoJ2NpdHknKVwiIGFwcFN0cmlwSW52aXNpYmxlQ2hhcnMvPjxiciAvPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nY2l0eScgW2Zvcm1dPVwiYWRkcmVzc0Zvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCBhcHAtY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiICBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXN0YXRlJyA6ICdzdGF0ZSdcIj57eydTdGF0ZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gW29wdGlvbnNdPVwic3RhdGVPcHRpb25zXCIgW2Zvcm1Db250cm9sXT1cInN0YXRlXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBbaW5wdXRJZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctc3RhdGUnIDogJ3N0YXRlJ1wiIChvbkNoYW5nZSk9XCJnZXRBZGRyZXNzU3VnZ2VzdGlvbigpXCI+PC9hcHAtZHJvcGRvd24+PGJyIC8+XHJcbiAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nc3RhdGUnIFtmb3JtXT1cImFkZHJlc3NGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiAqbmdJZj1cInN0YXRlLnZhbHVlICYmIChzdGF0ZS52YWx1ZS52YWx1ZT09PSdNUycgJiYgZm9yU3RhdGU9PT0nTVMnIFxyXG4gICAgICAgIHx8IChzdGF0ZS52YWx1ZS52YWx1ZT09PSdDVCcgICYmIGZvclN0YXRlPT09J01TJykpICAmJiBjb3VudHlSZXF1aXJlZD09PXRydWVcIiBzaXplPVwiMTJcInN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctY291bnR5JyA6ICdjb3VudHknXCI+e3snQ291bnR5JyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbb3B0aW9uc109XCJjb3VudHlPcHRpb25zXCIgW2Zvcm1Db250cm9sXT1cImNvdW50eVwiIG9wdGlvbkxhYmVsPVwidGV4dFwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBbaW5wdXRJZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctY291bnR5JyA6ICdjb3VudHknXCIgKG9uQ2hhbmdlKT1cImdldEFkZHJlc3NTdWdnZXN0aW9uKClcIj48L2FwcC1kcm9wZG93bj48YnIvPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nY291bnR5JyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiAqbmdJZj1cInN0YXRlLnZhbHVlICYmIHN0YXRlLnZhbHVlLnZhbHVlPT09J01FJyAmJiBmb3JTdGF0ZT09PSdNRScgJiYgY291bnR5UmVxdWlyZWQ9PT10cnVlXCIgc2l6ZT1cIjEyXCIgIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctdG93bicgOiAndG93bidcIj57eydUb3duJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbb3B0aW9uc109XCJ0b3duT3B0aW9uc1wiIFtmb3JtQ29udHJvbF09XCJ0b3duXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIFtpbnB1dElkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy10b3duJyA6ICd0b3duJ1wiIChvbkNoYW5nZSk9XCJnZXRBZGRyZXNzU3VnZ2VzdGlvbigpXCIgPjwvYXBwLWRyb3Bkb3duPjxici8+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSd0b3duJyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuICAgIDxpb24tcm93IHN0eWxlPVwicGFkZGluZy10b3A6IDRweDtcIj5cclxuICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy10b3A6IDBweDtcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwic2hvd05laWdoYm91clF1ZXN0aW9uPT09dHJ1ZSAmJiBmb3JTdGF0ZT09PSdNRSdcIiA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1uZWlnaGJvdXJGbGFnJyA6ICduZWlnaGJvdXJGbGFnJ1wiPnt7J0FyZSB5b3UgY29udGludWluZyB0byBsb29rIGZvciB3b3JrIGluIE1haW5lPycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBbaW5wdXRJZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctbmVpZ2hib3VyRmxhZycgOiAnbmVpZ2hib3VyRmxhZydcIiB1bnNlbGVjdGFibGU9XCJ0cnVlXCIgW29wdGlvbnNdPVwieWVzTm9PcHRpb25zXCJcclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibmVpZ2hib3VyRmxhZ1wiIG9wdGlvbkxhYmVsPVwidGV4dFwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiBhcHBlbmRUbz1cImJvZHlcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSduZWlnaGJvdXJGbGFnJyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogMHB4O1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzaG93TmVpZ2hib3VyUXVlc3Rpb249PT10cnVlICYmIGZvclN0YXRlPT09J01TJ1wiID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLW5laWdoYm91ckZsYWcnIDogJ25laWdoYm91ckZsYWcnXCI+e3snRG8geW91IG5vcm1hbGx5IHdvcmsgaW4gTWlzc2lzc2lwcGk/JyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPHAtc2VsZWN0QnV0dG9uIFtpbnB1dElkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1uZWlnaGJvdXJGbGFnJyA6ICduZWlnaGJvdXJGbGFnJ1wiIHVuc2VsZWN0YWJsZT1cInRydWVcIiBbb3B0aW9uc109XCJ5ZXNOb09wdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJuZWlnaGJvdXJGbGFnXCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1zZWxlY3RCdXR0b24+XHJcbiAgICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J25laWdoYm91ckZsYWcnIFtmb3JtXT1cImFkZHJlc3NGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLSA8L2Rpdj4gLS0+XHJcbjwvZm9ybT5cclxuPGFwcC1hZGRyZXNzLXN1Z2dlc3Rpb24gI2FkZHJlc3NTdWdnZXN0aW9uICpuZ0lmPVwiKGVuYWJsZUFkZHJlc3NWYWxpZGF0aW9uKSAmJiB0aGlzLmFkZHJlc3NGb3JtLnZhbGlkICAmJiAoKChpbnB1dElkPT09J3Jlc0FkZHJlc3MnIHx8IGlucHV0SWQ9PT0ncmVzQWRyZXNzJykgJiYgZGlmZk1haWxBZGRyZXNzPT09IGZhbHNlKSB8fCAoaW5wdXRJZD09PSdtYWlsQWRkcmVzcycgJiYgZGlmZk1haWxBZGRyZXNzPT09IHRydWUpIHx8IChzdGFuZGFsb25lQWRkcmVzc0Zvcm0gPT09IHRydWUpKVwiXHJcbltmb3JtXT1cImFkZHJlc3NGb3JtXCIgW2Zvcm1OYW1lXT1cImlucHV0SWRcIiBbZGlmZk1haWxBZGRyZXNzRmxhZ109XCJkaWZmTWFpbEFkZHJlc3NcIiBbZm9ybUJsdXJdPVwiY2hlY2tGb3JtQmx1cnIoKVwiIChjaGVja0Zvcm1Jc0JsdXIpPVwiY2hlY2tGb3JtQmx1cnIoKVwiIFtxdWVzdGlvbmFpcmVGb3JtXT1cInF1ZXN0aW9uYWlyZUZvcm1cIiBbc3RhbmRhbG9uZUFkZHJlc3NGb3JtXT1cInN0YW5kYWxvbmVBZGRyZXNzRm9ybVwiIFtwYXJlbnRGb3JtQ29tcG9uZW50XT1cInBhcmVudEZvcm1Db21wb25lbnRcIj48L2FwcC1hZGRyZXNzLXN1Z2dlc3Rpb24+XHJcbiJdfQ==