@acorex/modules 21.0.0-next.5 → 21.0.0-next.8

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 (226) hide show
  1. package/application-management/index.d.ts +1 -0
  2. package/business-core/README.md +44 -1
  3. package/calendar-management/index.d.ts +6 -7
  4. package/document-management/index.d.ts +1544 -174
  5. package/fesm2022/acorex-modules-application-management.mjs +2 -0
  6. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  7. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-C4_2RPxG.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-7S277fXg.mjs} +23 -23
  8. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-7S277fXg.mjs.map +1 -0
  9. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-D2YRh7ro.mjs → acorex-modules-assessment-management-answers-viewer-widget-column.component-FnpwLbkS.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-D2YRh7ro.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-column.component-FnpwLbkS.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-B-S78gfQ.mjs → acorex-modules-assessment-management-answers-viewer-widget-edit.component-By0ETDZf.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-B-S78gfQ.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-edit.component-By0ETDZf.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-C1BTgRTR.mjs → acorex-modules-assessment-management-answers-viewer-widget-view.component-DxmjBgIo.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-C1BTgRTR.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-view.component-DxmjBgIo.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-DwTlClTz.mjs → acorex-modules-assessment-management-assessment-case.entity-CBjAGtV3.mjs} +2 -2
  16. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-DwTlClTz.mjs.map → acorex-modules-assessment-management-assessment-case.entity-CBjAGtV3.mjs.map} +1 -1
  17. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-BmvacBUU.mjs → acorex-modules-assessment-management-assessment-session.entity-CMnJ44gj.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-BmvacBUU.mjs.map → acorex-modules-assessment-management-assessment-session.entity-CMnJ44gj.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-D7ZNQBo8.mjs → acorex-modules-assessment-management-fill-assessment-session.command-8OhZEoAp.mjs} +3 -3
  20. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-D7ZNQBo8.mjs.map → acorex-modules-assessment-management-fill-assessment-session.command-8OhZEoAp.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BQxlJax7.mjs → acorex-modules-assessment-management-preview-questionnaire.command-CUybKZFY.mjs} +4 -4
  22. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BQxlJax7.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-CUybKZFY.mjs.map} +1 -1
  23. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-CIjS5M1b.mjs → acorex-modules-assessment-management-question-bank-item.entity-C9gxvSqN.mjs} +2 -2
  24. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-CIjS5M1b.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-C9gxvSqN.mjs.map} +1 -1
  25. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-DAYiqBeA.mjs → acorex-modules-assessment-management-questionnaire-builder-edit.component-CUCT7Tcg.mjs} +2 -2
  26. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-DAYiqBeA.mjs.map → acorex-modules-assessment-management-questionnaire-builder-edit.component-CUCT7Tcg.mjs.map} +1 -1
  27. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-BTXwZu9a.mjs → acorex-modules-assessment-management-questionnaire-builder-view.component-QhZAjnIv.mjs} +2 -2
  28. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-BTXwZu9a.mjs.map → acorex-modules-assessment-management-questionnaire-builder-view.component-QhZAjnIv.mjs.map} +1 -1
  29. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-BAR6Uee-.mjs → acorex-modules-assessment-management-questionnaire-builder.component-CvdVE1TW.mjs} +3 -3
  30. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-BAR6Uee-.mjs.map → acorex-modules-assessment-management-questionnaire-builder.component-CvdVE1TW.mjs.map} +1 -1
  31. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-DZ4TltLI.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-iDPvZ1Iu.mjs} +2 -2
  32. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-DZ4TltLI.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-iDPvZ1Iu.mjs.map} +1 -1
  33. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-B2GV_e0o.mjs → acorex-modules-assessment-management-questionnaire-viewer.service-C2bz2R0N.mjs} +2 -2
  34. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-B2GV_e0o.mjs.map → acorex-modules-assessment-management-questionnaire-viewer.service-C2bz2R0N.mjs.map} +1 -1
  35. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-mOtlUkUO.mjs → acorex-modules-assessment-management-questionnaire.entity-kvgtbI_h.mjs} +2 -2
  36. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-mOtlUkUO.mjs.map → acorex-modules-assessment-management-questionnaire.entity-kvgtbI_h.mjs.map} +1 -1
  37. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-BQ-3r9YQ.mjs → acorex-modules-assessment-management-view-session-answers.command-Dfl4QTDD.mjs} +3 -3
  38. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-BQ-3r9YQ.mjs.map → acorex-modules-assessment-management-view-session-answers.command-Dfl4QTDD.mjs.map} +1 -1
  39. package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
  40. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-D5jGjm6i.mjs → acorex-modules-auth-acorex-modules-auth-8XP9xX7L.mjs} +95 -51
  41. package/fesm2022/acorex-modules-auth-acorex-modules-auth-8XP9xX7L.mjs.map +1 -0
  42. package/fesm2022/{acorex-modules-auth-app-chooser.component-BL3Fmc7y.mjs → acorex-modules-auth-app-chooser.component-BvbLYIXA.mjs} +6 -6
  43. package/fesm2022/acorex-modules-auth-app-chooser.component-BvbLYIXA.mjs.map +1 -0
  44. package/fesm2022/{acorex-modules-auth-login.module-D8-GN_Hx.mjs → acorex-modules-auth-login.module-DLWlieUn.mjs} +4 -4
  45. package/fesm2022/{acorex-modules-auth-login.module-D8-GN_Hx.mjs.map → acorex-modules-auth-login.module-DLWlieUn.mjs.map} +1 -1
  46. package/fesm2022/{acorex-modules-auth-master.layout-CgDrAbPS.mjs → acorex-modules-auth-master.layout-BzV1eUvM.mjs} +2 -2
  47. package/fesm2022/{acorex-modules-auth-master.layout-CgDrAbPS.mjs.map → acorex-modules-auth-master.layout-BzV1eUvM.mjs.map} +1 -1
  48. package/fesm2022/{acorex-modules-auth-oauth-callback.component-lEMWnVJL.mjs → acorex-modules-auth-oauth-callback.component-CqaXMQdp.mjs} +5 -5
  49. package/fesm2022/{acorex-modules-auth-oauth-callback.component-lEMWnVJL.mjs.map → acorex-modules-auth-oauth-callback.component-CqaXMQdp.mjs.map} +1 -1
  50. package/fesm2022/{acorex-modules-auth-password.component-BQII_ltO.mjs → acorex-modules-auth-password.component-BR2qrph-.mjs} +9 -9
  51. package/fesm2022/{acorex-modules-auth-password.component-BQII_ltO.mjs.map → acorex-modules-auth-password.component-BR2qrph-.mjs.map} +1 -1
  52. package/fesm2022/acorex-modules-auth-password.component-DMmRFHgO.mjs +563 -0
  53. package/fesm2022/acorex-modules-auth-password.component-DMmRFHgO.mjs.map +1 -0
  54. package/fesm2022/{acorex-modules-auth-routes-BGLnoGO4.mjs → acorex-modules-auth-routes-BRQJ6Mx_.mjs} +2 -2
  55. package/fesm2022/{acorex-modules-auth-routes-BGLnoGO4.mjs.map → acorex-modules-auth-routes-BRQJ6Mx_.mjs.map} +1 -1
  56. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CptZLRwB.mjs +58 -0
  57. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CptZLRwB.mjs.map +1 -0
  58. package/fesm2022/{acorex-modules-auth-two-factor-code.component-BmlUjtYC.mjs → acorex-modules-auth-two-factor-code.component-CvheFTK7.mjs} +6 -6
  59. package/fesm2022/{acorex-modules-auth-two-factor-code.component-BmlUjtYC.mjs.map → acorex-modules-auth-two-factor-code.component-CvheFTK7.mjs.map} +1 -1
  60. package/fesm2022/{acorex-modules-auth-two-factor.module-D1UjsoB8.mjs → acorex-modules-auth-two-factor.module-TGGOwEpP.mjs} +3 -3
  61. package/fesm2022/{acorex-modules-auth-two-factor.module-D1UjsoB8.mjs.map → acorex-modules-auth-two-factor.module-TGGOwEpP.mjs.map} +1 -1
  62. package/fesm2022/{acorex-modules-auth-user-sessions.component-CIlGFT7H.mjs → acorex-modules-auth-user-sessions.component-C_JzCXUy.mjs} +6 -6
  63. package/fesm2022/{acorex-modules-auth-user-sessions.component-CIlGFT7H.mjs.map → acorex-modules-auth-user-sessions.component-C_JzCXUy.mjs.map} +1 -1
  64. package/fesm2022/acorex-modules-auth.mjs +1 -1
  65. package/fesm2022/{acorex-modules-business-core-business-status.entity-DE3JJYdY.mjs → acorex-modules-business-core-business-status.entity-BYUneIcN.mjs} +2 -2
  66. package/fesm2022/acorex-modules-business-core-business-status.entity-BYUneIcN.mjs.map +1 -0
  67. package/fesm2022/{acorex-modules-business-core-business-type.entity-_IwOWQVA.mjs → acorex-modules-business-core-business-type.entity-DEy8LvEV.mjs} +2 -2
  68. package/fesm2022/acorex-modules-business-core-business-type.entity-DEy8LvEV.mjs.map +1 -0
  69. package/fesm2022/{acorex-modules-business-core-industry.entity-bwgPAZDk.mjs → acorex-modules-business-core-industry.entity-CGNfgpMs.mjs} +2 -2
  70. package/fesm2022/acorex-modules-business-core-industry.entity-CGNfgpMs.mjs.map +1 -0
  71. package/fesm2022/{acorex-modules-business-core-manufacturer.entity-CDlQlBUD.mjs → acorex-modules-business-core-manufacturer.entity-DhyMx-nJ.mjs} +2 -1
  72. package/fesm2022/acorex-modules-business-core-manufacturer.entity-DhyMx-nJ.mjs.map +1 -0
  73. package/fesm2022/acorex-modules-business-core.mjs +4 -4
  74. package/fesm2022/acorex-modules-calendar-management.mjs +46 -74
  75. package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
  76. package/fesm2022/acorex-modules-common.mjs +6 -3
  77. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  78. package/fesm2022/{acorex-modules-customer-management-customer-segment.entity-CUBg2GZp.mjs → acorex-modules-customer-management-customer-segment.entity-CoYAU5g3.mjs} +2 -1
  79. package/fesm2022/acorex-modules-customer-management-customer-segment.entity-CoYAU5g3.mjs.map +1 -0
  80. package/fesm2022/{acorex-modules-customer-management-customer-type.entity-rmq6BeCF.mjs → acorex-modules-customer-management-customer-type.entity-pt4gpOGq.mjs} +2 -1
  81. package/fesm2022/acorex-modules-customer-management-customer-type.entity-pt4gpOGq.mjs.map +1 -0
  82. package/fesm2022/acorex-modules-customer-management.mjs +2 -2
  83. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-Bnp1l18X.mjs → acorex-modules-document-management-attachment-widget.component-zsWIFXD7.mjs} +2 -2
  84. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-Bnp1l18X.mjs.map → acorex-modules-document-management-attachment-widget.component-zsWIFXD7.mjs.map} +1 -1
  85. package/fesm2022/{acorex-modules-document-management-details-view.component-TfRh2Jom.mjs → acorex-modules-document-management-details-view.component-DD7P_Xz7.mjs} +2 -2
  86. package/fesm2022/{acorex-modules-document-management-details-view.component-TfRh2Jom.mjs.map → acorex-modules-document-management-details-view.component-DD7P_Xz7.mjs.map} +1 -1
  87. package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-nKUvSQuz.mjs → acorex-modules-document-management-document-signature-popup.component-DsCP-XfJ.mjs} +5 -5
  88. package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-nKUvSQuz.mjs.map → acorex-modules-document-management-document-signature-popup.component-DsCP-XfJ.mjs.map} +1 -1
  89. package/fesm2022/{acorex-modules-document-management-drive-choose.component-CPQC_Qxe.mjs → acorex-modules-document-management-drive-choose.component-FUlvIsJu.mjs} +7 -7
  90. package/fesm2022/{acorex-modules-document-management-drive-choose.component-CPQC_Qxe.mjs.map → acorex-modules-document-management-drive-choose.component-FUlvIsJu.mjs.map} +1 -1
  91. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BP_4qwha.mjs → acorex-modules-document-management-large-icons-view.component-Dzc3SOKz.mjs} +2 -2
  92. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BP_4qwha.mjs.map → acorex-modules-document-management-large-icons-view.component-Dzc3SOKz.mjs.map} +1 -1
  93. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CP9Ra0z9.mjs → acorex-modules-document-management-large-tiles-view.component-DrRbFkP4.mjs} +2 -2
  94. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CP9Ra0z9.mjs.map → acorex-modules-document-management-large-tiles-view.component-DrRbFkP4.mjs.map} +1 -1
  95. package/fesm2022/{acorex-modules-document-management-link-dialog.component-nJmv07CR.mjs → acorex-modules-document-management-link-dialog.component-DKGpdhH1.mjs} +3 -3
  96. package/fesm2022/{acorex-modules-document-management-link-dialog.component-nJmv07CR.mjs.map → acorex-modules-document-management-link-dialog.component-DKGpdhH1.mjs.map} +1 -1
  97. package/fesm2022/{acorex-modules-document-management-list-view.component-LhSA_duB.mjs → acorex-modules-document-management-list-view.component-C7cR3m4S.mjs} +2 -2
  98. package/fesm2022/{acorex-modules-document-management-list-view.component-LhSA_duB.mjs.map → acorex-modules-document-management-list-view.component-C7cR3m4S.mjs.map} +1 -1
  99. package/fesm2022/{acorex-modules-document-management-share-dialog.component-DJABAVOV.mjs → acorex-modules-document-management-share-dialog.component-MK4UO_uy.mjs} +3 -3
  100. package/fesm2022/{acorex-modules-document-management-share-dialog.component-DJABAVOV.mjs.map → acorex-modules-document-management-share-dialog.component-MK4UO_uy.mjs.map} +1 -1
  101. package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-Bh_FI1nk.mjs → acorex-modules-document-management-share-email-dialog.component-D5f4T_2K.mjs} +3 -3
  102. package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-Bh_FI1nk.mjs.map → acorex-modules-document-management-share-email-dialog.component-D5f4T_2K.mjs.map} +1 -1
  103. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-BOtJGiPU.mjs → acorex-modules-document-management-small-icons-view.component-BPWvSH3i.mjs} +2 -2
  104. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-BOtJGiPU.mjs.map → acorex-modules-document-management-small-icons-view.component-BPWvSH3i.mjs.map} +1 -1
  105. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-BiKZ-FyZ.mjs → acorex-modules-document-management-small-tiles-view.component-fIQ4RY_F.mjs} +2 -2
  106. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-BiKZ-FyZ.mjs.map → acorex-modules-document-management-small-tiles-view.component-fIQ4RY_F.mjs.map} +1 -1
  107. package/fesm2022/acorex-modules-document-management.mjs +9329 -1
  108. package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
  109. package/fesm2022/acorex-modules-financial-core.mjs +7 -5
  110. package/fesm2022/acorex-modules-financial-core.mjs.map +1 -1
  111. package/fesm2022/acorex-modules-human-capital-management-approve-leave-request.command-DN2T2hBp.mjs +59 -0
  112. package/fesm2022/acorex-modules-human-capital-management-approve-leave-request.command-DN2T2hBp.mjs.map +1 -0
  113. package/fesm2022/acorex-modules-human-capital-management-cancel-leave-request.command-CYMo0I8p.mjs +59 -0
  114. package/fesm2022/acorex-modules-human-capital-management-cancel-leave-request.command-CYMo0I8p.mjs.map +1 -0
  115. package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-CR4xmtkI.mjs +381 -0
  116. package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-CR4xmtkI.mjs.map +1 -0
  117. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-BDh7IX7_.mjs → acorex-modules-human-capital-management-leave-request.entity-Dm_IKrVw.mjs} +1 -2
  118. package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-Dm_IKrVw.mjs.map +1 -0
  119. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-DlCdAtaz.mjs → acorex-modules-human-capital-management-leave-type.entity-CY81Nohl.mjs} +11 -3
  120. package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-CY81Nohl.mjs.map +1 -0
  121. package/fesm2022/acorex-modules-human-capital-management-reject-leave-request.command-1Bn0gaZi.mjs +62 -0
  122. package/fesm2022/acorex-modules-human-capital-management-reject-leave-request.command-1Bn0gaZi.mjs.map +1 -0
  123. package/fesm2022/acorex-modules-human-capital-management.mjs +115 -36
  124. package/fesm2022/acorex-modules-human-capital-management.mjs.map +1 -1
  125. package/fesm2022/{acorex-modules-learning-management-certificate-definition.entity-BVvSzl2b.mjs → acorex-modules-learning-management-certificate-definition.entity-27VKYxw1.mjs} +2 -2
  126. package/fesm2022/acorex-modules-learning-management-certificate-definition.entity-27VKYxw1.mjs.map +1 -0
  127. package/fesm2022/{acorex-modules-learning-management-course.entity-BYb3Mgyi.mjs → acorex-modules-learning-management-course.entity-BN8XHAPz.mjs} +2 -2
  128. package/fesm2022/acorex-modules-learning-management-course.entity-BN8XHAPz.mjs.map +1 -0
  129. package/fesm2022/{acorex-modules-learning-management-skill.entity-CK93JIPg.mjs → acorex-modules-learning-management-skill.entity-rfMFaOAJ.mjs} +2 -1
  130. package/fesm2022/acorex-modules-learning-management-skill.entity-rfMFaOAJ.mjs.map +1 -0
  131. package/fesm2022/{acorex-modules-learning-management-training-definition.entity-C5RVLTy7.mjs → acorex-modules-learning-management-training-definition.entity-NQqJ5avw.mjs} +2 -2
  132. package/fesm2022/acorex-modules-learning-management-training-definition.entity-NQqJ5avw.mjs.map +1 -0
  133. package/fesm2022/{acorex-modules-learning-management-training.entity-KfxtUHEK.mjs → acorex-modules-learning-management-training.entity-DHGSlVR3.mjs} +2 -2
  134. package/fesm2022/acorex-modules-learning-management-training.entity-DHGSlVR3.mjs.map +1 -0
  135. package/fesm2022/acorex-modules-learning-management.mjs +5 -5
  136. package/fesm2022/acorex-modules-notification-management.mjs +34 -16
  137. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  138. package/fesm2022/acorex-modules-order-management.mjs +4 -0
  139. package/fesm2022/acorex-modules-order-management.mjs.map +1 -1
  140. package/fesm2022/{acorex-modules-organization-management-job-definition.entity-Cki_0gIY.mjs → acorex-modules-organization-management-job-definition.entity-s-TfP412.mjs} +2 -2
  141. package/fesm2022/acorex-modules-organization-management-job-definition.entity-s-TfP412.mjs.map +1 -0
  142. package/fesm2022/{acorex-modules-organization-management-position.entity-m7QrOTgN.mjs → acorex-modules-organization-management-position.entity-vbmjSfyb.mjs} +2 -2
  143. package/fesm2022/acorex-modules-organization-management-position.entity-vbmjSfyb.mjs.map +1 -0
  144. package/fesm2022/acorex-modules-organization-management.mjs +2 -2
  145. package/fesm2022/{acorex-modules-person-management-person.entity-DWfnmtVe.mjs → acorex-modules-person-management-person.entity-BnliZw-K.mjs} +35 -33
  146. package/fesm2022/acorex-modules-person-management-person.entity-BnliZw-K.mjs.map +1 -0
  147. package/fesm2022/acorex-modules-person-management.mjs +1 -1
  148. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-BIq_sJye.mjs → acorex-modules-platform-management-acorex-modules-platform-management-CAntNN8Z.mjs} +4 -2
  149. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-BIq_sJye.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-CAntNN8Z.mjs.map} +1 -1
  150. package/fesm2022/{acorex-modules-platform-management-menu-list.component-CL-zuLJ1.mjs → acorex-modules-platform-management-menu-list.component-CWutHAb3.mjs} +3 -3
  151. package/fesm2022/acorex-modules-platform-management-menu-list.component-CWutHAb3.mjs.map +1 -0
  152. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  153. package/fesm2022/{acorex-modules-product-catalog-brand.entity-DIv0bsiY.mjs → acorex-modules-product-catalog-brand.entity-C8VOfwF0.mjs} +2 -1
  154. package/fesm2022/acorex-modules-product-catalog-brand.entity-C8VOfwF0.mjs.map +1 -0
  155. package/fesm2022/{acorex-modules-product-catalog-product-sku.entity-CQw4VxjA.mjs → acorex-modules-product-catalog-product-sku.entity-Cxif--1E.mjs} +2 -1
  156. package/fesm2022/acorex-modules-product-catalog-product-sku.entity-Cxif--1E.mjs.map +1 -0
  157. package/fesm2022/{acorex-modules-product-catalog-product.entity-Cqye5OFr.mjs → acorex-modules-product-catalog-product.entity--aXivZUd.mjs} +2 -1
  158. package/fesm2022/acorex-modules-product-catalog-product.entity--aXivZUd.mjs.map +1 -0
  159. package/fesm2022/acorex-modules-product-catalog.mjs +3 -3
  160. package/fesm2022/acorex-modules-project-management.mjs +32 -1
  161. package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
  162. package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-Cp5QCIll.mjs → acorex-modules-report-management-report-runner-root-page.component-DEX4VgHX.mjs} +9 -9
  163. package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-DEX4VgHX.mjs.map +1 -0
  164. package/fesm2022/acorex-modules-report-management.mjs +2 -2
  165. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  166. package/fesm2022/acorex-modules-security-management.mjs +3 -1
  167. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  168. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-gQ5Sk1Sj.mjs → acorex-modules-settings-management-acorex-modules-settings-management-R6m7cpPE.mjs} +18 -18
  169. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-gQ5Sk1Sj.mjs.map → acorex-modules-settings-management-acorex-modules-settings-management-R6m7cpPE.mjs.map} +1 -1
  170. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-BEDGpTc8.mjs → acorex-modules-settings-management-permission-definition.provider-BNzuJQfL.mjs} +2 -2
  171. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-BEDGpTc8.mjs.map → acorex-modules-settings-management-permission-definition.provider-BNzuJQfL.mjs.map} +1 -1
  172. package/fesm2022/{acorex-modules-settings-management-setting-page.component-BsA1TfMG.mjs → acorex-modules-settings-management-setting-page.component-B1SnxHdd.mjs} +2 -2
  173. package/fesm2022/{acorex-modules-settings-management-setting-page.component-BsA1TfMG.mjs.map → acorex-modules-settings-management-setting-page.component-B1SnxHdd.mjs.map} +1 -1
  174. package/fesm2022/{acorex-modules-settings-management-setting-view.component-C282orx7.mjs → acorex-modules-settings-management-setting-view.component-BsuZ-NQK.mjs} +2 -2
  175. package/fesm2022/{acorex-modules-settings-management-setting-view.component-C282orx7.mjs.map → acorex-modules-settings-management-setting-view.component-BsuZ-NQK.mjs.map} +1 -1
  176. package/fesm2022/acorex-modules-settings-management.mjs +1 -1
  177. package/fesm2022/acorex-modules-subscription-management.mjs +3 -0
  178. package/fesm2022/acorex-modules-subscription-management.mjs.map +1 -1
  179. package/fesm2022/acorex-modules-supplier-management.mjs +1 -0
  180. package/fesm2022/acorex-modules-supplier-management.mjs.map +1 -1
  181. package/fesm2022/acorex-modules-task-management-task-board.page-6D76WpRB.mjs +2246 -0
  182. package/fesm2022/acorex-modules-task-management-task-board.page-6D76WpRB.mjs.map +1 -0
  183. package/fesm2022/acorex-modules-task-management.mjs +21 -8
  184. package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
  185. package/fesm2022/acorex-modules-tenant-management.mjs +2 -0
  186. package/fesm2022/acorex-modules-tenant-management.mjs.map +1 -1
  187. package/fesm2022/acorex-modules-workflow-management.mjs +2074 -28
  188. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  189. package/human-capital-management/index.d.ts +4 -1
  190. package/package.json +2 -2
  191. package/task-management/index.d.ts +32 -5
  192. package/workflow-management/index.d.ts +530 -8
  193. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-C4_2RPxG.mjs.map +0 -1
  194. package/fesm2022/acorex-modules-auth-acorex-modules-auth-D5jGjm6i.mjs.map +0 -1
  195. package/fesm2022/acorex-modules-auth-app-chooser.component-BL3Fmc7y.mjs.map +0 -1
  196. package/fesm2022/acorex-modules-auth-password.component-DKG8o8k8.mjs +0 -226
  197. package/fesm2022/acorex-modules-auth-password.component-DKG8o8k8.mjs.map +0 -1
  198. package/fesm2022/acorex-modules-auth-tenant-chooser.component-DNDhBKDp.mjs +0 -109
  199. package/fesm2022/acorex-modules-auth-tenant-chooser.component-DNDhBKDp.mjs.map +0 -1
  200. package/fesm2022/acorex-modules-business-core-business-status.entity-DE3JJYdY.mjs.map +0 -1
  201. package/fesm2022/acorex-modules-business-core-business-type.entity-_IwOWQVA.mjs.map +0 -1
  202. package/fesm2022/acorex-modules-business-core-industry.entity-bwgPAZDk.mjs.map +0 -1
  203. package/fesm2022/acorex-modules-business-core-manufacturer.entity-CDlQlBUD.mjs.map +0 -1
  204. package/fesm2022/acorex-modules-customer-management-customer-segment.entity-CUBg2GZp.mjs.map +0 -1
  205. package/fesm2022/acorex-modules-customer-management-customer-type.entity-rmq6BeCF.mjs.map +0 -1
  206. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-Dk4Z-JSv.mjs +0 -8995
  207. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-Dk4Z-JSv.mjs.map +0 -1
  208. package/fesm2022/acorex-modules-document-management-drive.component-BzpH_FSJ.mjs +0 -388
  209. package/fesm2022/acorex-modules-document-management-drive.component-BzpH_FSJ.mjs.map +0 -1
  210. package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-BDh7IX7_.mjs.map +0 -1
  211. package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-DlCdAtaz.mjs.map +0 -1
  212. package/fesm2022/acorex-modules-learning-management-certificate-definition.entity-BVvSzl2b.mjs.map +0 -1
  213. package/fesm2022/acorex-modules-learning-management-course.entity-BYb3Mgyi.mjs.map +0 -1
  214. package/fesm2022/acorex-modules-learning-management-skill.entity-CK93JIPg.mjs.map +0 -1
  215. package/fesm2022/acorex-modules-learning-management-training-definition.entity-C5RVLTy7.mjs.map +0 -1
  216. package/fesm2022/acorex-modules-learning-management-training.entity-KfxtUHEK.mjs.map +0 -1
  217. package/fesm2022/acorex-modules-organization-management-job-definition.entity-Cki_0gIY.mjs.map +0 -1
  218. package/fesm2022/acorex-modules-organization-management-position.entity-m7QrOTgN.mjs.map +0 -1
  219. package/fesm2022/acorex-modules-person-management-person.entity-DWfnmtVe.mjs.map +0 -1
  220. package/fesm2022/acorex-modules-platform-management-menu-list.component-CL-zuLJ1.mjs.map +0 -1
  221. package/fesm2022/acorex-modules-product-catalog-brand.entity-DIv0bsiY.mjs.map +0 -1
  222. package/fesm2022/acorex-modules-product-catalog-product-sku.entity-CQw4VxjA.mjs.map +0 -1
  223. package/fesm2022/acorex-modules-product-catalog-product.entity-Cqye5OFr.mjs.map +0 -1
  224. package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-Cp5QCIll.mjs.map +0 -1
  225. package/fesm2022/acorex-modules-task-management-task-board.page-CKgZoOGI.mjs +0 -1364
  226. package/fesm2022/acorex-modules-task-management-task-board.page-CKgZoOGI.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-modules-assessment-management-questionnaire-builder.component-BAR6Uee-.mjs","sources":["../tmp-esm2022/assessment-management/lib/features/questionnaire-builder/questionnaire-builder.types.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-builder/questionnaire-builder.component.js"],"sourcesContent":["//#region ---- Imports ----\n//#endregion\n//#region ---- Utility Functions ----\n/**\n * Convert raw value to builder state\n */\nexport function convertValueToState(value) {\n // Handle null/undefined or empty sections\n if (!value || !value.sections || value.sections.length === 0) {\n // Always return at least one default section\n const defaultSection = createDefaultSection();\n defaultSection.order = 0;\n return {\n sections: [defaultSection],\n displaySettings: value?.displaySettings,\n };\n }\n // Handle structure (sections with nested items)\n return {\n sections: value.sections.map((section, sectionIndex) => ({\n id: section.id || `section-${sectionIndex}`,\n title: section.title,\n description: section.description,\n order: section.order ?? sectionIndex,\n visibilityCondition: section.visibilityCondition,\n items: (section.items || []).map((item, itemIndex) => ({\n id: item.id || `item-${itemIndex}`,\n questionBankItemId: item.questionBankItemId,\n order: item.order ?? itemIndex,\n isRequired: item.isRequired,\n visibilityCondition: item.visibilityCondition,\n requiredCondition: item.requiredCondition,\n scoringOverride: item.scoringOverride,\n interfaceOverride: item.interfaceOverride,\n isNewlyAdded: false,\n })),\n isNewlyAdded: false,\n })),\n displaySettings: value.displaySettings,\n };\n}\n/**\n * Convert builder state to value for persistence\n */\nexport function convertStateToValue(state, existingValue) {\n const result = {\n sections: state.sections\n .filter((section) => {\n // Drop sections that are NOT newly added AND have no items\n // Keep sections that are newly added OR have items\n const isNewlyAdded = section.isNewlyAdded === true;\n const hasItems = section.items.length > 0;\n return isNewlyAdded || hasItems;\n })\n .map((section) => {\n return {\n id: section.id,\n title: section.title,\n description: section.description,\n order: section.order,\n visibilityCondition: section.visibilityCondition,\n items: section.items.map((item) => ({\n id: item.id,\n questionBankItemId: item.questionBankItemId,\n order: item.order,\n isRequired: item.isRequired,\n visibilityCondition: item.visibilityCondition,\n requiredCondition: item.requiredCondition,\n scoringOverride: item.scoringOverride,\n interfaceOverride: item.interfaceOverride,\n })),\n };\n }),\n };\n // Preserve displaySettings from state first, then from existing value if state doesn't have it\n if (state.displaySettings) {\n result.displaySettings = state.displaySettings;\n }\n else if (existingValue?.displaySettings) {\n result.displaySettings = existingValue.displaySettings;\n }\n return result;\n}\n/**\n * Create a default section\n */\nexport function createDefaultSection() {\n return {\n id: `section-${Date.now()}`,\n title: 'New Section',\n description: undefined,\n order: 0,\n visibilityCondition: undefined,\n items: [],\n isNewlyAdded: true,\n };\n}\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS1idWlsZGVyLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3F1ZXN0aW9ubmFpcmUtYnVpbGRlci9xdWVzdGlvbm5haXJlLWJ1aWxkZXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBK0ovQixZQUFZO0FBRVoseUNBQXlDO0FBRXpDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQW1EO0lBQ25GLDBDQUEwQztJQUMxQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzRCw2Q0FBNkM7UUFDN0MsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QyxjQUFjLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUN6QixPQUFPO1lBQ0gsUUFBUSxFQUFFLENBQUMsY0FBYyxDQUFDO1lBQzFCLGVBQWUsRUFBRSxLQUFLLEVBQUUsZUFBZTtTQUMxQyxDQUFDO0lBQ04sQ0FBQztJQUVELGdEQUFnRDtJQUNoRCxPQUFPO1FBQ0gsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRCxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxXQUFXLFlBQVksRUFBRTtZQUMzQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxJQUFJLFlBQVk7WUFDcEMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLG1CQUFtQjtZQUNoRCxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ25ELEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLFFBQVEsU0FBUyxFQUFFO2dCQUNsQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO2dCQUMzQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTO2dCQUM5QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzNCLG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7Z0JBQzdDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7Z0JBQ3pDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDckMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtnQkFDekMsWUFBWSxFQUFFLEtBQUs7YUFDdEIsQ0FBQyxDQUFDO1lBQ0gsWUFBWSxFQUFFLEtBQUs7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO0tBQ3pDLENBQUM7QUFDTixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsS0FBZ0MsRUFBRSxhQUF5QztJQUMzRyxNQUFNLE1BQU0sR0FBOEI7UUFDdEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2FBQ25CLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2hCLDJEQUEyRDtZQUMzRCxtREFBbUQ7WUFDbkQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUM7WUFDbkQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBRTFDLE9BQU8sWUFBWSxJQUFJLFFBQVEsQ0FBQztRQUNwQyxDQUFDLENBQUM7YUFDRCxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNiLE9BQU87Z0JBQ0gsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUNkLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztnQkFDcEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUNoQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQ3BCLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxtQkFBbUI7Z0JBQ2hELEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDaEMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO29CQUNYLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7b0JBQzNDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO29CQUMzQixtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CO29CQUM3QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCO29CQUN6QyxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7b0JBQ3JDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7aUJBQzVDLENBQUMsQ0FBQzthQUNOLENBQUM7UUFDTixDQUFDLENBQUM7S0FDVCxDQUFDO0lBRUYsK0ZBQStGO0lBQy9GLElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztJQUNuRCxDQUFDO1NBQU0sSUFBSSxhQUFhLEVBQUUsZUFBZSxFQUFFLENBQUM7UUFDeEMsTUFBTSxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFDO0lBQzNELENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CO0lBQ2hDLE9BQU87UUFDSCxFQUFFLEVBQUUsV0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDM0IsS0FBSyxFQUFFLGFBQWE7UUFDcEIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsS0FBSyxFQUFFLENBQUM7UUFDUixtQkFBbUIsRUFBRSxTQUFTO1FBQzlCLEtBQUssRUFBRSxFQUFFO1FBQ1QsWUFBWSxFQUFFLElBQUk7S0FDckIsQ0FBQztBQUNOLENBQUM7QUFFRCxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBBWFBXaWRnZXROb2RlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBRdWVzdGlvbm5haXJlIEJ1aWxkZXIgVHlwZXMgICAtLS0tXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBxdWVzdGlvbiBpdGVtIHdpdGhpbiBhIHNlY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWVzdGlvbm5haXJlQnVpbGRlckl0ZW0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgcXVlc3Rpb25CYW5rSXRlbUlkOiBzdHJpbmc7XG4gICAgb3JkZXI6IG51bWJlcjtcbiAgICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbiAgICB2aXNpYmlsaXR5Q29uZGl0aW9uPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkQ29uZGl0aW9uPzogc3RyaW5nO1xuICAgIHNjb3JpbmdPdmVycmlkZT86IHtcbiAgICAgICAgcG9pbnRzPzogbnVtYmVyO1xuICAgICAgICB3ZWlnaHQ/OiBudW1iZXI7XG4gICAgfTtcbiAgICBpbnRlcmZhY2VPdmVycmlkZT86IEFYUFdpZGdldE5vZGU7XG4gICAgaXNOZXdseUFkZGVkPzogYm9vbGVhbjtcblxuICAgIC8vIFJlbGF0ZWQgcXVlc3Rpb24gZGF0YSAoZnJvbSBleHBvc2UpXG4gICAgcXVlc3Rpb24/OiB7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgICBkaWZmaWN1bHR5Pzogc3RyaW5nO1xuICAgICAgICBzY29yaW5nVHlwZT86IHN0cmluZztcbiAgICB9O1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBRdWVzdGlvbm5haXJlIEJ1aWxkZXIgU2VjdGlvbiBUeXBlcyAgIC0tLS1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2VjdGlvbiBjb250YWluaW5nIHF1ZXN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmVCdWlsZGVyU2VjdGlvbiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIG9yZGVyOiBudW1iZXI7XG4gICAgdmlzaWJpbGl0eUNvbmRpdGlvbj86IHN0cmluZztcbiAgICBpdGVtczogUXVlc3Rpb25uYWlyZUJ1aWxkZXJJdGVtW107XG4gICAgaXNOZXdseUFkZGVkPzogYm9vbGVhbjtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgUXVlc3Rpb25uYWlyZSBCdWlsZGVyIFN0YXRlIFR5cGVzICAgLS0tLVxuXG4vKipcbiAqIE92ZXJhbGwgc3RhdGUgZm9yIHRoZSBxdWVzdGlvbm5haXJlIGJ1aWxkZXIgd2lkZ2V0IChkZXNpZ25lciBtb2RlKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUge1xuICAgIHNlY3Rpb25zOiBRdWVzdGlvbm5haXJlQnVpbGRlclNlY3Rpb25bXTtcbiAgICBzZWxlY3RlZEl0ZW1JZD86IHN0cmluZztcbiAgICBzZWxlY3RlZFNlY3Rpb25JZD86IHN0cmluZztcbiAgICBkaXNwbGF5U2V0dGluZ3M/OiBRdWVzdGlvbm5haXJlRGlzcGxheVNldHRpbmdzO1xufVxuXG4vKipcbiAqIERpc3BsYXkgc2V0dGluZ3MgZm9yIHF1ZXN0aW9ubmFpcmUgdmlld2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlc3Rpb25uYWlyZURpc3BsYXlTZXR0aW5ncyB7XG4gICAgLyoqXG4gICAgICogVmlldyBtb2RlOiBzaW5nbGUtcGFnZSwgcGFnZS1wZXItZ3JvdXAsIHBhZ2UtcGVyLXF1ZXN0aW9uLCBzaWRlLW1lbnVcbiAgICAgKi9cbiAgICB2aWV3TW9kZT86ICdzaW5nbGUtcGFnZScgfCAncGFnZS1wZXItZ3JvdXAnIHwgJ3BhZ2UtcGVyLXF1ZXN0aW9uJyB8ICdzaWRlLW1lbnUnO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyBwcm9ncmVzcyBiYXJcbiAgICAgKi9cbiAgICBzaG93UHJvZ3Jlc3NCYXI/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogUHJvZ3Jlc3MgY2FsY3VsYXRpb24gbW9kZTogYW5zd2VyZWQgb3IgbmF2aWdhdGlvblxuICAgICAqL1xuICAgIHByb2dyZXNzTW9kZT86ICdhbnN3ZXJlZCcgfCAnbmF2aWdhdGlvbic7XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRpbWVyXG4gICAgICovXG4gICAgc2hvd1RpbWVyPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFNob3cgc2VjdGlvbiB0aXRsZXNcbiAgICAgKi9cbiAgICBzaG93U2VjdGlvblRpdGxlcz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHF1ZXN0aW9uIG51bWJlcnNcbiAgICAgKi9cbiAgICBzaG93UXVlc3Rpb25OdW1iZXJzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEF1dG8tc2F2ZSBhbnN3ZXJzIGFzIHVzZXIgdHlwZXNcbiAgICAgKi9cbiAgICBhdXRvU2F2ZT86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHZhbGlkYXRpb24gZXJyb3JzIGlubGluZVxuICAgICAqL1xuICAgIHNob3dWYWxpZGF0aW9uRXJyb3JzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEFsbG93IHNraXBwaW5nIHF1ZXN0aW9ucyAoaWYgbm90IHJlcXVpcmVkKVxuICAgICAqL1xuICAgIGFsbG93U2tpcHBpbmc/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyBxdWVzdGlvbiBjb3VudGVyIChlLmcuLCBcIlF1ZXN0aW9uIDMgb2YgMTBcIilcbiAgICAgKi9cbiAgICBzaG93UXVlc3Rpb25Db3VudGVyPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRlIGJlZm9yZSBhbGxvd2luZyBuYXZpZ2F0aW9uIHRvIG90aGVyIHNlY3Rpb25zL3BhZ2VzXG4gICAgICogV2hlbiB0cnVlLCBuYXZpZ2F0aW9uIGlzIGJsb2NrZWQgaWYgY3VycmVudCBwYWdlIGhhcyB2YWxpZGF0aW9uIGVycm9yc1xuICAgICAqIFdoZW4gZmFsc2UsIG5hdmlnYXRpb24gaXMgYWxsb3dlZCBidXQgdmFsaWRhdGlvbiBlcnJvcnMgYXJlIHN0aWxsIHNob3duXG4gICAgICogRGVmYXVsdDogdHJ1ZVxuICAgICAqL1xuICAgIHZhbGlkYXRlQmVmb3JlTmF2aWdhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVmFsdWUgc3RydWN0dXJlIHN0b3JlZCBpbiBlbnRpdHkgKHNpbXBsaWZpZWQgZm9yIHBlcnNpc3RlbmNlKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUge1xuICAgIHNlY3Rpb25zOiBBcnJheTx7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgICBvcmRlcjogbnVtYmVyO1xuICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uPzogc3RyaW5nO1xuICAgICAgICBpdGVtczogQXJyYXk8e1xuICAgICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAgIHF1ZXN0aW9uQmFua0l0ZW1JZDogc3RyaW5nO1xuICAgICAgICAgICAgb3JkZXI6IG51bWJlcjtcbiAgICAgICAgICAgIGlzUmVxdWlyZWQ/OiBib29sZWFuO1xuICAgICAgICAgICAgdmlzaWJpbGl0eUNvbmRpdGlvbj86IHN0cmluZztcbiAgICAgICAgICAgIHJlcXVpcmVkQ29uZGl0aW9uPzogc3RyaW5nO1xuICAgICAgICAgICAgc2NvcmluZ092ZXJyaWRlPzoge1xuICAgICAgICAgICAgICAgIHBvaW50cz86IG51bWJlcjtcbiAgICAgICAgICAgICAgICB3ZWlnaHQ/OiBudW1iZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaW50ZXJmYWNlT3ZlcnJpZGU/OiBBWFBXaWRnZXROb2RlO1xuICAgICAgICB9PjtcbiAgICB9PjtcbiAgICAvKipcbiAgICAgKiBEaXNwbGF5IHNldHRpbmdzIGZvciBxdWVzdGlvbm5haXJlIHZpZXdlclxuICAgICAqL1xuICAgIGRpc3BsYXlTZXR0aW5ncz86IFF1ZXN0aW9ubmFpcmVEaXNwbGF5U2V0dGluZ3M7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFV0aWxpdHkgRnVuY3Rpb25zICAgLS0tLVxuXG4vKipcbiAqIENvbnZlcnQgcmF3IHZhbHVlIHRvIGJ1aWxkZXIgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZVRvU3RhdGUodmFsdWU6IFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUgfCBudWxsIHwgdW5kZWZpbmVkKTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJTdGF0ZSB7XG4gICAgLy8gSGFuZGxlIG51bGwvdW5kZWZpbmVkIG9yIGVtcHR5IHNlY3Rpb25zXG4gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuc2VjdGlvbnMgfHwgdmFsdWUuc2VjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIEFsd2F5cyByZXR1cm4gYXQgbGVhc3Qgb25lIGRlZmF1bHQgc2VjdGlvblxuICAgICAgICBjb25zdCBkZWZhdWx0U2VjdGlvbiA9IGNyZWF0ZURlZmF1bHRTZWN0aW9uKCk7XG4gICAgICAgIGRlZmF1bHRTZWN0aW9uLm9yZGVyID0gMDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlY3Rpb25zOiBbZGVmYXVsdFNlY3Rpb25dLFxuICAgICAgICAgICAgZGlzcGxheVNldHRpbmdzOiB2YWx1ZT8uZGlzcGxheVNldHRpbmdzLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBzdHJ1Y3R1cmUgKHNlY3Rpb25zIHdpdGggbmVzdGVkIGl0ZW1zKVxuICAgIHJldHVybiB7XG4gICAgICAgIHNlY3Rpb25zOiB2YWx1ZS5zZWN0aW9ucy5tYXAoKHNlY3Rpb24sIHNlY3Rpb25JbmRleCkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBzZWN0aW9uLmlkIHx8IGBzZWN0aW9uLSR7c2VjdGlvbkluZGV4fWAsXG4gICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzZWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgb3JkZXI6IHNlY3Rpb24ub3JkZXIgPz8gc2VjdGlvbkluZGV4LFxuICAgICAgICAgICAgdmlzaWJpbGl0eUNvbmRpdGlvbjogc2VjdGlvbi52aXNpYmlsaXR5Q29uZGl0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IChzZWN0aW9uLml0ZW1zIHx8IFtdKS5tYXAoKGl0ZW0sIGl0ZW1JbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCB8fCBgaXRlbS0ke2l0ZW1JbmRleH1gLFxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uQmFua0l0ZW1JZDogaXRlbS5xdWVzdGlvbkJhbmtJdGVtSWQsXG4gICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0ub3JkZXIgPz8gaXRlbUluZGV4LFxuICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IGl0ZW0uaXNSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiBpdGVtLnZpc2liaWxpdHlDb25kaXRpb24sXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRDb25kaXRpb246IGl0ZW0ucmVxdWlyZWRDb25kaXRpb24sXG4gICAgICAgICAgICAgICAgc2NvcmluZ092ZXJyaWRlOiBpdGVtLnNjb3JpbmdPdmVycmlkZSxcbiAgICAgICAgICAgICAgICBpbnRlcmZhY2VPdmVycmlkZTogaXRlbS5pbnRlcmZhY2VPdmVycmlkZSxcbiAgICAgICAgICAgICAgICBpc05ld2x5QWRkZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaXNOZXdseUFkZGVkOiBmYWxzZSxcbiAgICAgICAgfSkpLFxuICAgICAgICBkaXNwbGF5U2V0dGluZ3M6IHZhbHVlLmRpc3BsYXlTZXR0aW5ncyxcbiAgICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnQgYnVpbGRlciBzdGF0ZSB0byB2YWx1ZSBmb3IgcGVyc2lzdGVuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTdGF0ZVRvVmFsdWUoc3RhdGU6IFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUsIGV4aXN0aW5nVmFsdWU/OiBRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlKTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSB7XG4gICAgY29uc3QgcmVzdWx0OiBRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlID0ge1xuICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKHNlY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICAvLyBEcm9wIHNlY3Rpb25zIHRoYXQgYXJlIE5PVCBuZXdseSBhZGRlZCBBTkQgaGF2ZSBubyBpdGVtc1xuICAgICAgICAgICAgICAgIC8vIEtlZXAgc2VjdGlvbnMgdGhhdCBhcmUgbmV3bHkgYWRkZWQgT1IgaGF2ZSBpdGVtc1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzTmV3bHlBZGRlZCA9IHNlY3Rpb24uaXNOZXdseUFkZGVkID09PSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0l0ZW1zID0gc2VjdGlvbi5pdGVtcy5sZW5ndGggPiAwO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTmV3bHlBZGRlZCB8fCBoYXNJdGVtcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHNlY3Rpb24uaWQsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzZWN0aW9uLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc2VjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IHNlY3Rpb24ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlDb25kaXRpb246IHNlY3Rpb24udmlzaWJpbGl0eUNvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHNlY3Rpb24uaXRlbXMubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbkJhbmtJdGVtSWQ6IGl0ZW0ucXVlc3Rpb25CYW5rSXRlbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1JlcXVpcmVkOiBpdGVtLmlzUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiBpdGVtLnZpc2liaWxpdHlDb25kaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZENvbmRpdGlvbjogaXRlbS5yZXF1aXJlZENvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdPdmVycmlkZTogaXRlbS5zY29yaW5nT3ZlcnJpZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VPdmVycmlkZTogaXRlbS5pbnRlcmZhY2VPdmVycmlkZSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICB9O1xuXG4gICAgLy8gUHJlc2VydmUgZGlzcGxheVNldHRpbmdzIGZyb20gc3RhdGUgZmlyc3QsIHRoZW4gZnJvbSBleGlzdGluZyB2YWx1ZSBpZiBzdGF0ZSBkb2Vzbid0IGhhdmUgaXRcbiAgICBpZiAoc3RhdGUuZGlzcGxheVNldHRpbmdzKSB7XG4gICAgICAgIHJlc3VsdC5kaXNwbGF5U2V0dGluZ3MgPSBzdGF0ZS5kaXNwbGF5U2V0dGluZ3M7XG4gICAgfSBlbHNlIGlmIChleGlzdGluZ1ZhbHVlPy5kaXNwbGF5U2V0dGluZ3MpIHtcbiAgICAgICAgcmVzdWx0LmRpc3BsYXlTZXR0aW5ncyA9IGV4aXN0aW5nVmFsdWUuZGlzcGxheVNldHRpbmdzO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZGVmYXVsdCBzZWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0U2VjdGlvbigpOiBRdWVzdGlvbm5haXJlQnVpbGRlclNlY3Rpb24ge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBgc2VjdGlvbi0ke0RhdGUubm93KCl9YCxcbiAgICAgICAgdGl0bGU6ICdOZXcgU2VjdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIG9yZGVyOiAwLFxuICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIGl0ZW1zOiBbXSxcbiAgICAgICAgaXNOZXdseUFkZGVkOiB0cnVlLFxuICAgIH07XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","//#region ---- Imports ----\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { CdkDrag, CdkDragHandle, CdkDropList, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXPDataSelectorService } from '@acorex/platform/layout/components';\nimport { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal, untracked, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RootConfig } from '../../const';\nimport { AXMQuestionBankItemService } from '../../entities/question-bank-item/question-bank-item.service';\nimport { convertStateToValue, convertValueToState, createDefaultSection, } from './questionnaire-builder.types';\nimport { AXPDataGenerator, AXFullscreenDirective } from '@acorex/platform/core';\nimport { AXMQuestionnaireViewerService } from '../questionnaire-viewer/questionnaire-viewer.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@acorex/core/translation\";\n//#endregion\n//#region ---- Component ----\n/**\n * Reusable Questionnaire Builder Component\n * Can be used both in dialog and inline contexts\n */\nexport class AXMQuestionnaireBuilderComponent {\n //#endregion\n //#region ---- Lifecycle ----\n constructor() {\n //#region ---- Services & Dependencies ----\n this.dataSelectorService = inject(AXPDataSelectorService);\n this.questionBankService = inject(AXMQuestionBankItemService);\n this.entityResolver = inject(AXPEntityDefinitionRegistryService);\n this.dialogService = inject(AXDialogService);\n this.translationService = inject(AXTranslationService);\n this.layoutBuilder = inject(AXPLayoutBuilderService);\n this.questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n //#endregion\n //#region ---- Inputs & Outputs ----\n /**\n * Initial value (QuestionnaireBuilderValue)\n */\n this.value = input(null, ...(ngDevMode ? [{ debugName: \"value\" }] : []));\n /**\n * Readonly mode\n */\n this.readonly = input(false, ...(ngDevMode ? [{ debugName: \"readonly\" }] : []));\n /**\n * Value change event\n */\n this.valueChange = output();\n //#endregion\n //#region ---- Class Properties ----\n // Designer state management - always start with at least one default section\n this.builderState = signal({\n sections: [createDefaultSection()],\n }, ...(ngDevMode ? [{ debugName: \"builderState\" }] : []));\n // Selected item tracking\n this.selectedItemId = signal(null, ...(ngDevMode ? [{ debugName: \"selectedItemId\" }] : []));\n this.selectedSectionId = signal(null, ...(ngDevMode ? [{ debugName: \"selectedSectionId\" }] : []));\n // Track if we're making internal updates to prevent effect loops\n this.isInternalUpdate = false;\n // Fullscreen directive reference\n this.fullscreenDirective = viewChild('fullscreen', ...(ngDevMode ? [{ debugName: \"fullscreenDirective\" }] : []));\n //#endregion\n //#region ---- Computed Properties ----\n /**\n * Get all sections for rendering\n */\n this.sections = computed(() => this.builderState().sections, ...(ngDevMode ? [{ debugName: \"sections\" }] : []));\n /**\n * Check if can remove section (must have at least 1 section)\n */\n this.canRemoveSection = computed(() => this.sections().length > 1, ...(ngDevMode ? [{ debugName: \"canRemoveSection\" }] : []));\n /**\n * Get current display settings from state or default\n */\n this.displaySettings = computed(() => {\n const state = this.builderState();\n if (state.displaySettings) {\n return state.displaySettings;\n }\n // Fallback to value if state doesn't have it\n const currentValue = convertStateToValue(state, this.value() || undefined);\n return currentValue.displaySettings || {\n viewMode: 'single-page',\n showProgressBar: true,\n showTimer: false,\n showSectionTitles: true,\n showQuestionNumbers: true,\n };\n }, ...(ngDevMode ? [{ debugName: \"displaySettings\" }] : []));\n // Track last emitted value to prevent circular updates\n let lastEmittedValue = null;\n // Sync value input to state (only when value changes externally)\n effect(() => {\n const val = this.value();\n if (val !== null && val !== undefined && !this.isInternalUpdate) {\n const currentState = untracked(() => this.builderState());\n const currentValue = convertStateToValue(currentState);\n // Only update if the value actually changed and it's different from what we last emitted\n const valStr = JSON.stringify(val);\n const currentStr = JSON.stringify(currentValue);\n const lastEmittedStr = lastEmittedValue ? JSON.stringify(lastEmittedValue) : null;\n // Update only if:\n // 1. The incoming value is different from current state value\n // 2. AND it's not the value we just emitted (prevent circular updates)\n if (valStr !== currentStr && valStr !== lastEmittedStr) {\n const newState = convertValueToState(val);\n untracked(() => {\n this.builderState.set(newState);\n // Load question details for all items\n this.loadQuestionDetailsForState(newState);\n });\n }\n }\n else if ((val === null || val === undefined) && !this.isInternalUpdate) {\n // If value is null/undefined, ensure we have at least one default section\n const currentState = untracked(() => this.builderState());\n if (currentState.sections.length === 0) {\n const defaultSection = createDefaultSection();\n defaultSection.order = 0;\n untracked(() => {\n this.builderState.set({ sections: [defaultSection] });\n });\n }\n }\n });\n // Sync state changes to output\n effect(() => {\n const state = this.builderState();\n const currentValue = this.value();\n const value = convertStateToValue(state, currentValue || undefined);\n // Prevent circular updates\n if (!this.isInternalUpdate) {\n untracked(() => {\n lastEmittedValue = value;\n this.valueChange.emit(value);\n });\n }\n });\n }\n /**\n * Load question details for all items in the state\n */\n async loadQuestionDetailsForState(state) {\n const questionIds = new Set();\n // Collect all question bank item IDs\n state.sections.forEach((section) => {\n section.items.forEach((item) => {\n if (item.questionBankItemId && !item.question) {\n questionIds.add(item.questionBankItemId);\n }\n });\n });\n if (questionIds.size === 0)\n return;\n // Load all questions in parallel\n const questionPromises = Array.from(questionIds).map((id) => this.questionBankService.getOne(id).catch(() => null));\n const questions = await Promise.all(questionPromises);\n // Create a map of question ID to question data\n const questionMap = new Map();\n questions.forEach((q) => {\n if (q) {\n questionMap.set(q.id, q);\n }\n });\n // Update state with question details\n this.builderState.update((currentState) => ({\n ...currentState,\n sections: currentState.sections.map((section) => ({\n ...section,\n items: section.items.map((item) => {\n if (item.question)\n return item; // Already has question data\n const questionData = questionMap.get(item.questionBankItemId);\n if (questionData) {\n return {\n ...item,\n question: {\n id: questionData.id,\n title: questionData.title,\n description: questionData.description,\n difficulty: questionData.difficulty,\n scoringType: questionData.scoringType,\n },\n };\n }\n return item;\n }),\n })),\n }));\n }\n //#endregion\n //#region ---- Section Management ----\n /**\n * Helper method to update state while preventing effect loops\n * Ensures at least one section always exists\n */\n updateState(updater) {\n this.isInternalUpdate = true;\n try {\n this.builderState.update((state) => {\n const updatedState = updater(state);\n // Safety check: ensure at least one section always exists\n if (updatedState.sections.length === 0) {\n const defaultSection = createDefaultSection();\n defaultSection.order = 0;\n return {\n ...updatedState,\n sections: [defaultSection],\n };\n }\n return updatedState;\n });\n }\n finally {\n // Reset flag after current execution context\n Promise.resolve().then(() => {\n this.isInternalUpdate = false;\n });\n }\n }\n /**\n * Handle adding a new section\n */\n async handleAddSection() {\n try {\n const addTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title') || 'Add Section';\n const titleLabel = await this.translationService.translateAsync('@general:terms.common.title') || 'Title';\n const descriptionLabel = await this.translationService.translateAsync('@general:terms.common.description') || 'Description';\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(addTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n title: '',\n description: '',\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(titleLabel, (field) => {\n field.path('title');\n field.textBox({\n placeholder: 'Enter section title',\n validations: [{ rule: 'required' }],\n });\n })\n .formField(descriptionLabel, (field) => {\n field.path('description');\n field.largeTextBox({\n placeholder: 'Enter section description (optional)',\n rows: 3,\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n const newSection = createDefaultSection();\n newSection.order = this.sections().length;\n newSection.title = formData.title || 'New Section';\n newSection.description = formData.description || undefined;\n this.updateState((state) => ({\n ...state,\n sections: [...state.sections, newSection],\n }));\n // Scroll to the newly added section after DOM update\n setTimeout(() => {\n const sectionElement = document.getElementById(`section-${newSection.id}`);\n if (sectionElement) {\n sectionElement.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n }, 100);\n }\n }\n catch (error) {\n console.error('Error adding section:', error);\n }\n }\n /**\n * Handle section editing\n */\n async handleSectionEdit(section) {\n try {\n const editTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.edit-section.title') || 'Edit Section';\n const titleLabel = await this.translationService.translateAsync('@general:terms.common.title') || 'Title';\n const descriptionLabel = await this.translationService.translateAsync('@general:terms.common.description') || 'Description';\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(editTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n title: section.title || '',\n description: section.description || '',\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(titleLabel, (field) => {\n field.path('title');\n field.textBox({\n placeholder: 'Enter section title',\n validations: [{ rule: 'required' }],\n });\n })\n .formField(descriptionLabel, (field) => {\n field.path('description');\n field.largeTextBox({\n placeholder: 'Enter section description (optional)',\n rows: 3,\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n this.updateState((state) => ({\n ...state,\n sections: state.sections.map((s) => s.id === section.id\n ? {\n ...s,\n title: formData.title || s.title,\n description: formData.description !== undefined ? formData.description : s.description,\n }\n : s),\n }));\n }\n }\n catch (error) {\n console.error('Error editing section:', error);\n }\n }\n /**\n * Handle section removal\n */\n handleSectionRemove(section) {\n // Don't allow removing the last section - must always have at least one\n if (this.sections().length <= 1) {\n return;\n }\n // Remove the section and update order values\n this.updateState((state) => ({\n ...state,\n sections: state.sections\n .filter((s) => s.id !== section.id)\n .map((s, index) => ({\n ...s,\n order: index,\n })),\n }));\n }\n /**\n * Handle section drop (reordering)\n */\n handleSectionDrop(event) {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n // Update order values\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section, index) => ({\n ...section,\n order: index,\n })),\n }));\n }\n }\n //#endregion\n //#region ---- Item Management ----\n /**\n * Handle adding questions to a section\n */\n async handleAddQuestionsToSection(section) {\n try {\n const dataSource = new AXDataSource({\n key: 'id',\n pageSize: 20,\n load: async (e) => {\n const questions = await this.questionBankService.query(e);\n return {\n items: questions.items,\n total: questions.total,\n };\n },\n });\n // Create category tree data source for filtering\n const categoryTreeDataSource = {\n loadRootNodes: async () => {\n const result = await this.questionBankService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'isEmpty' },\n value: true,\n },\n });\n return result.items.map((item) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n loadChildNodes: async (parentId) => {\n const result = await this.questionBankService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'equal' },\n value: parentId,\n },\n });\n return result.items.map((item) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n searchNodes: async (searchValue) => {\n const result = await this.questionBankService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: {\n filters: [\n {\n field: 'title',\n operator: { type: 'contains' },\n value: searchValue,\n },\n {\n field: 'name',\n operator: { type: 'contains' },\n value: searchValue,\n },\n ],\n logic: 'or',\n },\n });\n return result.items.map((item) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n };\n const entity = await this.entityResolver.resolve(RootConfig.module.name, RootConfig.entities.questionBankItem.name);\n if (!entity) {\n throw new Error('Entity not found: ' + RootConfig.entities.questionBankItem.name);\n }\n const columns = entity.columns\n ?.filter((column) => entity.properties.some((property) => property.name === column.name))\n .map((column) => {\n const property = entity.properties.find((prop) => prop.name === column.name);\n return {\n name: column.name,\n title: property?.title ?? '',\n visible: column.options?.visible !== false,\n widget: {\n type: column.showAs?.type ?? property?.schema?.interface?.type ?? 'text-editor',\n options: column.showAs?.options ?? property?.schema?.interface?.options ?? {},\n },\n };\n }) || [];\n // Translate titles\n const selectQuestionsTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.select-questions') || 'Select Questions from Question Bank';\n const categoriesTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.categories') || 'Categories';\n const titleLabel = await this.translationService.translateAsync('@general:terms.common.title') || 'Title';\n const descriptionLabel = await this.translationService.translateAsync('@general:terms.common.description') || 'Description';\n // Open data selector with category filter\n const result = await this.dataSelectorService.openWithCategoryFilter({\n title: selectQuestionsTitle,\n dataSource: dataSource,\n columns: columns,\n selectionMode: 'multiple',\n searchFields: [\n { name: 'title', title: titleLabel },\n { name: 'description', title: descriptionLabel },\n ],\n allowCreate: false,\n }, {\n title: categoriesTitle,\n dataSource: categoryTreeDataSource,\n filterField: 'categoryIds',\n filterOperator: 'contains',\n width: '350px',\n });\n // Add selected questions to the section\n if (result?.items && result.items.length > 0) {\n // Load full question details for each selected item\n const questionPromises = result.items.map((item) => this.questionBankService.getOne(item.id).catch(() => null));\n const questions = await Promise.all(questionPromises);\n const newItems = result.items.map((item, index) => {\n const fullQuestion = questions[index];\n return {\n id: AXPDataGenerator.uuid(),\n questionBankItemId: item.id,\n order: section.items.length + index,\n isRequired: false,\n visibilityCondition: undefined,\n requiredCondition: undefined,\n scoringOverride: undefined,\n isNewlyAdded: true,\n question: fullQuestion\n ? {\n id: fullQuestion.id,\n title: fullQuestion.title,\n description: fullQuestion.description,\n difficulty: fullQuestion.difficulty,\n scoringType: fullQuestion.scoringType,\n }\n : {\n id: item.id,\n title: item.title || 'Question',\n description: item.description,\n difficulty: item.difficulty,\n scoringType: item.scoringType,\n },\n };\n });\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((s) => s.id === section.id\n ? {\n ...s,\n items: [...s.items, ...newItems],\n }\n : s),\n }));\n }\n }\n catch (error) {\n console.error('Error loading questions:', error);\n }\n }\n /**\n * Handle item removal\n */\n handleItemRemove(item, sectionId) {\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id !== sectionId)\n return section;\n // Hard delete - remove item from array\n return {\n ...section,\n items: section.items.filter((i) => i.id !== item.id).map((item, index) => ({\n ...item,\n order: index,\n })),\n };\n }),\n }));\n }\n /**\n * Handle question item editing (settings)\n */\n async handleItemEdit(item, sectionId) {\n try {\n // Load full question details to get default scoring values\n const questionDetails = item.questionBankItemId\n ? await this.questionBankService.getOne(item.questionBankItemId).catch(() => null)\n : null;\n const editTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.edit-question.title') || 'Edit Question Settings';\n const isRequiredLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.is-required.title') || 'Required';\n const visibilityConditionLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.visibility-condition.title') || 'Visibility Condition';\n const requiredConditionLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.required-condition.title') || 'Required Condition';\n const scoringPointsLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.scoring-points.title') || 'Scoring Points';\n const scoringWeightLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.scoring-weight.title') || 'Scoring Weight';\n // Get default values from question bank item or use existing override values\n const defaultScoringPoints = item.scoringOverride?.points ?? questionDetails?.points ?? '';\n const defaultScoringWeight = item.scoringOverride?.weight ?? questionDetails?.weight ?? '';\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(editTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n isRequired: item.isRequired ?? false,\n visibilityCondition: item.visibilityCondition || '',\n requiredCondition: item.requiredCondition || '',\n scoringPoints: defaultScoringPoints,\n scoringWeight: defaultScoringWeight,\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(isRequiredLabel, (field) => {\n field.path('isRequired');\n field.toggleSwitch();\n })\n .formField(visibilityConditionLabel, (field) => {\n field.path('visibilityCondition');\n field.customWidget('code-editor', {\n language: 'javascript',\n lineNumbers: true,\n height: 'min-h-48',\n });\n })\n .formField(requiredConditionLabel, (field) => {\n field.path('requiredCondition');\n field.customWidget('code-editor', {\n language: 'javascript',\n lineNumbers: true,\n height: 'min-h-48',\n });\n })\n .formField(scoringPointsLabel, (field) => {\n field.path('scoringPoints');\n field.numberBox({\n placeholder: 'Enter scoring points (optional)',\n });\n })\n .formField(scoringWeightLabel, (field) => {\n field.path('scoringWeight');\n field.numberBox({\n placeholder: 'Enter scoring weight (optional)',\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n this.updateState((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id !== sectionId)\n return section;\n return {\n ...section,\n items: section.items.map((i) => {\n if (i.id !== item.id)\n return i;\n // Build scoring override if points or weight are provided\n let scoringOverride = undefined;\n const hasPoints = formData.scoringPoints !== undefined && formData.scoringPoints !== null && formData.scoringPoints !== '';\n const hasWeight = formData.scoringWeight !== undefined && formData.scoringWeight !== null && formData.scoringWeight !== '';\n if (hasPoints || hasWeight) {\n scoringOverride = {};\n if (hasPoints) {\n scoringOverride.points = Number(formData.scoringPoints);\n }\n if (hasWeight) {\n scoringOverride.weight = Number(formData.scoringWeight);\n }\n }\n return {\n ...i,\n isRequired: formData.isRequired ?? false,\n visibilityCondition: formData.visibilityCondition || undefined,\n requiredCondition: formData.requiredCondition || undefined,\n scoringOverride: scoringOverride,\n };\n }),\n };\n }),\n }));\n }\n }\n catch (error) {\n console.error('Error editing question:', error);\n }\n }\n /**\n * Handle item drop (reordering within section or between sections)\n */\n handleItemDrop(event, targetSectionId) {\n if (event.previousContainer === event.container) {\n // Reordering within same section\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id !== targetSectionId)\n return section;\n return {\n ...section,\n items: section.items.map((item, index) => ({\n ...item,\n order: index,\n })),\n };\n }),\n }));\n }\n else {\n // Moving item between sections\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\n // Update orders for both sections\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id === targetSectionId || section.id === event.previousContainer.id) {\n return {\n ...section,\n items: section.items.map((item, index) => ({\n ...item,\n order: index,\n })),\n };\n }\n return section;\n }),\n }));\n }\n }\n /**\n * Get all section drop lists for drag-drop connectivity\n */\n getAllSectionDropLists() {\n return this.sections().map((section) => `section-${section.id}-items`);\n }\n //#endregion\n //#region ---- Display Settings ----\n /**\n * Handle opening display settings dialog\n */\n async handleSettings() {\n try {\n const settingsTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.settings.title') || 'Display Settings';\n const viewModeLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.title') || 'View Mode';\n const showProgressBarLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-progress-bar.title') || 'Show Progress Bar';\n const showTimerLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-timer.title') || 'Show Timer';\n const showSectionTitlesLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-section-titles.title') || 'Show Section Titles';\n const showQuestionNumbersLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-question-numbers.title') || 'Show Question Numbers';\n const validateBeforeNavigationLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.validate-before-navigation.title') || 'Validate Before Navigation';\n const currentSettings = this.displaySettings();\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(settingsTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n viewMode: currentSettings.viewMode || 'single-page',\n showProgressBar: currentSettings.showProgressBar ?? true,\n showTimer: currentSettings.showTimer ?? false,\n showSectionTitles: currentSettings.showSectionTitles ?? true,\n showQuestionNumbers: currentSettings.showQuestionNumbers ?? true,\n validateBeforeNavigation: currentSettings.validateBeforeNavigation ?? true,\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(viewModeLabel, (field) => {\n field.path('viewMode');\n field.selectBox({\n valueField: 'id',\n textField: 'title',\n dataSource: [\n { id: 'single-page', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.single-page' },\n { id: 'page-per-group', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.page-per-group' },\n { id: 'page-per-question', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.page-per-question' },\n { id: 'side-menu', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.side-menu' },\n ],\n });\n })\n .formField(showProgressBarLabel, (field) => {\n field.path('showProgressBar');\n field.toggleSwitch();\n })\n .formField(showTimerLabel, (field) => {\n field.path('showTimer');\n field.toggleSwitch();\n })\n .formField(showSectionTitlesLabel, (field) => {\n field.path('showSectionTitles');\n field.toggleSwitch();\n })\n .formField(showQuestionNumbersLabel, (field) => {\n field.path('showQuestionNumbers');\n field.toggleSwitch();\n })\n .formField(validateBeforeNavigationLabel, (field) => {\n field.path('validateBeforeNavigation');\n field.toggleSwitch();\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n // Extract viewMode - handle both string and object (from select box)\n let viewMode = 'single-page';\n const viewModeValue = formData.viewMode;\n if (typeof viewModeValue === 'string') {\n viewMode = viewModeValue;\n }\n else if (viewModeValue && typeof viewModeValue === 'object' && 'id' in viewModeValue) {\n viewMode = viewModeValue.id;\n }\n const newSettings = {\n viewMode: viewMode,\n showProgressBar: formData.showProgressBar ?? true,\n showTimer: formData.showTimer ?? false,\n showSectionTitles: formData.showSectionTitles ?? true,\n showQuestionNumbers: formData.showQuestionNumbers ?? true,\n validateBeforeNavigation: formData.validateBeforeNavigation ?? true,\n };\n // Update state by preserving existing question data and updating displaySettings in state\n this.updateState((state) => {\n // Update displaySettings in state directly\n const updatedState = {\n ...state,\n displaySettings: newSettings,\n };\n return updatedState;\n });\n }\n }\n catch (error) {\n console.error('Error opening settings:', error);\n }\n }\n //#endregion\n //#region ---- Preview ----\n /**\n * Open preview dialog with questionnaire viewer\n */\n async handlePreview() {\n if (this.sections().length === 0) {\n return;\n }\n try {\n const currentValue = convertStateToValue(this.builderState(), this.value() || undefined);\n // Always use the current displaySettings from the computed property to ensure preview uses latest settings\n currentValue.displaySettings = this.displaySettings();\n const previewTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title') || 'Preview';\n const result = await this.questionnaireViewerService.open({\n title: previewTitle,\n structure: currentValue,\n size: 'lg',\n });\n // Handle result if needed (answers, submitted status)\n if (result) {\n console.log('Questionnaire preview result:', result);\n }\n }\n catch (error) {\n console.error('Error opening preview:', error);\n }\n }\n /**\n * Toggle fullscreen mode using the directive\n */\n async handleFullscreen() {\n const fullscreen = this.fullscreenDirective();\n if (fullscreen) {\n await fullscreen.toggle();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMQuestionnaireBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMQuestionnaireBuilderComponent, isStandalone: true, selector: \"axm-questionnaire-builder\", inputs: { value: { classPropertyName: \"value\", publicName: \"value\", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\" }, viewQueries: [{ propertyName: \"fullscreenDirective\", first: true, predicate: [\"fullscreen\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"axm-questionnaire-builder\\\" axFullscreen #fullscreen=\\\"axFullscreen\\\">\\n <div class=\\\"__header\\\">\\n <div class=\\\"__header-left\\\">\\n <!-- Left side can be used for other actions in the future -->\\n </div>\\n <div class=\\\"__header-right\\\">\\n @if (!readonly()) {\\n\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title' | translate | async) || 'Add Section'\\\"\\n [color]=\\\"'primary'\\\" (onClick)=\\\"handleAddSection()\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-layer-group\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.settings.title' | translate | async) || 'Settings'\\\"\\n (onClick)=\\\"handleSettings()\\\">\\n <ax-icon icon=\\\"fa-light fa-gear\\\"></ax-icon>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title' | translate | async) || 'Preview'\\\"\\n [disabled]=\\\"sections().length === 0\\\" (onClick)=\\\"handlePreview()\\\">\\n <ax-icon icon=\\\"fa-light fa-eye\\\"></ax-icon>\\n </ax-button>\\n }\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.fullscreen.title' | translate | async) || 'Full Screen'\\\"\\n (onClick)=\\\"handleFullscreen()\\\">\\n <ax-icon icon=\\\"fa-light fa-expand\\\"></ax-icon>\\n </ax-button>\\n </div>\\n </div>\\n\\n <div class=\\\"__content\\\">\\n <!-- Designer Mode -->\\n <div class=\\\"__sections-container\\\" cdkDropList [cdkDropListData]=\\\"sections()\\\"\\n (cdkDropListDropped)=\\\"handleSectionDrop($event)\\\">\\n @for (section of sections(); track section.id) {\\n <div class=\\\"__section\\\" cdkDrag [id]=\\\"'section-' + section.id\\\">\\n <div class=\\\"__section-header\\\">\\n @if (!readonly()) {\\n <div class=\\\"__section-drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n <div class=\\\"__section-info\\\">\\n <h3 class=\\\"__section-title\\\">{{ section.title }}</h3>\\n @if (section.description) {\\n <p class=\\\"__section-description\\\">{{ section.description }}</p>\\n }\\n </div>\\n @if (!readonly()) {\\n <div class=\\\"__section-actions\\\">\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"'@assessment-management:questionnaires.components.questionnaire-builder.actions.add-question.title' | translate | async\\\"\\n [color]=\\\"'accent2'\\\" (onClick)=\\\"handleAddQuestionsToSection(section)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-plus\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleSectionEdit(section)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n @if (canRemoveSection()) {\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleSectionRemove(section)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n }\\n </div>\\n }\\n </div>\\n\\n <div class=\\\"__items-container\\\">\\n <div class=\\\"__items-list ax-overflow-auto\\\" cdkDropList [id]=\\\"'section-' + section.id + '-items'\\\"\\n [cdkDropListData]=\\\"section.items\\\" [cdkDropListConnectedTo]=\\\"getAllSectionDropLists()\\\"\\n (cdkDropListDropped)=\\\"handleItemDrop($event, section.id)\\\">\\n @if (section.items.length === 0) {\\n <axp-state-message icon=\\\"fa-light fa-inbox\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.title' | translate | async) || ''\\\"\\n [description]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.description' | translate | async) || ''\\\">\\n </axp-state-message>\\n } @else {\\n @for (item of section.items; track item.id) {\\n <div class=\\\"__item\\\" cdkDrag>\\n @if (!readonly()) {\\n <div class=\\\"__drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n\\n <div class=\\\"__item-content\\\">\\n <div class=\\\"__item-header\\\">\\n <div class=\\\"__item-icon\\\"\\n [class.__difficulty-easy]=\\\"item.question?.difficulty === 'easy'\\\"\\n [class.__difficulty-medium]=\\\"item.question?.difficulty === 'medium'\\\"\\n [class.__difficulty-hard]=\\\"item.question?.difficulty === 'hard'\\\">\\n <ax-icon icon=\\\"fa-light fa-question-circle\\\"></ax-icon>\\n </div>\\n <div class=\\\"__item-info\\\">\\n <h4 class=\\\"__item-title\\\">{{ item.question?.title ?? 'Question' }}</h4>\\n @if (item.question?.description) {\\n <p class=\\\"__item-description\\\">{{ item.question?.description }}</p>\\n }\\n </div>\\n <div class=\\\"__item-meta\\\">\\n @if (item.isRequired) {\\n <span class=\\\"__item-badge __required\\\">Required</span>\\n }\\n @if (item.scoringOverride) {\\n <span class=\\\"__item-badge\\\">Custom Scoring</span>\\n }\\n </div>\\n </div>\\n </div>\\n\\n @if (!readonly()) {\\n <div class=\\\"__item-actions\\\">\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleItemEdit(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleItemRemove(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n </div>\\n }\\n </div>\\n }\\n }\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n </div>\\n</div>\", styles: [\".axm-questionnaire-builder{display:flex;height:100%;width:100%;flex-direction:column}.axm-questionnaire-builder .__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-bottom-width:1px;padding:.75rem}.axm-questionnaire-builder .__header .__header-left,.axm-questionnaire-builder .__header .__header-right{display:flex;gap:.5rem}.axm-questionnaire-builder .__content{flex:1 1 0%;overflow:auto;padding:.75rem}.axm-questionnaire-builder .__sections-container{display:flex;flex-direction:column;gap:1rem}.axm-questionnaire-builder .__section{border-radius:.375rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__section .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__section .__items-container{padding:1rem}.axm-questionnaire-builder .__section .__items-container .__items-list{gap:.75rem;min-height:3rem;display:flex;flex-direction:column}.axm-questionnaire-builder .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));cursor:move;-webkit-user-select:none;user-select:none;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-questionnaire-builder .__item.__selected{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-accent2-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-accent2-lightest-surface));color:rgb(var(--ax-sys-color-on-accent2-lightest-surface));border-color:rgb(var(--ax-sys-color-border-accent2-lightest-surface))}.axm-questionnaire-builder .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab;transition:color .15s ease-in-out}.axm-questionnaire-builder .__item .__drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__item .__drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content{flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__preview-container>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.axm-questionnaire-builder .__preview-container .__preview-sections>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.axm-questionnaire-builder .__preview-container .__preview-section{border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-description{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item{display:flex;align-items:flex-start;gap:.75rem;border-radius:.375rem;border-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-icon{display:flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:.375rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));background-color:rgb(var(--ax-sys-color-primary-lightest-surface));color:rgb(var(--ax-sys-color-on-primary-lightest-surface));border-color:rgb(var(--ax-sys-color-border-primary-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info{flex:1 1 0%}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-title{margin-bottom:.25rem;font-size:1rem;line-height:1.5rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-badge{margin-top:.5rem;display:inline-block;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__items-container{padding:1rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder{position:relative;opacity:.6;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.5rem;min-height:5.5rem;transition:all .2s ease-in-out;padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__drag-handle,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-content,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-actions{opacity:0}.axm-questionnaire-builder .__section.cdk-drag-placeholder{opacity:.5;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.375rem;min-height:4rem;transition:all .2s ease-in-out}.axm-questionnaire-builder .__section.cdk-drag-placeholder>*{opacity:0}.axm-questionnaire-builder .cdk-drop-list-dragging .__item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.axm-questionnaire-builder .cdk-drop-list-dragging .__section:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.__item.cdk-drag-preview{border-radius:.5rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));display:flex;align-items:center;gap:.75rem;padding:1rem;opacity:.9;box-sizing:border-box}.__item.cdk-drag-preview .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content{flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));opacity:.9;box-sizing:border-box;background-color:var(--ax-lightest-surface)}.__section.cdk-drag-preview .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.__section.cdk-drag-preview .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.__section.cdk-drag-preview .__section-header .__section-info{flex:1 1 0%}.__section.cdk-drag-preview .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-actions{display:flex;gap:.5rem}.__section.cdk-drag-preview .__items-container{padding:1rem}.__section.cdk-drag-preview .__items-container .__items-list{gap:.75rem;display:flex;flex-direction:column}.__section.cdk-drag-preview .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__section.cdk-drag-preview .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content{flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i2.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"ngmodule\", type: AXSwitchModule }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"directive\", type: \n // CDK DragDrop modules\n CdkDropList, selector: \"[cdkDropList], cdk-drop-list\", inputs: [\"cdkDropListConnectedTo\", \"cdkDropListData\", \"cdkDropListOrientation\", \"id\", \"cdkDropListLockAxis\", \"cdkDropListDisabled\", \"cdkDropListSortingDisabled\", \"cdkDropListEnterPredicate\", \"cdkDropListSortPredicate\", \"cdkDropListAutoScrollDisabled\", \"cdkDropListAutoScrollStep\", \"cdkDropListElementContainer\", \"cdkDropListHasAnchor\"], outputs: [\"cdkDropListDropped\", \"cdkDropListEntered\", \"cdkDropListExited\", \"cdkDropListSorted\"], exportAs: [\"cdkDropList\"] }, { kind: \"directive\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: [\"cdkDragData\", \"cdkDragLockAxis\", \"cdkDragRootElement\", \"cdkDragBoundary\", \"cdkDragStartDelay\", \"cdkDragFreeDragPosition\", \"cdkDragDisabled\", \"cdkDragConstrainPosition\", \"cdkDragPreviewClass\", \"cdkDragPreviewContainer\", \"cdkDragScale\"], outputs: [\"cdkDragStarted\", \"cdkDragReleased\", \"cdkDragEnded\", \"cdkDragEntered\", \"cdkDragExited\", \"cdkDragDropped\", \"cdkDragMoved\"], exportAs: [\"cdkDrag\"] }, { kind: \"directive\", type: CdkDragHandle, selector: \"[cdkDragHandle]\", inputs: [\"cdkDragHandleDisabled\"] }, { kind: \"directive\", type: \n // Fullscreen directive\n AXFullscreenDirective, selector: \"[axFullscreen]\", outputs: [\"fullscreenChange\"], exportAs: [\"axFullscreen\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMQuestionnaireBuilderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-questionnaire-builder', changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormModule,\n AXSwitchModule,\n AXLabelModule,\n AXTranslationModule,\n AXPStateMessageComponent,\n // CDK DragDrop modules\n CdkDropList,\n CdkDrag,\n CdkDragHandle,\n // Fullscreen directive\n AXFullscreenDirective,\n ], template: \"<div class=\\\"axm-questionnaire-builder\\\" axFullscreen #fullscreen=\\\"axFullscreen\\\">\\n <div class=\\\"__header\\\">\\n <div class=\\\"__header-left\\\">\\n <!-- Left side can be used for other actions in the future -->\\n </div>\\n <div class=\\\"__header-right\\\">\\n @if (!readonly()) {\\n\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title' | translate | async) || 'Add Section'\\\"\\n [color]=\\\"'primary'\\\" (onClick)=\\\"handleAddSection()\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-layer-group\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.settings.title' | translate | async) || 'Settings'\\\"\\n (onClick)=\\\"handleSettings()\\\">\\n <ax-icon icon=\\\"fa-light fa-gear\\\"></ax-icon>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title' | translate | async) || 'Preview'\\\"\\n [disabled]=\\\"sections().length === 0\\\" (onClick)=\\\"handlePreview()\\\">\\n <ax-icon icon=\\\"fa-light fa-eye\\\"></ax-icon>\\n </ax-button>\\n }\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.fullscreen.title' | translate | async) || 'Full Screen'\\\"\\n (onClick)=\\\"handleFullscreen()\\\">\\n <ax-icon icon=\\\"fa-light fa-expand\\\"></ax-icon>\\n </ax-button>\\n </div>\\n </div>\\n\\n <div class=\\\"__content\\\">\\n <!-- Designer Mode -->\\n <div class=\\\"__sections-container\\\" cdkDropList [cdkDropListData]=\\\"sections()\\\"\\n (cdkDropListDropped)=\\\"handleSectionDrop($event)\\\">\\n @for (section of sections(); track section.id) {\\n <div class=\\\"__section\\\" cdkDrag [id]=\\\"'section-' + section.id\\\">\\n <div class=\\\"__section-header\\\">\\n @if (!readonly()) {\\n <div class=\\\"__section-drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n <div class=\\\"__section-info\\\">\\n <h3 class=\\\"__section-title\\\">{{ section.title }}</h3>\\n @if (section.description) {\\n <p class=\\\"__section-description\\\">{{ section.description }}</p>\\n }\\n </div>\\n @if (!readonly()) {\\n <div class=\\\"__section-actions\\\">\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"'@assessment-management:questionnaires.components.questionnaire-builder.actions.add-question.title' | translate | async\\\"\\n [color]=\\\"'accent2'\\\" (onClick)=\\\"handleAddQuestionsToSection(section)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-plus\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleSectionEdit(section)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n @if (canRemoveSection()) {\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleSectionRemove(section)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n }\\n </div>\\n }\\n </div>\\n\\n <div class=\\\"__items-container\\\">\\n <div class=\\\"__items-list ax-overflow-auto\\\" cdkDropList [id]=\\\"'section-' + section.id + '-items'\\\"\\n [cdkDropListData]=\\\"section.items\\\" [cdkDropListConnectedTo]=\\\"getAllSectionDropLists()\\\"\\n (cdkDropListDropped)=\\\"handleItemDrop($event, section.id)\\\">\\n @if (section.items.length === 0) {\\n <axp-state-message icon=\\\"fa-light fa-inbox\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.title' | translate | async) || ''\\\"\\n [description]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.description' | translate | async) || ''\\\">\\n </axp-state-message>\\n } @else {\\n @for (item of section.items; track item.id) {\\n <div class=\\\"__item\\\" cdkDrag>\\n @if (!readonly()) {\\n <div class=\\\"__drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n\\n <div class=\\\"__item-content\\\">\\n <div class=\\\"__item-header\\\">\\n <div class=\\\"__item-icon\\\"\\n [class.__difficulty-easy]=\\\"item.question?.difficulty === 'easy'\\\"\\n [class.__difficulty-medium]=\\\"item.question?.difficulty === 'medium'\\\"\\n [class.__difficulty-hard]=\\\"item.question?.difficulty === 'hard'\\\">\\n <ax-icon icon=\\\"fa-light fa-question-circle\\\"></ax-icon>\\n </div>\\n <div class=\\\"__item-info\\\">\\n <h4 class=\\\"__item-title\\\">{{ item.question?.title ?? 'Question' }}</h4>\\n @if (item.question?.description) {\\n <p class=\\\"__item-description\\\">{{ item.question?.description }}</p>\\n }\\n </div>\\n <div class=\\\"__item-meta\\\">\\n @if (item.isRequired) {\\n <span class=\\\"__item-badge __required\\\">Required</span>\\n }\\n @if (item.scoringOverride) {\\n <span class=\\\"__item-badge\\\">Custom Scoring</span>\\n }\\n </div>\\n </div>\\n </div>\\n\\n @if (!readonly()) {\\n <div class=\\\"__item-actions\\\">\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleItemEdit(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleItemRemove(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n </div>\\n }\\n </div>\\n }\\n }\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n </div>\\n</div>\", styles: [\".axm-questionnaire-builder{display:flex;height:100%;width:100%;flex-direction:column}.axm-questionnaire-builder .__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-bottom-width:1px;padding:.75rem}.axm-questionnaire-builder .__header .__header-left,.axm-questionnaire-builder .__header .__header-right{display:flex;gap:.5rem}.axm-questionnaire-builder .__content{flex:1 1 0%;overflow:auto;padding:.75rem}.axm-questionnaire-builder .__sections-container{display:flex;flex-direction:column;gap:1rem}.axm-questionnaire-builder .__section{border-radius:.375rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__section .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__section .__items-container{padding:1rem}.axm-questionnaire-builder .__section .__items-container .__items-list{gap:.75rem;min-height:3rem;display:flex;flex-direction:column}.axm-questionnaire-builder .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));cursor:move;-webkit-user-select:none;user-select:none;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-questionnaire-builder .__item.__selected{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-accent2-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-accent2-lightest-surface));color:rgb(var(--ax-sys-color-on-accent2-lightest-surface));border-color:rgb(var(--ax-sys-color-border-accent2-lightest-surface))}.axm-questionnaire-builder .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab;transition:color .15s ease-in-out}.axm-questionnaire-builder .__item .__drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__item .__drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content{flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__preview-container>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.axm-questionnaire-builder .__preview-container .__preview-sections>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.axm-questionnaire-builder .__preview-container .__preview-section{border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-description{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item{display:flex;align-items:flex-start;gap:.75rem;border-radius:.375rem;border-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-icon{display:flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:.375rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));background-color:rgb(var(--ax-sys-color-primary-lightest-surface));color:rgb(var(--ax-sys-color-on-primary-lightest-surface));border-color:rgb(var(--ax-sys-color-border-primary-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info{flex:1 1 0%}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-title{margin-bottom:.25rem;font-size:1rem;line-height:1.5rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-badge{margin-top:.5rem;display:inline-block;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__items-container{padding:1rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder{position:relative;opacity:.6;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.5rem;min-height:5.5rem;transition:all .2s ease-in-out;padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__drag-handle,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-content,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-actions{opacity:0}.axm-questionnaire-builder .__section.cdk-drag-placeholder{opacity:.5;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.375rem;min-height:4rem;transition:all .2s ease-in-out}.axm-questionnaire-builder .__section.cdk-drag-placeholder>*{opacity:0}.axm-questionnaire-builder .cdk-drop-list-dragging .__item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.axm-questionnaire-builder .cdk-drop-list-dragging .__section:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.__item.cdk-drag-preview{border-radius:.5rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));display:flex;align-items:center;gap:.75rem;padding:1rem;opacity:.9;box-sizing:border-box}.__item.cdk-drag-preview .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content{flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));opacity:.9;box-sizing:border-box;background-color:var(--ax-lightest-surface)}.__section.cdk-drag-preview .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.__section.cdk-drag-preview .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.__section.cdk-drag-preview .__section-header .__section-info{flex:1 1 0%}.__section.cdk-drag-preview .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-actions{display:flex;gap:.5rem}.__section.cdk-drag-preview .__items-container{padding:1rem}.__section.cdk-drag-preview .__items-container .__items-list{gap:.75rem;display:flex;flex-direction:column}.__section.cdk-drag-preview .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__section.cdk-drag-preview .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content{flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: \"value\", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: \"readonly\", required: false }] }], valueChange: [{ type: i0.Output, args: [\"valueChange\"] }], fullscreenDirective: [{ type: i0.ViewChild, args: ['fullscreen', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9xdWVzdGlvbm5haXJlLWJ1aWxkZXIvcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9xdWVzdGlvbm5haXJlLWJ1aWxkZXIvcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLE9BQU8sRUFBZSxhQUFhLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUs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LEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQjtRQUNsQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM5QyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNMLENBQUM7K0dBM2hDUSxnQ0FBZ0M7bUdBQWhDLGdDQUFnQyxzZ0JDbkU3Qyw0alFBMklNLCtweEJEMUZFLFlBQVksOEJBQ1osV0FBVyw4QkFDWCxjQUFjLDZYQUNkLGlCQUFpQixzVkFDakIsZ0JBQWdCLDhCQUNoQixZQUFZLDhCQUNaLGNBQWMsOEJBQ2QsYUFBYSw4QkFDYixtQkFBbUIsK0JBQ25CLHdCQUF3QjtnQkFDeEIsdUJBQXVCO2dCQUN2QixXQUFXLHNoQkFDWCxPQUFPLHdjQUNQLGFBQWE7Z0JBQ2IsdUJBQXVCO2dCQUN2QixxQkFBcUI7OzRGQUdoQixnQ0FBZ0M7a0JBeEI1QyxTQUFTOytCQUNJLDJCQUEyQixtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQix3QkFBd0I7d0JBQ3hCLHVCQUF1Qjt3QkFDdkIsV0FBVzt3QkFDWCxPQUFPO3dCQUNQLGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2QixxQkFBcUI7cUJBQ3hCO2dXQWlEeUUsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWEZvcm1Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgeyBBWFN3aXRjaE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zd2l0Y2gnO1xuaW1wb3J0IHsgQVhMYWJlbE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sYWJlbCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlLCBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBTdGF0ZU1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcmFnSGFuZGxlLCBDZGtEcm9wTGlzdCwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFYRGF0YVNvdXJjZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGlhbG9nJztcbmltcG9ydCB7IEFYUEVudGl0eSwgQVhQRW50aXR5UHJvcGVydHksIEFYUEVudGl0eVRhYmxlQ29sdW1uIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQQ2F0ZWdvcnlUcmVlRGF0YVNvdXJjZSwgQVhQRGF0YVNlbGVjdG9yU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQRW50aXR5RGVmaW5pdGlvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIHVudHJhY2tlZCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbkJhbmtJdGVtU2VydmljZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3F1ZXN0aW9uLWJhbmstaXRlbS9xdWVzdGlvbi1iYW5rLWl0ZW0uc2VydmljZSc7XG5pbXBvcnQge1xuICAgIFF1ZXN0aW9ubmFpcmVCdWlsZGVySXRlbSxcbiAgICBRdWVzdGlvbm5haXJlQnVpbGRlclNlY3Rpb24sXG4gICAgUXVlc3Rpb25uYWlyZUJ1aWxkZXJTdGF0ZSxcbiAgICBRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlLFxuICAgIFF1ZXN0aW9ubmFpcmVEaXNwbGF5U2V0dGluZ3MsXG4gICAgY29udmVydFN0YXRlVG9WYWx1ZSxcbiAgICBjb252ZXJ0VmFsdWVUb1N0YXRlLFxuICAgIGNyZWF0ZURlZmF1bHRTZWN0aW9uLFxufSBmcm9tICcuL3F1ZXN0aW9ubmFpcmUtYnVpbGRlci50eXBlcyc7XG5pbXBvcnQgeyBBWFBEYXRhR2VuZXJhdG9yLCBBWEZ1bGxzY3JlZW5EaXJlY3RpdmUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhNUXVlc3Rpb25uYWlyZVZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi9xdWVzdGlvbm5haXJlLXZpZXdlci9xdWVzdGlvbm5haXJlLXZpZXdlci5zZXJ2aWNlJztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29tcG9uZW50ICAgLS0tLVxuXG4vKipcbiAqIFJldXNhYmxlIFF1ZXN0aW9ubmFpcmUgQnVpbGRlciBDb21wb25lbnRcbiAqIENhbiBiZSB1c2VkIGJvdGggaW4gZGlhbG9nIGFuZCBpbmxpbmUgY29udGV4dHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheG0tcXVlc3Rpb25uYWlyZS1idWlsZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgICAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICAgICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICAgICAgQVhGb3JtTW9kdWxlLFxuICAgICAgICBBWFN3aXRjaE1vZHVsZSxcbiAgICAgICAgQVhMYWJlbE1vZHVsZSxcbiAgICAgICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICAgICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICAgICAgICAvLyBDREsgRHJhZ0Ryb3AgbW9kdWxlc1xuICAgICAgICBDZGtEcm9wTGlzdCxcbiAgICAgICAgQ2RrRHJhZyxcbiAgICAgICAgQ2RrRHJhZ0hhbmRsZSxcbiAgICAgICAgLy8gRnVsbHNjcmVlbiBkaXJlY3RpdmVcbiAgICAgICAgQVhGdWxsc2NyZWVuRGlyZWN0aXZlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVF1ZXN0aW9ubmFpcmVCdWlsZGVyQ29tcG9uZW50IHtcbiAgICAvLyNyZWdpb24gLS0tLSAgIFNlcnZpY2VzICYgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gICAgcHJvdGVjdGVkIGRhdGFTZWxlY3RvclNlcnZpY2UgPSBpbmplY3QoQVhQRGF0YVNlbGVjdG9yU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIHF1ZXN0aW9uQmFua1NlcnZpY2UgPSBpbmplY3QoQVhNUXVlc3Rpb25CYW5rSXRlbVNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCBlbnRpdHlSZXNvbHZlciA9IGluamVjdChBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZSA9IGluamVjdChBWERpYWxvZ1NlcnZpY2UpO1xuICAgIHByb3RlY3RlZCB0cmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCBsYXlvdXRCdWlsZGVyID0gaW5qZWN0KEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgcXVlc3Rpb25uYWlyZVZpZXdlclNlcnZpY2UgPSBpbmplY3QoQVhNUXVlc3Rpb25uYWlyZVZpZXdlclNlcnZpY2UpO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIElucHV0cyAmIE91dHB1dHMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsIHZhbHVlIChRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlKVxuICAgICAqL1xuICAgIHZhbHVlID0gaW5wdXQ8UXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqXG4gICAgICogUmVhZG9ubHkgbW9kZVxuICAgICAqL1xuICAgIHJlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICogVmFsdWUgY2hhbmdlIGV2ZW50XG4gICAgICovXG4gICAgdmFsdWVDaGFuZ2UgPSBvdXRwdXQ8UXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZT4oKTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBDbGFzcyBQcm9wZXJ0aWVzICAgLS0tLVxuXG4gICAgLy8gRGVzaWduZXIgc3RhdGUgbWFuYWdlbWVudCAtIGFsd2F5cyBzdGFydCB3aXRoIGF0IGxlYXN0IG9uZSBkZWZhdWx0IHNlY3Rpb25cbiAgICBwcm90ZWN0ZWQgYnVpbGRlclN0YXRlID0gc2lnbmFsPFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGU+KHtcbiAgICAgICAgc2VjdGlvbnM6IFtjcmVhdGVEZWZhdWx0U2VjdGlvbigpXSxcbiAgICB9KTtcblxuICAgIC8vIFNlbGVjdGVkIGl0ZW0gdHJhY2tpbmdcbiAgICBwcm90ZWN0ZWQgc2VsZWN0ZWRJdGVtSWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gICAgcHJvdGVjdGVkIHNlbGVjdGVkU2VjdGlvbklkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gICAgLy8gVHJhY2sgaWYgd2UncmUgbWFraW5nIGludGVybmFsIHVwZGF0ZXMgdG8gcHJldmVudCBlZmZlY3QgbG9vcHNcbiAgICBwcml2YXRlIGlzSW50ZXJuYWxVcGRhdGUgPSBmYWxzZTtcblxuICAgIC8vIEZ1bGxzY3JlZW4gZGlyZWN0aXZlIHJlZmVyZW5jZVxuICAgIHByb3RlY3RlZCByZWFkb25seSBmdWxsc2NyZWVuRGlyZWN0aXZlID0gdmlld0NoaWxkPEFYRnVsbHNjcmVlbkRpcmVjdGl2ZT4oJ2Z1bGxzY3JlZW4nKTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBMaWZlY3ljbGUgICAtLS0tXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8gVHJhY2sgbGFzdCBlbWl0dGVkIHZhbHVlIHRvIHByZXZlbnQgY2lyY3VsYXIgdXBkYXRlc1xuICAgICAgICBsZXQgbGFzdEVtaXR0ZWRWYWx1ZTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIC8vIFN5bmMgdmFsdWUgaW5wdXQgdG8gc3RhdGUgKG9ubHkgd2hlbiB2YWx1ZSBjaGFuZ2VzIGV4dGVybmFsbHkpXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnZhbHVlKCk7XG4gICAgICAgICAgICBpZiAodmFsICE9PSBudWxsICYmIHZhbCAhPT0gdW5kZWZpbmVkICYmICF0aGlzLmlzSW50ZXJuYWxVcGRhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB1bnRyYWNrZWQoKCkgPT4gdGhpcy5idWlsZGVyU3RhdGUoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY29udmVydFN0YXRlVG9WYWx1ZShjdXJyZW50U3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgLy8gT25seSB1cGRhdGUgaWYgdGhlIHZhbHVlIGFjdHVhbGx5IGNoYW5nZWQgYW5kIGl0J3MgZGlmZmVyZW50IGZyb20gd2hhdCB3ZSBsYXN0IGVtaXR0ZWRcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxTdHIgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdHIgPSBKU09OLnN0cmluZ2lmeShjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFbWl0dGVkU3RyID0gbGFzdEVtaXR0ZWRWYWx1ZSA/IEpTT04uc3RyaW5naWZ5KGxhc3RFbWl0dGVkVmFsdWUpIDogbnVsbDtcblxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBvbmx5IGlmOlxuICAgICAgICAgICAgICAgIC8vIDEuIFRoZSBpbmNvbWluZyB2YWx1ZSBpcyBkaWZmZXJlbnQgZnJvbSBjdXJyZW50IHN0YXRlIHZhbHVlXG4gICAgICAgICAgICAgICAgLy8gMi4gQU5EIGl0J3Mgbm90IHRoZSB2YWx1ZSB3ZSBqdXN0IGVtaXR0ZWQgKHByZXZlbnQgY2lyY3VsYXIgdXBkYXRlcylcbiAgICAgICAgICAgICAgICBpZiAodmFsU3RyICE9PSBjdXJyZW50U3RyICYmIHZhbFN0ciAhPT0gbGFzdEVtaXR0ZWRTdHIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBjb252ZXJ0VmFsdWVUb1N0YXRlKHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkZXJTdGF0ZS5zZXQobmV3U3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTG9hZCBxdWVzdGlvbiBkZXRhaWxzIGZvciBhbGwgaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZFF1ZXN0aW9uRGV0YWlsc0ZvclN0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICgodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSAmJiAhdGhpcy5pc0ludGVybmFsVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdmFsdWUgaXMgbnVsbC91bmRlZmluZWQsIGVuc3VyZSB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBkZWZhdWx0IHNlY3Rpb25cbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB1bnRyYWNrZWQoKCkgPT4gdGhpcy5idWlsZGVyU3RhdGUoKSk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZS5zZWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdFNlY3Rpb24gPSBjcmVhdGVEZWZhdWx0U2VjdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0U2VjdGlvbi5vcmRlciA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkZXJTdGF0ZS5zZXQoeyBzZWN0aW9uczogW2RlZmF1bHRTZWN0aW9uXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTeW5jIHN0YXRlIGNoYW5nZXMgdG8gb3V0cHV0XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuYnVpbGRlclN0YXRlKCk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlKCk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbnZlcnRTdGF0ZVRvVmFsdWUoc3RhdGUsIGN1cnJlbnRWYWx1ZSB8fCB1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICAvLyBQcmV2ZW50IGNpcmN1bGFyIHVwZGF0ZXNcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0ludGVybmFsVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdEVtaXR0ZWRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIHF1ZXN0aW9uIGRldGFpbHMgZm9yIGFsbCBpdGVtcyBpbiB0aGUgc3RhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIGxvYWRRdWVzdGlvbkRldGFpbHNGb3JTdGF0ZShzdGF0ZTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJTdGF0ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBxdWVzdGlvbklkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgIC8vIENvbGxlY3QgYWxsIHF1ZXN0aW9uIGJhbmsgaXRlbSBJRHNcbiAgICAgICAgc3RhdGUuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgICAgICAgc2VjdGlvbi5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ucXVlc3Rpb25CYW5rSXRlbUlkICYmICFpdGVtLnF1ZXN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uSWRzLmFkZChpdGVtLnF1ZXN0aW9uQmFua0l0ZW1JZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChxdWVzdGlvbklkcy5zaXplID09PSAwKSByZXR1cm47XG5cbiAgICAgICAgLy8gTG9hZCBhbGwgcXVlc3Rpb25zIGluIHBhcmFsbGVsXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uUHJvbWlzZXMgPSBBcnJheS5mcm9tKHF1ZXN0aW9uSWRzKS5tYXAoKGlkKSA9PlxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvbkJhbmtTZXJ2aWNlLmdldE9uZShpZCkuY2F0Y2goKCkgPT4gbnVsbCksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9ucyA9IGF3YWl0IFByb21pc2UuYWxsKHF1ZXN0aW9uUHJvbWlzZXMpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBhIG1hcCBvZiBxdWVzdGlvbiBJRCB0byBxdWVzdGlvbiBkYXRhXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICAgICAgcXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICAgICAgICAgIGlmIChxKSB7XG4gICAgICAgICAgICAgICAgcXVlc3Rpb25NYXAuc2V0KHEuaWQsIHEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBVcGRhdGUgc3RhdGUgd2l0aCBxdWVzdGlvbiBkZXRhaWxzXG4gICAgICAgIHRoaXMuYnVpbGRlclN0YXRlLnVwZGF0ZSgoY3VycmVudFN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgLi4uY3VycmVudFN0YXRlLFxuICAgICAgICAgICAgc2VjdGlvbnM6IGN1cnJlbnRTdGF0ZS5zZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc2VjdGlvbixcbiAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbi5pdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ucXVlc3Rpb24pIHJldHVybiBpdGVtOyAvLyBBbHJlYWR5IGhhcyBxdWVzdGlvbiBkYXRhXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25EYXRhID0gcXVlc3Rpb25NYXAuZ2V0KGl0ZW0ucXVlc3Rpb25CYW5rSXRlbUlkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXN0aW9uRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBxdWVzdGlvbkRhdGEuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBxdWVzdGlvbkRhdGEudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBxdWVzdGlvbkRhdGEuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZpY3VsdHk6IHF1ZXN0aW9uRGF0YS5kaWZmaWN1bHR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nVHlwZTogcXVlc3Rpb25EYXRhLnNjb3JpbmdUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgQ29tcHV0ZWQgUHJvcGVydGllcyAgIC0tLS1cblxuXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCBzZWN0aW9ucyBmb3IgcmVuZGVyaW5nXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNlY3Rpb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5idWlsZGVyU3RhdGUoKS5zZWN0aW9ucyk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBjYW4gcmVtb3ZlIHNlY3Rpb24gKG11c3QgaGF2ZSBhdCBsZWFzdCAxIHNlY3Rpb24pXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNhblJlbW92ZVNlY3Rpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlY3Rpb25zKCkubGVuZ3RoID4gMSk7XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY3VycmVudCBkaXNwbGF5IHNldHRpbmdzIGZyb20gc3RhdGUgb3IgZGVmYXVsdFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBkaXNwbGF5U2V0dGluZ3MgPSBjb21wdXRlZDxRdWVzdGlvbm5haXJlRGlzcGxheVNldHRpbmdzPigoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5idWlsZGVyU3RhdGUoKTtcbiAgICAgICAgaWYgKHN0YXRlLmRpc3BsYXlTZXR0aW5ncykge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmRpc3BsYXlTZXR0aW5ncztcbiAgICAgICAgfVxuICAgICAgICAvLyBGYWxsYmFjayB0byB2YWx1ZSBpZiBzdGF0ZSBkb2Vzbid0IGhhdmUgaXRcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY29udmVydFN0YXRlVG9WYWx1ZShzdGF0ZSwgdGhpcy52YWx1ZSgpIHx8IHVuZGVmaW5lZCk7XG4gICAgICAgIHJldHVybiBjdXJyZW50VmFsdWUuZGlzcGxheVNldHRpbmdzIHx8IHtcbiAgICAgICAgICAgIHZpZXdNb2RlOiAnc2luZ2xlLXBhZ2UnIGFzIGNvbnN0LFxuICAgICAgICAgICAgc2hvd1Byb2dyZXNzQmFyOiB0cnVlLFxuICAgICAgICAgICAgc2hvd1RpbWVyOiBmYWxzZSxcbiAgICAgICAgICAgIHNob3dTZWN0aW9uVGl0bGVzOiB0cnVlLFxuICAgICAgICAgICAgc2hvd1F1ZXN0aW9uTnVtYmVyczogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICB9KTtcblxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFNlY3Rpb24gTWFuYWdlbWVudCAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIEhlbHBlciBtZXRob2QgdG8gdXBkYXRlIHN0YXRlIHdoaWxlIHByZXZlbnRpbmcgZWZmZWN0IGxvb3BzXG4gICAgICogRW5zdXJlcyBhdCBsZWFzdCBvbmUgc2VjdGlvbiBhbHdheXMgZXhpc3RzXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVTdGF0ZSh1cGRhdGVyOiAoc3RhdGU6IFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUpID0+IFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0ludGVybmFsVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRlclN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkU3RhdGUgPSB1cGRhdGVyKHN0YXRlKTtcbiAgICAgICAgICAgICAgICAvLyBTYWZldHkgY2hlY2s6IGVuc3VyZSBhdCBsZWFzdCBvbmUgc2VjdGlvbiBhbHdheXMgZXhpc3RzXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRTdGF0ZS5zZWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdFNlY3Rpb24gPSBjcmVhdGVEZWZhdWx0U2VjdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0U2VjdGlvbi5vcmRlciA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi51cGRhdGVkU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogW2RlZmF1bHRTZWN0aW9uXSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRTdGF0ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgLy8gUmVzZXQgZmxhZyBhZnRlciBjdXJyZW50IGV4ZWN1dGlvbiBjb250ZXh0XG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzSW50ZXJuYWxVcGRhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGFkZGluZyBhIG5ldyBzZWN0aW9uXG4gICAgICovXG4gICAgYXN5bmMgaGFuZGxlQWRkU2VjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGFkZFRpdGxlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5hZGQtc2VjdGlvbi50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ0FkZCBTZWN0aW9uJztcblxuICAgICAgICAgICAgY29uc3QgdGl0bGVMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAZ2VuZXJhbDp0ZXJtcy5jb21tb24udGl0bGUnXG4gICAgICAgICAgICApIHx8ICdUaXRsZSc7XG5cbiAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGdlbmVyYWw6dGVybXMuY29tbW9uLmRlc2NyaXB0aW9uJ1xuICAgICAgICAgICAgKSB8fCAnRGVzY3JpcHRpb24nO1xuXG4gICAgICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSBhd2FpdCB0aGlzLmxheW91dEJ1aWxkZXJcbiAgICAgICAgICAgICAgICAuY3JlYXRlKClcbiAgICAgICAgICAgICAgICAuZGlhbG9nKChkaWFsb2cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0VGl0bGUoYWRkVGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0U2l6ZSgnbWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldENsb3NlQnV0dG9uKHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0Q29udGV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY29udGVudCgobGF5b3V0QnVpbGRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dEJ1aWxkZXIuZmxleCgoZmxleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0RGlyZWN0aW9uKCdjb2x1bW4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldEdhcCgnMTZweCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHRpdGxlTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3RpdGxlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudGV4dEJveCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgc2VjdGlvbiB0aXRsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25zOiBbeyBydWxlOiAncmVxdWlyZWQnIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtRmllbGQoZGVzY3JpcHRpb25MYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgnZGVzY3JpcHRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5sYXJnZVRleHRCb3goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHNlY3Rpb24gZGVzY3JpcHRpb24gKG9wdGlvbmFsKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M6IDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0QWN0aW9ucygoYWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhbmNlbCgnQGdlbmVyYWw6YWN0aW9ucy5jYW5jZWwudGl0bGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3VibWl0KCdAZ2VuZXJhbDphY3Rpb25zLnNhdmUudGl0bGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnNob3coKTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBkaWFsb2dSZWYuY29udGV4dCgpO1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gYXdhaXQgZGlhbG9nUmVmLmFjdGlvbigpO1xuICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XG5cbiAgICAgICAgICAgIGlmIChhY3Rpb24gIT09ICdjYW5jZWwnICYmIGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3U2VjdGlvbiA9IGNyZWF0ZURlZmF1bHRTZWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgbmV3U2VjdGlvbi5vcmRlciA9IHRoaXMuc2VjdGlvbnMoKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgbmV3U2VjdGlvbi50aXRsZSA9IGZvcm1EYXRhLnRpdGxlIHx8ICdOZXcgU2VjdGlvbic7XG4gICAgICAgICAgICAgICAgbmV3U2VjdGlvbi5kZXNjcmlwdGlvbiA9IGZvcm1EYXRhLmRlc2NyaXB0aW9uIHx8IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoKHN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnM6IFsuLi5zdGF0ZS5zZWN0aW9ucywgbmV3U2VjdGlvbl0sXG4gICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgLy8gU2Nyb2xsIHRvIHRoZSBuZXdseSBhZGRlZCBzZWN0aW9uIGFmdGVyIERPTSB1cGRhdGVcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgc2VjdGlvbi0ke25ld1NlY3Rpb24uaWR9YCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbkVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhZGRpbmcgc2VjdGlvbjonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgc2VjdGlvbiBlZGl0aW5nXG4gICAgICovXG4gICAgYXN5bmMgaGFuZGxlU2VjdGlvbkVkaXQoc2VjdGlvbjogUXVlc3Rpb25uYWlyZUJ1aWxkZXJTZWN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBlZGl0VGl0bGUgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5hY3Rpb25zLmVkaXQtc2VjdGlvbi50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ0VkaXQgU2VjdGlvbic7XG5cbiAgICAgICAgICAgIGNvbnN0IHRpdGxlTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGdlbmVyYWw6dGVybXMuY29tbW9uLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnVGl0bGUnO1xuXG4gICAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbkxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0BnZW5lcmFsOnRlcm1zLmNvbW1vbi5kZXNjcmlwdGlvbidcbiAgICAgICAgICAgICkgfHwgJ0Rlc2NyaXB0aW9uJztcblxuICAgICAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gYXdhaXQgdGhpcy5sYXlvdXRCdWlsZGVyXG4gICAgICAgICAgICAgICAgLmNyZWF0ZSgpXG4gICAgICAgICAgICAgICAgLmRpYWxvZygoZGlhbG9nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZ1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFRpdGxlKGVkaXRUaXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRTaXplKCdtZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0Q2xvc2VCdXR0b24odHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRDb250ZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc2VjdGlvbi5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY29udGVudCgobGF5b3V0QnVpbGRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dEJ1aWxkZXIuZmxleCgoZmxleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0RGlyZWN0aW9uKCdjb2x1bW4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldEdhcCgnMTZweCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHRpdGxlTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3RpdGxlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudGV4dEJveCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgc2VjdGlvbiB0aXRsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25zOiBbeyBydWxlOiAncmVxdWlyZWQnIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtRmllbGQoZGVzY3JpcHRpb25MYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgnZGVzY3JpcHRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5sYXJnZVRleHRCb3goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHNlY3Rpb24gZGVzY3JpcHRpb24gKG9wdGlvbmFsKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M6IDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0QWN0aW9ucygoYWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhbmNlbCgnQGdlbmVyYWw6YWN0aW9ucy5jYW5jZWwudGl0bGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3VibWl0KCdAZ2VuZXJhbDphY3Rpb25zLnNhdmUudGl0bGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnNob3coKTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBkaWFsb2dSZWYuY29udGV4dCgpO1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gYXdhaXQgZGlhbG9nUmVmLmFjdGlvbigpO1xuICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XG5cbiAgICAgICAgICAgIGlmIChhY3Rpb24gIT09ICdjYW5jZWwnICYmIGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnMubWFwKChzKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgcy5pZCA9PT0gc2VjdGlvbi5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZm9ybURhdGEudGl0bGUgfHwgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGZvcm1EYXRhLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQgPyBmb3JtRGF0YS5kZXNjcmlwdGlvbiA6IHMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGVkaXRpbmcgc2VjdGlvbjonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgc2VjdGlvbiByZW1vdmFsXG4gICAgICovXG4gICAgaGFuZGxlU2VjdGlvblJlbW92ZShzZWN0aW9uOiBRdWVzdGlvbm5haXJlQnVpbGRlclNlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgLy8gRG9uJ3QgYWxsb3cgcmVtb3ZpbmcgdGhlIGxhc3Qgc2VjdGlvbiAtIG11c3QgYWx3YXlzIGhhdmUgYXQgbGVhc3Qgb25lXG4gICAgICAgIGlmICh0aGlzLnNlY3Rpb25zKCkubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgc2VjdGlvbiBhbmQgdXBkYXRlIG9yZGVyIHZhbHVlc1xuICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgc2VjdGlvbnM6IHN0YXRlLnNlY3Rpb25zXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocykgPT4gcy5pZCAhPT0gc2VjdGlvbi5pZClcbiAgICAgICAgICAgICAgICAubWFwKChzLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucyxcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGluZGV4LFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBzZWN0aW9uIGRyb3AgKHJlb3JkZXJpbmcpXG4gICAgICovXG4gICAgaGFuZGxlU2VjdGlvbkRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPFF1ZXN0aW9ubmFpcmVCdWlsZGVyU2VjdGlvbltdPik6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICAgICAgLy8gVXBkYXRlIG9yZGVyIHZhbHVlc1xuICAgICAgICAgICAgdGhpcy5idWlsZGVyU3RhdGUudXBkYXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnMubWFwKChzZWN0aW9uLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc2VjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGluZGV4LFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBJdGVtIE1hbmFnZW1lbnQgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgYWRkaW5nIHF1ZXN0aW9ucyB0byBhIHNlY3Rpb25cbiAgICAgKi9cbiAgICBhc3luYyBoYW5kbGVBZGRRdWVzdGlvbnNUb1NlY3Rpb24oc2VjdGlvbjogUXVlc3Rpb25uYWlyZUJ1aWxkZXJTZWN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhU291cmNlID0gbmV3IEFYRGF0YVNvdXJjZSh7XG4gICAgICAgICAgICAgICAga2V5OiAnaWQnLFxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAyMCxcbiAgICAgICAgICAgICAgICBsb2FkOiBhc3luYyAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbnMgPSBhd2FpdCB0aGlzLnF1ZXN0aW9uQmFua1NlcnZpY2UucXVlcnkoZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogcXVlc3Rpb25zLml0ZW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw6IHF1ZXN0aW9ucy50b3RhbCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIENyZWF0ZSBjYXRlZ29yeSB0cmVlIGRhdGEgc291cmNlIGZvciBmaWx0ZXJpbmdcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5VHJlZURhdGFTb3VyY2U6IEFYUENhdGVnb3J5VHJlZURhdGFTb3VyY2UgPSB7XG4gICAgICAgICAgICAgICAgbG9hZFJvb3ROb2RlczogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXN0aW9uQmFua1NlcnZpY2UuZ2V0Q2F0ZWdvcmllc0xpc3Qoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2U6IDEwMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3BhcmVudElkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnaXNFbXB0eScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlIHx8IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbkNvdW50OiBpdGVtLmNoaWxkcmVuQ291bnQgfHwgMCxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9hZENoaWxkTm9kZXM6IGFzeW5jIChwYXJlbnRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucXVlc3Rpb25CYW5rU2VydmljZS5nZXRDYXRlZ29yaWVzTGlzdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBza2lwOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZTogMTAwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAncGFyZW50SWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSB8fCBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5Db3VudDogaXRlbS5jaGlsZHJlbkNvdW50IHx8IDAsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNlYXJjaE5vZGVzOiBhc3luYyAoc2VhcmNoVmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXN0aW9uQmFua1NlcnZpY2UuZ2V0Q2F0ZWdvcmllc0xpc3Qoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2U6IDEwMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2NvbnRhaW5zJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlYXJjaFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ25hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2NvbnRhaW5zJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlYXJjaFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSB8fCBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5Db3VudDogaXRlbS5jaGlsZHJlbkNvdW50IHx8IDAsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgZW50aXR5OiBBWFBFbnRpdHkgfCBudWxsID0gYXdhaXQgdGhpcy5lbnRpdHlSZXNvbHZlci5yZXNvbHZlKFxuICAgICAgICAgICAgICAgIFJvb3RDb25maWcubW9kdWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgUm9vdENvbmZpZy5lbnRpdGllcy5xdWVzdGlvbkJhbmtJdGVtLm5hbWUsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFlbnRpdHkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VudGl0eSBub3QgZm91bmQ6ICcgKyBSb290Q29uZmlnLmVudGl0aWVzLnF1ZXN0aW9uQmFua0l0ZW0ubmFtZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbnMgPVxuICAgICAgICAgICAgICAgIGVudGl0eS5jb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChjb2x1bW46IEFYUEVudGl0eVRhYmxlQ29sdW1uKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5IS5wcm9wZXJ0aWVzLnNvbWUoKHByb3BlcnR5OiBBWFBFbnRpdHlQcm9wZXJ0eSkgPT4gcHJvcGVydHkubmFtZSA9PT0gY29sdW1uLm5hbWUpLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGNvbHVtbjogQVhQRW50aXR5VGFibGVDb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gZW50aXR5IS5wcm9wZXJ0aWVzLmZpbmQoKHByb3A6IEFYUEVudGl0eVByb3BlcnR5KSA9PiBwcm9wLm5hbWUgPT09IGNvbHVtbi5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29sdW1uLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BlcnR5Py50aXRsZSA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4ub3B0aW9ucz8udmlzaWJsZSAhPT0gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGNvbHVtbi5zaG93QXM/LnR5cGUgPz8gcHJvcGVydHk/LnNjaGVtYT8uaW50ZXJmYWNlPy50eXBlID8/ICd0ZXh0LWVkaXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGNvbHVtbi5zaG93QXM/Lm9wdGlvbnMgPz8gcHJvcGVydHk/LnNjaGVtYT8uaW50ZXJmYWNlPy5vcHRpb25zID8/IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KSB8fCBbXTtcblxuICAgICAgICAgICAgLy8gVHJhbnNsYXRlIHRpdGxlc1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0UXVlc3Rpb25zVGl0bGUgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5zZWxlY3QtcXVlc3Rpb25zJ1xuICAgICAgICAgICAgKSB8fCAnU2VsZWN0IFF1ZXN0aW9ucyBmcm9tIFF1ZXN0aW9uIEJhbmsnO1xuXG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzVGl0bGUgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5jYXRlZ29yaWVzJ1xuICAgICAgICAgICAgKSB8fCAnQ2F0ZWdvcmllcyc7XG5cbiAgICAgICAgICAgIGNvbnN0IHRpdGxlTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGdlbmVyYWw6dGVybXMuY29tbW9uLnRpdGxlJykgfHwgJ1RpdGxlJztcbiAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGdlbmVyYWw6dGVybXMuY29tbW9uLmRlc2NyaXB0aW9uJykgfHwgJ0Rlc2NyaXB0aW9uJztcblxuICAgICAgICAgICAgLy8gT3BlbiBkYXRhIHNlbGVjdG9yIHdpdGggY2F0ZWdvcnkgZmlsdGVyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRhdGFTZWxlY3RvclNlcnZpY2Uub3BlbldpdGhDYXRlZ29yeUZpbHRlcihcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzZWxlY3RRdWVzdGlvbnNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uczogY29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uTW9kZTogJ211bHRpcGxlJyxcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoRmllbGRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICd0aXRsZScsIHRpdGxlOiB0aXRsZUxhYmVsIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdkZXNjcmlwdGlvbicsIHRpdGxlOiBkZXNjcmlwdGlvbkxhYmVsIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIGFsbG93Q3JlYXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNhdGVnb3JpZXNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogY2F0ZWdvcnlUcmVlRGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICdjYXRlZ29yeUlkcycsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlck9wZXJhdG9yOiAnY29udGFpbnMnLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzM1MHB4JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gQWRkIHNlbGVjdGVkIHF1ZXN0aW9ucyB0byB0aGUgc2VjdGlvblxuICAgICAgICAgICAgaWYgKHJlc3VsdD8uaXRlbXMgJiYgcmVzdWx0Lml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBMb2FkIGZ1bGwgcXVlc3Rpb24gZGV0YWlscyBmb3IgZWFjaCBzZWxlY3RlZCBpdGVtXG4gICAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25Qcm9taXNlcyA9IHJlc3VsdC5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVzdGlvbkJhbmtTZXJ2aWNlLmdldE9uZShpdGVtLmlkKS5jYXRjaCgoKSA9PiBudWxsKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9ucyA9IGF3YWl0IFByb21pc2UuYWxsKHF1ZXN0aW9uUHJvbWlzZXMpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3SXRlbXM6IFF1ZXN0aW9ubmFpcmVCdWlsZGVySXRlbVtdID0gcmVzdWx0Lml0ZW1zLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZ1bGxRdWVzdGlvbiA9IHF1ZXN0aW9uc1tpbmRleF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogQVhQRGF0YUdlbmVyYXRvci51dWlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbkJhbmtJdGVtSWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogc2VjdGlvbi5pdGVtcy5sZW5ndGggKyBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eUNvbmRpdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRDb25kaXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdPdmVycmlkZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXdseUFkZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb246IGZ1bGxRdWVzdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZnVsbFF1ZXN0aW9uLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZnVsbFF1ZXN0aW9uLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZnVsbFF1ZXN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmaWN1bHR5OiBmdWxsUXVlc3Rpb24uZGlmZmljdWx0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ1R5cGU6IGZ1bGxRdWVzdGlvbi5zY29yaW5nVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSB8fCAnUXVlc3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmljdWx0eTogaXRlbS5kaWZmaWN1bHR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nVHlwZTogaXRlbS5zY29yaW5nVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZGVyU3RhdGUudXBkYXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zOiBzdGF0ZS5zZWN0aW9ucy5tYXAoKHMpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzLmlkID09PSBzZWN0aW9uLmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbLi4ucy5pdGVtcywgLi4ubmV3SXRlbXNdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHMsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBxdWVzdGlvbnM6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGl0ZW0gcmVtb3ZhbFxuICAgICAqL1xuICAgIGhhbmRsZUl0ZW1SZW1vdmUoaXRlbTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJJdGVtLCBzZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkZXJTdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNlY3Rpb24uaWQgIT09IHNlY3Rpb25JZCkgcmV0dXJuIHNlY3Rpb247XG5cbiAgICAgICAgICAgICAgICAvLyBIYXJkIGRlbGV0ZSAtIHJlbW92ZSBpdGVtIGZyb20gYXJyYXlcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5zZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbi5pdGVtcy5maWx0ZXIoKGkpID0+IGkuaWQgIT09IGl0ZW0uaWQpLm1hcCgoaXRlbSwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIHF1ZXN0aW9uIGl0ZW0gZWRpdGluZyAoc2V0dGluZ3MpXG4gICAgICovXG4gICAgYXN5bmMgaGFuZGxlSXRlbUVkaXQoaXRlbTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJJdGVtLCBzZWN0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gTG9hZCBmdWxsIHF1ZXN0aW9uIGRldGFpbHMgdG8gZ2V0IGRlZmF1bHQgc2NvcmluZyB2YWx1ZXNcbiAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uRGV0YWlscyA9IGl0ZW0ucXVlc3Rpb25CYW5rSXRlbUlkXG4gICAgICAgICAgICAgICAgPyBhd2FpdCB0aGlzLnF1ZXN0aW9uQmFua1NlcnZpY2UuZ2V0T25lKGl0ZW0ucXVlc3Rpb25CYW5rSXRlbUlkKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgY29uc3QgZWRpdFRpdGxlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5lZGl0LXF1ZXN0aW9uLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnRWRpdCBRdWVzdGlvbiBTZXR0aW5ncyc7XG5cbiAgICAgICAgICAgIGNvbnN0IGlzUmVxdWlyZWRMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmZpZWxkcy5pcy1yZXF1aXJlZC50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1JlcXVpcmVkJztcblxuICAgICAgICAgICAgY29uc3QgdmlzaWJpbGl0eUNvbmRpdGlvbkxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuZmllbGRzLnZpc2liaWxpdHktY29uZGl0aW9uLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnVmlzaWJpbGl0eSBDb25kaXRpb24nO1xuXG4gICAgICAgICAgICBjb25zdCByZXF1aXJlZENvbmRpdGlvbkxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuZmllbGRzLnJlcXVpcmVkLWNvbmRpdGlvbi50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1JlcXVpcmVkIENvbmRpdGlvbic7XG5cbiAgICAgICAgICAgIGNvbnN0IHNjb3JpbmdQb2ludHNMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmZpZWxkcy5zY29yaW5nLXBvaW50cy50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1Njb3JpbmcgUG9pbnRzJztcblxuICAgICAgICAgICAgY29uc3Qgc2NvcmluZ1dlaWdodExhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuZmllbGRzLnNjb3Jpbmctd2VpZ2h0LnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnU2NvcmluZyBXZWlnaHQnO1xuXG4gICAgICAgICAgICAvLyBHZXQgZGVmYXVsdCB2YWx1ZXMgZnJvbSBxdWVzdGlvbiBiYW5rIGl0ZW0gb3IgdXNlIGV4aXN0aW5nIG92ZXJyaWRlIHZhbHVlc1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFNjb3JpbmdQb2ludHMgPSBpdGVtLnNjb3JpbmdPdmVycmlkZT8ucG9pbnRzID8/IHF1ZXN0aW9uRGV0YWlscz8ucG9pbnRzID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFNjb3JpbmdXZWlnaHQgPSBpdGVtLnNjb3JpbmdPdmVycmlkZT8ud2VpZ2h0ID8/IHF1ZXN0aW9uRGV0YWlscz8ud2VpZ2h0ID8/ICcnO1xuXG4gICAgICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSBhd2FpdCB0aGlzLmxheW91dEJ1aWxkZXJcbiAgICAgICAgICAgICAgICAuY3JlYXRlKClcbiAgICAgICAgICAgICAgICAuZGlhbG9nKChkaWFsb2cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0VGl0bGUoZWRpdFRpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFNpemUoJ21kJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRDbG9zZUJ1dHRvbih0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldENvbnRleHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IGl0ZW0uaXNSZXF1aXJlZCA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiBpdGVtLnZpc2liaWxpdHlDb25kaXRpb24gfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRDb25kaXRpb246IGl0ZW0ucmVxdWlyZWRDb25kaXRpb24gfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ1BvaW50czogZGVmYXVsdFNjb3JpbmdQb2ludHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ1dlaWdodDogZGVmYXVsdFNjb3JpbmdXZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNvbnRlbnQoKGxheW91dEJ1aWxkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRCdWlsZGVyLmZsZXgoKGZsZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldERpcmVjdGlvbignY29sdW1uJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRHYXAoJzE2cHgnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZChpc1JlcXVpcmVkTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ2lzUmVxdWlyZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC50b2dnbGVTd2l0Y2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHZpc2liaWxpdHlDb25kaXRpb25MYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgndmlzaWJpbGl0eUNvbmRpdGlvbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmN1c3RvbVdpZGdldCgnY29kZS1lZGl0b3InLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiAnamF2YXNjcmlwdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXJzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICdtaW4taC00OCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZChyZXF1aXJlZENvbmRpdGlvbkxhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdyZXF1aXJlZENvbmRpdGlvbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmN1c3RvbVdpZGdldCgnY29kZS1lZGl0b3InLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiAnamF2YXNjcmlwdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXJzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICdtaW4taC00OCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZChzY29yaW5nUG9pbnRzTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3Njb3JpbmdQb2ludHMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5udW1iZXJCb3goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHNjb3JpbmcgcG9pbnRzIChvcHRpb25hbCknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtRmllbGQoc2NvcmluZ1dlaWdodExhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdzY29yaW5nV2VpZ2h0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQubnVtYmVyQm94KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdFbnRlciBzY29yaW5nIHdlaWdodCAob3B0aW9uYWwpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRBY3Rpb25zKChhY3Rpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2FuY2VsKCdAZ2VuZXJhbDphY3Rpb25zLmNhbmNlbC50aXRsZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJtaXQoJ0BnZW5lcmFsOmFjdGlvbnMuc2F2ZS50aXRsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuc2hvdygpO1xuXG4gICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IGRpYWxvZ1JlZi5jb250ZXh0KCk7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb24gPSBhd2FpdCBkaWFsb2dSZWYuYWN0aW9uKCk7XG4gICAgICAgICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcblxuICAgICAgICAgICAgaWYgKGFjdGlvbiAhPT0gJ2NhbmNlbCcgJiYgZm9ybURhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zOiBzdGF0ZS5zZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uLmlkICE9PSBzZWN0aW9uSWQpIHJldHVybiBzZWN0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnNlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHNlY3Rpb24uaXRlbXMubWFwKChpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLmlkICE9PSBpdGVtLmlkKSByZXR1cm4gaTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdWlsZCBzY29yaW5nIG92ZXJyaWRlIGlmIHBvaW50cyBvciB3ZWlnaHQgYXJlIHByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY29yaW5nT3ZlcnJpZGU6IHsgcG9pbnRzPzogbnVtYmVyOyB3ZWlnaHQ/OiBudW1iZXIgfSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzUG9pbnRzID0gZm9ybURhdGEuc2NvcmluZ1BvaW50cyAhPT0gdW5kZWZpbmVkICYmIGZvcm1EYXRhLnNjb3JpbmdQb2ludHMgIT09IG51bGwgJiYgZm9ybURhdGEuc2NvcmluZ1BvaW50cyAhPT0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1dlaWdodCA9IGZvcm1EYXRhLnNjb3JpbmdXZWlnaHQgIT09IHVuZGVmaW5lZCAmJiBmb3JtRGF0YS5zY29yaW5nV2VpZ2h0ICE9PSBudWxsICYmIGZvcm1EYXRhLnNjb3JpbmdXZWlnaHQgIT09ICcnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNQb2ludHMgfHwgaGFzV2VpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nT3ZlcnJpZGUgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNQb2ludHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nT3ZlcnJpZGUucG9pbnRzID0gTnVtYmVyKGZvcm1EYXRhLnNjb3JpbmdQb2ludHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1dlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdPdmVycmlkZS53ZWlnaHQgPSBOdW1iZXIoZm9ybURhdGEuc2NvcmluZ1dlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IGZvcm1EYXRhLmlzUmVxdWlyZWQgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiBmb3JtRGF0YS52aXNpYmlsaXR5Q29uZGl0aW9uIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkQ29uZGl0aW9uOiBmb3JtRGF0YS5yZXF1aXJlZENvbmRpdGlvbiB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nT3ZlcnJpZGU6IHNjb3JpbmdPdmVycmlkZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGVkaXRpbmcgcXVlc3Rpb246JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGl0ZW0gZHJvcCAocmVvcmRlcmluZyB3aXRoaW4gc2VjdGlvbiBvciBiZXR3ZWVuIHNlY3Rpb25zKVxuICAgICAqL1xuICAgIGhhbmRsZUl0ZW1Ecm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxRdWVzdGlvbm5haXJlQnVpbGRlckl0ZW1bXT4sIHRhcmdldFNlY3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XG4gICAgICAgICAgICAvLyBSZW9yZGVyaW5nIHdpdGhpbiBzYW1lIHNlY3Rpb25cbiAgICAgICAgICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRlclN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgc2VjdGlvbnM6IHN0YXRlLnNlY3Rpb25zLm1hcCgoc2VjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbi5pZCAhPT0gdGFyZ2V0U2VjdGlvbklkKSByZXR1cm4gc2VjdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uc2VjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBzZWN0aW9uLml0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBNb3ZpbmcgaXRlbSBiZXR3ZWVuIHNlY3Rpb25zXG4gICAgICAgICAgICB0cmFuc2ZlckFycmF5SXRlbShcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLFxuICAgICAgICAgICAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhLFxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgICAgICAgICAgZXZlbnQuY3VycmVudEluZGV4LFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gVXBkYXRlIG9yZGVycyBmb3IgYm90aCBzZWN0aW9uc1xuICAgICAgICAgICAgdGhpcy5idWlsZGVyU3RhdGUudXBkYXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uLmlkID09PSB0YXJnZXRTZWN0aW9uSWQgfHwgc2VjdGlvbi5pZCA9PT0gZXZlbnQucHJldmlvdXNDb250YWluZXIuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc2VjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbi5pdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VjdGlvbjtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgc2VjdGlvbiBkcm9wIGxpc3RzIGZvciBkcmFnLWRyb3AgY29ubmVjdGl2aXR5XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldEFsbFNlY3Rpb25Ecm9wTGlzdHMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWN0aW9ucygpLm1hcCgoc2VjdGlvbikgPT4gYHNlY3Rpb24tJHtzZWN0aW9uLmlkfS1pdGVtc2ApO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBEaXNwbGF5IFNldHRpbmdzICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIG9wZW5pbmcgZGlzcGxheSBzZXR0aW5ncyBkaWFsb2dcbiAgICAgKi9cbiAgICBhc3luYyBoYW5kbGVTZXR0aW5ncygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHNldHRpbmdzVGl0bGUgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5hY3Rpb25zLnNldHRpbmdzLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnRGlzcGxheSBTZXR0aW5ncyc7XG5cbiAgICAgICAgICAgIGNvbnN0IHZpZXdNb2RlTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy52aWV3LW1vZGUudGl0bGUnXG4gICAgICAgICAgICApIHx8ICdWaWV3IE1vZGUnO1xuXG4gICAgICAgICAgICBjb25zdCBzaG93UHJvZ3Jlc3NCYXJMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnNob3ctcHJvZ3Jlc3MtYmFyLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnU2hvdyBQcm9ncmVzcyBCYXInO1xuXG4gICAgICAgICAgICBjb25zdCBzaG93VGltZXJMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnNob3ctdGltZXIudGl0bGUnXG4gICAgICAgICAgICApIHx8ICdTaG93IFRpbWVyJztcblxuICAgICAgICAgICAgY29uc3Qgc2hvd1NlY3Rpb25UaXRsZXNMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnNob3ctc2VjdGlvbi10aXRsZXMudGl0bGUnXG4gICAgICAgICAgICApIHx8ICdTaG93IFNlY3Rpb24gVGl0bGVzJztcblxuICAgICAgICAgICAgY29uc3Qgc2hvd1F1ZXN0aW9uTnVtYmVyc0xhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5maWVsZHMuc2hvdy1xdWVzdGlvbi1udW1iZXJzLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnU2hvdyBRdWVzdGlvbiBOdW1iZXJzJztcblxuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVCZWZvcmVOYXZpZ2F0aW9uTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy52YWxpZGF0ZS1iZWZvcmUtbmF2aWdhdGlvbi50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1ZhbGlkYXRlIEJlZm9yZSBOYXZpZ2F0aW9uJztcblxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNldHRpbmdzID0gdGhpcy5kaXNwbGF5U2V0dGluZ3MoKTtcblxuICAgICAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gYXdhaXQgdGhpcy5sYXlvdXRCdWlsZGVyXG4gICAgICAgICAgICAgICAgLmNyZWF0ZSgpXG4gICAgICAgICAgICAgICAgLmRpYWxvZygoZGlhbG9nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZ1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFRpdGxlKHNldHRpbmdzVGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0U2l6ZSgnbWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldENsb3NlQnV0dG9uKHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0Q29udGV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld01vZGU6IGN1cnJlbnRTZXR0aW5ncy52aWV3TW9kZSB8fCAnc2luZ2xlLXBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dQcm9ncmVzc0JhcjogY3VycmVudFNldHRpbmdzLnNob3dQcm9ncmVzc0JhciA/PyB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUaW1lcjogY3VycmVudFNldHRpbmdzLnNob3dUaW1lciA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93U2VjdGlvblRpdGxlczogY3VycmVudFNldHRpbmdzLnNob3dTZWN0aW9uVGl0bGVzID8/IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1F1ZXN0aW9uTnVtYmVyczogY3VycmVudFNldHRpbmdzLnNob3dRdWVzdGlvbk51bWJlcnMgPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZUJlZm9yZU5hdmlnYXRpb246IGN1cnJlbnRTZXR0aW5ncy52YWxpZGF0ZUJlZm9yZU5hdmlnYXRpb24gPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY29udGVudCgobGF5b3V0QnVpbGRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dEJ1aWxkZXIuZmxleCgoZmxleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0RGlyZWN0aW9uKCdjb2x1bW4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldEdhcCgnMTZweCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHZpZXdNb2RlTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3ZpZXdNb2RlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuc2VsZWN0Qm94KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkOiAndGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiAnc2luZ2xlLXBhZ2UnLCB0aXRsZTogJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5maWVsZHMudmlldy1tb2RlLm9wdGlvbnMuc2luZ2xlLXBhZ2UnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiAncGFnZS1wZXItZ3JvdXAnLCB0aXRsZTogJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5maWVsZHMudmlldy1tb2RlLm9wdGlvbnMucGFnZS1wZXItZ3JvdXAnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiAncGFnZS1wZXItcXVlc3Rpb24nLCB0aXRsZTogJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5maWVsZHMudmlldy1tb2RlLm9wdGlvbnMucGFnZS1wZXItcXVlc3Rpb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiAnc2lkZS1tZW51JywgdGl0bGU6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnZpZXctbW9kZS5vcHRpb25zLnNpZGUtbWVudScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHNob3dQcm9ncmVzc0JhckxhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdzaG93UHJvZ3Jlc3NCYXInKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC50b2dnbGVTd2l0Y2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHNob3dUaW1lckxhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdzaG93VGltZXInKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC50b2dnbGVTd2l0Y2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHNob3dTZWN0aW9uVGl0bGVzTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3Nob3dTZWN0aW9uVGl0bGVzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudG9nZ2xlU3dpdGNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZChzaG93UXVlc3Rpb25OdW1iZXJzTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3Nob3dRdWVzdGlvbk51bWJlcnMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC50b2dnbGVTd2l0Y2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHZhbGlkYXRlQmVmb3JlTmF2aWdhdGlvbkxhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCd2YWxpZGF0ZUJlZm9yZU5hdmlnYXRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC50b2dnbGVTd2l0Y2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRBY3Rpb25zKChhY3Rpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2FuY2VsKCdAZ2VuZXJhbDphY3Rpb25zLmNhbmNlbC50aXRsZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJtaXQoJ0BnZW5lcmFsOmFjdGlvbnMuc2F2ZS50aXRsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuc2hvdygpO1xuXG4gICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IGRpYWxvZ1JlZi5jb250ZXh0KCk7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb24gPSBhd2FpdCBkaWFsb2dSZWYuYWN0aW9uKCk7XG4gICAgICAgICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcblxuICAgICAgICAgICAgaWYgKGFjdGlvbiAhPT0gJ2NhbmNlbCcgJiYgZm9ybURhdGEpIHtcbiAgICAgICAgICAgICAgICAvLyBFeHRyYWN0IHZpZXdNb2RlIC0gaGFuZGxlIGJvdGggc3RyaW5nIGFuZCBvYmplY3QgKGZyb20gc2VsZWN0IGJveClcbiAgICAgICAgICAgICAgICBsZXQgdmlld01vZGU6ICdzaW5nbGUtcGFnZScgfCAncGFnZS1wZXItZ3JvdXAnIHwgJ3BhZ2UtcGVyLXF1ZXN0aW9uJyA9ICdzaW5nbGUtcGFnZSc7XG4gICAgICAgICAgICAgICAgY29uc3Qgdmlld01vZGVWYWx1ZSA9IGZvcm1EYXRhLnZpZXdNb2RlO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygdmlld01vZGVWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgdmlld01vZGUgPSB2aWV3TW9kZVZhbHVlIGFzICdzaW5nbGUtcGFnZScgfCAncGFnZS1wZXItZ3JvdXAnIHwgJ3BhZ2UtcGVyLXF1ZXN0aW9uJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZpZXdNb2RlVmFsdWUgJiYgdHlwZW9mIHZpZXdNb2RlVmFsdWUgPT09ICdvYmplY3QnICYmICdpZCcgaW4gdmlld01vZGVWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2aWV3TW9kZSA9ICh2aWV3TW9kZVZhbHVlIGFzIGFueSkuaWQgYXMgJ3NpbmdsZS1wYWdlJyB8ICdwYWdlLXBlci1ncm91cCcgfCAncGFnZS1wZXItcXVlc3Rpb24nO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NldHRpbmdzOiBRdWVzdGlvbm5haXJlRGlzcGxheVNldHRpbmdzID0ge1xuICAgICAgICAgICAgICAgICAgICB2aWV3TW9kZTogdmlld01vZGUsXG4gICAgICAgICAgICAgICAgICAgIHNob3dQcm9ncmVzc0JhcjogZm9ybURhdGEuc2hvd1Byb2dyZXNzQmFyID8/IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHNob3dUaW1lcjogZm9ybURhdGEuc2hvd1RpbWVyID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzaG93U2VjdGlvblRpdGxlczogZm9ybURhdGEuc2hvd1NlY3Rpb25UaXRsZXMgPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc2hvd1F1ZXN0aW9uTnVtYmVyczogZm9ybURhdGEuc2hvd1F1ZXN0aW9uTnVtYmVycyA/PyB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZUJlZm9yZU5hdmlnYXRpb246IGZvcm1EYXRhLnZhbGlkYXRlQmVmb3JlTmF2aWdhdGlvbiA/PyB0cnVlLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgc3RhdGUgYnkgcHJlc2VydmluZyBleGlzdGluZyBxdWVzdGlvbiBkYXRhIGFuZCB1cGRhdGluZyBkaXNwbGF5U2V0dGluZ3MgaW4gc3RhdGVcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgZGlzcGxheVNldHRpbmdzIGluIHN0YXRlIGRpcmVjdGx5XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVNldHRpbmdzOiBuZXdTZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlZFN0YXRlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb3BlbmluZyBzZXR0aW5nczonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgUHJldmlldyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIE9wZW4gcHJldmlldyBkaWFsb2cgd2l0aCBxdWVzdGlvbm5haXJlIHZpZXdlclxuICAgICAqL1xuICAgIGFzeW5jIGhhbmRsZVByZXZpZXcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLnNlY3Rpb25zKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY29udmVydFN0YXRlVG9WYWx1ZSh0aGlzLmJ1aWxkZXJTdGF0ZSgpLCB0aGlzLnZhbHVlKCkgfHwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIC8vIEFsd2F5cyB1c2UgdGhlIGN1cnJlbnQgZGlzcGxheVNldHRpbmdzIGZyb20gdGhlIGNvbXB1dGVkIHByb3BlcnR5IHRvIGVuc3VyZSBwcmV2aWV3IHVzZXMgbGF0ZXN0IHNldHRpbmdzXG4gICAgICAgICAgICBjdXJyZW50VmFsdWUuZGlzcGxheVNldHRpbmdzID0gdGhpcy5kaXNwbGF5U2V0dGluZ3MoKTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpZXdUaXRsZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmFjdGlvbnMucHJldmlldy50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1ByZXZpZXcnO1xuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXN0aW9ubmFpcmVWaWV3ZXJTZXJ2aWNlLm9wZW4oe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcmV2aWV3VGl0bGUsXG4gICAgICAgICAgICAgICAgc3RydWN0dXJlOiBjdXJyZW50VmFsdWUsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ2xnJyxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBIYW5kbGUgcmVzdWx0IGlmIG5lZWRlZCAoYW5zd2Vycywgc3VibWl0dGVkIHN0YXR1cylcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnUXVlc3Rpb25uYWlyZSBwcmV2aWV3IHJlc3VsdDonLCByZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb3BlbmluZyBwcmV2aWV3OicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZSBmdWxsc2NyZWVuIG1vZGUgdXNpbmcgdGhlIGRpcmVjdGl2ZVxuICAgICAqL1xuICAgIGFzeW5jIGhhbmRsZUZ1bGxzY3JlZW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGZ1bGxzY3JlZW4gPSB0aGlzLmZ1bGxzY3JlZW5EaXJlY3RpdmUoKTtcbiAgICAgICAgaWYgKGZ1bGxzY3JlZW4pIHtcbiAgICAgICAgICAgIGF3YWl0IGZ1bGxzY3JlZW4udG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI2VuZHJlZ2lvblxufVxuXG4vLyNlbmRyZWdpb25cblxuIiwiPGRpdiBjbGFzcz1cImF4bS1xdWVzdGlvbm5haXJlLWJ1aWxkZXJcIiBheEZ1bGxzY3JlZW4gI2Z1bGxzY3JlZW49XCJheEZ1bGxzY3JlZW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwiX19oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIl9faGVhZGVyLWxlZnRcIj5cbiAgICAgICAgICAgIDwhLS0gTGVmdCBzaWRlIGNhbiBiZSB1c2VkIGZvciBvdGhlciBhY3Rpb25zIGluIHRoZSBmdXR1cmUgLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiX19oZWFkZXItcmlnaHRcIj5cbiAgICAgICAgICAgIEBpZiAoIXJlYWRvbmx5KCkpIHtcblxuICAgICAgICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXNtXCJcbiAgICAgICAgICAgICAgICBbdGV4dF09XCIoJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5hZGQtc2VjdGlvbi50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYykgfHwgJ0FkZCBTZWN0aW9uJ1wiXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cIidwcmltYXJ5J1wiIChvbkNsaWNrKT1cImhhbmRsZUFkZFNlY3Rpb24oKVwiPlxuICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1sYXllci1ncm91cFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXNtXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiKCdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmFjdGlvbnMuc2V0dGluZ3MudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpIHx8ICdTZXR0aW5ncydcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZVNldHRpbmdzKClcIj5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQgZmEtZ2VhclwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXNtXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiKCdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmFjdGlvbnMucHJldmlldy50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYykgfHwgJ1ByZXZpZXcnXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2VjdGlvbnMoKS5sZW5ndGggPT09IDBcIiAob25DbGljayk9XCJoYW5kbGVQcmV2aWV3KClcIj5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQgZmEtZXllXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIoJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5mdWxsc2NyZWVuLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnRnVsbCBTY3JlZW4nXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVGdWxsc2NyZWVuKClcIj5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQgZmEtZXhwYW5kXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIl9fY29udGVudFwiPlxuICAgICAgICA8IS0tIERlc2lnbmVyIE1vZGUgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX3NlY3Rpb25zLWNvbnRhaW5lclwiIGNka0Ryb3BMaXN0IFtjZGtEcm9wTGlzdERhdGFdPVwic2VjdGlvbnMoKVwiXG4gICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImhhbmRsZVNlY3Rpb25Ecm9wKCRldmVudClcIj5cbiAgICAgICAgICAgIEBmb3IgKHNlY3Rpb24gb2Ygc2VjdGlvbnMoKTsgdHJhY2sgc2VjdGlvbi5pZCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fc2VjdGlvblwiIGNka0RyYWcgW2lkXT1cIidzZWN0aW9uLScgKyBzZWN0aW9uLmlkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fc2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmICghcmVhZG9ubHkoKSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19zZWN0aW9uLWRyYWctaGFuZGxlXCIgY2RrRHJhZ0hhbmRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1ncmlwLXZlcnRpY2FsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19zZWN0aW9uLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cIl9fc2VjdGlvbi10aXRsZVwiPnt7IHNlY3Rpb24udGl0bGUgfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzZWN0aW9uLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIl9fc2VjdGlvbi1kZXNjcmlwdGlvblwiPnt7IHNlY3Rpb24uZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKCFyZWFkb25seSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3NlY3Rpb24tYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCInQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5hY3Rpb25zLmFkZC1xdWVzdGlvbi50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIidhY2NlbnQyJ1wiIChvbkNsaWNrKT1cImhhbmRsZUFkZFF1ZXN0aW9uc1RvU2VjdGlvbihzZWN0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1wbHVzXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBbbG9va109XCInYmxhbmsnXCIgY29sb3I9XCJhY2NlbnQzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVTZWN0aW9uRWRpdChzZWN0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtcGVuY2lsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNhblJlbW92ZVNlY3Rpb24oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXNtXCIgW2xvb2tdPVwiJ2JsYW5rJ1wiIGNvbG9yPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVTZWN0aW9uUmVtb3ZlKHNlY3Rpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS10cmFzaC1jYW5cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2l0ZW1zLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19pdGVtcy1saXN0IGF4LW92ZXJmbG93LWF1dG9cIiBjZGtEcm9wTGlzdCBbaWRdPVwiJ3NlY3Rpb24tJyArIHNlY3Rpb24uaWQgKyAnLWl0ZW1zJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cInNlY3Rpb24uaXRlbXNcIiBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJnZXRBbGxTZWN0aW9uRHJvcExpc3RzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJoYW5kbGVJdGVtRHJvcCgkZXZlbnQsIHNlY3Rpb24uaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNlY3Rpb24uaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXhwLXN0YXRlLW1lc3NhZ2UgaWNvbj1cImZhLWxpZ2h0IGZhLWluYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiKCdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmVtcHR5LXN0YXRlcy5lbXB0eS1zZWN0aW9uLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIignQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5lbXB0eS1zdGF0ZXMuZW1wdHktc2VjdGlvbi5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfCBhc3luYykgfHwgJydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygc2VjdGlvbi5pdGVtczsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9faXRlbVwiIGNka0RyYWc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghcmVhZG9ubHkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2RyYWctaGFuZGxlXCIgY2RrRHJhZ0hhbmRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLWdyaXAtdmVydGljYWxcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9faXRlbS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2l0ZW0taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19pdGVtLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5fX2RpZmZpY3VsdHktZWFzeV09XCJpdGVtLnF1ZXN0aW9uPy5kaWZmaWN1bHR5ID09PSAnZWFzeSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5fX2RpZmZpY3VsdHktbWVkaXVtXT1cIml0ZW0ucXVlc3Rpb24/LmRpZmZpY3VsdHkgPT09ICdtZWRpdW0nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuX19kaWZmaWN1bHR5LWhhcmRdPVwiaXRlbS5xdWVzdGlvbj8uZGlmZmljdWx0eSA9PT0gJ2hhcmQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLXF1ZXN0aW9uLWNpcmNsZVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9faXRlbS1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiX19pdGVtLXRpdGxlXCI+e3sgaXRlbS5xdWVzdGlvbj8udGl0bGUgPz8gJ1F1ZXN0aW9uJyB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnF1ZXN0aW9uPy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiX19pdGVtLWRlc2NyaXB0aW9uXCI+e3sgaXRlbS5xdWVzdGlvbj8uZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19pdGVtLW1ldGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaXNSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiX19pdGVtLWJhZGdlIF9fcmVxdWlyZWRcIj5SZXF1aXJlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnNjb3JpbmdPdmVycmlkZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiX19pdGVtLWJhZGdlXCI+Q3VzdG9tIFNjb3Jpbmc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghcmVhZG9ubHkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2l0ZW0tYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBbbG9va109XCInYmxhbmsnXCIgY29sb3I9XCJhY2NlbnQzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUl0ZW1FZGl0KGl0ZW0sIHNlY3Rpb24uaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLWxpZ2h0IGZhLXBlbmNpbFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24gW2xvb2tdPVwiJ2JsYW5rJ1wiIGNsYXNzPVwiYXgtc21cIiBjb2xvcj1cImRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVJdGVtUmVtb3ZlKGl0ZW0sIHNlY3Rpb24uaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLWxpZ2h0IGZhLXRyYXNoLWNhblwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-modules-assessment-management-questionnaire-builder.component-CvdVE1TW.mjs","sources":["../tmp-esm2022/assessment-management/lib/features/questionnaire-builder/questionnaire-builder.types.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-builder/questionnaire-builder.component.js"],"sourcesContent":["//#region ---- Imports ----\n//#endregion\n//#region ---- Utility Functions ----\n/**\n * Convert raw value to builder state\n */\nexport function convertValueToState(value) {\n // Handle null/undefined or empty sections\n if (!value || !value.sections || value.sections.length === 0) {\n // Always return at least one default section\n const defaultSection = createDefaultSection();\n defaultSection.order = 0;\n return {\n sections: [defaultSection],\n displaySettings: value?.displaySettings,\n };\n }\n // Handle structure (sections with nested items)\n return {\n sections: value.sections.map((section, sectionIndex) => ({\n id: section.id || `section-${sectionIndex}`,\n title: section.title,\n description: section.description,\n order: section.order ?? sectionIndex,\n visibilityCondition: section.visibilityCondition,\n items: (section.items || []).map((item, itemIndex) => ({\n id: item.id || `item-${itemIndex}`,\n questionBankItemId: item.questionBankItemId,\n order: item.order ?? itemIndex,\n isRequired: item.isRequired,\n visibilityCondition: item.visibilityCondition,\n requiredCondition: item.requiredCondition,\n scoringOverride: item.scoringOverride,\n interfaceOverride: item.interfaceOverride,\n isNewlyAdded: false,\n })),\n isNewlyAdded: false,\n })),\n displaySettings: value.displaySettings,\n };\n}\n/**\n * Convert builder state to value for persistence\n */\nexport function convertStateToValue(state, existingValue) {\n const result = {\n sections: state.sections\n .filter((section) => {\n // Drop sections that are NOT newly added AND have no items\n // Keep sections that are newly added OR have items\n const isNewlyAdded = section.isNewlyAdded === true;\n const hasItems = section.items.length > 0;\n return isNewlyAdded || hasItems;\n })\n .map((section) => {\n return {\n id: section.id,\n title: section.title,\n description: section.description,\n order: section.order,\n visibilityCondition: section.visibilityCondition,\n items: section.items.map((item) => ({\n id: item.id,\n questionBankItemId: item.questionBankItemId,\n order: item.order,\n isRequired: item.isRequired,\n visibilityCondition: item.visibilityCondition,\n requiredCondition: item.requiredCondition,\n scoringOverride: item.scoringOverride,\n interfaceOverride: item.interfaceOverride,\n })),\n };\n }),\n };\n // Preserve displaySettings from state first, then from existing value if state doesn't have it\n if (state.displaySettings) {\n result.displaySettings = state.displaySettings;\n }\n else if (existingValue?.displaySettings) {\n result.displaySettings = existingValue.displaySettings;\n }\n return result;\n}\n/**\n * Create a default section\n */\nexport function createDefaultSection() {\n return {\n id: `section-${Date.now()}`,\n title: 'New Section',\n description: undefined,\n order: 0,\n visibilityCondition: undefined,\n items: [],\n isNewlyAdded: true,\n };\n}\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS1idWlsZGVyLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3F1ZXN0aW9ubmFpcmUtYnVpbGRlci9xdWVzdGlvbm5haXJlLWJ1aWxkZXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBK0ovQixZQUFZO0FBRVoseUNBQXlDO0FBRXpDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQW1EO0lBQ25GLDBDQUEwQztJQUMxQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzRCw2Q0FBNkM7UUFDN0MsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QyxjQUFjLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUN6QixPQUFPO1lBQ0gsUUFBUSxFQUFFLENBQUMsY0FBYyxDQUFDO1lBQzFCLGVBQWUsRUFBRSxLQUFLLEVBQUUsZUFBZTtTQUMxQyxDQUFDO0lBQ04sQ0FBQztJQUVELGdEQUFnRDtJQUNoRCxPQUFPO1FBQ0gsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRCxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxXQUFXLFlBQVksRUFBRTtZQUMzQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQ2hDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxJQUFJLFlBQVk7WUFDcEMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLG1CQUFt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QUFFLGFBQWE7UUFDcEIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsS0FBSyxFQUFFLENBQUM7UUFDUixtQkFBbUIsRUFBRSxTQUFTO1FBQzlCLEtBQUssRUFBRSxFQUFFO1FBQ1QsWUFBWSxFQUFFLElBQUk7S0FDckIsQ0FBQztBQUNOLENBQUM7QUFFRCxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBBWFBXaWRnZXROb2RlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBRdWVzdGlvbm5haXJlIEJ1aWxkZXIgVHlwZXMgICAtLS0tXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBxdWVzdGlvbiBpdGVtIHdpdGhpbiBhIHNlY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWVzdGlvbm5haXJlQnVpbGRlckl0ZW0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgcXVlc3Rpb25CYW5rSXRlbUlkOiBzdHJpbmc7XG4gICAgb3JkZXI6IG51bWJlcjtcbiAgICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbiAgICB2aXNpYmlsaXR5Q29uZGl0aW9uPzogc3RyaW5nO1xuICAgIHJlcXVpcmVkQ29uZGl0aW9uPzogc3RyaW5nO1xuICAgIHNjb3JpbmdPdmVycmlkZT86IHtcbiAgICAgICAgcG9pbnRzPzogbnVtYmVyO1xuICAgICAgICB3ZWlnaHQ/OiBudW1iZXI7XG4gICAgfTtcbiAgICBpbnRlcmZhY2VPdmVycmlkZT86IEFYUFdpZGdldE5vZGU7XG4gICAgaXNOZXdseUFkZGVkPzogYm9vbGVhbjtcblxuICAgIC8vIFJlbGF0ZWQgcXVlc3Rpb24gZGF0YSAoZnJvbSBleHBvc2UpXG4gICAgcXVlc3Rpb24/OiB7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgICBkaWZmaWN1bHR5Pzogc3RyaW5nO1xuICAgICAgICBzY29yaW5nVHlwZT86IHN0cmluZztcbiAgICB9O1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBRdWVzdGlvbm5haXJlIEJ1aWxkZXIgU2VjdGlvbiBUeXBlcyAgIC0tLS1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2VjdGlvbiBjb250YWluaW5nIHF1ZXN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmVCdWlsZGVyU2VjdGlvbiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIG9yZGVyOiBudW1iZXI7XG4gICAgdmlzaWJpbGl0eUNvbmRpdGlvbj86IHN0cmluZztcbiAgICBpdGVtczogUXVlc3Rpb25uYWlyZUJ1aWxkZXJJdGVtW107XG4gICAgaXNOZXdseUFkZGVkPzogYm9vbGVhbjtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgUXVlc3Rpb25uYWlyZSBCdWlsZGVyIFN0YXRlIFR5cGVzICAgLS0tLVxuXG4vKipcbiAqIE92ZXJhbGwgc3RhdGUgZm9yIHRoZSBxdWVzdGlvbm5haXJlIGJ1aWxkZXIgd2lkZ2V0IChkZXNpZ25lciBtb2RlKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUge1xuICAgIHNlY3Rpb25zOiBRdWVzdGlvbm5haXJlQnVpbGRlclNlY3Rpb25bXTtcbiAgICBzZWxlY3RlZEl0ZW1JZD86IHN0cmluZztcbiAgICBzZWxlY3RlZFNlY3Rpb25JZD86IHN0cmluZztcbiAgICBkaXNwbGF5U2V0dGluZ3M/OiBRdWVzdGlvbm5haXJlRGlzcGxheVNldHRpbmdzO1xufVxuXG4vKipcbiAqIERpc3BsYXkgc2V0dGluZ3MgZm9yIHF1ZXN0aW9ubmFpcmUgdmlld2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVlc3Rpb25uYWlyZURpc3BsYXlTZXR0aW5ncyB7XG4gICAgLyoqXG4gICAgICogVmlldyBtb2RlOiBzaW5nbGUtcGFnZSwgcGFnZS1wZXItZ3JvdXAsIHBhZ2UtcGVyLXF1ZXN0aW9uLCBzaWRlLW1lbnVcbiAgICAgKi9cbiAgICB2aWV3TW9kZT86ICdzaW5nbGUtcGFnZScgfCAncGFnZS1wZXItZ3JvdXAnIHwgJ3BhZ2UtcGVyLXF1ZXN0aW9uJyB8ICdzaWRlLW1lbnUnO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyBwcm9ncmVzcyBiYXJcbiAgICAgKi9cbiAgICBzaG93UHJvZ3Jlc3NCYXI/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogUHJvZ3Jlc3MgY2FsY3VsYXRpb24gbW9kZTogYW5zd2VyZWQgb3IgbmF2aWdhdGlvblxuICAgICAqL1xuICAgIHByb2dyZXNzTW9kZT86ICdhbnN3ZXJlZCcgfCAnbmF2aWdhdGlvbic7XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRpbWVyXG4gICAgICovXG4gICAgc2hvd1RpbWVyPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFNob3cgc2VjdGlvbiB0aXRsZXNcbiAgICAgKi9cbiAgICBzaG93U2VjdGlvblRpdGxlcz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHF1ZXN0aW9uIG51bWJlcnNcbiAgICAgKi9cbiAgICBzaG93UXVlc3Rpb25OdW1iZXJzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEF1dG8tc2F2ZSBhbnN3ZXJzIGFzIHVzZXIgdHlwZXNcbiAgICAgKi9cbiAgICBhdXRvU2F2ZT86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHZhbGlkYXRpb24gZXJyb3JzIGlubGluZVxuICAgICAqL1xuICAgIHNob3dWYWxpZGF0aW9uRXJyb3JzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEFsbG93IHNraXBwaW5nIHF1ZXN0aW9ucyAoaWYgbm90IHJlcXVpcmVkKVxuICAgICAqL1xuICAgIGFsbG93U2tpcHBpbmc/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyBxdWVzdGlvbiBjb3VudGVyIChlLmcuLCBcIlF1ZXN0aW9uIDMgb2YgMTBcIilcbiAgICAgKi9cbiAgICBzaG93UXVlc3Rpb25Db3VudGVyPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRlIGJlZm9yZSBhbGxvd2luZyBuYXZpZ2F0aW9uIHRvIG90aGVyIHNlY3Rpb25zL3BhZ2VzXG4gICAgICogV2hlbiB0cnVlLCBuYXZpZ2F0aW9uIGlzIGJsb2NrZWQgaWYgY3VycmVudCBwYWdlIGhhcyB2YWxpZGF0aW9uIGVycm9yc1xuICAgICAqIFdoZW4gZmFsc2UsIG5hdmlnYXRpb24gaXMgYWxsb3dlZCBidXQgdmFsaWRhdGlvbiBlcnJvcnMgYXJlIHN0aWxsIHNob3duXG4gICAgICogRGVmYXVsdDogdHJ1ZVxuICAgICAqL1xuICAgIHZhbGlkYXRlQmVmb3JlTmF2aWdhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVmFsdWUgc3RydWN0dXJlIHN0b3JlZCBpbiBlbnRpdHkgKHNpbXBsaWZpZWQgZm9yIHBlcnNpc3RlbmNlKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUge1xuICAgIHNlY3Rpb25zOiBBcnJheTx7XG4gICAgICAgIGlkOiBzdHJpbmc7XG4gICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgICBvcmRlcjogbnVtYmVyO1xuICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uPzogc3RyaW5nO1xuICAgICAgICBpdGVtczogQXJyYXk8e1xuICAgICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICAgIHF1ZXN0aW9uQmFua0l0ZW1JZDogc3RyaW5nO1xuICAgICAgICAgICAgb3JkZXI6IG51bWJlcjtcbiAgICAgICAgICAgIGlzUmVxdWlyZWQ/OiBib29sZWFuO1xuICAgICAgICAgICAgdmlzaWJpbGl0eUNvbmRpdGlvbj86IHN0cmluZztcbiAgICAgICAgICAgIHJlcXVpcmVkQ29uZGl0aW9uPzogc3RyaW5nO1xuICAgICAgICAgICAgc2NvcmluZ092ZXJyaWRlPzoge1xuICAgICAgICAgICAgICAgIHBvaW50cz86IG51bWJlcjtcbiAgICAgICAgICAgICAgICB3ZWlnaHQ/OiBudW1iZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaW50ZXJmYWNlT3ZlcnJpZGU/OiBBWFBXaWRnZXROb2RlO1xuICAgICAgICB9PjtcbiAgICB9PjtcbiAgICAvKipcbiAgICAgKiBEaXNwbGF5IHNldHRpbmdzIGZvciBxdWVzdGlvbm5haXJlIHZpZXdlclxuICAgICAqL1xuICAgIGRpc3BsYXlTZXR0aW5ncz86IFF1ZXN0aW9ubmFpcmVEaXNwbGF5U2V0dGluZ3M7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFV0aWxpdHkgRnVuY3Rpb25zICAgLS0tLVxuXG4vKipcbiAqIENvbnZlcnQgcmF3IHZhbHVlIHRvIGJ1aWxkZXIgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZVRvU3RhdGUodmFsdWU6IFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUgfCBudWxsIHwgdW5kZWZpbmVkKTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJTdGF0ZSB7XG4gICAgLy8gSGFuZGxlIG51bGwvdW5kZWZpbmVkIG9yIGVtcHR5IHNlY3Rpb25zXG4gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuc2VjdGlvbnMgfHwgdmFsdWUuc2VjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIEFsd2F5cyByZXR1cm4gYXQgbGVhc3Qgb25lIGRlZmF1bHQgc2VjdGlvblxuICAgICAgICBjb25zdCBkZWZhdWx0U2VjdGlvbiA9IGNyZWF0ZURlZmF1bHRTZWN0aW9uKCk7XG4gICAgICAgIGRlZmF1bHRTZWN0aW9uLm9yZGVyID0gMDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlY3Rpb25zOiBbZGVmYXVsdFNlY3Rpb25dLFxuICAgICAgICAgICAgZGlzcGxheVNldHRpbmdzOiB2YWx1ZT8uZGlzcGxheVNldHRpbmdzLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBzdHJ1Y3R1cmUgKHNlY3Rpb25zIHdpdGggbmVzdGVkIGl0ZW1zKVxuICAgIHJldHVybiB7XG4gICAgICAgIHNlY3Rpb25zOiB2YWx1ZS5zZWN0aW9ucy5tYXAoKHNlY3Rpb24sIHNlY3Rpb25JbmRleCkgPT4gKHtcbiAgICAgICAgICAgIGlkOiBzZWN0aW9uLmlkIHx8IGBzZWN0aW9uLSR7c2VjdGlvbkluZGV4fWAsXG4gICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzZWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgb3JkZXI6IHNlY3Rpb24ub3JkZXIgPz8gc2VjdGlvbkluZGV4LFxuICAgICAgICAgICAgdmlzaWJpbGl0eUNvbmRpdGlvbjogc2VjdGlvbi52aXNpYmlsaXR5Q29uZGl0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IChzZWN0aW9uLml0ZW1zIHx8IFtdKS5tYXAoKGl0ZW0sIGl0ZW1JbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCB8fCBgaXRlbS0ke2l0ZW1JbmRleH1gLFxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uQmFua0l0ZW1JZDogaXRlbS5xdWVzdGlvbkJhbmtJdGVtSWQsXG4gICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0ub3JkZXIgPz8gaXRlbUluZGV4LFxuICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IGl0ZW0uaXNSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiBpdGVtLnZpc2liaWxpdHlDb25kaXRpb24sXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRDb25kaXRpb246IGl0ZW0ucmVxdWlyZWRDb25kaXRpb24sXG4gICAgICAgICAgICAgICAgc2NvcmluZ092ZXJyaWRlOiBpdGVtLnNjb3JpbmdPdmVycmlkZSxcbiAgICAgICAgICAgICAgICBpbnRlcmZhY2VPdmVycmlkZTogaXRlbS5pbnRlcmZhY2VPdmVycmlkZSxcbiAgICAgICAgICAgICAgICBpc05ld2x5QWRkZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaXNOZXdseUFkZGVkOiBmYWxzZSxcbiAgICAgICAgfSkpLFxuICAgICAgICBkaXNwbGF5U2V0dGluZ3M6IHZhbHVlLmRpc3BsYXlTZXR0aW5ncyxcbiAgICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnQgYnVpbGRlciBzdGF0ZSB0byB2YWx1ZSBmb3IgcGVyc2lzdGVuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTdGF0ZVRvVmFsdWUoc3RhdGU6IFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUsIGV4aXN0aW5nVmFsdWU/OiBRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlKTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSB7XG4gICAgY29uc3QgcmVzdWx0OiBRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlID0ge1xuICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKHNlY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICAvLyBEcm9wIHNlY3Rpb25zIHRoYXQgYXJlIE5PVCBuZXdseSBhZGRlZCBBTkQgaGF2ZSBubyBpdGVtc1xuICAgICAgICAgICAgICAgIC8vIEtlZXAgc2VjdGlvbnMgdGhhdCBhcmUgbmV3bHkgYWRkZWQgT1IgaGF2ZSBpdGVtc1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzTmV3bHlBZGRlZCA9IHNlY3Rpb24uaXNOZXdseUFkZGVkID09PSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc0l0ZW1zID0gc2VjdGlvbi5pdGVtcy5sZW5ndGggPiAwO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzTmV3bHlBZGRlZCB8fCBoYXNJdGVtcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHNlY3Rpb24uaWQsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzZWN0aW9uLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc2VjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IHNlY3Rpb24ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlDb25kaXRpb246IHNlY3Rpb24udmlzaWJpbGl0eUNvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHNlY3Rpb24uaXRlbXMubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbkJhbmtJdGVtSWQ6IGl0ZW0ucXVlc3Rpb25CYW5rSXRlbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1JlcXVpcmVkOiBpdGVtLmlzUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiBpdGVtLnZpc2liaWxpdHlDb25kaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZENvbmRpdGlvbjogaXRlbS5yZXF1aXJlZENvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdPdmVycmlkZTogaXRlbS5zY29yaW5nT3ZlcnJpZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VPdmVycmlkZTogaXRlbS5pbnRlcmZhY2VPdmVycmlkZSxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICB9O1xuXG4gICAgLy8gUHJlc2VydmUgZGlzcGxheVNldHRpbmdzIGZyb20gc3RhdGUgZmlyc3QsIHRoZW4gZnJvbSBleGlzdGluZyB2YWx1ZSBpZiBzdGF0ZSBkb2Vzbid0IGhhdmUgaXRcbiAgICBpZiAoc3RhdGUuZGlzcGxheVNldHRpbmdzKSB7XG4gICAgICAgIHJlc3VsdC5kaXNwbGF5U2V0dGluZ3MgPSBzdGF0ZS5kaXNwbGF5U2V0dGluZ3M7XG4gICAgfSBlbHNlIGlmIChleGlzdGluZ1ZhbHVlPy5kaXNwbGF5U2V0dGluZ3MpIHtcbiAgICAgICAgcmVzdWx0LmRpc3BsYXlTZXR0aW5ncyA9IGV4aXN0aW5nVmFsdWUuZGlzcGxheVNldHRpbmdzO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZGVmYXVsdCBzZWN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0U2VjdGlvbigpOiBRdWVzdGlvbm5haXJlQnVpbGRlclNlY3Rpb24ge1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBgc2VjdGlvbi0ke0RhdGUubm93KCl9YCxcbiAgICAgICAgdGl0bGU6ICdOZXcgU2VjdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIG9yZGVyOiAwLFxuICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIGl0ZW1zOiBbXSxcbiAgICAgICAgaXNOZXdseUFkZGVkOiB0cnVlLFxuICAgIH07XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","//#region ---- Imports ----\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { CdkDrag, CdkDragHandle, CdkDropList, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXPDataSelectorService } from '@acorex/platform/layout/components';\nimport { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal, untracked, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RootConfig } from '../../const';\nimport { AXMQuestionBankItemService } from '../../entities/question-bank-item/question-bank-item.service';\nimport { convertStateToValue, convertValueToState, createDefaultSection, } from './questionnaire-builder.types';\nimport { AXPDataGenerator, AXFullscreenDirective } from '@acorex/platform/core';\nimport { AXMQuestionnaireViewerService } from '../questionnaire-viewer/questionnaire-viewer.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@acorex/core/translation\";\n//#endregion\n//#region ---- Component ----\n/**\n * Reusable Questionnaire Builder Component\n * Can be used both in dialog and inline contexts\n */\nexport class AXMQuestionnaireBuilderComponent {\n //#endregion\n //#region ---- Lifecycle ----\n constructor() {\n //#region ---- Services & Dependencies ----\n this.dataSelectorService = inject(AXPDataSelectorService);\n this.questionBankService = inject(AXMQuestionBankItemService);\n this.entityResolver = inject(AXPEntityDefinitionRegistryService);\n this.dialogService = inject(AXDialogService);\n this.translationService = inject(AXTranslationService);\n this.layoutBuilder = inject(AXPLayoutBuilderService);\n this.questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n //#endregion\n //#region ---- Inputs & Outputs ----\n /**\n * Initial value (QuestionnaireBuilderValue)\n */\n this.value = input(null, ...(ngDevMode ? [{ debugName: \"value\" }] : []));\n /**\n * Readonly mode\n */\n this.readonly = input(false, ...(ngDevMode ? [{ debugName: \"readonly\" }] : []));\n /**\n * Value change event\n */\n this.valueChange = output();\n //#endregion\n //#region ---- Class Properties ----\n // Designer state management - always start with at least one default section\n this.builderState = signal({\n sections: [createDefaultSection()],\n }, ...(ngDevMode ? [{ debugName: \"builderState\" }] : []));\n // Selected item tracking\n this.selectedItemId = signal(null, ...(ngDevMode ? [{ debugName: \"selectedItemId\" }] : []));\n this.selectedSectionId = signal(null, ...(ngDevMode ? [{ debugName: \"selectedSectionId\" }] : []));\n // Track if we're making internal updates to prevent effect loops\n this.isInternalUpdate = false;\n // Fullscreen directive reference\n this.fullscreenDirective = viewChild('fullscreen', ...(ngDevMode ? [{ debugName: \"fullscreenDirective\" }] : []));\n //#endregion\n //#region ---- Computed Properties ----\n /**\n * Get all sections for rendering\n */\n this.sections = computed(() => this.builderState().sections, ...(ngDevMode ? [{ debugName: \"sections\" }] : []));\n /**\n * Check if can remove section (must have at least 1 section)\n */\n this.canRemoveSection = computed(() => this.sections().length > 1, ...(ngDevMode ? [{ debugName: \"canRemoveSection\" }] : []));\n /**\n * Get current display settings from state or default\n */\n this.displaySettings = computed(() => {\n const state = this.builderState();\n if (state.displaySettings) {\n return state.displaySettings;\n }\n // Fallback to value if state doesn't have it\n const currentValue = convertStateToValue(state, this.value() || undefined);\n return currentValue.displaySettings || {\n viewMode: 'single-page',\n showProgressBar: true,\n showTimer: false,\n showSectionTitles: true,\n showQuestionNumbers: true,\n };\n }, ...(ngDevMode ? [{ debugName: \"displaySettings\" }] : []));\n // Track last emitted value to prevent circular updates\n let lastEmittedValue = null;\n // Sync value input to state (only when value changes externally)\n effect(() => {\n const val = this.value();\n if (val !== null && val !== undefined && !this.isInternalUpdate) {\n const currentState = untracked(() => this.builderState());\n const currentValue = convertStateToValue(currentState);\n // Only update if the value actually changed and it's different from what we last emitted\n const valStr = JSON.stringify(val);\n const currentStr = JSON.stringify(currentValue);\n const lastEmittedStr = lastEmittedValue ? JSON.stringify(lastEmittedValue) : null;\n // Update only if:\n // 1. The incoming value is different from current state value\n // 2. AND it's not the value we just emitted (prevent circular updates)\n if (valStr !== currentStr && valStr !== lastEmittedStr) {\n const newState = convertValueToState(val);\n untracked(() => {\n this.builderState.set(newState);\n // Load question details for all items\n this.loadQuestionDetailsForState(newState);\n });\n }\n }\n else if ((val === null || val === undefined) && !this.isInternalUpdate) {\n // If value is null/undefined, ensure we have at least one default section\n const currentState = untracked(() => this.builderState());\n if (currentState.sections.length === 0) {\n const defaultSection = createDefaultSection();\n defaultSection.order = 0;\n untracked(() => {\n this.builderState.set({ sections: [defaultSection] });\n });\n }\n }\n });\n // Sync state changes to output\n effect(() => {\n const state = this.builderState();\n const currentValue = this.value();\n const value = convertStateToValue(state, currentValue || undefined);\n // Prevent circular updates\n if (!this.isInternalUpdate) {\n untracked(() => {\n lastEmittedValue = value;\n this.valueChange.emit(value);\n });\n }\n });\n }\n /**\n * Load question details for all items in the state\n */\n async loadQuestionDetailsForState(state) {\n const questionIds = new Set();\n // Collect all question bank item IDs\n state.sections.forEach((section) => {\n section.items.forEach((item) => {\n if (item.questionBankItemId && !item.question) {\n questionIds.add(item.questionBankItemId);\n }\n });\n });\n if (questionIds.size === 0)\n return;\n // Load all questions in parallel\n const questionPromises = Array.from(questionIds).map((id) => this.questionBankService.getOne(id).catch(() => null));\n const questions = await Promise.all(questionPromises);\n // Create a map of question ID to question data\n const questionMap = new Map();\n questions.forEach((q) => {\n if (q) {\n questionMap.set(q.id, q);\n }\n });\n // Update state with question details\n this.builderState.update((currentState) => ({\n ...currentState,\n sections: currentState.sections.map((section) => ({\n ...section,\n items: section.items.map((item) => {\n if (item.question)\n return item; // Already has question data\n const questionData = questionMap.get(item.questionBankItemId);\n if (questionData) {\n return {\n ...item,\n question: {\n id: questionData.id,\n title: questionData.title,\n description: questionData.description,\n difficulty: questionData.difficulty,\n scoringType: questionData.scoringType,\n },\n };\n }\n return item;\n }),\n })),\n }));\n }\n //#endregion\n //#region ---- Section Management ----\n /**\n * Helper method to update state while preventing effect loops\n * Ensures at least one section always exists\n */\n updateState(updater) {\n this.isInternalUpdate = true;\n try {\n this.builderState.update((state) => {\n const updatedState = updater(state);\n // Safety check: ensure at least one section always exists\n if (updatedState.sections.length === 0) {\n const defaultSection = createDefaultSection();\n defaultSection.order = 0;\n return {\n ...updatedState,\n sections: [defaultSection],\n };\n }\n return updatedState;\n });\n }\n finally {\n // Reset flag after current execution context\n Promise.resolve().then(() => {\n this.isInternalUpdate = false;\n });\n }\n }\n /**\n * Handle adding a new section\n */\n async handleAddSection() {\n try {\n const addTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title') || 'Add Section';\n const titleLabel = await this.translationService.translateAsync('@general:terms.common.title') || 'Title';\n const descriptionLabel = await this.translationService.translateAsync('@general:terms.common.description') || 'Description';\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(addTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n title: '',\n description: '',\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(titleLabel, (field) => {\n field.path('title');\n field.textBox({\n placeholder: 'Enter section title',\n validations: [{ rule: 'required' }],\n });\n })\n .formField(descriptionLabel, (field) => {\n field.path('description');\n field.largeTextBox({\n placeholder: 'Enter section description (optional)',\n rows: 3,\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n const newSection = createDefaultSection();\n newSection.order = this.sections().length;\n newSection.title = formData.title || 'New Section';\n newSection.description = formData.description || undefined;\n this.updateState((state) => ({\n ...state,\n sections: [...state.sections, newSection],\n }));\n // Scroll to the newly added section after DOM update\n setTimeout(() => {\n const sectionElement = document.getElementById(`section-${newSection.id}`);\n if (sectionElement) {\n sectionElement.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n }, 100);\n }\n }\n catch (error) {\n console.error('Error adding section:', error);\n }\n }\n /**\n * Handle section editing\n */\n async handleSectionEdit(section) {\n try {\n const editTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.edit-section.title') || 'Edit Section';\n const titleLabel = await this.translationService.translateAsync('@general:terms.common.title') || 'Title';\n const descriptionLabel = await this.translationService.translateAsync('@general:terms.common.description') || 'Description';\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(editTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n title: section.title || '',\n description: section.description || '',\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(titleLabel, (field) => {\n field.path('title');\n field.textBox({\n placeholder: 'Enter section title',\n validations: [{ rule: 'required' }],\n });\n })\n .formField(descriptionLabel, (field) => {\n field.path('description');\n field.largeTextBox({\n placeholder: 'Enter section description (optional)',\n rows: 3,\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n this.updateState((state) => ({\n ...state,\n sections: state.sections.map((s) => s.id === section.id\n ? {\n ...s,\n title: formData.title || s.title,\n description: formData.description !== undefined ? formData.description : s.description,\n }\n : s),\n }));\n }\n }\n catch (error) {\n console.error('Error editing section:', error);\n }\n }\n /**\n * Handle section removal\n */\n handleSectionRemove(section) {\n // Don't allow removing the last section - must always have at least one\n if (this.sections().length <= 1) {\n return;\n }\n // Remove the section and update order values\n this.updateState((state) => ({\n ...state,\n sections: state.sections\n .filter((s) => s.id !== section.id)\n .map((s, index) => ({\n ...s,\n order: index,\n })),\n }));\n }\n /**\n * Handle section drop (reordering)\n */\n handleSectionDrop(event) {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n // Update order values\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section, index) => ({\n ...section,\n order: index,\n })),\n }));\n }\n }\n //#endregion\n //#region ---- Item Management ----\n /**\n * Handle adding questions to a section\n */\n async handleAddQuestionsToSection(section) {\n try {\n const dataSource = new AXDataSource({\n key: 'id',\n pageSize: 20,\n load: async (e) => {\n const questions = await this.questionBankService.query(e);\n return {\n items: questions.items,\n total: questions.total,\n };\n },\n });\n // Create category tree data source for filtering\n const categoryTreeDataSource = {\n loadRootNodes: async () => {\n const result = await this.questionBankService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'isEmpty' },\n value: true,\n },\n });\n return result.items.map((item) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n loadChildNodes: async (parentId) => {\n const result = await this.questionBankService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'equal' },\n value: parentId,\n },\n });\n return result.items.map((item) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n searchNodes: async (searchValue) => {\n const result = await this.questionBankService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: {\n filters: [\n {\n field: 'title',\n operator: { type: 'contains' },\n value: searchValue,\n },\n {\n field: 'name',\n operator: { type: 'contains' },\n value: searchValue,\n },\n ],\n logic: 'or',\n },\n });\n return result.items.map((item) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n };\n const entity = await this.entityResolver.resolve(RootConfig.module.name, RootConfig.entities.questionBankItem.name);\n if (!entity) {\n throw new Error('Entity not found: ' + RootConfig.entities.questionBankItem.name);\n }\n const columns = entity.columns\n ?.filter((column) => entity.properties.some((property) => property.name === column.name))\n .map((column) => {\n const property = entity.properties.find((prop) => prop.name === column.name);\n return {\n name: column.name,\n title: property?.title ?? '',\n visible: column.options?.visible !== false,\n widget: {\n type: column.showAs?.type ?? property?.schema?.interface?.type ?? 'text-editor',\n options: column.showAs?.options ?? property?.schema?.interface?.options ?? {},\n },\n };\n }) || [];\n // Translate titles\n const selectQuestionsTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.select-questions') || 'Select Questions from Question Bank';\n const categoriesTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.categories') || 'Categories';\n const titleLabel = await this.translationService.translateAsync('@general:terms.common.title') || 'Title';\n const descriptionLabel = await this.translationService.translateAsync('@general:terms.common.description') || 'Description';\n // Open data selector with category filter\n const result = await this.dataSelectorService.openWithCategoryFilter({\n title: selectQuestionsTitle,\n dataSource: dataSource,\n columns: columns,\n selectionMode: 'multiple',\n searchFields: [\n { name: 'title', title: titleLabel },\n { name: 'description', title: descriptionLabel },\n ],\n allowCreate: false,\n }, {\n title: categoriesTitle,\n dataSource: categoryTreeDataSource,\n filterField: 'categoryIds',\n filterOperator: 'contains',\n width: '350px',\n });\n // Add selected questions to the section\n if (result?.items && result.items.length > 0) {\n // Load full question details for each selected item\n const questionPromises = result.items.map((item) => this.questionBankService.getOne(item.id).catch(() => null));\n const questions = await Promise.all(questionPromises);\n const newItems = result.items.map((item, index) => {\n const fullQuestion = questions[index];\n return {\n id: AXPDataGenerator.uuid(),\n questionBankItemId: item.id,\n order: section.items.length + index,\n isRequired: false,\n visibilityCondition: undefined,\n requiredCondition: undefined,\n scoringOverride: undefined,\n isNewlyAdded: true,\n question: fullQuestion\n ? {\n id: fullQuestion.id,\n title: fullQuestion.title,\n description: fullQuestion.description,\n difficulty: fullQuestion.difficulty,\n scoringType: fullQuestion.scoringType,\n }\n : {\n id: item.id,\n title: item.title || 'Question',\n description: item.description,\n difficulty: item.difficulty,\n scoringType: item.scoringType,\n },\n };\n });\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((s) => s.id === section.id\n ? {\n ...s,\n items: [...s.items, ...newItems],\n }\n : s),\n }));\n }\n }\n catch (error) {\n console.error('Error loading questions:', error);\n }\n }\n /**\n * Handle item removal\n */\n handleItemRemove(item, sectionId) {\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id !== sectionId)\n return section;\n // Hard delete - remove item from array\n return {\n ...section,\n items: section.items.filter((i) => i.id !== item.id).map((item, index) => ({\n ...item,\n order: index,\n })),\n };\n }),\n }));\n }\n /**\n * Handle question item editing (settings)\n */\n async handleItemEdit(item, sectionId) {\n try {\n // Load full question details to get default scoring values\n const questionDetails = item.questionBankItemId\n ? await this.questionBankService.getOne(item.questionBankItemId).catch(() => null)\n : null;\n const editTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.edit-question.title') || 'Edit Question Settings';\n const isRequiredLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.is-required.title') || 'Required';\n const visibilityConditionLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.visibility-condition.title') || 'Visibility Condition';\n const requiredConditionLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.required-condition.title') || 'Required Condition';\n const scoringPointsLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.scoring-points.title') || 'Scoring Points';\n const scoringWeightLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.fields.scoring-weight.title') || 'Scoring Weight';\n // Get default values from question bank item or use existing override values\n const defaultScoringPoints = item.scoringOverride?.points ?? questionDetails?.points ?? '';\n const defaultScoringWeight = item.scoringOverride?.weight ?? questionDetails?.weight ?? '';\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(editTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n isRequired: item.isRequired ?? false,\n visibilityCondition: item.visibilityCondition || '',\n requiredCondition: item.requiredCondition || '',\n scoringPoints: defaultScoringPoints,\n scoringWeight: defaultScoringWeight,\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(isRequiredLabel, (field) => {\n field.path('isRequired');\n field.toggleSwitch();\n })\n .formField(visibilityConditionLabel, (field) => {\n field.path('visibilityCondition');\n field.customWidget('code-editor', {\n language: 'javascript',\n lineNumbers: true,\n height: 'min-h-48',\n });\n })\n .formField(requiredConditionLabel, (field) => {\n field.path('requiredCondition');\n field.customWidget('code-editor', {\n language: 'javascript',\n lineNumbers: true,\n height: 'min-h-48',\n });\n })\n .formField(scoringPointsLabel, (field) => {\n field.path('scoringPoints');\n field.numberBox({\n placeholder: 'Enter scoring points (optional)',\n });\n })\n .formField(scoringWeightLabel, (field) => {\n field.path('scoringWeight');\n field.numberBox({\n placeholder: 'Enter scoring weight (optional)',\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n this.updateState((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id !== sectionId)\n return section;\n return {\n ...section,\n items: section.items.map((i) => {\n if (i.id !== item.id)\n return i;\n // Build scoring override if points or weight are provided\n let scoringOverride = undefined;\n const hasPoints = formData.scoringPoints !== undefined && formData.scoringPoints !== null && formData.scoringPoints !== '';\n const hasWeight = formData.scoringWeight !== undefined && formData.scoringWeight !== null && formData.scoringWeight !== '';\n if (hasPoints || hasWeight) {\n scoringOverride = {};\n if (hasPoints) {\n scoringOverride.points = Number(formData.scoringPoints);\n }\n if (hasWeight) {\n scoringOverride.weight = Number(formData.scoringWeight);\n }\n }\n return {\n ...i,\n isRequired: formData.isRequired ?? false,\n visibilityCondition: formData.visibilityCondition || undefined,\n requiredCondition: formData.requiredCondition || undefined,\n scoringOverride: scoringOverride,\n };\n }),\n };\n }),\n }));\n }\n }\n catch (error) {\n console.error('Error editing question:', error);\n }\n }\n /**\n * Handle item drop (reordering within section or between sections)\n */\n handleItemDrop(event, targetSectionId) {\n if (event.previousContainer === event.container) {\n // Reordering within same section\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id !== targetSectionId)\n return section;\n return {\n ...section,\n items: section.items.map((item, index) => ({\n ...item,\n order: index,\n })),\n };\n }),\n }));\n }\n else {\n // Moving item between sections\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\n // Update orders for both sections\n this.builderState.update((state) => ({\n ...state,\n sections: state.sections.map((section) => {\n if (section.id === targetSectionId || section.id === event.previousContainer.id) {\n return {\n ...section,\n items: section.items.map((item, index) => ({\n ...item,\n order: index,\n })),\n };\n }\n return section;\n }),\n }));\n }\n }\n /**\n * Get all section drop lists for drag-drop connectivity\n */\n getAllSectionDropLists() {\n return this.sections().map((section) => `section-${section.id}-items`);\n }\n //#endregion\n //#region ---- Display Settings ----\n /**\n * Handle opening display settings dialog\n */\n async handleSettings() {\n try {\n const settingsTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.settings.title') || 'Display Settings';\n const viewModeLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.title') || 'View Mode';\n const showProgressBarLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-progress-bar.title') || 'Show Progress Bar';\n const showTimerLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-timer.title') || 'Show Timer';\n const showSectionTitlesLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-section-titles.title') || 'Show Section Titles';\n const showQuestionNumbersLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-question-numbers.title') || 'Show Question Numbers';\n const validateBeforeNavigationLabel = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.fields.validate-before-navigation.title') || 'Validate Before Navigation';\n const currentSettings = this.displaySettings();\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(settingsTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n viewMode: currentSettings.viewMode || 'single-page',\n showProgressBar: currentSettings.showProgressBar ?? true,\n showTimer: currentSettings.showTimer ?? false,\n showSectionTitles: currentSettings.showSectionTitles ?? true,\n showQuestionNumbers: currentSettings.showQuestionNumbers ?? true,\n validateBeforeNavigation: currentSettings.validateBeforeNavigation ?? true,\n })\n .content((layoutBuilder) => {\n layoutBuilder.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .formField(viewModeLabel, (field) => {\n field.path('viewMode');\n field.selectBox({\n valueField: 'id',\n textField: 'title',\n dataSource: [\n { id: 'single-page', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.single-page' },\n { id: 'page-per-group', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.page-per-group' },\n { id: 'page-per-question', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.page-per-question' },\n { id: 'side-menu', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.side-menu' },\n ],\n });\n })\n .formField(showProgressBarLabel, (field) => {\n field.path('showProgressBar');\n field.toggleSwitch();\n })\n .formField(showTimerLabel, (field) => {\n field.path('showTimer');\n field.toggleSwitch();\n })\n .formField(showSectionTitlesLabel, (field) => {\n field.path('showSectionTitles');\n field.toggleSwitch();\n })\n .formField(showQuestionNumbersLabel, (field) => {\n field.path('showQuestionNumbers');\n field.toggleSwitch();\n })\n .formField(validateBeforeNavigationLabel, (field) => {\n field.path('validateBeforeNavigation');\n field.toggleSwitch();\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n });\n })\n .show();\n const formData = dialogRef.context();\n const action = await dialogRef.action();\n dialogRef.close();\n if (action !== 'cancel' && formData) {\n // Extract viewMode - handle both string and object (from select box)\n let viewMode = 'single-page';\n const viewModeValue = formData.viewMode;\n if (typeof viewModeValue === 'string') {\n viewMode = viewModeValue;\n }\n else if (viewModeValue && typeof viewModeValue === 'object' && 'id' in viewModeValue) {\n viewMode = viewModeValue.id;\n }\n const newSettings = {\n viewMode: viewMode,\n showProgressBar: formData.showProgressBar ?? true,\n showTimer: formData.showTimer ?? false,\n showSectionTitles: formData.showSectionTitles ?? true,\n showQuestionNumbers: formData.showQuestionNumbers ?? true,\n validateBeforeNavigation: formData.validateBeforeNavigation ?? true,\n };\n // Update state by preserving existing question data and updating displaySettings in state\n this.updateState((state) => {\n // Update displaySettings in state directly\n const updatedState = {\n ...state,\n displaySettings: newSettings,\n };\n return updatedState;\n });\n }\n }\n catch (error) {\n console.error('Error opening settings:', error);\n }\n }\n //#endregion\n //#region ---- Preview ----\n /**\n * Open preview dialog with questionnaire viewer\n */\n async handlePreview() {\n if (this.sections().length === 0) {\n return;\n }\n try {\n const currentValue = convertStateToValue(this.builderState(), this.value() || undefined);\n // Always use the current displaySettings from the computed property to ensure preview uses latest settings\n currentValue.displaySettings = this.displaySettings();\n const previewTitle = await this.translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title') || 'Preview';\n const result = await this.questionnaireViewerService.open({\n title: previewTitle,\n structure: currentValue,\n size: 'lg',\n });\n // Handle result if needed (answers, submitted status)\n if (result) {\n console.log('Questionnaire preview result:', result);\n }\n }\n catch (error) {\n console.error('Error opening preview:', error);\n }\n }\n /**\n * Toggle fullscreen mode using the directive\n */\n async handleFullscreen() {\n const fullscreen = this.fullscreenDirective();\n if (fullscreen) {\n await fullscreen.toggle();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMQuestionnaireBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXMQuestionnaireBuilderComponent, isStandalone: true, selector: \"axm-questionnaire-builder\", inputs: { value: { classPropertyName: \"value\", publicName: \"value\", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\" }, viewQueries: [{ propertyName: \"fullscreenDirective\", first: true, predicate: [\"fullscreen\"], descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"axm-questionnaire-builder\\\" axFullscreen #fullscreen=\\\"axFullscreen\\\">\\n <div class=\\\"__header\\\">\\n <div class=\\\"__header-left\\\">\\n <!-- Left side can be used for other actions in the future -->\\n </div>\\n <div class=\\\"__header-right\\\">\\n @if (!readonly()) {\\n\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title' | translate | async) || 'Add Section'\\\"\\n [color]=\\\"'primary'\\\" (onClick)=\\\"handleAddSection()\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-layer-group\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.settings.title' | translate | async) || 'Settings'\\\"\\n (onClick)=\\\"handleSettings()\\\">\\n <ax-icon icon=\\\"fa-light fa-gear\\\"></ax-icon>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title' | translate | async) || 'Preview'\\\"\\n [disabled]=\\\"sections().length === 0\\\" (onClick)=\\\"handlePreview()\\\">\\n <ax-icon icon=\\\"fa-light fa-eye\\\"></ax-icon>\\n </ax-button>\\n }\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.fullscreen.title' | translate | async) || 'Full Screen'\\\"\\n (onClick)=\\\"handleFullscreen()\\\">\\n <ax-icon icon=\\\"fa-light fa-expand\\\"></ax-icon>\\n </ax-button>\\n </div>\\n </div>\\n\\n <div class=\\\"__content\\\">\\n <!-- Designer Mode -->\\n <div class=\\\"__sections-container\\\" cdkDropList [cdkDropListData]=\\\"sections()\\\"\\n (cdkDropListDropped)=\\\"handleSectionDrop($event)\\\">\\n @for (section of sections(); track section.id) {\\n <div class=\\\"__section\\\" cdkDrag [id]=\\\"'section-' + section.id\\\">\\n <div class=\\\"__section-header\\\">\\n @if (!readonly()) {\\n <div class=\\\"__section-drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n <div class=\\\"__section-info\\\">\\n <h3 class=\\\"__section-title\\\">{{ section.title }}</h3>\\n @if (section.description) {\\n <p class=\\\"__section-description\\\">{{ section.description }}</p>\\n }\\n </div>\\n @if (!readonly()) {\\n <div class=\\\"__section-actions\\\">\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"'@assessment-management:questionnaires.components.questionnaire-builder.actions.add-question.title' | translate | async\\\"\\n [color]=\\\"'accent2'\\\" (onClick)=\\\"handleAddQuestionsToSection(section)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-plus\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleSectionEdit(section)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n @if (canRemoveSection()) {\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleSectionRemove(section)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n }\\n </div>\\n }\\n </div>\\n\\n <div class=\\\"__items-container\\\">\\n <div class=\\\"__items-list ax-overflow-auto\\\" cdkDropList [id]=\\\"'section-' + section.id + '-items'\\\"\\n [cdkDropListData]=\\\"section.items\\\" [cdkDropListConnectedTo]=\\\"getAllSectionDropLists()\\\"\\n (cdkDropListDropped)=\\\"handleItemDrop($event, section.id)\\\">\\n @if (section.items.length === 0) {\\n <axp-state-message icon=\\\"fa-light fa-inbox\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.title' | translate | async) || ''\\\"\\n [description]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.description' | translate | async) || ''\\\">\\n </axp-state-message>\\n } @else {\\n @for (item of section.items; track item.id) {\\n <div class=\\\"__item\\\" cdkDrag>\\n @if (!readonly()) {\\n <div class=\\\"__drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n\\n <div class=\\\"__item-content\\\">\\n <div class=\\\"__item-header\\\">\\n <div class=\\\"__item-icon\\\"\\n [class.__difficulty-easy]=\\\"item.question?.difficulty === 'easy'\\\"\\n [class.__difficulty-medium]=\\\"item.question?.difficulty === 'medium'\\\"\\n [class.__difficulty-hard]=\\\"item.question?.difficulty === 'hard'\\\">\\n <ax-icon icon=\\\"fa-light fa-question-circle\\\"></ax-icon>\\n </div>\\n <div class=\\\"__item-info\\\">\\n <h4 class=\\\"__item-title\\\">{{ item.question?.title ?? 'Question' }}</h4>\\n @if (item.question?.description) {\\n <p class=\\\"__item-description\\\">{{ item.question?.description }}</p>\\n }\\n </div>\\n <div class=\\\"__item-meta\\\">\\n @if (item.isRequired) {\\n <span class=\\\"__item-badge __required\\\">Required</span>\\n }\\n @if (item.scoringOverride) {\\n <span class=\\\"__item-badge\\\">Custom Scoring</span>\\n }\\n </div>\\n </div>\\n </div>\\n\\n @if (!readonly()) {\\n <div class=\\\"__item-actions\\\">\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleItemEdit(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleItemRemove(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n </div>\\n }\\n </div>\\n }\\n }\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n </div>\\n</div>\", styles: [\".axm-questionnaire-builder{display:flex;height:100%;width:100%;flex-direction:column}.axm-questionnaire-builder .__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-bottom-width:1px;padding:.75rem}.axm-questionnaire-builder .__header .__header-left,.axm-questionnaire-builder .__header .__header-right{display:flex;gap:.5rem}.axm-questionnaire-builder .__content{flex:1 1 0%;overflow:auto;padding:.75rem}.axm-questionnaire-builder .__sections-container{display:flex;flex-direction:column;gap:1rem}.axm-questionnaire-builder .__section{border-radius:.375rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__section .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__section .__items-container{padding:1rem}.axm-questionnaire-builder .__section .__items-container .__items-list{gap:.75rem;min-height:3rem;display:flex;flex-direction:column}.axm-questionnaire-builder .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));cursor:move;-webkit-user-select:none;user-select:none;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-questionnaire-builder .__item.__selected{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-accent2-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-accent2-lightest-surface));color:rgb(var(--ax-sys-color-on-accent2-lightest-surface));border-color:rgb(var(--ax-sys-color-border-accent2-lightest-surface))}.axm-questionnaire-builder .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab;transition:color .15s ease-in-out}.axm-questionnaire-builder .__item .__drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__item .__drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content{flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__preview-container>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.axm-questionnaire-builder .__preview-container .__preview-sections>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.axm-questionnaire-builder .__preview-container .__preview-section{border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-description{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item{display:flex;align-items:flex-start;gap:.75rem;border-radius:.375rem;border-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-icon{display:flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:.375rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));background-color:rgb(var(--ax-sys-color-primary-lightest-surface));color:rgb(var(--ax-sys-color-on-primary-lightest-surface));border-color:rgb(var(--ax-sys-color-border-primary-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info{flex:1 1 0%}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-title{margin-bottom:.25rem;font-size:1rem;line-height:1.5rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-badge{margin-top:.5rem;display:inline-block;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__items-container{padding:1rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder{position:relative;opacity:.6;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.5rem;min-height:5.5rem;transition:all .2s ease-in-out;padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__drag-handle,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-content,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-actions{opacity:0}.axm-questionnaire-builder .__section.cdk-drag-placeholder{opacity:.5;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.375rem;min-height:4rem;transition:all .2s ease-in-out}.axm-questionnaire-builder .__section.cdk-drag-placeholder>*{opacity:0}.axm-questionnaire-builder .cdk-drop-list-dragging .__item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.axm-questionnaire-builder .cdk-drop-list-dragging .__section:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.__item.cdk-drag-preview{border-radius:.5rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));display:flex;align-items:center;gap:.75rem;padding:1rem;opacity:.9;box-sizing:border-box}.__item.cdk-drag-preview .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content{flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));opacity:.9;box-sizing:border-box;background-color:var(--ax-lightest-surface)}.__section.cdk-drag-preview .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.__section.cdk-drag-preview .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.__section.cdk-drag-preview .__section-header .__section-info{flex:1 1 0%}.__section.cdk-drag-preview .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-actions{display:flex;gap:.5rem}.__section.cdk-drag-preview .__items-container{padding:1rem}.__section.cdk-drag-preview .__items-container .__items-list{gap:.75rem;display:flex;flex-direction:column}.__section.cdk-drag-preview .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__section.cdk-drag-preview .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content{flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i2.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"ngmodule\", type: AXSwitchModule }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"directive\", type: \n // CDK DragDrop modules\n CdkDropList, selector: \"[cdkDropList], cdk-drop-list\", inputs: [\"cdkDropListConnectedTo\", \"cdkDropListData\", \"cdkDropListOrientation\", \"id\", \"cdkDropListLockAxis\", \"cdkDropListDisabled\", \"cdkDropListSortingDisabled\", \"cdkDropListEnterPredicate\", \"cdkDropListSortPredicate\", \"cdkDropListAutoScrollDisabled\", \"cdkDropListAutoScrollStep\", \"cdkDropListElementContainer\", \"cdkDropListHasAnchor\"], outputs: [\"cdkDropListDropped\", \"cdkDropListEntered\", \"cdkDropListExited\", \"cdkDropListSorted\"], exportAs: [\"cdkDropList\"] }, { kind: \"directive\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: [\"cdkDragData\", \"cdkDragLockAxis\", \"cdkDragRootElement\", \"cdkDragBoundary\", \"cdkDragStartDelay\", \"cdkDragFreeDragPosition\", \"cdkDragDisabled\", \"cdkDragConstrainPosition\", \"cdkDragPreviewClass\", \"cdkDragPreviewContainer\", \"cdkDragScale\"], outputs: [\"cdkDragStarted\", \"cdkDragReleased\", \"cdkDragEnded\", \"cdkDragEntered\", \"cdkDragExited\", \"cdkDragDropped\", \"cdkDragMoved\"], exportAs: [\"cdkDrag\"] }, { kind: \"directive\", type: CdkDragHandle, selector: \"[cdkDragHandle]\", inputs: [\"cdkDragHandleDisabled\"] }, { kind: \"directive\", type: \n // Fullscreen directive\n AXFullscreenDirective, selector: \"[axFullscreen]\", outputs: [\"fullscreenChange\"], exportAs: [\"axFullscreen\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXMQuestionnaireBuilderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-questionnaire-builder', changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormModule,\n AXSwitchModule,\n AXLabelModule,\n AXTranslationModule,\n AXPStateMessageComponent,\n // CDK DragDrop modules\n CdkDropList,\n CdkDrag,\n CdkDragHandle,\n // Fullscreen directive\n AXFullscreenDirective,\n ], template: \"<div class=\\\"axm-questionnaire-builder\\\" axFullscreen #fullscreen=\\\"axFullscreen\\\">\\n <div class=\\\"__header\\\">\\n <div class=\\\"__header-left\\\">\\n <!-- Left side can be used for other actions in the future -->\\n </div>\\n <div class=\\\"__header-right\\\">\\n @if (!readonly()) {\\n\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title' | translate | async) || 'Add Section'\\\"\\n [color]=\\\"'primary'\\\" (onClick)=\\\"handleAddSection()\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-layer-group\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.settings.title' | translate | async) || 'Settings'\\\"\\n (onClick)=\\\"handleSettings()\\\">\\n <ax-icon icon=\\\"fa-light fa-gear\\\"></ax-icon>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title' | translate | async) || 'Preview'\\\"\\n [disabled]=\\\"sections().length === 0\\\" (onClick)=\\\"handlePreview()\\\">\\n <ax-icon icon=\\\"fa-light fa-eye\\\"></ax-icon>\\n </ax-button>\\n }\\n <ax-button class=\\\"ax-sm\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.actions.fullscreen.title' | translate | async) || 'Full Screen'\\\"\\n (onClick)=\\\"handleFullscreen()\\\">\\n <ax-icon icon=\\\"fa-light fa-expand\\\"></ax-icon>\\n </ax-button>\\n </div>\\n </div>\\n\\n <div class=\\\"__content\\\">\\n <!-- Designer Mode -->\\n <div class=\\\"__sections-container\\\" cdkDropList [cdkDropListData]=\\\"sections()\\\"\\n (cdkDropListDropped)=\\\"handleSectionDrop($event)\\\">\\n @for (section of sections(); track section.id) {\\n <div class=\\\"__section\\\" cdkDrag [id]=\\\"'section-' + section.id\\\">\\n <div class=\\\"__section-header\\\">\\n @if (!readonly()) {\\n <div class=\\\"__section-drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n <div class=\\\"__section-info\\\">\\n <h3 class=\\\"__section-title\\\">{{ section.title }}</h3>\\n @if (section.description) {\\n <p class=\\\"__section-description\\\">{{ section.description }}</p>\\n }\\n </div>\\n @if (!readonly()) {\\n <div class=\\\"__section-actions\\\">\\n <ax-button class=\\\"ax-sm\\\"\\n [text]=\\\"'@assessment-management:questionnaires.components.questionnaire-builder.actions.add-question.title' | translate | async\\\"\\n [color]=\\\"'accent2'\\\" (onClick)=\\\"handleAddQuestionsToSection(section)\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-plus\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleSectionEdit(section)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n @if (canRemoveSection()) {\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleSectionRemove(section)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n }\\n </div>\\n }\\n </div>\\n\\n <div class=\\\"__items-container\\\">\\n <div class=\\\"__items-list ax-overflow-auto\\\" cdkDropList [id]=\\\"'section-' + section.id + '-items'\\\"\\n [cdkDropListData]=\\\"section.items\\\" [cdkDropListConnectedTo]=\\\"getAllSectionDropLists()\\\"\\n (cdkDropListDropped)=\\\"handleItemDrop($event, section.id)\\\">\\n @if (section.items.length === 0) {\\n <axp-state-message icon=\\\"fa-light fa-inbox\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.title' | translate | async) || ''\\\"\\n [description]=\\\"('@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.description' | translate | async) || ''\\\">\\n </axp-state-message>\\n } @else {\\n @for (item of section.items; track item.id) {\\n <div class=\\\"__item\\\" cdkDrag>\\n @if (!readonly()) {\\n <div class=\\\"__drag-handle\\\" cdkDragHandle>\\n <ax-icon icon=\\\"fa-light fa-grip-vertical\\\"></ax-icon>\\n </div>\\n }\\n\\n <div class=\\\"__item-content\\\">\\n <div class=\\\"__item-header\\\">\\n <div class=\\\"__item-icon\\\"\\n [class.__difficulty-easy]=\\\"item.question?.difficulty === 'easy'\\\"\\n [class.__difficulty-medium]=\\\"item.question?.difficulty === 'medium'\\\"\\n [class.__difficulty-hard]=\\\"item.question?.difficulty === 'hard'\\\">\\n <ax-icon icon=\\\"fa-light fa-question-circle\\\"></ax-icon>\\n </div>\\n <div class=\\\"__item-info\\\">\\n <h4 class=\\\"__item-title\\\">{{ item.question?.title ?? 'Question' }}</h4>\\n @if (item.question?.description) {\\n <p class=\\\"__item-description\\\">{{ item.question?.description }}</p>\\n }\\n </div>\\n <div class=\\\"__item-meta\\\">\\n @if (item.isRequired) {\\n <span class=\\\"__item-badge __required\\\">Required</span>\\n }\\n @if (item.scoringOverride) {\\n <span class=\\\"__item-badge\\\">Custom Scoring</span>\\n }\\n </div>\\n </div>\\n </div>\\n\\n @if (!readonly()) {\\n <div class=\\\"__item-actions\\\">\\n <ax-button class=\\\"ax-sm\\\" [look]=\\\"'blank'\\\" color=\\\"accent3\\\"\\n (onClick)=\\\"handleItemEdit(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-pencil\\\"></ax-icon>\\n </ax-button>\\n <ax-button [look]=\\\"'blank'\\\" class=\\\"ax-sm\\\" color=\\\"danger\\\"\\n (onClick)=\\\"handleItemRemove(item, section.id)\\\">\\n <ax-icon class=\\\"fa-light fa-trash-can\\\"></ax-icon>\\n </ax-button>\\n </div>\\n }\\n </div>\\n }\\n }\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n </div>\\n</div>\", styles: [\".axm-questionnaire-builder{display:flex;height:100%;width:100%;flex-direction:column}.axm-questionnaire-builder .__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-bottom-width:1px;padding:.75rem}.axm-questionnaire-builder .__header .__header-left,.axm-questionnaire-builder .__header .__header-right{display:flex;gap:.5rem}.axm-questionnaire-builder .__content{flex:1 1 0%;overflow:auto;padding:.75rem}.axm-questionnaire-builder .__sections-container{display:flex;flex-direction:column;gap:1rem}.axm-questionnaire-builder .__section{border-radius:.375rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__section .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__section .__section-header .__section-drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__section .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__section .__items-container{padding:1rem}.axm-questionnaire-builder .__section .__items-container .__items-list{gap:.75rem;min-height:3rem;display:flex;flex-direction:column}.axm-questionnaire-builder .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));cursor:move;-webkit-user-select:none;user-select:none;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item:hover{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-questionnaire-builder .__item.__selected{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-accent2-500),var(--tw-border-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-accent2-lightest-surface));color:rgb(var(--ax-sys-color-on-accent2-lightest-surface));border-color:rgb(var(--ax-sys-color-border-accent2-lightest-surface))}.axm-questionnaire-builder .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab;transition:color .15s ease-in-out}.axm-questionnaire-builder .__item .__drag-handle:active{cursor:grabbing}.axm-questionnaire-builder .__item .__drag-handle:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content{flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.axm-questionnaire-builder .__preview-container>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.axm-questionnaire-builder .__preview-container .__preview-sections>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.axm-questionnaire-builder .__preview-container .__preview-section{border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-section-description{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item{display:flex;align-items:flex-start;gap:.75rem;border-radius:.375rem;border-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-icon{display:flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:.375rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));background-color:rgb(var(--ax-sys-color-primary-lightest-surface));color:rgb(var(--ax-sys-color-on-primary-lightest-surface));border-color:rgb(var(--ax-sys-color-border-primary-lightest-surface))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info{flex:1 1 0%}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-title{margin-bottom:.25rem;font-size:1rem;line-height:1.5rem;font-weight:600}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__preview-container .__preview-section .__preview-items .__preview-item .__preview-item-info .__preview-item-badge{margin-top:.5rem;display:inline-block;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info{flex:1 1 0%}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__section-header .__section-actions{display:flex;gap:.5rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__items-container{padding:1rem}.axm-questionnaire-builder .__item.cdk-drag-placeholder{position:relative;opacity:.6;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.5rem;min-height:5.5rem;transition:all .2s ease-in-out;padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.axm-questionnaire-builder .__item.cdk-drag-placeholder .__drag-handle,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-content,.axm-questionnaire-builder .__item.cdk-drag-placeholder .__item-actions{opacity:0}.axm-questionnaire-builder .__section.cdk-drag-placeholder{opacity:.5;border-width:2px;border-style:dashed;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),var(--tw-bg-opacity, 1));border-radius:.375rem;min-height:4rem;transition:all .2s ease-in-out}.axm-questionnaire-builder .__section.cdk-drag-placeholder>*{opacity:0}.axm-questionnaire-builder .cdk-drop-list-dragging .__item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.axm-questionnaire-builder .cdk-drop-list-dragging .__section:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.__item.cdk-drag-preview{border-radius:.5rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));display:flex;align-items:center;gap:.75rem;padding:1rem;opacity:.9;box-sizing:border-box}.__item.cdk-drag-preview .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content{flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0;transition:all .2s ease-in-out}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__item.cdk-drag-preview .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__item.cdk-drag-preview .__item-actions{display:flex;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));opacity:.9;box-sizing:border-box;background-color:var(--ax-lightest-surface)}.__section.cdk-drag-preview .__section-header{display:flex;align-items:center;gap:.75rem;border-bottom-width:1px;padding:.75rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.__section.cdk-drag-preview .__section-header .__section-drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1));cursor:grab}.__section.cdk-drag-preview .__section-header .__section-info{flex:1 1 0%}.__section.cdk-drag-preview .__section-header .__section-info .__section-title{margin-bottom:.25rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-description{font-size:.875rem;line-height:1.25rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-info .__section-weight{margin-top:.25rem;display:inline-block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__section-header .__section-actions{display:flex;gap:.5rem}.__section.cdk-drag-preview .__items-container{padding:1rem}.__section.cdk-drag-preview .__items-container .__items-list{gap:.75rem;display:flex;flex-direction:column}.__section.cdk-drag-preview .__item{display:flex;align-items:center;gap:.75rem;border-radius:.5rem;border-width:1px;padding:1rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.__section.cdk-drag-preview .__item .__drag-handle{display:flex;height:1.5rem;width:1.5rem;align-items:center;justify-content:center;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content{flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header{display:flex;align-items:flex-start;gap:1rem}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon{display:flex;height:3rem;width:3rem;align-items:center;justify-content:center;border-radius:.5rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-500),var(--tw-bg-opacity, 1));flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-easy{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-medium{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-icon.__difficulty-hard{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info{min-width:0px;flex:1 1 0%}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-title{margin-bottom:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity: 1;color:rgb(38 38 38 / var(--tw-text-opacity, 1));line-height:1.4}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-info .__item-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1));line-height:1.5}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:.5rem;flex-shrink:0}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-content .__item-header .__item-meta .__item-badge.__required{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__section.cdk-drag-preview .__item .__item-actions{display:flex;gap:.5rem;flex-shrink:0}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: \"value\", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: \"readonly\", required: false }] }], valueChange: [{ type: i0.Output, args: [\"valueChange\"] }], fullscreenDirective: [{ type: i0.ViewChild, args: ['fullscreen', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9xdWVzdGlvbm5haXJlLWJ1aWxkZXIvcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9xdWVzdGlvbm5haXJlLWJ1aWxkZXIvcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLE9BQU8sRUFBZSxhQUFhLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUs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LEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQjtRQUNsQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM5QyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNMLENBQUM7K0dBM2hDUSxnQ0FBZ0M7bUdBQWhDLGdDQUFnQyxzZ0JDbkU3Qyw0alFBMklNLCtweEJEMUZFLFlBQVksOEJBQ1osV0FBVyw4QkFDWCxjQUFjLDZYQUNkLGlCQUFpQixzVkFDakIsZ0JBQWdCLDhCQUNoQixZQUFZLDhCQUNaLGNBQWMsOEJBQ2QsYUFBYSw4QkFDYixtQkFBbUIsK0JBQ25CLHdCQUF3QjtnQkFDeEIsdUJBQXVCO2dCQUN2QixXQUFXLHNoQkFDWCxPQUFPLHdjQUNQLGFBQWE7Z0JBQ2IsdUJBQXVCO2dCQUN2QixxQkFBcUI7OzRGQUdoQixnQ0FBZ0M7a0JBeEI1QyxTQUFTOytCQUNJLDJCQUEyQixtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQix3QkFBd0I7d0JBQ3hCLHVCQUF1Qjt3QkFDdkIsV0FBVzt3QkFDWCxPQUFPO3dCQUNQLGFBQWE7d0JBQ2IsdUJBQXVCO3dCQUN2QixxQkFBcUI7cUJBQ3hCO2dXQWlEeUUsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWEZvcm1Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgeyBBWFN3aXRjaE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zd2l0Y2gnO1xuaW1wb3J0IHsgQVhMYWJlbE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sYWJlbCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlLCBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBTdGF0ZU1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcmFnSGFuZGxlLCBDZGtEcm9wTGlzdCwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFYRGF0YVNvdXJjZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGlhbG9nJztcbmltcG9ydCB7IEFYUEVudGl0eSwgQVhQRW50aXR5UHJvcGVydHksIEFYUEVudGl0eVRhYmxlQ29sdW1uIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQQ2F0ZWdvcnlUcmVlRGF0YVNvdXJjZSwgQVhQRGF0YVNlbGVjdG9yU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQRW50aXR5RGVmaW5pdGlvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwsIHVudHJhY2tlZCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbkJhbmtJdGVtU2VydmljZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3F1ZXN0aW9uLWJhbmstaXRlbS9xdWVzdGlvbi1iYW5rLWl0ZW0uc2VydmljZSc7XG5pbXBvcnQge1xuICAgIFF1ZXN0aW9ubmFpcmVCdWlsZGVySXRlbSxcbiAgICBRdWVzdGlvbm5haXJlQnVpbGRlclNlY3Rpb24sXG4gICAgUXVlc3Rpb25uYWlyZUJ1aWxkZXJTdGF0ZSxcbiAgICBRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlLFxuICAgIFF1ZXN0aW9ubmFpcmVEaXNwbGF5U2V0dGluZ3MsXG4gICAgY29udmVydFN0YXRlVG9WYWx1ZSxcbiAgICBjb252ZXJ0VmFsdWVUb1N0YXRlLFxuICAgIGNyZWF0ZURlZmF1bHRTZWN0aW9uLFxufSBmcm9tICcuL3F1ZXN0aW9ubmFpcmUtYnVpbGRlci50eXBlcyc7XG5pbXBvcnQgeyBBWFBEYXRhR2VuZXJhdG9yLCBBWEZ1bGxzY3JlZW5EaXJlY3RpdmUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhNUXVlc3Rpb25uYWlyZVZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi9xdWVzdGlvbm5haXJlLXZpZXdlci9xdWVzdGlvbm5haXJlLXZpZXdlci5zZXJ2aWNlJztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29tcG9uZW50ICAgLS0tLVxuXG4vKipcbiAqIFJldXNhYmxlIFF1ZXN0aW9ubmFpcmUgQnVpbGRlciBDb21wb25lbnRcbiAqIENhbiBiZSB1c2VkIGJvdGggaW4gZGlhbG9nIGFuZCBpbmxpbmUgY29udGV4dHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheG0tcXVlc3Rpb25uYWlyZS1idWlsZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgICAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICAgICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICAgICAgQVhGb3JtTW9kdWxlLFxuICAgICAgICBBWFN3aXRjaE1vZHVsZSxcbiAgICAgICAgQVhMYWJlbE1vZHVsZSxcbiAgICAgICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICAgICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICAgICAgICAvLyBDREsgRHJhZ0Ryb3AgbW9kdWxlc1xuICAgICAgICBDZGtEcm9wTGlzdCxcbiAgICAgICAgQ2RrRHJhZyxcbiAgICAgICAgQ2RrRHJhZ0hhbmRsZSxcbiAgICAgICAgLy8gRnVsbHNjcmVlbiBkaXJlY3RpdmVcbiAgICAgICAgQVhGdWxsc2NyZWVuRGlyZWN0aXZlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVF1ZXN0aW9ubmFpcmVCdWlsZGVyQ29tcG9uZW50IHtcbiAgICAvLyNyZWdpb24gLS0tLSAgIFNlcnZpY2VzICYgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gICAgcHJvdGVjdGVkIGRhdGFTZWxlY3RvclNlcnZpY2UgPSBpbmplY3QoQVhQRGF0YVNlbGVjdG9yU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIHF1ZXN0aW9uQmFua1NlcnZpY2UgPSBpbmplY3QoQVhNUXVlc3Rpb25CYW5rSXRlbVNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCBlbnRpdHlSZXNvbHZlciA9IGluamVjdChBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgZGlhbG9nU2VydmljZSA9IGluamVjdChBWERpYWxvZ1NlcnZpY2UpO1xuICAgIHByb3RlY3RlZCB0cmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCBsYXlvdXRCdWlsZGVyID0gaW5qZWN0KEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgcXVlc3Rpb25uYWlyZVZpZXdlclNlcnZpY2UgPSBpbmplY3QoQVhNUXVlc3Rpb25uYWlyZVZpZXdlclNlcnZpY2UpO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIElucHV0cyAmIE91dHB1dHMgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsIHZhbHVlIChRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlKVxuICAgICAqL1xuICAgIHZhbHVlID0gaW5wdXQ8UXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqXG4gICAgICogUmVhZG9ubHkgbW9kZVxuICAgICAqL1xuICAgIHJlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICogVmFsdWUgY2hhbmdlIGV2ZW50XG4gICAgICovXG4gICAgdmFsdWVDaGFuZ2UgPSBvdXRwdXQ8UXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZT4oKTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBDbGFzcyBQcm9wZXJ0aWVzICAgLS0tLVxuXG4gICAgLy8gRGVzaWduZXIgc3RhdGUgbWFuYWdlbWVudCAtIGFsd2F5cyBzdGFydCB3aXRoIGF0IGxlYXN0IG9uZSBkZWZhdWx0IHNlY3Rpb25cbiAgICBwcm90ZWN0ZWQgYnVpbGRlclN0YXRlID0gc2lnbmFsPFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGU+KHtcbiAgICAgICAgc2VjdGlvbnM6IFtjcmVhdGVEZWZhdWx0U2VjdGlvbigpXSxcbiAgICB9KTtcblxuICAgIC8vIFNlbGVjdGVkIGl0ZW0gdHJhY2tpbmdcbiAgICBwcm90ZWN0ZWQgc2VsZWN0ZWRJdGVtSWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gICAgcHJvdGVjdGVkIHNlbGVjdGVkU2VjdGlvbklkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gICAgLy8gVHJhY2sgaWYgd2UncmUgbWFraW5nIGludGVybmFsIHVwZGF0ZXMgdG8gcHJldmVudCBlZmZlY3QgbG9vcHNcbiAgICBwcml2YXRlIGlzSW50ZXJuYWxVcGRhdGUgPSBmYWxzZTtcblxuICAgIC8vIEZ1bGxzY3JlZW4gZGlyZWN0aXZlIHJlZmVyZW5jZVxuICAgIHByb3RlY3RlZCByZWFkb25seSBmdWxsc2NyZWVuRGlyZWN0aXZlID0gdmlld0NoaWxkPEFYRnVsbHNjcmVlbkRpcmVjdGl2ZT4oJ2Z1bGxzY3JlZW4nKTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBMaWZlY3ljbGUgICAtLS0tXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8gVHJhY2sgbGFzdCBlbWl0dGVkIHZhbHVlIHRvIHByZXZlbnQgY2lyY3VsYXIgdXBkYXRlc1xuICAgICAgICBsZXQgbGFzdEVtaXR0ZWRWYWx1ZTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIC8vIFN5bmMgdmFsdWUgaW5wdXQgdG8gc3RhdGUgKG9ubHkgd2hlbiB2YWx1ZSBjaGFuZ2VzIGV4dGVybmFsbHkpXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnZhbHVlKCk7XG4gICAgICAgICAgICBpZiAodmFsICE9PSBudWxsICYmIHZhbCAhPT0gdW5kZWZpbmVkICYmICF0aGlzLmlzSW50ZXJuYWxVcGRhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB1bnRyYWNrZWQoKCkgPT4gdGhpcy5idWlsZGVyU3RhdGUoKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY29udmVydFN0YXRlVG9WYWx1ZShjdXJyZW50U3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgLy8gT25seSB1cGRhdGUgaWYgdGhlIHZhbHVlIGFjdHVhbGx5IGNoYW5nZWQgYW5kIGl0J3MgZGlmZmVyZW50IGZyb20gd2hhdCB3ZSBsYXN0IGVtaXR0ZWRcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxTdHIgPSBKU09OLnN0cmluZ2lmeSh2YWwpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdHIgPSBKU09OLnN0cmluZ2lmeShjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFbWl0dGVkU3RyID0gbGFzdEVtaXR0ZWRWYWx1ZSA/IEpTT04uc3RyaW5naWZ5KGxhc3RFbWl0dGVkVmFsdWUpIDogbnVsbDtcblxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBvbmx5IGlmOlxuICAgICAgICAgICAgICAgIC8vIDEuIFRoZSBpbmNvbWluZyB2YWx1ZSBpcyBkaWZmZXJlbnQgZnJvbSBjdXJyZW50IHN0YXRlIHZhbHVlXG4gICAgICAgICAgICAgICAgLy8gMi4gQU5EIGl0J3Mgbm90IHRoZSB2YWx1ZSB3ZSBqdXN0IGVtaXR0ZWQgKHByZXZlbnQgY2lyY3VsYXIgdXBkYXRlcylcbiAgICAgICAgICAgICAgICBpZiAodmFsU3RyICE9PSBjdXJyZW50U3RyICYmIHZhbFN0ciAhPT0gbGFzdEVtaXR0ZWRTdHIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBjb252ZXJ0VmFsdWVUb1N0YXRlKHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkZXJTdGF0ZS5zZXQobmV3U3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTG9hZCBxdWVzdGlvbiBkZXRhaWxzIGZvciBhbGwgaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZFF1ZXN0aW9uRGV0YWlsc0ZvclN0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICgodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSAmJiAhdGhpcy5pc0ludGVybmFsVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdmFsdWUgaXMgbnVsbC91bmRlZmluZWQsIGVuc3VyZSB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBkZWZhdWx0IHNlY3Rpb25cbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB1bnRyYWNrZWQoKCkgPT4gdGhpcy5idWlsZGVyU3RhdGUoKSk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGF0ZS5zZWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdFNlY3Rpb24gPSBjcmVhdGVEZWZhdWx0U2VjdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0U2VjdGlvbi5vcmRlciA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkZXJTdGF0ZS5zZXQoeyBzZWN0aW9uczogW2RlZmF1bHRTZWN0aW9uXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTeW5jIHN0YXRlIGNoYW5nZXMgdG8gb3V0cHV0XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuYnVpbGRlclN0YXRlKCk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlKCk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbnZlcnRTdGF0ZVRvVmFsdWUoc3RhdGUsIGN1cnJlbnRWYWx1ZSB8fCB1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICAvLyBQcmV2ZW50IGNpcmN1bGFyIHVwZGF0ZXNcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0ludGVybmFsVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdEVtaXR0ZWRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIHF1ZXN0aW9uIGRldGFpbHMgZm9yIGFsbCBpdGVtcyBpbiB0aGUgc3RhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIGxvYWRRdWVzdGlvbkRldGFpbHNGb3JTdGF0ZShzdGF0ZTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJTdGF0ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBxdWVzdGlvbklkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgIC8vIENvbGxlY3QgYWxsIHF1ZXN0aW9uIGJhbmsgaXRlbSBJRHNcbiAgICAgICAgc3RhdGUuc2VjdGlvbnMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgICAgICAgc2VjdGlvbi5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ucXVlc3Rpb25CYW5rSXRlbUlkICYmICFpdGVtLnF1ZXN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uSWRzLmFkZChpdGVtLnF1ZXN0aW9uQmFua0l0ZW1JZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChxdWVzdGlvbklkcy5zaXplID09PSAwKSByZXR1cm47XG5cbiAgICAgICAgLy8gTG9hZCBhbGwgcXVlc3Rpb25zIGluIHBhcmFsbGVsXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uUHJvbWlzZXMgPSBBcnJheS5mcm9tKHF1ZXN0aW9uSWRzKS5tYXAoKGlkKSA9PlxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvbkJhbmtTZXJ2aWNlLmdldE9uZShpZCkuY2F0Y2goKCkgPT4gbnVsbCksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9ucyA9IGF3YWl0IFByb21pc2UuYWxsKHF1ZXN0aW9uUHJvbWlzZXMpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBhIG1hcCBvZiBxdWVzdGlvbiBJRCB0byBxdWVzdGlvbiBkYXRhXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICAgICAgcXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICAgICAgICAgIGlmIChxKSB7XG4gICAgICAgICAgICAgICAgcXVlc3Rpb25NYXAuc2V0KHEuaWQsIHEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBVcGRhdGUgc3RhdGUgd2l0aCBxdWVzdGlvbiBkZXRhaWxzXG4gICAgICAgIHRoaXMuYnVpbGRlclN0YXRlLnVwZGF0ZSgoY3VycmVudFN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgLi4uY3VycmVudFN0YXRlLFxuICAgICAgICAgICAgc2VjdGlvbnM6IGN1cnJlbnRTdGF0ZS5zZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc2VjdGlvbixcbiAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbi5pdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ucXVlc3Rpb24pIHJldHVybiBpdGVtOyAvLyBBbHJlYWR5IGhhcyBxdWVzdGlvbiBkYXRhXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25EYXRhID0gcXVlc3Rpb25NYXAuZ2V0KGl0ZW0ucXVlc3Rpb25CYW5rSXRlbUlkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXN0aW9uRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBxdWVzdGlvbkRhdGEuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBxdWVzdGlvbkRhdGEudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBxdWVzdGlvbkRhdGEuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZpY3VsdHk6IHF1ZXN0aW9uRGF0YS5kaWZmaWN1bHR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nVHlwZTogcXVlc3Rpb25EYXRhLnNjb3JpbmdUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgQ29tcHV0ZWQgUHJvcGVydGllcyAgIC0tLS1cblxuXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCBzZWN0aW9ucyBmb3IgcmVuZGVyaW5nXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNlY3Rpb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5idWlsZGVyU3RhdGUoKS5zZWN0aW9ucyk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBjYW4gcmVtb3ZlIHNlY3Rpb24gKG11c3QgaGF2ZSBhdCBsZWFzdCAxIHNlY3Rpb24pXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNhblJlbW92ZVNlY3Rpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlY3Rpb25zKCkubGVuZ3RoID4gMSk7XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY3VycmVudCBkaXNwbGF5IHNldHRpbmdzIGZyb20gc3RhdGUgb3IgZGVmYXVsdFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBkaXNwbGF5U2V0dGluZ3MgPSBjb21wdXRlZDxRdWVzdGlvbm5haXJlRGlzcGxheVNldHRpbmdzPigoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5idWlsZGVyU3RhdGUoKTtcbiAgICAgICAgaWYgKHN0YXRlLmRpc3BsYXlTZXR0aW5ncykge1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmRpc3BsYXlTZXR0aW5ncztcbiAgICAgICAgfVxuICAgICAgICAvLyBGYWxsYmFjayB0byB2YWx1ZSBpZiBzdGF0ZSBkb2Vzbid0IGhhdmUgaXRcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY29udmVydFN0YXRlVG9WYWx1ZShzdGF0ZSwgdGhpcy52YWx1ZSgpIHx8IHVuZGVmaW5lZCk7XG4gICAgICAgIHJldHVybiBjdXJyZW50VmFsdWUuZGlzcGxheVNldHRpbmdzIHx8IHtcbiAgICAgICAgICAgIHZpZXdNb2RlOiAnc2luZ2xlLXBhZ2UnIGFzIGNvbnN0LFxuICAgICAgICAgICAgc2hvd1Byb2dyZXNzQmFyOiB0cnVlLFxuICAgICAgICAgICAgc2hvd1RpbWVyOiBmYWxzZSxcbiAgICAgICAgICAgIHNob3dTZWN0aW9uVGl0bGVzOiB0cnVlLFxuICAgICAgICAgICAgc2hvd1F1ZXN0aW9uTnVtYmVyczogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICB9KTtcblxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFNlY3Rpb24gTWFuYWdlbWVudCAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIEhlbHBlciBtZXRob2QgdG8gdXBkYXRlIHN0YXRlIHdoaWxlIHByZXZlbnRpbmcgZWZmZWN0IGxvb3BzXG4gICAgICogRW5zdXJlcyBhdCBsZWFzdCBvbmUgc2VjdGlvbiBhbHdheXMgZXhpc3RzXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVTdGF0ZSh1cGRhdGVyOiAoc3RhdGU6IFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUpID0+IFF1ZXN0aW9ubmFpcmVCdWlsZGVyU3RhdGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0ludGVybmFsVXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRlclN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkU3RhdGUgPSB1cGRhdGVyKHN0YXRlKTtcbiAgICAgICAgICAgICAgICAvLyBTYWZldHkgY2hlY2s6IGVuc3VyZSBhdCBsZWFzdCBvbmUgc2VjdGlvbiBhbHdheXMgZXhpc3RzXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRTdGF0ZS5zZWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdFNlY3Rpb24gPSBjcmVhdGVEZWZhdWx0U2VjdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0U2VjdGlvbi5vcmRlciA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi51cGRhdGVkU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogW2RlZmF1bHRTZWN0aW9uXSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRTdGF0ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgLy8gUmVzZXQgZmxhZyBhZnRlciBjdXJyZW50IGV4ZWN1dGlvbiBjb250ZXh0XG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzSW50ZXJuYWxVcGRhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGFkZGluZyBhIG5ldyBzZWN0aW9uXG4gICAgICovXG4gICAgYXN5bmMgaGFuZGxlQWRkU2VjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGFkZFRpdGxlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5hZGQtc2VjdGlvbi50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ0FkZCBTZWN0aW9uJztcblxuICAgICAgICAgICAgY29uc3QgdGl0bGVMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAZ2VuZXJhbDp0ZXJtcy5jb21tb24udGl0bGUnXG4gICAgICAgICAgICApIHx8ICdUaXRsZSc7XG5cbiAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGdlbmVyYWw6dGVybXMuY29tbW9uLmRlc2NyaXB0aW9uJ1xuICAgICAgICAgICAgKSB8fCAnRGVzY3JpcHRpb24nO1xuXG4gICAgICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSBhd2FpdCB0aGlzLmxheW91dEJ1aWxkZXJcbiAgICAgICAgICAgICAgICAuY3JlYXRlKClcbiAgICAgICAgICAgICAgICAuZGlhbG9nKChkaWFsb2cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0VGl0bGUoYWRkVGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0U2l6ZSgnbWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldENsb3NlQnV0dG9uKHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0Q29udGV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY29udGVudCgobGF5b3V0QnVpbGRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dEJ1aWxkZXIuZmxleCgoZmxleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0RGlyZWN0aW9uKCdjb2x1bW4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldEdhcCgnMTZweCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHRpdGxlTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3RpdGxlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudGV4dEJveCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgc2VjdGlvbiB0aXRsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25zOiBbeyBydWxlOiAncmVxdWlyZWQnIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtRmllbGQoZGVzY3JpcHRpb25MYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgnZGVzY3JpcHRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5sYXJnZVRleHRCb3goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHNlY3Rpb24gZGVzY3JpcHRpb24gKG9wdGlvbmFsKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M6IDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0QWN0aW9ucygoYWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhbmNlbCgnQGdlbmVyYWw6YWN0aW9ucy5jYW5jZWwudGl0bGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3VibWl0KCdAZ2VuZXJhbDphY3Rpb25zLnNhdmUudGl0bGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnNob3coKTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBkaWFsb2dSZWYuY29udGV4dCgpO1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gYXdhaXQgZGlhbG9nUmVmLmFjdGlvbigpO1xuICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XG5cbiAgICAgICAgICAgIGlmIChhY3Rpb24gIT09ICdjYW5jZWwnICYmIGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3U2VjdGlvbiA9IGNyZWF0ZURlZmF1bHRTZWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgbmV3U2VjdGlvbi5vcmRlciA9IHRoaXMuc2VjdGlvbnMoKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgbmV3U2VjdGlvbi50aXRsZSA9IGZvcm1EYXRhLnRpdGxlIHx8ICdOZXcgU2VjdGlvbic7XG4gICAgICAgICAgICAgICAgbmV3U2VjdGlvbi5kZXNjcmlwdGlvbiA9IGZvcm1EYXRhLmRlc2NyaXB0aW9uIHx8IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoKHN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnM6IFsuLi5zdGF0ZS5zZWN0aW9ucywgbmV3U2VjdGlvbl0sXG4gICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgLy8gU2Nyb2xsIHRvIHRoZSBuZXdseSBhZGRlZCBzZWN0aW9uIGFmdGVyIERPTSB1cGRhdGVcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgc2VjdGlvbi0ke25ld1NlY3Rpb24uaWR9YCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbkVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhZGRpbmcgc2VjdGlvbjonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgc2VjdGlvbiBlZGl0aW5nXG4gICAgICovXG4gICAgYXN5bmMgaGFuZGxlU2VjdGlvbkVkaXQoc2VjdGlvbjogUXVlc3Rpb25uYWlyZUJ1aWxkZXJTZWN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBlZGl0VGl0bGUgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5hY3Rpb25zLmVkaXQtc2VjdGlvbi50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ0VkaXQgU2VjdGlvbic7XG5cbiAgICAgICAgICAgIGNvbnN0IHRpdGxlTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGdlbmVyYWw6dGVybXMuY29tbW9uLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnVGl0bGUnO1xuXG4gICAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbkxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0BnZW5lcmFsOnRlcm1zLmNvbW1vbi5kZXNjcmlwdGlvbidcbiAgICAgICAgICAgICkgfHwgJ0Rlc2NyaXB0aW9uJztcblxuICAgICAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gYXdhaXQgdGhpcy5sYXlvdXRCdWlsZGVyXG4gICAgICAgICAgICAgICAgLmNyZWF0ZSgpXG4gICAgICAgICAgICAgICAgLmRpYWxvZygoZGlhbG9nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZ1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFRpdGxlKGVkaXRUaXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRTaXplKCdtZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0Q2xvc2VCdXR0b24odHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRDb250ZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc2VjdGlvbi50aXRsZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc2VjdGlvbi5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY29udGVudCgobGF5b3V0QnVpbGRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dEJ1aWxkZXIuZmxleCgoZmxleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0RGlyZWN0aW9uKCdjb2x1bW4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldEdhcCgnMTZweCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHRpdGxlTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3RpdGxlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudGV4dEJveCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgc2VjdGlvbiB0aXRsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25zOiBbeyBydWxlOiAncmVxdWlyZWQnIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtRmllbGQoZGVzY3JpcHRpb25MYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgnZGVzY3JpcHRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5sYXJnZVRleHRCb3goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHNlY3Rpb24gZGVzY3JpcHRpb24gKG9wdGlvbmFsKScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M6IDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0QWN0aW9ucygoYWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhbmNlbCgnQGdlbmVyYWw6YWN0aW9ucy5jYW5jZWwudGl0bGUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3VibWl0KCdAZ2VuZXJhbDphY3Rpb25zLnNhdmUudGl0bGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnNob3coKTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBkaWFsb2dSZWYuY29udGV4dCgpO1xuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gYXdhaXQgZGlhbG9nUmVmLmFjdGlvbigpO1xuICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XG5cbiAgICAgICAgICAgIGlmIChhY3Rpb24gIT09ICdjYW5jZWwnICYmIGZvcm1EYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnMubWFwKChzKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgcy5pZCA9PT0gc2VjdGlvbi5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZm9ybURhdGEudGl0bGUgfHwgcy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGZvcm1EYXRhLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQgPyBmb3JtRGF0YS5kZXNjcmlwdGlvbiA6IHMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc1xuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGVkaXRpbmcgc2VjdGlvbjonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgc2VjdGlvbiByZW1vdmFsXG4gICAgICovXG4gICAgaGFuZGxlU2VjdGlvblJlbW92ZShzZWN0aW9uOiBRdWVzdGlvbm5haXJlQnVpbGRlclNlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgLy8gRG9uJ3QgYWxsb3cgcmVtb3ZpbmcgdGhlIGxhc3Qgc2VjdGlvbiAtIG11c3QgYWx3YXlzIGhhdmUgYXQgbGVhc3Qgb25lXG4gICAgICAgIGlmICh0aGlzLnNlY3Rpb25zKCkubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgc2VjdGlvbiBhbmQgdXBkYXRlIG9yZGVyIHZhbHVlc1xuICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgc2VjdGlvbnM6IHN0YXRlLnNlY3Rpb25zXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocykgPT4gcy5pZCAhPT0gc2VjdGlvbi5pZClcbiAgICAgICAgICAgICAgICAubWFwKChzLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucyxcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGluZGV4LFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBzZWN0aW9uIGRyb3AgKHJlb3JkZXJpbmcpXG4gICAgICovXG4gICAgaGFuZGxlU2VjdGlvbkRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPFF1ZXN0aW9ubmFpcmVCdWlsZGVyU2VjdGlvbltdPik6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICAgICAgLy8gVXBkYXRlIG9yZGVyIHZhbHVlc1xuICAgICAgICAgICAgdGhpcy5idWlsZGVyU3RhdGUudXBkYXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnMubWFwKChzZWN0aW9uLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc2VjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGluZGV4LFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBJdGVtIE1hbmFnZW1lbnQgICAtLS0tXG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgYWRkaW5nIHF1ZXN0aW9ucyB0byBhIHNlY3Rpb25cbiAgICAgKi9cbiAgICBhc3luYyBoYW5kbGVBZGRRdWVzdGlvbnNUb1NlY3Rpb24oc2VjdGlvbjogUXVlc3Rpb25uYWlyZUJ1aWxkZXJTZWN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhU291cmNlID0gbmV3IEFYRGF0YVNvdXJjZSh7XG4gICAgICAgICAgICAgICAga2V5OiAnaWQnLFxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAyMCxcbiAgICAgICAgICAgICAgICBsb2FkOiBhc3luYyAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbnMgPSBhd2FpdCB0aGlzLnF1ZXN0aW9uQmFua1NlcnZpY2UucXVlcnkoZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogcXVlc3Rpb25zLml0ZW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWw6IHF1ZXN0aW9ucy50b3RhbCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIENyZWF0ZSBjYXRlZ29yeSB0cmVlIGRhdGEgc291cmNlIGZvciBmaWx0ZXJpbmdcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5VHJlZURhdGFTb3VyY2U6IEFYUENhdGVnb3J5VHJlZURhdGFTb3VyY2UgPSB7XG4gICAgICAgICAgICAgICAgbG9hZFJvb3ROb2RlczogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXN0aW9uQmFua1NlcnZpY2UuZ2V0Q2F0ZWdvcmllc0xpc3Qoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2U6IDEwMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ3BhcmVudElkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogeyB0eXBlOiAnaXNFbXB0eScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlIHx8IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbkNvdW50OiBpdGVtLmNoaWxkcmVuQ291bnQgfHwgMCxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9hZENoaWxkTm9kZXM6IGFzeW5jIChwYXJlbnRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucXVlc3Rpb25CYW5rU2VydmljZS5nZXRDYXRlZ29yaWVzTGlzdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBza2lwOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZTogMTAwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAncGFyZW50SWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSB8fCBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5Db3VudDogaXRlbS5jaGlsZHJlbkNvdW50IHx8IDAsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNlYXJjaE5vZGVzOiBhc3luYyAoc2VhcmNoVmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXN0aW9uQmFua1NlcnZpY2UuZ2V0Q2F0ZWdvcmllc0xpc3Qoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2U6IDEwMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2NvbnRhaW5zJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlYXJjaFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ25hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IHsgdHlwZTogJ2NvbnRhaW5zJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlYXJjaFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSB8fCBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5Db3VudDogaXRlbS5jaGlsZHJlbkNvdW50IHx8IDAsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgZW50aXR5OiBBWFBFbnRpdHkgfCBudWxsID0gYXdhaXQgdGhpcy5lbnRpdHlSZXNvbHZlci5yZXNvbHZlKFxuICAgICAgICAgICAgICAgIFJvb3RDb25maWcubW9kdWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgUm9vdENvbmZpZy5lbnRpdGllcy5xdWVzdGlvbkJhbmtJdGVtLm5hbWUsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFlbnRpdHkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VudGl0eSBub3QgZm91bmQ6ICcgKyBSb290Q29uZmlnLmVudGl0aWVzLnF1ZXN0aW9uQmFua0l0ZW0ubmFtZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbnMgPVxuICAgICAgICAgICAgICAgIGVudGl0eS5jb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChjb2x1bW46IEFYUEVudGl0eVRhYmxlQ29sdW1uKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5IS5wcm9wZXJ0aWVzLnNvbWUoKHByb3BlcnR5OiBBWFBFbnRpdHlQcm9wZXJ0eSkgPT4gcHJvcGVydHkubmFtZSA9PT0gY29sdW1uLm5hbWUpLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGNvbHVtbjogQVhQRW50aXR5VGFibGVDb2x1bW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gZW50aXR5IS5wcm9wZXJ0aWVzLmZpbmQoKHByb3A6IEFYUEVudGl0eVByb3BlcnR5KSA9PiBwcm9wLm5hbWUgPT09IGNvbHVtbi5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29sdW1uLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BlcnR5Py50aXRsZSA/PyAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBjb2x1bW4ub3B0aW9ucz8udmlzaWJsZSAhPT0gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGNvbHVtbi5zaG93QXM/LnR5cGUgPz8gcHJvcGVydHk/LnNjaGVtYT8uaW50ZXJmYWNlPy50eXBlID8/ICd0ZXh0LWVkaXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGNvbHVtbi5zaG93QXM/Lm9wdGlvbnMgPz8gcHJvcGVydHk/LnNjaGVtYT8uaW50ZXJmYWNlPy5vcHRpb25zID8/IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KSB8fCBbXTtcblxuICAgICAgICAgICAgLy8gVHJhbnNsYXRlIHRpdGxlc1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0UXVlc3Rpb25zVGl0bGUgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5zZWxlY3QtcXVlc3Rpb25zJ1xuICAgICAgICAgICAgKSB8fCAnU2VsZWN0IFF1ZXN0aW9ucyBmcm9tIFF1ZXN0aW9uIEJhbmsnO1xuXG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzVGl0bGUgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5jYXRlZ29yaWVzJ1xuICAgICAgICAgICAgKSB8fCAnQ2F0ZWdvcmllcyc7XG5cbiAgICAgICAgICAgIGNvbnN0IHRpdGxlTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGdlbmVyYWw6dGVybXMuY29tbW9uLnRpdGxlJykgfHwgJ1RpdGxlJztcbiAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGdlbmVyYWw6dGVybXMuY29tbW9uLmRlc2NyaXB0aW9uJykgfHwgJ0Rlc2NyaXB0aW9uJztcblxuICAgICAgICAgICAgLy8gT3BlbiBkYXRhIHNlbGVjdG9yIHdpdGggY2F0ZWdvcnkgZmlsdGVyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRhdGFTZWxlY3RvclNlcnZpY2Uub3BlbldpdGhDYXRlZ29yeUZpbHRlcihcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzZWxlY3RRdWVzdGlvbnNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogZGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uczogY29sdW1ucyxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uTW9kZTogJ211bHRpcGxlJyxcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoRmllbGRzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICd0aXRsZScsIHRpdGxlOiB0aXRsZUxhYmVsIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdkZXNjcmlwdGlvbicsIHRpdGxlOiBkZXNjcmlwdGlvbkxhYmVsIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIGFsbG93Q3JlYXRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNhdGVnb3JpZXNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZTogY2F0ZWdvcnlUcmVlRGF0YVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyRmllbGQ6ICdjYXRlZ29yeUlkcycsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlck9wZXJhdG9yOiAnY29udGFpbnMnLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzM1MHB4JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gQWRkIHNlbGVjdGVkIHF1ZXN0aW9ucyB0byB0aGUgc2VjdGlvblxuICAgICAgICAgICAgaWYgKHJlc3VsdD8uaXRlbXMgJiYgcmVzdWx0Lml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBMb2FkIGZ1bGwgcXVlc3Rpb24gZGV0YWlscyBmb3IgZWFjaCBzZWxlY3RlZCBpdGVtXG4gICAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25Qcm9taXNlcyA9IHJlc3VsdC5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVzdGlvbkJhbmtTZXJ2aWNlLmdldE9uZShpdGVtLmlkKS5jYXRjaCgoKSA9PiBudWxsKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9ucyA9IGF3YWl0IFByb21pc2UuYWxsKHF1ZXN0aW9uUHJvbWlzZXMpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3SXRlbXM6IFF1ZXN0aW9ubmFpcmVCdWlsZGVySXRlbVtdID0gcmVzdWx0Lml0ZW1zLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZ1bGxRdWVzdGlvbiA9IHF1ZXN0aW9uc1tpbmRleF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogQVhQRGF0YUdlbmVyYXRvci51dWlkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbkJhbmtJdGVtSWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogc2VjdGlvbi5pdGVtcy5sZW5ndGggKyBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eUNvbmRpdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRDb25kaXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdPdmVycmlkZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXdseUFkZGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb246IGZ1bGxRdWVzdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogZnVsbFF1ZXN0aW9uLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZnVsbFF1ZXN0aW9uLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZnVsbFF1ZXN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmaWN1bHR5OiBmdWxsUXVlc3Rpb24uZGlmZmljdWx0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ1R5cGU6IGZ1bGxRdWVzdGlvbi5zY29yaW5nVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSB8fCAnUXVlc3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmljdWx0eTogaXRlbS5kaWZmaWN1bHR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nVHlwZTogaXRlbS5zY29yaW5nVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZGVyU3RhdGUudXBkYXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zOiBzdGF0ZS5zZWN0aW9ucy5tYXAoKHMpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzLmlkID09PSBzZWN0aW9uLmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbLi4ucy5pdGVtcywgLi4ubmV3SXRlbXNdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHMsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBxdWVzdGlvbnM6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGl0ZW0gcmVtb3ZhbFxuICAgICAqL1xuICAgIGhhbmRsZUl0ZW1SZW1vdmUoaXRlbTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJJdGVtLCBzZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkZXJTdGF0ZS51cGRhdGUoKHN0YXRlKSA9PiAoe1xuICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNlY3Rpb24uaWQgIT09IHNlY3Rpb25JZCkgcmV0dXJuIHNlY3Rpb247XG5cbiAgICAgICAgICAgICAgICAvLyBIYXJkIGRlbGV0ZSAtIHJlbW92ZSBpdGVtIGZyb20gYXJyYXlcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5zZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbi5pdGVtcy5maWx0ZXIoKGkpID0+IGkuaWQgIT09IGl0ZW0uaWQpLm1hcCgoaXRlbSwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIHF1ZXN0aW9uIGl0ZW0gZWRpdGluZyAoc2V0dGluZ3MpXG4gICAgICovXG4gICAgYXN5bmMgaGFuZGxlSXRlbUVkaXQoaXRlbTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJJdGVtLCBzZWN0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gTG9hZCBmdWxsIHF1ZXN0aW9uIGRldGFpbHMgdG8gZ2V0IGRlZmF1bHQgc2NvcmluZyB2YWx1ZXNcbiAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uRGV0YWlscyA9IGl0ZW0ucXVlc3Rpb25CYW5rSXRlbUlkXG4gICAgICAgICAgICAgICAgPyBhd2FpdCB0aGlzLnF1ZXN0aW9uQmFua1NlcnZpY2UuZ2V0T25lKGl0ZW0ucXVlc3Rpb25CYW5rSXRlbUlkKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgY29uc3QgZWRpdFRpdGxlID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5lZGl0LXF1ZXN0aW9uLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnRWRpdCBRdWVzdGlvbiBTZXR0aW5ncyc7XG5cbiAgICAgICAgICAgIGNvbnN0IGlzUmVxdWlyZWRMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmZpZWxkcy5pcy1yZXF1aXJlZC50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1JlcXVpcmVkJztcblxuICAgICAgICAgICAgY29uc3QgdmlzaWJpbGl0eUNvbmRpdGlvbkxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuZmllbGRzLnZpc2liaWxpdHktY29uZGl0aW9uLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnVmlzaWJpbGl0eSBDb25kaXRpb24nO1xuXG4gICAgICAgICAgICBjb25zdCByZXF1aXJlZENvbmRpdGlvbkxhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuZmllbGRzLnJlcXVpcmVkLWNvbmRpdGlvbi50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1JlcXVpcmVkIENvbmRpdGlvbic7XG5cbiAgICAgICAgICAgIGNvbnN0IHNjb3JpbmdQb2ludHNMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmZpZWxkcy5zY29yaW5nLXBvaW50cy50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1Njb3JpbmcgUG9pbnRzJztcblxuICAgICAgICAgICAgY29uc3Qgc2NvcmluZ1dlaWdodExhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuZmllbGRzLnNjb3Jpbmctd2VpZ2h0LnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnU2NvcmluZyBXZWlnaHQnO1xuXG4gICAgICAgICAgICAvLyBHZXQgZGVmYXVsdCB2YWx1ZXMgZnJvbSBxdWVzdGlvbiBiYW5rIGl0ZW0gb3IgdXNlIGV4aXN0aW5nIG92ZXJyaWRlIHZhbHVlc1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFNjb3JpbmdQb2ludHMgPSBpdGVtLnNjb3JpbmdPdmVycmlkZT8ucG9pbnRzID8/IHF1ZXN0aW9uRGV0YWlscz8ucG9pbnRzID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFNjb3JpbmdXZWlnaHQgPSBpdGVtLnNjb3JpbmdPdmVycmlkZT8ud2VpZ2h0ID8/IHF1ZXN0aW9uRGV0YWlscz8ud2VpZ2h0ID8/ICcnO1xuXG4gICAgICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSBhd2FpdCB0aGlzLmxheW91dEJ1aWxkZXJcbiAgICAgICAgICAgICAgICAuY3JlYXRlKClcbiAgICAgICAgICAgICAgICAuZGlhbG9nKChkaWFsb2cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0VGl0bGUoZWRpdFRpdGxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFNpemUoJ21kJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRDbG9zZUJ1dHRvbih0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldENvbnRleHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IGl0ZW0uaXNSZXF1aXJlZCA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiBpdGVtLnZpc2liaWxpdHlDb25kaXRpb24gfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRDb25kaXRpb246IGl0ZW0ucmVxdWlyZWRDb25kaXRpb24gfHwgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ1BvaW50czogZGVmYXVsdFNjb3JpbmdQb2ludHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ1dlaWdodDogZGVmYXVsdFNjb3JpbmdXZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNvbnRlbnQoKGxheW91dEJ1aWxkZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRCdWlsZGVyLmZsZXgoKGZsZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldERpcmVjdGlvbignY29sdW1uJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRHYXAoJzE2cHgnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZChpc1JlcXVpcmVkTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ2lzUmVxdWlyZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC50b2dnbGVTd2l0Y2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHZpc2liaWxpdHlDb25kaXRpb25MYWJlbCwgKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQucGF0aCgndmlzaWJpbGl0eUNvbmRpdGlvbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmN1c3RvbVdpZGdldCgnY29kZS1lZGl0b3InLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiAnamF2YXNjcmlwdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXJzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICdtaW4taC00OCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZChyZXF1aXJlZENvbmRpdGlvbkxhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdyZXF1aXJlZENvbmRpdGlvbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmN1c3RvbVdpZGdldCgnY29kZS1lZGl0b3InLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlOiAnamF2YXNjcmlwdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXJzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICdtaW4taC00OCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZChzY29yaW5nUG9pbnRzTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3Njb3JpbmdQb2ludHMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5udW1iZXJCb3goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHNjb3JpbmcgcG9pbnRzIChvcHRpb25hbCknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtRmllbGQoc2NvcmluZ1dlaWdodExhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdzY29yaW5nV2VpZ2h0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQubnVtYmVyQm94KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdFbnRlciBzY29yaW5nIHdlaWdodCAob3B0aW9uYWwpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRBY3Rpb25zKChhY3Rpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2FuY2VsKCdAZ2VuZXJhbDphY3Rpb25zLmNhbmNlbC50aXRsZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJtaXQoJ0BnZW5lcmFsOmFjdGlvbnMuc2F2ZS50aXRsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuc2hvdygpO1xuXG4gICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IGRpYWxvZ1JlZi5jb250ZXh0KCk7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb24gPSBhd2FpdCBkaWFsb2dSZWYuYWN0aW9uKCk7XG4gICAgICAgICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcblxuICAgICAgICAgICAgaWYgKGFjdGlvbiAhPT0gJ2NhbmNlbCcgJiYgZm9ybURhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zOiBzdGF0ZS5zZWN0aW9ucy5tYXAoKHNlY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uLmlkICE9PSBzZWN0aW9uSWQpIHJldHVybiBzZWN0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnNlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IHNlY3Rpb24uaXRlbXMubWFwKChpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpLmlkICE9PSBpdGVtLmlkKSByZXR1cm4gaTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdWlsZCBzY29yaW5nIG92ZXJyaWRlIGlmIHBvaW50cyBvciB3ZWlnaHQgYXJlIHByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY29yaW5nT3ZlcnJpZGU6IHsgcG9pbnRzPzogbnVtYmVyOyB3ZWlnaHQ/OiBudW1iZXIgfSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzUG9pbnRzID0gZm9ybURhdGEuc2NvcmluZ1BvaW50cyAhPT0gdW5kZWZpbmVkICYmIGZvcm1EYXRhLnNjb3JpbmdQb2ludHMgIT09IG51bGwgJiYgZm9ybURhdGEuc2NvcmluZ1BvaW50cyAhPT0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1dlaWdodCA9IGZvcm1EYXRhLnNjb3JpbmdXZWlnaHQgIT09IHVuZGVmaW5lZCAmJiBmb3JtRGF0YS5zY29yaW5nV2VpZ2h0ICE9PSBudWxsICYmIGZvcm1EYXRhLnNjb3JpbmdXZWlnaHQgIT09ICcnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNQb2ludHMgfHwgaGFzV2VpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nT3ZlcnJpZGUgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNQb2ludHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nT3ZlcnJpZGUucG9pbnRzID0gTnVtYmVyKGZvcm1EYXRhLnNjb3JpbmdQb2ludHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1dlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdPdmVycmlkZS53ZWlnaHQgPSBOdW1iZXIoZm9ybURhdGEuc2NvcmluZ1dlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQ6IGZvcm1EYXRhLmlzUmVxdWlyZWQgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5Q29uZGl0aW9uOiBmb3JtRGF0YS52aXNpYmlsaXR5Q29uZGl0aW9uIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkQ29uZGl0aW9uOiBmb3JtRGF0YS5yZXF1aXJlZENvbmRpdGlvbiB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nT3ZlcnJpZGU6IHNjb3JpbmdPdmVycmlkZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGVkaXRpbmcgcXVlc3Rpb246JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGl0ZW0gZHJvcCAocmVvcmRlcmluZyB3aXRoaW4gc2VjdGlvbiBvciBiZXR3ZWVuIHNlY3Rpb25zKVxuICAgICAqL1xuICAgIGhhbmRsZUl0ZW1Ecm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxRdWVzdGlvbm5haXJlQnVpbGRlckl0ZW1bXT4sIHRhcmdldFNlY3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XG4gICAgICAgICAgICAvLyBSZW9yZGVyaW5nIHdpdGhpbiBzYW1lIHNlY3Rpb25cbiAgICAgICAgICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRlclN0YXRlLnVwZGF0ZSgoc3RhdGUpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgc2VjdGlvbnM6IHN0YXRlLnNlY3Rpb25zLm1hcCgoc2VjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbi5pZCAhPT0gdGFyZ2V0U2VjdGlvbklkKSByZXR1cm4gc2VjdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uc2VjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBzZWN0aW9uLml0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBNb3ZpbmcgaXRlbSBiZXR3ZWVuIHNlY3Rpb25zXG4gICAgICAgICAgICB0cmFuc2ZlckFycmF5SXRlbShcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLFxuICAgICAgICAgICAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhLFxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgICAgICAgICAgZXZlbnQuY3VycmVudEluZGV4LFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8gVXBkYXRlIG9yZGVycyBmb3IgYm90aCBzZWN0aW9uc1xuICAgICAgICAgICAgdGhpcy5idWlsZGVyU3RhdGUudXBkYXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICBzZWN0aW9uczogc3RhdGUuc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uLmlkID09PSB0YXJnZXRTZWN0aW9uSWQgfHwgc2VjdGlvbi5pZCA9PT0gZXZlbnQucHJldmlvdXNDb250YWluZXIuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uc2VjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogc2VjdGlvbi5pdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VjdGlvbjtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgc2VjdGlvbiBkcm9wIGxpc3RzIGZvciBkcmFnLWRyb3AgY29ubmVjdGl2aXR5XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldEFsbFNlY3Rpb25Ecm9wTGlzdHMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWN0aW9ucygpLm1hcCgoc2VjdGlvbikgPT4gYHNlY3Rpb24tJHtzZWN0aW9uLmlkfS1pdGVtc2ApO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBEaXNwbGF5IFNldHRpbmdzICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIG9wZW5pbmcgZGlzcGxheSBzZXR0aW5ncyBkaWFsb2dcbiAgICAgKi9cbiAgICBhc3luYyBoYW5kbGVTZXR0aW5ncygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHNldHRpbmdzVGl0bGUgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5hY3Rpb25zLnNldHRpbmdzLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnRGlzcGxheSBTZXR0aW5ncyc7XG5cbiAgICAgICAgICAgIGNvbnN0IHZpZXdNb2RlTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy52aWV3LW1vZGUudGl0bGUnXG4gICAgICAgICAgICApIHx8ICdWaWV3IE1vZGUnO1xuXG4gICAgICAgICAgICBjb25zdCBzaG93UHJvZ3Jlc3NCYXJMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnNob3ctcHJvZ3Jlc3MtYmFyLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnU2hvdyBQcm9ncmVzcyBCYXInO1xuXG4gICAgICAgICAgICBjb25zdCBzaG93VGltZXJMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnNob3ctdGltZXIudGl0bGUnXG4gICAgICAgICAgICApIHx8ICdTaG93IFRpbWVyJztcblxuICAgICAgICAgICAgY29uc3Qgc2hvd1NlY3Rpb25UaXRsZXNMYWJlbCA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnNob3ctc2VjdGlvbi10aXRsZXMudGl0bGUnXG4gICAgICAgICAgICApIHx8ICdTaG93IFNlY3Rpb24gVGl0bGVzJztcblxuICAgICAgICAgICAgY29uc3Qgc2hvd1F1ZXN0aW9uTnVtYmVyc0xhYmVsID0gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5maWVsZHMuc2hvdy1xdWVzdGlvbi1udW1iZXJzLnRpdGxlJ1xuICAgICAgICAgICAgKSB8fCAnU2hvdyBRdWVzdGlvbiBOdW1iZXJzJztcblxuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVCZWZvcmVOYXZpZ2F0aW9uTGFiZWwgPSBhd2FpdCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy52YWxpZGF0ZS1iZWZvcmUtbmF2aWdhdGlvbi50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1ZhbGlkYXRlIEJlZm9yZSBOYXZpZ2F0aW9uJztcblxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNldHRpbmdzID0gdGhpcy5kaXNwbGF5U2V0dGluZ3MoKTtcblxuICAgICAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gYXdhaXQgdGhpcy5sYXlvdXRCdWlsZGVyXG4gICAgICAgICAgICAgICAgLmNyZWF0ZSgpXG4gICAgICAgICAgICAgICAgLmRpYWxvZygoZGlhbG9nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZ1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFRpdGxlKHNldHRpbmdzVGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0U2l6ZSgnbWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldENsb3NlQnV0dG9uKHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2V0Q29udGV4dCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld01vZGU6IGN1cnJlbnRTZXR0aW5ncy52aWV3TW9kZSB8fCAnc2luZ2xlLXBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dQcm9ncmVzc0JhcjogY3VycmVudFNldHRpbmdzLnNob3dQcm9ncmVzc0JhciA/PyB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUaW1lcjogY3VycmVudFNldHRpbmdzLnNob3dUaW1lciA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93U2VjdGlvblRpdGxlczogY3VycmVudFNldHRpbmdzLnNob3dTZWN0aW9uVGl0bGVzID8/IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1F1ZXN0aW9uTnVtYmVyczogY3VycmVudFNldHRpbmdzLnNob3dRdWVzdGlvbk51bWJlcnMgPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZUJlZm9yZU5hdmlnYXRpb246IGN1cnJlbnRTZXR0aW5ncy52YWxpZGF0ZUJlZm9yZU5hdmlnYXRpb24gPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuY29udGVudCgobGF5b3V0QnVpbGRlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dEJ1aWxkZXIuZmxleCgoZmxleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0RGlyZWN0aW9uKCdjb2x1bW4nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldEdhcCgnMTZweCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHZpZXdNb2RlTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3ZpZXdNb2RlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuc2VsZWN0Qm94KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ2lkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkOiAndGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiAnc2luZ2xlLXBhZ2UnLCB0aXRsZTogJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5maWVsZHMudmlldy1tb2RlLm9wdGlvbnMuc2luZ2xlLXBhZ2UnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiAncGFnZS1wZXItZ3JvdXAnLCB0aXRsZTogJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5maWVsZHMudmlldy1tb2RlLm9wdGlvbnMucGFnZS1wZXItZ3JvdXAnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiAncGFnZS1wZXItcXVlc3Rpb24nLCB0aXRsZTogJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5maWVsZHMudmlldy1tb2RlLm9wdGlvbnMucGFnZS1wZXItcXVlc3Rpb24nIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiAnc2lkZS1tZW51JywgdGl0bGU6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnZpZXctbW9kZS5vcHRpb25zLnNpZGUtbWVudScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHNob3dQcm9ncmVzc0JhckxhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdzaG93UHJvZ3Jlc3NCYXInKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC50b2dnbGVTd2l0Y2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHNob3dUaW1lckxhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCdzaG93VGltZXInKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC50b2dnbGVTd2l0Y2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHNob3dTZWN0aW9uVGl0bGVzTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3Nob3dTZWN0aW9uVGl0bGVzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudG9nZ2xlU3dpdGNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1GaWVsZChzaG93UXVlc3Rpb25OdW1iZXJzTGFiZWwsIChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnBhdGgoJ3Nob3dRdWVzdGlvbk51bWJlcnMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC50b2dnbGVTd2l0Y2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybUZpZWxkKHZhbGlkYXRlQmVmb3JlTmF2aWdhdGlvbkxhYmVsLCAoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5wYXRoKCd2YWxpZGF0ZUJlZm9yZU5hdmlnYXRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC50b2dnbGVTd2l0Y2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRBY3Rpb25zKChhY3Rpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2FuY2VsKCdAZ2VuZXJhbDphY3Rpb25zLmNhbmNlbC50aXRsZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJtaXQoJ0BnZW5lcmFsOmFjdGlvbnMuc2F2ZS50aXRsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuc2hvdygpO1xuXG4gICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IGRpYWxvZ1JlZi5jb250ZXh0KCk7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb24gPSBhd2FpdCBkaWFsb2dSZWYuYWN0aW9uKCk7XG4gICAgICAgICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcblxuICAgICAgICAgICAgaWYgKGFjdGlvbiAhPT0gJ2NhbmNlbCcgJiYgZm9ybURhdGEpIHtcbiAgICAgICAgICAgICAgICAvLyBFeHRyYWN0IHZpZXdNb2RlIC0gaGFuZGxlIGJvdGggc3RyaW5nIGFuZCBvYmplY3QgKGZyb20gc2VsZWN0IGJveClcbiAgICAgICAgICAgICAgICBsZXQgdmlld01vZGU6ICdzaW5nbGUtcGFnZScgfCAncGFnZS1wZXItZ3JvdXAnIHwgJ3BhZ2UtcGVyLXF1ZXN0aW9uJyA9ICdzaW5nbGUtcGFnZSc7XG4gICAgICAgICAgICAgICAgY29uc3Qgdmlld01vZGVWYWx1ZSA9IGZvcm1EYXRhLnZpZXdNb2RlO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygdmlld01vZGVWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgdmlld01vZGUgPSB2aWV3TW9kZVZhbHVlIGFzICdzaW5nbGUtcGFnZScgfCAncGFnZS1wZXItZ3JvdXAnIHwgJ3BhZ2UtcGVyLXF1ZXN0aW9uJztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZpZXdNb2RlVmFsdWUgJiYgdHlwZW9mIHZpZXdNb2RlVmFsdWUgPT09ICdvYmplY3QnICYmICdpZCcgaW4gdmlld01vZGVWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2aWV3TW9kZSA9ICh2aWV3TW9kZVZhbHVlIGFzIGFueSkuaWQgYXMgJ3NpbmdsZS1wYWdlJyB8ICdwYWdlLXBlci1ncm91cCcgfCAncGFnZS1wZXItcXVlc3Rpb24nO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NldHRpbmdzOiBRdWVzdGlvbm5haXJlRGlzcGxheVNldHRpbmdzID0ge1xuICAgICAgICAgICAgICAgICAgICB2aWV3TW9kZTogdmlld01vZGUsXG4gICAgICAgICAgICAgICAgICAgIHNob3dQcm9ncmVzc0JhcjogZm9ybURhdGEuc2hvd1Byb2dyZXNzQmFyID8/IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHNob3dUaW1lcjogZm9ybURhdGEuc2hvd1RpbWVyID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzaG93U2VjdGlvblRpdGxlczogZm9ybURhdGEuc2hvd1NlY3Rpb25UaXRsZXMgPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc2hvd1F1ZXN0aW9uTnVtYmVyczogZm9ybURhdGEuc2hvd1F1ZXN0aW9uTnVtYmVycyA/PyB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZUJlZm9yZU5hdmlnYXRpb246IGZvcm1EYXRhLnZhbGlkYXRlQmVmb3JlTmF2aWdhdGlvbiA/PyB0cnVlLFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgc3RhdGUgYnkgcHJlc2VydmluZyBleGlzdGluZyBxdWVzdGlvbiBkYXRhIGFuZCB1cGRhdGluZyBkaXNwbGF5U2V0dGluZ3MgaW4gc3RhdGVcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgZGlzcGxheVNldHRpbmdzIGluIHN0YXRlIGRpcmVjdGx5XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVNldHRpbmdzOiBuZXdTZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlZFN0YXRlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb3BlbmluZyBzZXR0aW5nczonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgUHJldmlldyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIE9wZW4gcHJldmlldyBkaWFsb2cgd2l0aCBxdWVzdGlvbm5haXJlIHZpZXdlclxuICAgICAqL1xuICAgIGFzeW5jIGhhbmRsZVByZXZpZXcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLnNlY3Rpb25zKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY29udmVydFN0YXRlVG9WYWx1ZSh0aGlzLmJ1aWxkZXJTdGF0ZSgpLCB0aGlzLnZhbHVlKCkgfHwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIC8vIEFsd2F5cyB1c2UgdGhlIGN1cnJlbnQgZGlzcGxheVNldHRpbmdzIGZyb20gdGhlIGNvbXB1dGVkIHByb3BlcnR5IHRvIGVuc3VyZSBwcmV2aWV3IHVzZXMgbGF0ZXN0IHNldHRpbmdzXG4gICAgICAgICAgICBjdXJyZW50VmFsdWUuZGlzcGxheVNldHRpbmdzID0gdGhpcy5kaXNwbGF5U2V0dGluZ3MoKTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpZXdUaXRsZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmFjdGlvbnMucHJldmlldy50aXRsZSdcbiAgICAgICAgICAgICkgfHwgJ1ByZXZpZXcnO1xuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXN0aW9ubmFpcmVWaWV3ZXJTZXJ2aWNlLm9wZW4oe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcmV2aWV3VGl0bGUsXG4gICAgICAgICAgICAgICAgc3RydWN0dXJlOiBjdXJyZW50VmFsdWUsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ2xnJyxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBIYW5kbGUgcmVzdWx0IGlmIG5lZWRlZCAoYW5zd2Vycywgc3VibWl0dGVkIHN0YXR1cylcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnUXVlc3Rpb25uYWlyZSBwcmV2aWV3IHJlc3VsdDonLCByZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igb3BlbmluZyBwcmV2aWV3OicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZSBmdWxsc2NyZWVuIG1vZGUgdXNpbmcgdGhlIGRpcmVjdGl2ZVxuICAgICAqL1xuICAgIGFzeW5jIGhhbmRsZUZ1bGxzY3JlZW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGZ1bGxzY3JlZW4gPSB0aGlzLmZ1bGxzY3JlZW5EaXJlY3RpdmUoKTtcbiAgICAgICAgaWYgKGZ1bGxzY3JlZW4pIHtcbiAgICAgICAgICAgIGF3YWl0IGZ1bGxzY3JlZW4udG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI2VuZHJlZ2lvblxufVxuXG4vLyNlbmRyZWdpb25cblxuIiwiPGRpdiBjbGFzcz1cImF4bS1xdWVzdGlvbm5haXJlLWJ1aWxkZXJcIiBheEZ1bGxzY3JlZW4gI2Z1bGxzY3JlZW49XCJheEZ1bGxzY3JlZW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwiX19oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIl9faGVhZGVyLWxlZnRcIj5cbiAgICAgICAgICAgIDwhLS0gTGVmdCBzaWRlIGNhbiBiZSB1c2VkIGZvciBvdGhlciBhY3Rpb25zIGluIHRoZSBmdXR1cmUgLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiX19oZWFkZXItcmlnaHRcIj5cbiAgICAgICAgICAgIEBpZiAoIXJlYWRvbmx5KCkpIHtcblxuICAgICAgICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXNtXCJcbiAgICAgICAgICAgICAgICBbdGV4dF09XCIoJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5hZGQtc2VjdGlvbi50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYykgfHwgJ0FkZCBTZWN0aW9uJ1wiXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cIidwcmltYXJ5J1wiIChvbkNsaWNrKT1cImhhbmRsZUFkZFNlY3Rpb24oKVwiPlxuICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1sYXllci1ncm91cFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXNtXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiKCdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmFjdGlvbnMuc2V0dGluZ3MudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpIHx8ICdTZXR0aW5ncydcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZVNldHRpbmdzKClcIj5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQgZmEtZ2VhclwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXNtXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiKCdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmFjdGlvbnMucHJldmlldy50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYykgfHwgJ1ByZXZpZXcnXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2VjdGlvbnMoKS5sZW5ndGggPT09IDBcIiAob25DbGljayk9XCJoYW5kbGVQcmV2aWV3KClcIj5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQgZmEtZXllXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCIoJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuYWN0aW9ucy5mdWxsc2NyZWVuLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnRnVsbCBTY3JlZW4nXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVGdWxsc2NyZWVuKClcIj5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQgZmEtZXhwYW5kXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIl9fY29udGVudFwiPlxuICAgICAgICA8IS0tIERlc2lnbmVyIE1vZGUgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX3NlY3Rpb25zLWNvbnRhaW5lclwiIGNka0Ryb3BMaXN0IFtjZGtEcm9wTGlzdERhdGFdPVwic2VjdGlvbnMoKVwiXG4gICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImhhbmRsZVNlY3Rpb25Ecm9wKCRldmVudClcIj5cbiAgICAgICAgICAgIEBmb3IgKHNlY3Rpb24gb2Ygc2VjdGlvbnMoKTsgdHJhY2sgc2VjdGlvbi5pZCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fc2VjdGlvblwiIGNka0RyYWcgW2lkXT1cIidzZWN0aW9uLScgKyBzZWN0aW9uLmlkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fc2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmICghcmVhZG9ubHkoKSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19zZWN0aW9uLWRyYWctaGFuZGxlXCIgY2RrRHJhZ0hhbmRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1ncmlwLXZlcnRpY2FsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19zZWN0aW9uLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cIl9fc2VjdGlvbi10aXRsZVwiPnt7IHNlY3Rpb24udGl0bGUgfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzZWN0aW9uLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIl9fc2VjdGlvbi1kZXNjcmlwdGlvblwiPnt7IHNlY3Rpb24uZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKCFyZWFkb25seSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3NlY3Rpb24tYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCInQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5hY3Rpb25zLmFkZC1xdWVzdGlvbi50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIidhY2NlbnQyJ1wiIChvbkNsaWNrKT1cImhhbmRsZUFkZFF1ZXN0aW9uc1RvU2VjdGlvbihzZWN0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1wbHVzXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBbbG9va109XCInYmxhbmsnXCIgY29sb3I9XCJhY2NlbnQzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVTZWN0aW9uRWRpdChzZWN0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtcGVuY2lsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNhblJlbW92ZVNlY3Rpb24oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBjbGFzcz1cImF4LXNtXCIgW2xvb2tdPVwiJ2JsYW5rJ1wiIGNvbG9yPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVTZWN0aW9uUmVtb3ZlKHNlY3Rpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS10cmFzaC1jYW5cIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2l0ZW1zLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19pdGVtcy1saXN0IGF4LW92ZXJmbG93LWF1dG9cIiBjZGtEcm9wTGlzdCBbaWRdPVwiJ3NlY3Rpb24tJyArIHNlY3Rpb24uaWQgKyAnLWl0ZW1zJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cInNlY3Rpb24uaXRlbXNcIiBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJnZXRBbGxTZWN0aW9uRHJvcExpc3RzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJoYW5kbGVJdGVtRHJvcCgkZXZlbnQsIHNlY3Rpb24uaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNlY3Rpb24uaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXhwLXN0YXRlLW1lc3NhZ2UgaWNvbj1cImZhLWxpZ2h0IGZhLWluYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiKCdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS1idWlsZGVyLmVtcHR5LXN0YXRlcy5lbXB0eS1zZWN0aW9uLnRpdGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIignQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci5lbXB0eS1zdGF0ZXMuZW1wdHktc2VjdGlvbi5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfCBhc3luYykgfHwgJydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygc2VjdGlvbi5pdGVtczsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9faXRlbVwiIGNka0RyYWc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghcmVhZG9ubHkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2RyYWctaGFuZGxlXCIgY2RrRHJhZ0hhbmRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLWdyaXAtdmVydGljYWxcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9faXRlbS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2l0ZW0taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19pdGVtLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5fX2RpZmZpY3VsdHktZWFzeV09XCJpdGVtLnF1ZXN0aW9uPy5kaWZmaWN1bHR5ID09PSAnZWFzeSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5fX2RpZmZpY3VsdHktbWVkaXVtXT1cIml0ZW0ucXVlc3Rpb24/LmRpZmZpY3VsdHkgPT09ICdtZWRpdW0nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuX19kaWZmaWN1bHR5LWhhcmRdPVwiaXRlbS5xdWVzdGlvbj8uZGlmZmljdWx0eSA9PT0gJ2hhcmQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLWxpZ2h0IGZhLXF1ZXN0aW9uLWNpcmNsZVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9faXRlbS1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiX19pdGVtLXRpdGxlXCI+e3sgaXRlbS5xdWVzdGlvbj8udGl0bGUgPz8gJ1F1ZXN0aW9uJyB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnF1ZXN0aW9uPy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiX19pdGVtLWRlc2NyaXB0aW9uXCI+e3sgaXRlbS5xdWVzdGlvbj8uZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19pdGVtLW1ldGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaXNSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiX19pdGVtLWJhZGdlIF9fcmVxdWlyZWRcIj5SZXF1aXJlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnNjb3JpbmdPdmVycmlkZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiX19pdGVtLWJhZGdlXCI+Q3VzdG9tIFNjb3Jpbmc8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghcmVhZG9ubHkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2l0ZW0tYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgtc21cIiBbbG9va109XCInYmxhbmsnXCIgY29sb3I9XCJhY2NlbnQzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUl0ZW1FZGl0KGl0ZW0sIHNlY3Rpb24uaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLWxpZ2h0IGZhLXBlbmNpbFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24gW2xvb2tdPVwiJ2JsYW5rJ1wiIGNsYXNzPVwiYXgtc21cIiBjb2xvcj1cImRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVJdGVtUmVtb3ZlKGl0ZW0sIHNlY3Rpb24uaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLWxpZ2h0IGZhLXRyYXNoLWNhblwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19"],"names":[],"mappings":"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"}