@acorex/modules 18.2.1 → 18.2.3

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 (271) hide show
  1. package/application-management/lib/const.d.ts +5 -0
  2. package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +42 -4
  3. package/application-management/lib/menu.provider.d.ts +3 -3
  4. package/auth/lib/account/profile/profile-slot.component.d.ts +0 -1
  5. package/auth/lib/auth.config.d.ts +6 -0
  6. package/auth/lib/error-handler.d.ts +0 -1
  7. package/auth/lib/login/password/password.component.d.ts +1 -0
  8. package/auth/lib/menu.provider.d.ts +2 -2
  9. package/backend/lib/data/api/data-provider.d.ts +1 -0
  10. package/backend/lib/data/index.d.ts +0 -1
  11. package/conversation/index.d.ts +5 -3
  12. package/conversation/lib/const.d.ts +7 -0
  13. package/conversation/lib/conversation.module.d.ts +1 -4
  14. package/conversation/lib/entities/chat/chat.module.d.ts +10 -4
  15. package/conversation/lib/entities/chat/chat.service.d.ts +14 -0
  16. package/conversation/lib/entities/chat/chat.type.d.ts +2 -1
  17. package/conversation/lib/entities/chat/components/chat-item/chat-item.component.d.ts +11 -11
  18. package/conversation/lib/entities/chat/components/chat-item-header/chat-item-header.component.d.ts +8 -1
  19. package/conversation/lib/entities/chat/components/chat-preview/chat-preview.component.d.ts +7 -4
  20. package/conversation/lib/entities/chat/components/chat-preview-header/chat-preview-header.component.d.ts +7 -0
  21. package/conversation/lib/entities/chat/pages/chat/chat.component.d.ts +19 -1
  22. package/conversation/lib/entities/comments/comments.service.d.ts +3 -3
  23. package/esm2022/application-management/lib/const.mjs +6 -0
  24. package/esm2022/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.mjs +6 -10
  25. package/esm2022/application-management/lib/menu.provider.mjs +17 -19
  26. package/esm2022/application-management/lib/module-designer/module-designer.component.mjs +3 -3
  27. package/esm2022/auth/lib/account/app-chooser/app-chooser.component.mjs +3 -3
  28. package/esm2022/auth/lib/account/profile/profile-slot.component.mjs +2 -4
  29. package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser.component.mjs +3 -3
  30. package/esm2022/auth/lib/auth.config.mjs +1 -1
  31. package/esm2022/auth/lib/error-handler.mjs +4 -5
  32. package/esm2022/auth/lib/forgot/password/password.component.mjs +2 -2
  33. package/esm2022/auth/lib/login/password/password.component.mjs +6 -3
  34. package/esm2022/auth/lib/menu.provider.mjs +28 -35
  35. package/esm2022/auth/lib/two-factor/two-factor-code/two-factor-code.component.mjs +2 -2
  36. package/esm2022/backend/lib/data/api/data-provider.mjs +11 -3
  37. package/esm2022/backend/lib/data/index.mjs +1 -2
  38. package/esm2022/conversation/index.mjs +6 -4
  39. package/esm2022/conversation/lib/const.mjs +8 -0
  40. package/esm2022/conversation/lib/conversation.module.mjs +5 -10
  41. package/esm2022/conversation/lib/entities/chat/chat.module.mjs +64 -13
  42. package/esm2022/conversation/lib/entities/chat/chat.service.mjs +23 -0
  43. package/esm2022/conversation/lib/entities/chat/chat.type.mjs +1 -1
  44. package/esm2022/conversation/lib/entities/chat/components/chat-item/chat-item.component.mjs +33 -15
  45. package/esm2022/conversation/lib/entities/chat/components/chat-item-header/chat-item-header.component.mjs +18 -5
  46. package/esm2022/conversation/lib/entities/chat/components/chat-preview/chat-preview.component.mjs +34 -147
  47. package/esm2022/conversation/lib/entities/chat/components/chat-preview-header/chat-preview-header.component.mjs +22 -0
  48. package/esm2022/conversation/lib/entities/chat/pages/chat/chat.component.mjs +73 -8
  49. package/esm2022/conversation/lib/entities/comments/comment.module.mjs +4 -4
  50. package/esm2022/conversation/lib/entities/comments/comments.service.mjs +7 -6
  51. package/esm2022/conversation/lib/entities/comments/pages/comment-list-view.component.mjs +2 -3
  52. package/esm2022/form-template-management/lib/components/widgets/template-designer/index.mjs +3 -0
  53. package/esm2022/form-template-management/lib/components/widgets/template-designer/template-designer-widget-view.component.mjs +44 -0
  54. package/esm2022/form-template-management/lib/components/widgets/template-designer/template-designer-widget.config.mjs +23 -0
  55. package/esm2022/form-template-management/lib/const.mjs +2 -2
  56. package/esm2022/form-template-management/lib/entities/category/category.entity.mjs +13 -13
  57. package/esm2022/form-template-management/lib/entities/template/template.entity.mjs +208 -15
  58. package/esm2022/form-template-management/lib/entities/template/template.types.mjs +1 -1
  59. package/esm2022/form-template-management/lib/form-template-management.module.mjs +60 -4
  60. package/esm2022/form-template-management/lib/menu.provider.mjs +16 -29
  61. package/esm2022/form-template-management/lib/pages/designer/designer.page.mjs +9 -4
  62. package/esm2022/form-template-management/lib/services/designer-connector.service.mjs +33 -0
  63. package/esm2022/form-template-management/lib/services/template.provider.mjs +31 -0
  64. package/esm2022/form-template-management/lib/workflows/create-template.workflow.mjs +40 -0
  65. package/esm2022/form-template-management/lib/workflows/design-template.workflow.mjs +32 -0
  66. package/esm2022/localization-management/lib/const.mjs +9 -0
  67. package/esm2022/localization-management/lib/menu.provider.mjs +33 -35
  68. package/esm2022/notification-management/lib/admin-notification-slot/admin-notification-item/admin-notification-item.component.mjs +3 -3
  69. package/esm2022/notification-management/lib/const.mjs +9 -0
  70. package/esm2022/notification-management/lib/entities/my-notification.mjs +5 -5
  71. package/esm2022/notification-management/lib/entities/notification-template.entity.mjs +4 -4
  72. package/esm2022/notification-management/lib/entities/notification.entity.mjs +4 -4
  73. package/esm2022/notification-management/lib/menu.provider.mjs +39 -37
  74. package/esm2022/platform-management/lib/common/country/country.entity.mjs +2 -2
  75. package/esm2022/platform-management/lib/common/province/province.entity.mjs +8 -8
  76. package/esm2022/platform-management/lib/const.mjs +12 -0
  77. package/esm2022/platform-management/lib/global-variables/entities/global-variable.entity.mjs +5 -4
  78. package/esm2022/platform-management/lib/global-variables/entity.loader.mjs +8 -11
  79. package/esm2022/platform-management/lib/menu.provider.mjs +53 -47
  80. package/esm2022/scheduler-job-management/acorex-modules-scheduler-job-management.mjs +5 -0
  81. package/esm2022/scheduler-job-management/index.mjs +5 -0
  82. package/esm2022/scheduler-job-management/lib/const.mjs +8 -0
  83. package/esm2022/scheduler-job-management/lib/entities/index.mjs +2 -0
  84. package/esm2022/scheduler-job-management/lib/entities/scheduler-job/index.mjs +5 -0
  85. package/esm2022/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.entity.mjs +333 -0
  86. package/esm2022/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.module.mjs +28 -0
  87. package/esm2022/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.service.mjs +17 -0
  88. package/esm2022/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.types.mjs +2 -0
  89. package/esm2022/scheduler-job-management/lib/entity.provider.mjs +25 -0
  90. package/esm2022/scheduler-job-management/lib/menu.provider.mjs +31 -0
  91. package/esm2022/scheduler-job-management/lib/scheduler-job-management.module.mjs +44 -0
  92. package/esm2022/setting-management/acorex-modules-setting-management.mjs +5 -0
  93. package/esm2022/setting-management/index.mjs +5 -0
  94. package/esm2022/setting-management/lib/const.mjs +7 -0
  95. package/esm2022/setting-management/lib/entities/index.mjs +2 -0
  96. package/esm2022/setting-management/lib/entities/setting/index.mjs +5 -0
  97. package/esm2022/setting-management/lib/entities/setting/setting.entity.mjs +244 -0
  98. package/esm2022/setting-management/lib/entities/setting/setting.module.mjs +28 -0
  99. package/esm2022/setting-management/lib/entities/setting/setting.service.mjs +17 -0
  100. package/esm2022/setting-management/lib/entities/setting/setting.types.mjs +2 -0
  101. package/esm2022/setting-management/lib/entity.provider.mjs +25 -0
  102. package/esm2022/setting-management/lib/menu.provider.mjs +32 -0
  103. package/esm2022/setting-management/lib/setting-management.module.mjs +44 -0
  104. package/esm2022/text-template-management/acorex-modules-text-template-management.mjs +5 -0
  105. package/esm2022/text-template-management/index.mjs +6 -0
  106. package/esm2022/text-template-management/lib/const.mjs +8 -0
  107. package/esm2022/text-template-management/lib/entities/category/category.entity.mjs +262 -0
  108. package/esm2022/text-template-management/lib/entities/category/category.module.mjs +28 -0
  109. package/esm2022/text-template-management/lib/entities/category/category.service.mjs +17 -0
  110. package/esm2022/text-template-management/lib/entities/category/category.types.mjs +2 -0
  111. package/esm2022/text-template-management/lib/entities/category/index.mjs +5 -0
  112. package/esm2022/text-template-management/lib/entities/index.mjs +3 -0
  113. package/esm2022/text-template-management/lib/entities/template/index.mjs +5 -0
  114. package/esm2022/text-template-management/lib/entities/template/template.entity.mjs +405 -0
  115. package/esm2022/text-template-management/lib/entities/template/template.module.mjs +28 -0
  116. package/esm2022/text-template-management/lib/entities/template/template.service.mjs +17 -0
  117. package/esm2022/text-template-management/lib/entities/template/template.types.mjs +2 -0
  118. package/esm2022/text-template-management/lib/entity.provider.mjs +29 -0
  119. package/esm2022/text-template-management/lib/menu.provider.mjs +37 -0
  120. package/esm2022/text-template-management/lib/setting.provider.mjs +308 -0
  121. package/esm2022/text-template-management/lib/text-template-management.module.mjs +56 -0
  122. package/fesm2022/{acorex-modules-application-management-module-designer.component-CaR_HZfL.mjs → acorex-modules-application-management-module-designer.component-B6WPz0N8.mjs} +5 -5
  123. package/fesm2022/{acorex-modules-application-management-module-designer.component-CaR_HZfL.mjs.map → acorex-modules-application-management-module-designer.component-B6WPz0N8.mjs.map} +1 -1
  124. package/fesm2022/acorex-modules-application-management.mjs +30 -30
  125. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  126. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BVOt-gis.mjs → acorex-modules-auth-acorex-modules-auth-utPX4yb_.mjs} +42 -51
  127. package/fesm2022/acorex-modules-auth-acorex-modules-auth-utPX4yb_.mjs.map +1 -0
  128. package/fesm2022/{acorex-modules-auth-app-chooser.component-DhPEtLuK.mjs → acorex-modules-auth-app-chooser.component-TeYGIm6k.mjs} +6 -6
  129. package/fesm2022/acorex-modules-auth-app-chooser.component-TeYGIm6k.mjs.map +1 -0
  130. package/fesm2022/{acorex-modules-auth-login.module-sFVL-lYB.mjs → acorex-modules-auth-login.module-CJwYNVRQ.mjs} +6 -6
  131. package/fesm2022/{acorex-modules-auth-login.module-sFVL-lYB.mjs.map → acorex-modules-auth-login.module-CJwYNVRQ.mjs.map} +1 -1
  132. package/fesm2022/{acorex-modules-auth-master.layout-Bnt5qiio.mjs → acorex-modules-auth-master.layout-CTC5upRa.mjs} +4 -4
  133. package/fesm2022/{acorex-modules-auth-master.layout-Bnt5qiio.mjs.map → acorex-modules-auth-master.layout-CTC5upRa.mjs.map} +1 -1
  134. package/fesm2022/{acorex-modules-auth-password.component-BXL-aLTx.mjs → acorex-modules-auth-password.component-DWnYxb-x.mjs} +5 -5
  135. package/fesm2022/{acorex-modules-auth-password.component-BXL-aLTx.mjs.map → acorex-modules-auth-password.component-DWnYxb-x.mjs.map} +1 -1
  136. package/fesm2022/{acorex-modules-auth-password.component-ClaRp38G.mjs → acorex-modules-auth-password.component-DZb3bTWc.mjs} +11 -8
  137. package/fesm2022/acorex-modules-auth-password.component-DZb3bTWc.mjs.map +1 -0
  138. package/fesm2022/{acorex-modules-auth-routes-MDneFw2m.mjs → acorex-modules-auth-routes-CP1BJb5A.mjs} +2 -2
  139. package/fesm2022/{acorex-modules-auth-routes-MDneFw2m.mjs.map → acorex-modules-auth-routes-CP1BJb5A.mjs.map} +1 -1
  140. package/fesm2022/acorex-modules-auth-tenant-chooser.component-6qDoCUBo.mjs +83 -0
  141. package/fesm2022/acorex-modules-auth-tenant-chooser.component-6qDoCUBo.mjs.map +1 -0
  142. package/fesm2022/{acorex-modules-auth-two-factor-code.component-B_7l39pX.mjs → acorex-modules-auth-two-factor-code.component-BJKmvI7y.mjs} +3 -3
  143. package/fesm2022/{acorex-modules-auth-two-factor-code.component-B_7l39pX.mjs.map → acorex-modules-auth-two-factor-code.component-BJKmvI7y.mjs.map} +1 -1
  144. package/fesm2022/{acorex-modules-auth-two-factor.module-BHulbf0N.mjs → acorex-modules-auth-two-factor.module-JsnQJZvC.mjs} +5 -5
  145. package/fesm2022/{acorex-modules-auth-two-factor.module-BHulbf0N.mjs.map → acorex-modules-auth-two-factor.module-JsnQJZvC.mjs.map} +1 -1
  146. package/fesm2022/acorex-modules-auth.mjs +3 -3
  147. package/fesm2022/acorex-modules-backend.mjs +14 -97
  148. package/fesm2022/acorex-modules-backend.mjs.map +1 -1
  149. package/fesm2022/acorex-modules-conversation.mjs +285 -230
  150. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  151. package/fesm2022/{acorex-modules-form-template-management-designer.page-DC18KFvK.mjs → acorex-modules-form-template-management-designer.page-NhIPhsRs.mjs} +9 -4
  152. package/fesm2022/acorex-modules-form-template-management-designer.page-NhIPhsRs.mjs.map +1 -0
  153. package/fesm2022/acorex-modules-form-template-management.mjs +486 -64
  154. package/fesm2022/acorex-modules-form-template-management.mjs.map +1 -1
  155. package/fesm2022/acorex-modules-localization-management.mjs +41 -35
  156. package/fesm2022/acorex-modules-localization-management.mjs.map +1 -1
  157. package/fesm2022/acorex-modules-notification-management.mjs +59 -51
  158. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  159. package/fesm2022/acorex-modules-platform-management.mjs +81 -69
  160. package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
  161. package/fesm2022/acorex-modules-scheduler-job-management.mjs +482 -0
  162. package/fesm2022/acorex-modules-scheduler-job-management.mjs.map +1 -0
  163. package/fesm2022/acorex-modules-setting-management.mjs +393 -0
  164. package/fesm2022/acorex-modules-setting-management.mjs.map +1 -0
  165. package/fesm2022/acorex-modules-text-template-management.mjs +1181 -0
  166. package/fesm2022/acorex-modules-text-template-management.mjs.map +1 -0
  167. package/form-template-management/lib/components/widgets/template-designer/index.d.ts +2 -0
  168. package/form-template-management/lib/components/widgets/template-designer/template-designer-widget-view.component.d.ts +8 -0
  169. package/form-template-management/lib/components/widgets/template-designer/template-designer-widget.config.d.ts +7 -0
  170. package/form-template-management/lib/entities/template/template.types.d.ts +2 -0
  171. package/form-template-management/lib/form-template-management.module.d.ts +3 -1
  172. package/form-template-management/lib/menu.provider.d.ts +2 -2
  173. package/form-template-management/lib/pages/designer/designer.page.d.ts +2 -0
  174. package/form-template-management/lib/services/designer-connector.service.d.ts +7 -0
  175. package/form-template-management/lib/services/template.provider.d.ts +8 -0
  176. package/form-template-management/lib/workflows/create-template.workflow.d.ts +2 -0
  177. package/form-template-management/lib/workflows/design-template.workflow.d.ts +9 -0
  178. package/localization-management/lib/const.d.ts +8 -0
  179. package/localization-management/lib/menu.provider.d.ts +3 -3
  180. package/notification-management/lib/const.d.ts +8 -0
  181. package/notification-management/lib/menu.provider.d.ts +3 -2
  182. package/package.json +33 -27
  183. package/platform-management/lib/const.d.ts +11 -0
  184. package/platform-management/lib/menu.provider.d.ts +3 -3
  185. package/scheduler-job-management/README.md +3 -0
  186. package/scheduler-job-management/index.d.ts +4 -0
  187. package/scheduler-job-management/lib/const.d.ts +7 -0
  188. package/scheduler-job-management/lib/entities/index.d.ts +1 -0
  189. package/scheduler-job-management/lib/entities/scheduler-job/index.d.ts +4 -0
  190. package/{template-management/lib/entities/text-template.entity.d.ts → scheduler-job-management/lib/entities/scheduler-job/scheduler-job.entity.d.ts} +1 -1
  191. package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.module.d.ts +6 -0
  192. package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.service.d.ts +10 -0
  193. package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.types.d.ts +5 -0
  194. package/scheduler-job-management/lib/entity.provider.d.ts +9 -0
  195. package/scheduler-job-management/lib/menu.provider.d.ts +5 -0
  196. package/scheduler-job-management/lib/scheduler-job-management.module.d.ts +7 -0
  197. package/setting-management/README.md +3 -0
  198. package/setting-management/index.d.ts +4 -0
  199. package/setting-management/lib/const.d.ts +6 -0
  200. package/setting-management/lib/entities/index.d.ts +1 -0
  201. package/setting-management/lib/entities/setting/index.d.ts +4 -0
  202. package/setting-management/lib/entities/setting/setting.entity.d.ts +3 -0
  203. package/setting-management/lib/entities/setting/setting.module.d.ts +6 -0
  204. package/setting-management/lib/entities/setting/setting.service.d.ts +10 -0
  205. package/setting-management/lib/entities/setting/setting.types.d.ts +5 -0
  206. package/setting-management/lib/entity.provider.d.ts +9 -0
  207. package/setting-management/lib/menu.provider.d.ts +5 -0
  208. package/setting-management/lib/setting-management.module.d.ts +7 -0
  209. package/text-template-management/README.md +3 -0
  210. package/text-template-management/index.d.ts +5 -0
  211. package/text-template-management/lib/const.d.ts +7 -0
  212. package/text-template-management/lib/entities/category/category.entity.d.ts +3 -0
  213. package/text-template-management/lib/entities/category/category.module.d.ts +6 -0
  214. package/text-template-management/lib/entities/category/category.service.d.ts +10 -0
  215. package/text-template-management/lib/entities/category/category.types.d.ts +5 -0
  216. package/text-template-management/lib/entities/category/index.d.ts +4 -0
  217. package/text-template-management/lib/entities/index.d.ts +2 -0
  218. package/text-template-management/lib/entities/template/index.d.ts +4 -0
  219. package/text-template-management/lib/entities/template/template.entity.d.ts +3 -0
  220. package/text-template-management/lib/entities/template/template.module.d.ts +6 -0
  221. package/text-template-management/lib/entities/template/template.service.d.ts +10 -0
  222. package/text-template-management/lib/entities/template/template.types.d.ts +9 -0
  223. package/text-template-management/lib/entity.provider.d.ts +9 -0
  224. package/text-template-management/lib/menu.provider.d.ts +5 -0
  225. package/text-template-management/lib/setting.provider.d.ts +4 -0
  226. package/text-template-management/lib/text-template-management.module.d.ts +8 -0
  227. package/backend/lib/data/local/local-data-provider.d.ts +0 -23
  228. package/conversation/lib/entities/chat/components/chat-items/chat-items.component.d.ts +0 -6
  229. package/converstion-test/README.md +0 -4
  230. package/converstion-test/index.d.ts +0 -1
  231. package/converstion-test/lib/converstion-test.module.d.ts +0 -6
  232. package/esm2022/backend/lib/data/local/local-data-provider.mjs +0 -94
  233. package/esm2022/conversation/lib/entities/chat/components/chat-items/chat-items.component.mjs +0 -15
  234. package/esm2022/converstion-test/acorex-modules-converstion-test.mjs +0 -5
  235. package/esm2022/converstion-test/index.mjs +0 -2
  236. package/esm2022/converstion-test/lib/converstion-test.module.mjs +0 -16
  237. package/esm2022/template-management/acorex-modules-template-management.mjs +0 -5
  238. package/esm2022/template-management/index.mjs +0 -8
  239. package/esm2022/template-management/lib/entities/category.entity.mjs +0 -251
  240. package/esm2022/template-management/lib/entities/index.mjs +0 -4
  241. package/esm2022/template-management/lib/entities/template-variable.entity.mjs +0 -308
  242. package/esm2022/template-management/lib/entities/text-template.entity.mjs +0 -411
  243. package/esm2022/template-management/lib/entity.provider.mjs +0 -32
  244. package/esm2022/template-management/lib/menu.provider.mjs +0 -43
  245. package/esm2022/template-management/lib/template-management.module.mjs +0 -61
  246. package/esm2022/template-management/lib/template-management.types.mjs +0 -2
  247. package/esm2022/template-management/lib/template.service.mjs +0 -17
  248. package/esm2022/template-management/lib/text-management.source.mjs +0 -3
  249. package/esm2022/template-management/lib/text-template-category.service.mjs +0 -17
  250. package/fesm2022/acorex-modules-auth-acorex-modules-auth-BVOt-gis.mjs.map +0 -1
  251. package/fesm2022/acorex-modules-auth-app-chooser.component-DhPEtLuK.mjs.map +0 -1
  252. package/fesm2022/acorex-modules-auth-password.component-ClaRp38G.mjs.map +0 -1
  253. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CHr5_kh7.mjs +0 -83
  254. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CHr5_kh7.mjs.map +0 -1
  255. package/fesm2022/acorex-modules-converstion-test.mjs +0 -23
  256. package/fesm2022/acorex-modules-converstion-test.mjs.map +0 -1
  257. package/fesm2022/acorex-modules-form-template-management-designer.page-DC18KFvK.mjs.map +0 -1
  258. package/fesm2022/acorex-modules-template-management.mjs +0 -1142
  259. package/fesm2022/acorex-modules-template-management.mjs.map +0 -1
  260. package/template-management/README.md +0 -3
  261. package/template-management/index.d.ts +0 -7
  262. package/template-management/lib/entities/category.entity.d.ts +0 -3
  263. package/template-management/lib/entities/index.d.ts +0 -3
  264. package/template-management/lib/entities/template-variable.entity.d.ts +0 -3
  265. package/template-management/lib/entity.provider.d.ts +0 -9
  266. package/template-management/lib/menu.provider.d.ts +0 -5
  267. package/template-management/lib/template-management.module.d.ts +0 -6
  268. package/template-management/lib/template-management.types.d.ts +0 -19
  269. package/template-management/lib/template.service.d.ts +0 -10
  270. package/template-management/lib/text-management.source.d.ts +0 -2
  271. package/template-management/lib/text-template-category.service.d.ts +0 -10
@@ -0,0 +1,5 @@
1
+ export declare const AXMApplicationManagementModuleConst: {
2
+ moduleName: string;
3
+ moduleRoute: string;
4
+ i18n: string;
5
+ };
@@ -3,11 +3,49 @@ import { AXPEntityMasterSingleViewModel } from '@acorex/platform/layout/entity';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class AXPModuleEntityDetailViewComponent {
5
5
  private activeRoute;
6
- private workflow;
7
6
  protected readonly vm: AXPEntityMasterSingleViewModel;
8
- private store;
9
- protected isSM: import("rxjs").Observable<boolean>;
10
- protected isOpen: import("rxjs").Observable<boolean>;
7
+ protected store: {
8
+ currentTheme: import("@angular/core").Signal<import("@acorex/platform/themes/shared").AXPThemeVariant>;
9
+ systemTheme: import("@angular/core").Signal<import("@acorex/platform/themes/shared").AXPThemeVariant>;
10
+ screenSize: import("@angular/core").Signal<import("@acorex/platform/themes/shared").AXPScreenSize>;
11
+ deviceType: import("@angular/core").Signal<import("@acorex/platform/themes/shared").AXPDeviceType>;
12
+ isTouchDevice: import("@angular/core").Signal<boolean>;
13
+ overlayLoading: import("@angular/core").Signal<boolean>;
14
+ navigationLoading: import("@angular/core").Signal<boolean>;
15
+ overlayLoadingTaskCount: import("@angular/core").Signal<number>;
16
+ navigationLoadingTaskCount: import("@angular/core").Signal<number>;
17
+ sideMenuState: import("@angular/core").Signal<import("@acorex/platform/themes/shared").AXPSideMenuState>;
18
+ isDarkMode: import("@angular/core").Signal<boolean>;
19
+ isLightMode: import("@angular/core").Signal<boolean>;
20
+ isSystemMode: import("@angular/core").Signal<boolean>;
21
+ isSideMenuOpen: import("@angular/core").Signal<boolean>;
22
+ isSmall: import("@angular/core").Signal<boolean>;
23
+ isMedium: import("@angular/core").Signal<boolean>;
24
+ isLarge: import("@angular/core").Signal<boolean>;
25
+ isMobileDevice: import("@angular/core").Signal<boolean>;
26
+ isTabletDevice: import("@angular/core").Signal<boolean>;
27
+ isDesktopDevice: import("@angular/core").Signal<boolean>;
28
+ isTouchScreen: import("@angular/core").Signal<boolean>;
29
+ isOverlayLoading: import("@angular/core").Signal<boolean>;
30
+ isNavigationLoading: import("@angular/core").Signal<boolean>;
31
+ changeTheme: (theme: import("@acorex/platform/themes/shared").AXPThemeVariant) => void;
32
+ openSideMenu: () => void;
33
+ closeSideMenu: () => void;
34
+ toggleSideMenu: () => void;
35
+ setNavigationLoading: (value: boolean) => void;
36
+ setOverlayLoading: (value: boolean) => void;
37
+ } & import("@ngrx/signals").StateSource<{
38
+ currentTheme: import("@acorex/platform/themes/shared").AXPThemeVariant;
39
+ systemTheme: import("@acorex/platform/themes/shared").AXPThemeVariant;
40
+ screenSize: import("@acorex/platform/themes/shared").AXPScreenSize;
41
+ deviceType: import("@acorex/platform/themes/shared").AXPDeviceType;
42
+ isTouchDevice: boolean;
43
+ overlayLoading: boolean;
44
+ navigationLoading: boolean;
45
+ overlayLoadingTaskCount: number;
46
+ navigationLoadingTaskCount: number;
47
+ sideMenuState: import("@acorex/platform/themes/shared").AXPSideMenuState;
48
+ }>;
11
49
  protected selectedRelatedIEntityTabIndex: import("@angular/core").WritableSignal<number>;
12
50
  handleActiveRelatedEntityChanged(e: AXTabStripChangedEvent): void;
13
51
  protected selectedDetailTabIndex: import("@angular/core").WritableSignal<number>;
@@ -1,5 +1,5 @@
1
- import { AXPMenuInsertion, AXPMenuProvider } from '@acorex/platform/common';
1
+ import { AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';
2
2
  export declare class AXMApplicationManagmentModuleMenuProvider implements AXPMenuProvider {
3
- private translateService;
4
- items(): Promise<AXPMenuInsertion[]>;
3
+ private entityService;
4
+ provide(context: AXPMenuProviderContext): Promise<void>;
5
5
  }
@@ -5,7 +5,6 @@ export declare class AXMAuthProfileSlotComponent {
5
5
  private router;
6
6
  private sessionService;
7
7
  private dataService;
8
- private mockerService;
9
8
  protected hasPicture: import("@angular/core").WritableSignal<boolean>;
10
9
  protected avatarText: import("@angular/core").WritableSignal<string>;
11
10
  constructor();
@@ -13,6 +13,12 @@ export interface AXMAuthConfigs {
13
13
  type: AXMAuthenticationTypes;
14
14
  authConfig?: AuthConfig;
15
15
  end_url?: string;
16
+ signup?: {
17
+ enable: boolean;
18
+ url?: string;
19
+ };
20
+ signin_google?: boolean;
21
+ signin_apple?: boolean;
16
22
  signinPage?: {
17
23
  description: string;
18
24
  slogan: string;
@@ -3,7 +3,6 @@ import * as i0 from "@angular/core";
3
3
  export declare class AXMAuthErrorHandler implements AXPErrorHandler {
4
4
  private router;
5
5
  private layoutService;
6
- private zone;
7
6
  handleError(error: Error, next: (error: any) => void): void;
8
7
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMAuthErrorHandler, never>;
9
8
  static ɵprov: i0.ɵɵInjectableDeclaration<AXMAuthErrorHandler>;
@@ -16,6 +16,7 @@ export declare class AXPLoginPasswordComponent implements OnInit {
16
16
  private router;
17
17
  ngOnInit(): void;
18
18
  protected handleForgotOnClick(): void;
19
+ protected handleRegisterOnClick(): void;
19
20
  protected handleLoginClick(): void;
20
21
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPLoginPasswordComponent, never>;
21
22
  static ɵcmp: i0.ɵɵComponentDeclaration<AXPLoginPasswordComponent, "ng-component", never, {}, {}, never, never, true, never>;
@@ -1,4 +1,4 @@
1
- import { AXPMenuInsertion, AXPMenuProvider } from '@acorex/platform/common';
1
+ import { AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';
2
2
  export declare class AXMSecurityManagmentModuleMenuProvider implements AXPMenuProvider {
3
- items(): Promise<AXPMenuInsertion[]>;
3
+ provide(context: AXPMenuProviderContext): Promise<void>;
4
4
  }
@@ -4,6 +4,7 @@ import * as i0 from "@angular/core";
4
4
  export declare class AXMBackendDataProvider implements AXPDataProvider {
5
5
  private http;
6
6
  private configs;
7
+ private filterService;
7
8
  private mainUrl;
8
9
  constructor(http: HttpClient);
9
10
  insertOne(entity: AXPEntityConfig, entityItem: any): Promise<any>;
@@ -2,4 +2,3 @@ export * from './api/comment.service';
2
2
  export * from './api/data-provider';
3
3
  export * from './api/file.service';
4
4
  export * from './api/module-designer.service';
5
- export * from './local/local-data-provider';
@@ -1,14 +1,16 @@
1
- export * from './lib/entities/comments/pages/comment-list-view.component';
2
- export * from './lib/entities/comments/pages/comment-lookup-popup.component';
3
1
  export * from './lib/entities/comments/comment.module';
4
2
  export * from './lib/entities/comments/comments.service';
5
3
  export * from './lib/entities/comments/comments.type';
4
+ export * from './lib/entities/comments/pages/comment-list-view.component';
5
+ export * from './lib/entities/comments/pages/comment-lookup-popup.component';
6
6
  export * from './lib/entities/chat/chat.module';
7
+ export * from './lib/entities/chat/chat.service';
7
8
  export * from './lib/entities/chat/chat.type';
8
9
  export * from './lib/entities/chat/components/chat-item-footer/chat-item-footer.component';
9
10
  export * from './lib/entities/chat/components/chat-item-header/chat-item-header.component';
10
11
  export * from './lib/entities/chat/components/chat-item/chat-item.component';
11
- export * from './lib/entities/chat/components/chat-items/chat-items.component';
12
+ export * from './lib/entities/chat/components/chat-preview-header/chat-preview-header.component';
12
13
  export * from './lib/entities/chat/components/chat-preview/chat-preview.component';
13
14
  export * from './lib/entities/chat/pages/chat/chat.component';
15
+ export * from './lib/const';
14
16
  export * from './lib/conversation.module';
@@ -0,0 +1,7 @@
1
+ export declare const AXMConverstionModuleConst: {
2
+ moduleName: string;
3
+ moduleRoute: string;
4
+ i18n: string;
5
+ chatName: string;
6
+ commentName: string;
7
+ };
@@ -1,11 +1,8 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./entities/comments/comment.module";
3
3
  import * as i2 from "./entities/chat/chat.module";
4
- import * as i3 from "./entities/comments/pages/comment-list-view.component";
5
- import * as i4 from "./entities/chat/pages/chat/chat.component";
6
- import * as i5 from "./entities/chat/components/chat-item/chat-item.component";
7
4
  export declare class AXMConversationModule {
8
5
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMConversationModule, never>;
9
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXMConversationModule, never, [typeof i1.AXMCommentModule, typeof i2.AXMChatModule], [typeof i3.AXMCommentListViewComponent, typeof i4.AXMChatComponent, typeof i5.AXMChatItemComponent]>;
6
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXMConversationModule, never, [typeof i1.AXMCommentModule, typeof i2.AXMChatModule], [typeof i1.AXMCommentModule, typeof i2.AXMChatModule]>;
10
7
  static ɵinj: i0.ɵɵInjectorDeclaration<AXMConversationModule>;
11
8
  }
@@ -1,10 +1,11 @@
1
+ import { EnvironmentProviders, ModuleWithProviders, Provider } from '@angular/core';
1
2
  import * as i0 from "@angular/core";
2
3
  import * as i1 from "./components/chat-item/chat-item.component";
3
4
  import * as i2 from "./pages/chat/chat.component";
4
5
  import * as i3 from "./components/chat-item-header/chat-item-header.component";
5
- import * as i4 from "./components/chat-items/chat-items.component";
6
- import * as i5 from "./components/chat-preview/chat-preview.component";
7
- import * as i6 from "./components/chat-item-footer/chat-item-footer.component";
6
+ import * as i4 from "./components/chat-preview/chat-preview.component";
7
+ import * as i5 from "./components/chat-item-footer/chat-item-footer.component";
8
+ import * as i6 from "./components/chat-preview-header/chat-preview-header.component";
8
9
  import * as i7 from "@acorex/components/image";
9
10
  import * as i8 from "@acorex/components/avatar";
10
11
  import * as i9 from "@acorex/components/badge";
@@ -16,8 +17,13 @@ import * as i14 from "@angular/forms";
16
17
  import * as i15 from "@acorex/components/conversation";
17
18
  import * as i16 from "@acorex/components/button";
18
19
  import * as i17 from "@acorex/components/loading";
20
+ import * as i18 from "@acorex/core/utils";
21
+ import * as i19 from "@angular/router";
19
22
  export declare class AXMChatModule {
23
+ static forRoot(config: {
24
+ provider: Array<Provider | EnvironmentProviders>;
25
+ }): ModuleWithProviders<AXMChatModule>;
20
26
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMChatModule, never>;
21
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXMChatModule, [typeof i1.AXMChatItemComponent, typeof i2.AXMChatComponent, typeof i3.AXMChatItemHeaderComponent, typeof i4.AXMChatItemsComponent, typeof i5.AXMChatPreviewComponent, typeof i6.AXMChatItemFooterComponent], [typeof i7.AXImageModule, typeof i8.AXAvatarModule, typeof i9.AXBadgeModule, typeof i10.AXDecoratorModule, typeof i11.AXTextBoxModule, typeof i12.AXTabsModule, typeof i13.CommonModule, typeof i14.FormsModule, typeof i15.AXConversationModule, typeof i16.AXButtonModule, typeof i17.AXLoadingModule], [typeof i1.AXMChatItemComponent, typeof i2.AXMChatComponent, typeof i3.AXMChatItemHeaderComponent, typeof i4.AXMChatItemsComponent, typeof i5.AXMChatPreviewComponent, typeof i6.AXMChatItemFooterComponent]>;
27
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXMChatModule, [typeof i1.AXMChatItemComponent, typeof i2.AXMChatComponent, typeof i3.AXMChatItemHeaderComponent, typeof i4.AXMChatPreviewComponent, typeof i5.AXMChatItemFooterComponent, typeof i6.AXMChatPreviewHeaderComponent], [typeof i7.AXImageModule, typeof i8.AXAvatarModule, typeof i9.AXBadgeModule, typeof i10.AXDecoratorModule, typeof i11.AXTextBoxModule, typeof i12.AXTabsModule, typeof i13.CommonModule, typeof i14.FormsModule, typeof i15.AXConversationModule, typeof i16.AXButtonModule, typeof i17.AXLoadingModule, typeof i18.UtilsModule, typeof i19.RouterModule], [typeof i1.AXMChatItemComponent, typeof i2.AXMChatComponent, typeof i3.AXMChatItemHeaderComponent, typeof i4.AXMChatPreviewComponent, typeof i5.AXMChatItemFooterComponent, typeof i6.AXMChatPreviewHeaderComponent, typeof i19.RouterModule]>;
22
28
  static ɵinj: i0.ɵɵInjectorDeclaration<AXMChatModule>;
23
29
  }
@@ -0,0 +1,14 @@
1
+ import { AXMEntityCrudServiceImpl } from '@acorex/platform/common';
2
+ import { AXMChatRoom } from './chat.type';
3
+ import * as i0 from "@angular/core";
4
+ export declare abstract class AXMChatService extends AXMEntityCrudServiceImpl<string, AXMChatRoom> {
5
+ abstract getTotalUnread(): Promise<number>;
6
+ abstract markChatAsRead(roomId: string): Promise<void>;
7
+ }
8
+ export declare class AXMChatServiceImpl extends AXMChatService {
9
+ markChatAsRead(roomId: string): Promise<void>;
10
+ getTotalUnread(): Promise<number>;
11
+ constructor();
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMChatServiceImpl, never>;
13
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMChatServiceImpl>;
14
+ }
@@ -1,4 +1,5 @@
1
- export interface AXMChatRoom {
1
+ import { AXPEntityModel } from '@acorex/platform/common';
2
+ export interface AXMChatRoom extends AXPEntityModel<string> {
2
3
  id: string;
3
4
  title: string;
4
5
  lastMessage: AXMChatMessage;
@@ -1,16 +1,16 @@
1
+ import { AXMChatRoom } from '../../chat.type';
1
2
  import * as i0 from "@angular/core";
2
3
  export declare class AXMChatItemComponent {
3
- chatId: import("@angular/core").InputSignal<string | undefined>;
4
- image: import("@angular/core").InputSignal<string | undefined>;
5
- firstName: import("@angular/core").InputSignal<string | undefined>;
6
- lastName: import("@angular/core").InputSignal<string | undefined>;
7
- content: import("@angular/core").InputSignal<string | undefined>;
8
- hasSeen: import("@angular/core").InputSignal<boolean | undefined>;
9
- createdAt: import("@angular/core").InputSignal<Date | undefined>;
10
- unreadCount: import("@angular/core").InputSignal<number | undefined>;
11
- fullName: import("@angular/core").Signal<string>;
4
+ data: import("@angular/core").InputSignal<AXMChatRoom>;
12
5
  pressChatItem: import("@angular/core").OutputEmitterRef<string>;
13
- extractInitials(name: string): string;
6
+ private sessionService;
7
+ private router;
8
+ private activatedRoute;
9
+ protected fullName: import("@angular/core").Signal<string>;
10
+ protected myId: string | undefined;
11
+ protected extractInitials(name: string): string;
12
+ protected onPressChatItem(id: string): Promise<void>;
13
+ protected messageSeenStatus(): string;
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMChatItemComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<AXMChatItemComponent, "axm-chat-item", never, { "chatId": { "alias": "chatId"; "required": false; "isSignal": true; }; "image": { "alias": "image"; "required": false; "isSignal": true; }; "firstName": { "alias": "firstName"; "required": false; "isSignal": true; }; "lastName": { "alias": "lastName"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "hasSeen": { "alias": "hasSeen"; "required": false; "isSignal": true; }; "createdAt": { "alias": "createdAt"; "required": false; "isSignal": true; }; "unreadCount": { "alias": "unreadCount"; "required": false; "isSignal": true; }; }, { "pressChatItem": "pressChatItem"; }, never, never, false, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXMChatItemComponent, "axm-chat-item", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; }, { "pressChatItem": "pressChatItem"; }, never, never, false, never>;
16
16
  }
@@ -1,5 +1,12 @@
1
+ import { AXTabsComponent } from '@acorex/components/tabs';
1
2
  import * as i0 from "@angular/core";
2
3
  export declare class AXMChatItemHeaderComponent {
4
+ total: import("@angular/core").InputSignal<number>;
5
+ unread: import("@angular/core").InputSignal<number>;
6
+ tab: import("@angular/core").Signal<AXTabsComponent>;
7
+ tabsState: import("@angular/core").WritableSignal<number>;
8
+ activeTab: import("@angular/core").OutputEmitterRef<number>;
9
+ constructor();
3
10
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMChatItemHeaderComponent, never>;
4
- static ɵcmp: i0.ɵɵComponentDeclaration<AXMChatItemHeaderComponent, "axm-chat-item-header", never, {}, {}, never, never, false, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXMChatItemHeaderComponent, "axm-chat-item-header", never, { "total": { "alias": "total"; "required": true; "isSignal": true; }; "unread": { "alias": "unread"; "required": true; "isSignal": true; }; }, { "activeTab": "activeTab"; }, never, never, false, never>;
5
12
  }
@@ -1,11 +1,11 @@
1
- import { AXConversationActionEvent, AXConversationService } from '@acorex/components/conversation';
2
- import { AXFileService } from '@acorex/core/file';
1
+ import { AXConversationActionEvent } from '@acorex/components/conversation';
3
2
  import { ElementRef, OnDestroy } from '@angular/core';
4
3
  import * as i0 from "@angular/core";
5
4
  export declare class AXMChatPreviewComponent implements OnDestroy {
6
5
  private elRef;
7
- fileService: AXFileService;
8
- conversationService: AXConversationService;
6
+ private activatedRoute;
7
+ private fileService;
8
+ private conversationService;
9
9
  protected options: import("@angular/core").WritableSignal<{
10
10
  disabled: boolean;
11
11
  readonly: boolean;
@@ -15,6 +15,7 @@ export declare class AXMChatPreviewComponent implements OnDestroy {
15
15
  private resizeObserver;
16
16
  private initialTextAreaHeight;
17
17
  private textareaHeight;
18
+ private messageId;
18
19
  constructor(elRef: ElementRef);
19
20
  protected dynamicHeight: import("@angular/core").Signal<string>;
20
21
  ngOnDestroy(): void;
@@ -23,6 +24,8 @@ export declare class AXMChatPreviewComponent implements OnDestroy {
23
24
  handleEndRecord(event: any): void;
24
25
  handleOnSend(e: any): void;
25
26
  handleOnAction(e: AXConversationActionEvent): void;
27
+ scrollToEnd(): void;
28
+ addMockMessage(): void;
26
29
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMChatPreviewComponent, never>;
27
30
  static ɵcmp: i0.ɵɵComponentDeclaration<AXMChatPreviewComponent, "axm-chat-preview", never, {}, {}, never, never, false, never>;
28
31
  }
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class AXMChatPreviewHeaderComponent {
3
+ pressBack: import("@angular/core").OutputEmitterRef<void>;
4
+ protected emitBack(): void;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMChatPreviewHeaderComponent, never>;
6
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXMChatPreviewHeaderComponent, "axm-chat-preview-header", never, {}, { "pressBack": "pressBack"; }, never, never, false, never>;
7
+ }
@@ -1,5 +1,23 @@
1
+ import { AXPPagedListResult } from '@acorex/platform/common';
2
+ import { OnInit } from '@angular/core';
3
+ import { AXMChatService } from '../../chat.service';
4
+ import { AXMChatRoom } from '../../chat.type';
1
5
  import * as i0 from "@angular/core";
2
- export declare class AXMChatComponent {
6
+ export declare class AXMChatComponent implements OnInit {
7
+ chatService: AXMChatService;
8
+ private route;
9
+ private readonly routeParams;
10
+ protected data: import("@angular/core").WritableSignal<AXPPagedListResult<AXMChatRoom> | undefined>;
11
+ protected filteredData: import("@angular/core").Signal<AXMChatRoom[]>;
12
+ protected displayData: import("@angular/core").Signal<AXMChatRoom[] | undefined>;
13
+ protected activeTab: import("@angular/core").WritableSignal<number>;
14
+ protected allCount: import("@angular/core").Signal<number>;
15
+ protected unreadCount: import("@angular/core").WritableSignal<number>;
16
+ ngOnInit(): Promise<void>;
17
+ private loadData;
18
+ protected markChatAsRead(roomId: string): Promise<void>;
19
+ setActiveTabData(event: number): void;
20
+ goBack(): void;
3
21
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMChatComponent, never>;
4
22
  static ɵcmp: i0.ɵɵComponentDeclaration<AXMChatComponent, "axm-chat", never, {}, {}, never, never, false, never>;
5
23
  }
@@ -4,10 +4,10 @@ import * as i0 from "@angular/core";
4
4
  export declare abstract class AXMCommentService extends AXMEntityCrudServiceImpl<string, AXMCommentEntityModel, AXMCommentCreateRequest, AXMComment> {
5
5
  abstract like(payload: AXMMessageReactionEntityModel): Promise<string>;
6
6
  }
7
- export declare class AXPCommentServiceImpl extends AXMCommentService {
7
+ export declare class AXMCommentServiceImpl extends AXMEntityCrudServiceImpl<string, AXMCommentEntityModel, AXMCommentCreateRequest, AXMComment> {
8
8
  protected messageReactionDataProvider: AXPEntityDataProviderImpl<string, AXMMessageReactionEntityModel, Omit<AXMMessageReactionEntityModel, "id">, AXMMessageReactionEntityModel, AXMMessageReactionEntityModel>;
9
9
  constructor();
10
10
  like(payload: AXMMessageReactionEntityModel): Promise<string>;
11
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPCommentServiceImpl, never>;
12
- static ɵprov: i0.ɵɵInjectableDeclaration<AXPCommentServiceImpl>;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMCommentServiceImpl, never>;
12
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMCommentServiceImpl>;
13
13
  }
@@ -0,0 +1,6 @@
1
+ export const AXMApplicationManagementModuleConst = {
2
+ moduleName: 'ApplicationManagement',
3
+ moduleRoute: 'application-management',
4
+ i18n: 'platform-management',
5
+ };
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL2NvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFHO0lBQ2pELFVBQVUsRUFBRSx1QkFBdUI7SUFDbkMsV0FBVyxFQUFFLHdCQUF3QjtJQUNyQyxJQUFJLEVBQUUscUJBQXFCO0NBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQVhNQXBwbGljYXRpb25NYW5hZ2VtZW50TW9kdWxlQ29uc3QgPSB7XG4gIG1vZHVsZU5hbWU6ICdBcHBsaWNhdGlvbk1hbmFnZW1lbnQnLFxuICBtb2R1bGVSb3V0ZTogJ2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQnLFxuICBpMThuOiAncGxhdGZvcm0tbWFuYWdlbWVudCcsXG59O1xuIl19
@@ -10,15 +10,14 @@ import { AXLoadingModule } from '@acorex/components/loading';
10
10
  import { AXPopoverModule } from '@acorex/components/popover';
11
11
  import { AXTabsModule } from '@acorex/components/tabs';
12
12
  import { AXTranslationModule } from '@acorex/core/translation';
13
- import { AXPGridLayoutDirective, AXPStickyDirective, getChildDrawer, isSmallScreen, } from '@acorex/platform/common';
13
+ import { AXPGridLayoutDirective, AXPStickyDirective, } from '@acorex/platform/common';
14
14
  import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
15
15
  import { AXPEntityDetailListViewComponent } from '@acorex/platform/themes/default';
16
+ import { AXPLayoutThemeService } from '@acorex/platform/themes/shared';
16
17
  import { AXPWidgetsModule } from '@acorex/platform/widgets';
17
- import { AXPWorkflowService } from '@acorex/platform/workflow';
18
18
  import { CommonModule } from '@angular/common';
19
19
  import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';
20
20
  import { ActivatedRoute, RouterModule } from '@angular/router';
21
- import { Store } from '@ngrx/store';
22
21
  import * as i0 from "@angular/core";
23
22
  import * as i1 from "@angular/common";
24
23
  import * as i2 from "@angular/router";
@@ -33,12 +32,9 @@ import * as i10 from "@acorex/core/translation";
33
32
  export class AXPModuleEntityDetailViewComponent {
34
33
  constructor() {
35
34
  this.activeRoute = inject(ActivatedRoute);
36
- this.workflow = inject(AXPWorkflowService);
37
35
  this.vm = this.activeRoute.snapshot.data['vm'];
38
36
  //
39
- this.store = inject((Store));
40
- this.isSM = this.store.select(isSmallScreen());
41
- this.isOpen = this.store.select(getChildDrawer());
37
+ this.store = inject(AXPLayoutThemeService);
42
38
  this.selectedRelatedIEntityTabIndex = signal(0);
43
39
  this.selectedDetailTabIndex = signal(0);
44
40
  }
@@ -53,7 +49,7 @@ export class AXPModuleEntityDetailViewComponent {
53
49
  this.vm.destroy();
54
50
  }
55
51
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPModuleEntityDetailViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPModuleEntityDetailViewComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\"\n>\n <div\n class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\"\n #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\"\n [stickyOffset]=\"30\"\n >\n <!-------- Begin Toolbar -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-2xl ax-font-bold\">{{ vm.title() | translate | async }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">\n {{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\" [class.ax-hidden]=\"isSM | async\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item\n [active]=\"last\"\n [class.!ax-font-semibold]=\"last\"\n [class.!ax-text-neutral-600]=\"last\"\n [routerLink]=\"b.url\"\n >\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title | translate | async }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(tr of vm.primaryActions();track $index) {\n <ax-button [text]=\"tr.title | translate | async\" [color]=\"tr.color\" (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"(isSM | async) ? null : 'Actions'\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(tr of vm.secondaryActions();track $index) {\n <ng-container>\n @if(tr.separated) {\n <ax-divider></ax-divider>\n }\n <ax-button-item\n [text]=\"tr.title\"\n class=\"ax-font-semibold ax-text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n <!-- Start Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-mt-4\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button\n class=\"ax-xs\"\n color=\"ghost\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <div>\n <div>\n <span class=\"ax-font-semibold\">{{ attr.title() | translate | async }}</span>\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'view'\"> </axp-widget-renderer>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n @if(vm.relatedEntities().length) {\n <ax-tabs\n [look]=\"'with-line'\"\n class=\"ax-mt-2 ax-font-semibold\"\n #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\"\n >\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <ax-tab-item [text]=\"(e.title() | translate | async)!\" [key]=\"index.toString()\"> </ax-tab-item>\n }\n </ax-tabs>\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <div [class.ax-hidden]=\"$index !== selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view [viewModel]=\"e\"></axp-entity-detail-list-view>\n </div>\n } }\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i5.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i6.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i6.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i7.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i7.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i7.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i8.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i8.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type:
52
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPModuleEntityDetailViewComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\">\n <div class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\" #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\" [stickyOffset]=\"30\">\n <!-------- Begin Toolbar -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-2xl ax-font-bold\">{{ vm.title() | translate | async }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">\n {{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\" [class.ax-hidden]=\"store.isSmall()\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item [active]=\"last\" [class.!ax-font-semibold]=\"last\" [class.!ax-text-neutral-600]=\"last\"\n [routerLink]=\"b.url\">\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title | translate | async }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(tr of vm.primaryActions();track $index) {\n <ax-button [text]=\"tr.title | translate | async\" [color]=\"tr.color\" (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"(store.isSmall()) ? null : 'Actions'\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(tr of vm.secondaryActions();track $index) {\n <ng-container>\n @if(tr.separated) {\n <ax-divider></ax-divider>\n }\n <ax-button-item [text]=\"tr.title\" class=\"ax-font-semibold ax-text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n <!-- Start Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-mt-4\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button class=\"ax-xs\" color=\"ghost\" [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\">\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <div>\n <div>\n <span class=\"ax-font-semibold\">{{ attr.title() | translate | async }}</span>\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'view'\"> </axp-widget-renderer>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n @if(vm.relatedEntities().length) {\n <ax-tabs [look]=\"'with-line'\" class=\"ax-mt-2 ax-font-semibold\" #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\">\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <ax-tab-item [text]=\"(e.title() | translate | async)!\" [key]=\"index.toString()\"> </ax-tab-item>\n }\n </ax-tabs>\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <div [class.ax-hidden]=\"$index !== selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view [viewModel]=\"e\"></axp-entity-detail-list-view>\n </div>\n } }\n </div>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i5.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i6.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i6.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i7.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i7.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i7.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i8.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i8.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type:
57
53
  //
58
54
  AXPLayoutBuilderModule }, { kind: "component", type: i9.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["onChanged", "contextChange"] }, { kind: "component", type: i9.AXPWidgetRendererComponent, selector: "axp-widget-renderer", inputs: ["node", "mode", "parentNode", "index"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }, { kind: "directive", type: AXPGridLayoutDirective, selector: "[gridLayout]", inputs: ["gridLayout"] }, { kind: "ngmodule", type:
59
55
  //
@@ -83,6 +79,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
83
79
  //
84
80
  AXTranslationModule,
85
81
  AXPEntityDetailListViewComponent,
86
- ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\"\n>\n <div\n class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\"\n #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\"\n [stickyOffset]=\"30\"\n >\n <!-------- Begin Toolbar -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-2xl ax-font-bold\">{{ vm.title() | translate | async }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">\n {{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\" [class.ax-hidden]=\"isSM | async\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item\n [active]=\"last\"\n [class.!ax-font-semibold]=\"last\"\n [class.!ax-text-neutral-600]=\"last\"\n [routerLink]=\"b.url\"\n >\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title | translate | async }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(tr of vm.primaryActions();track $index) {\n <ax-button [text]=\"tr.title | translate | async\" [color]=\"tr.color\" (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"(isSM | async) ? null : 'Actions'\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(tr of vm.secondaryActions();track $index) {\n <ng-container>\n @if(tr.separated) {\n <ax-divider></ax-divider>\n }\n <ax-button-item\n [text]=\"tr.title\"\n class=\"ax-font-semibold ax-text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n <!-- Start Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-mt-4\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button\n class=\"ax-xs\"\n color=\"ghost\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <div>\n <div>\n <span class=\"ax-font-semibold\">{{ attr.title() | translate | async }}</span>\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'view'\"> </axp-widget-renderer>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n @if(vm.relatedEntities().length) {\n <ax-tabs\n [look]=\"'with-line'\"\n class=\"ax-mt-2 ax-font-semibold\"\n #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\"\n >\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <ax-tab-item [text]=\"(e.title() | translate | async)!\" [key]=\"index.toString()\"> </ax-tab-item>\n }\n </ax-tabs>\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <div [class.ax-hidden]=\"$index !== selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view [viewModel]=\"e\"></axp-entity-detail-list-view>\n </div>\n } }\n </div>\n</div>\n" }]
82
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\">\n <div class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\" #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\" [stickyOffset]=\"30\">\n <!-------- Begin Toolbar -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-2xl ax-font-bold\">{{ vm.title() | translate | async }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">\n {{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\" [class.ax-hidden]=\"store.isSmall()\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item [active]=\"last\" [class.!ax-font-semibold]=\"last\" [class.!ax-text-neutral-600]=\"last\"\n [routerLink]=\"b.url\">\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title | translate | async }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(tr of vm.primaryActions();track $index) {\n <ax-button [text]=\"tr.title | translate | async\" [color]=\"tr.color\" (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"(store.isSmall()) ? null : 'Actions'\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(tr of vm.secondaryActions();track $index) {\n <ng-container>\n @if(tr.separated) {\n <ax-divider></ax-divider>\n }\n <ax-button-item [text]=\"tr.title\" class=\"ax-font-semibold ax-text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n <!-- Start Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-mt-4\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button class=\"ax-xs\" color=\"ghost\" [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\">\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <div>\n <div>\n <span class=\"ax-font-semibold\">{{ attr.title() | translate | async }}</span>\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'view'\"> </axp-widget-renderer>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n @if(vm.relatedEntities().length) {\n <ax-tabs [look]=\"'with-line'\" class=\"ax-mt-2 ax-font-semibold\" #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\">\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <ax-tab-item [text]=\"(e.title() | translate | async)!\" [key]=\"index.toString()\"> </ax-tab-item>\n }\n </ax-tabs>\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <div [class.ax-hidden]=\"$index !== selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view [viewModel]=\"e\"></axp-entity-detail-list-view>\n </div>\n } }\n </div>\n</div>" }]
87
83
  }] });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWVudGl0eS1kZXRhaWwtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL2xheW91dHMvbW9kdWxlLWVudGl0eS1kZXRhaWwtdmlldy9tb2R1bGUtZW50aXR5LWRldGFpbC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvbGF5b3V0cy9tb2R1bGUtZW50aXR5LWRldGFpbC12aWV3L21vZHVsZS1lbnRpdHktZGV0YWlsLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBMEIsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBRUwsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsYUFBYSxHQUNkLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7OztBQThCcEMsTUFBTSxPQUFPLGtDQUFrQztJQTVCL0M7UUE2QlUsZ0JBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNCLE9BQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFtQyxDQUFDO1FBQy9GLEVBQUU7UUFDTSxVQUFLLEdBQUcsTUFBTSxDQUFDLENBQUEsS0FBMEIsQ0FBQSxDQUFDLENBQUM7UUFDekMsU0FBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDMUMsV0FBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFFN0MsbUNBQThCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBTzNDLDJCQUFzQixHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztLQVM5QztJQWRDLGdDQUFnQyxDQUFDLENBQXlCO1FBQ3hELElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQ25CLENBQUM7SUFJRCw0QkFBNEIsQ0FBQyxDQUF5QjtRQUNwRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEIsQ0FBQzs4R0F4QlUsa0NBQWtDO2tHQUFsQyxrQ0FBa0Msd0VDekQvQyw4ekxBK0lBLDJDRC9HSSxZQUFZLG1GQUNaLFlBQVksK1FBQ1osaUJBQWlCLHVWQUNqQixnQkFBZ0Isd1BBQ2hCLGVBQWUsOEJBQ2YsWUFBWSxrTUFDWixtQkFBbUIsOEJBQ25CLGNBQWMsOEJBQ2QsY0FBYyw4QkFDZCxlQUFlLDhCQUNmLFlBQVksa2FBQ1osY0FBYyw4dkJBQ2QsbUJBQW1CO2dCQUNuQixFQUFFO2dCQUNGLHNCQUFzQixvV0FDdEIsZ0JBQWdCLCtCQUNoQixrQkFBa0IscUxBQ2xCLHNCQUFzQjtnQkFDdEIsRUFBRTtnQkFDRixtQkFBbUIsZ0dBQ25CLGdDQUFnQzs7MkZBS3ZCLGtDQUFrQztrQkE1QjlDLFNBQVM7OEJBRUM7d0JBQ1AsWUFBWTt3QkFDWixZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQixFQUFFO3dCQUNGLHNCQUFzQjt3QkFDdEIsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsRUFBRTt3QkFDRixtQkFBbUI7d0JBQ25CLGdDQUFnQztxQkFDakMsY0FDVyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEFjdGlvblNoZWV0TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2FjdGlvbi1zaGVldCc7XG5pbXBvcnQgeyBBWEJyZWFkY3J1bWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JyZWFkY3J1bWJzJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWERyYXdlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcmF3ZXInO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWEZvcm1Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFRhYnNNb2R1bGUsIEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7XG4gIEFYUEFkbWluTGF5b3V0U3RhdGUsXG4gIEFYUEdyaWRMYXlvdXREaXJlY3RpdmUsXG4gIEFYUFN0aWNreURpcmVjdGl2ZSxcbiAgZ2V0Q2hpbGREcmF3ZXIsXG4gIGlzU21hbGxTY3JlZW4sXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdNb2RlbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBBWFBFbnRpdHlEZXRhaWxMaXN0Vmlld0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c01vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd2lkZ2V0cyc7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9tb2R1bGUtZW50aXR5LWRldGFpbC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICBBWFBvcG92ZXJNb2R1bGUsXG4gICAgQVhGb3JtTW9kdWxlLFxuICAgIEFYQWN0aW9uU2hlZXRNb2R1bGUsXG4gICAgQVhEcmF3ZXJNb2R1bGUsXG4gICAgQVhEaWFsb2dNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYVGFic01vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWEJyZWFkY3J1bWJzTW9kdWxlLFxuICAgIC8vXG4gICAgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSxcbiAgICBBWFBXaWRnZXRzTW9kdWxlLFxuICAgIEFYUFN0aWNreURpcmVjdGl2ZSxcbiAgICBBWFBHcmlkTGF5b3V0RGlyZWN0aXZlLFxuICAgIC8vXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWFBFbnRpdHlEZXRhaWxMaXN0Vmlld0NvbXBvbmVudCxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFYUE1vZHVsZUVudGl0eURldGFpbFZpZXdDb21wb25lbnQge1xuICBwcml2YXRlIGFjdGl2ZVJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSB3b3JrZmxvdyA9IGluamVjdChBWFBXb3JrZmxvd1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSB0aGlzLmFjdGl2ZVJvdXRlLnNuYXBzaG90LmRhdGFbJ3ZtJ10gYXMgQVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld01vZGVsO1xuICAvL1xuICBwcml2YXRlIHN0b3JlID0gaW5qZWN0KFN0b3JlPEFYUEFkbWluTGF5b3V0U3RhdGU+KTtcbiAgcHJvdGVjdGVkIGlzU00gPSB0aGlzLnN0b3JlLnNlbGVjdChpc1NtYWxsU2NyZWVuKCkpO1xuICBwcm90ZWN0ZWQgaXNPcGVuID0gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0Q2hpbGREcmF3ZXIoKSk7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkUmVsYXRlZElFbnRpdHlUYWJJbmRleCA9IHNpZ25hbCgwKTtcblxuICBoYW5kbGVBY3RpdmVSZWxhdGVkRW50aXR5Q2hhbmdlZChlOiBBWFRhYlN0cmlwQ2hhbmdlZEV2ZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZFJlbGF0ZWRJRW50aXR5VGFiSW5kZXguc2V0KGUuaW5kZXgpO1xuICAgIHRoaXMudm0uc2VjdGlvbnM7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWREZXRhaWxUYWJJbmRleCA9IHNpZ25hbCgwKTtcblxuICBoYW5kbGVBY3RpdmVEZXRhaWxUYWJDaGFuZ2VkKGU6IEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLnNlbGVjdGVkRGV0YWlsVGFiSW5kZXguc2V0KGUuaW5kZXgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52bS5kZXN0cm95KCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC00IGF4LW1pbi1oLWZ1bGwgYXgtcHgtNCBheC1wYi00IG1kOmF4LXB4LTYgYXgtYmctc3VyZmFjZSBheC1ib3JkZXItYiBtZDpheC1ib3JkZXItMCBtZDpheC1iZy1kZWZhdWx0XCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1wdC00IGF4LXN0aWNreSBheC10b3AtMCBheC16LTEwIGF4LXRyYW5zaXRpb24tYWxsXCJcbiAgICAjc3RpY2t5PVwiYXhwU3RpY2t5XCJcbiAgICBbYXhwU3RpY2t5XT1cIidheC1iZy1zdXJmYWNlIGF4LXB4LTYgYXgtcHktMyAtYXgtbXgtNiBheC1zaGFkb3cteGwnXCJcbiAgICBbc3RpY2t5T2Zmc2V0XT1cIjMwXCJcbiAgPlxuICAgIDwhLS0tLS0tLS0gQmVnaW4gVG9vbGJhciAgLS0tLS0tLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPCEtLS0tLS0tLSBCZWdpbiBUaXRsZSAgLS0tLS0tLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMSBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtdHJhbnNpdGlvblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LXhsIG1kOmF4LXRleHQtMnhsIGF4LWZvbnQtYm9sZFwiPnt7IHZtLnRpdGxlKCkgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvZGl2PlxuICAgICAgICAgIEBpZih2bS5kZXNjcmlwdGlvbigpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXRleHQtc20gYXgtdGV4dC1uZXV0cmFsLTYwMFwiIFtjbGFzcy5heC1oaWRkZW5dPVwic3RpY2t5LmlzU3RpY2t5XCI+XG4gICAgICAgICAgICB7eyB2bS5kZXNjcmlwdGlvbigpIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxheC1icmVhZGNydW1icyBjbGFzcz1cImNoaWxkOmF4LWZvbnQtbm9ybWFsIGNoaWxkOmF4LXRleHQtbmV1dHJhbC00MDBcIiBbY2xhc3MuYXgtaGlkZGVuXT1cImlzU00gfCBhc3luY1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXZpZGVyPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNoZXZyb24tcmlnaHQgYXgtdGV4dC14cyBheC1teC0yXCI+PC9pPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIEBmb3IoYiBvZiB2bS5iZWFyZGNydW1icygpO3RyYWNrICRpbmRleDtsZXQgbGFzdD0kbGFzdCkge1xuICAgICAgICAgICAgPGF4LWJyZWFkY3J1bWJzLWl0ZW1cbiAgICAgICAgICAgICAgW2FjdGl2ZV09XCJsYXN0XCJcbiAgICAgICAgICAgICAgW2NsYXNzLiFheC1mb250LXNlbWlib2xkXT1cImxhc3RcIlxuICAgICAgICAgICAgICBbY2xhc3MuIWF4LXRleHQtbmV1dHJhbC02MDBdPVwibGFzdFwiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImIudXJsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmKGIuaWNvbikge1xuICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiYi5pY29uXCI+PC9pPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHt7IGIudGl0bGUgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgPC9heC1icmVhZGNydW1icy1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXgtYnJlYWRjcnVtYnM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tLS0tLS0tIEZpbmlzaCBUaXRsZSAgLS0tLS0tLS0+XG4gICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgIDwhLS0gQmVnaW4gQWN0aW9uIE1lbnUgIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0zXCI+XG4gICAgICAgIEBmb3IodHIgb2Ygdm0ucHJpbWFyeUFjdGlvbnMoKTt0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGF4LWJ1dHRvbiBbdGV4dF09XCJ0ci50aXRsZSB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgW2NvbG9yXT1cInRyLmNvbG9yXCIgKG9uQ2xpY2spPVwidm0uZXhlY3V0ZUNvbW1hbmQodHIubmFtZSlcIj5cbiAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgPGF4LWljb24gW2ljb25dPVwidHIuaWNvblwiPiA8L2F4LWljb24+XG4gICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICB9IEBpZih2bS5zZWNvbmRhcnlBY3Rpb25zKCkubGVuZ3RoKSB7XG4gICAgICAgIDxheC1idXR0b24gW3RleHRdPVwiKGlzU00gfCBhc3luYykgPyBudWxsIDogJ0FjdGlvbnMnXCIgY29sb3I9XCJnaG9zdFwiPlxuICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWVsbGlwc2lzLXZlcnRpY2FsXCI+PC9pPlxuICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICBAZm9yKHRyIG9mIHZtLnNlY29uZGFyeUFjdGlvbnMoKTt0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBAaWYodHIuc2VwYXJhdGVkKSB7XG4gICAgICAgICAgICAgICAgPGF4LWRpdmlkZXI+PC9heC1kaXZpZGVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW1cbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cInRyLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZCBheC10ZXh0LXt7IHRyLmNvbG9yIH19XCJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInZtLmV4ZWN1dGVDb21tYW5kKHRyLm5hbWUpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJ0ci5pY29uXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBGaW5pc2ggQWN0aW9uIE1lbnUgIC0tPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gU3RhcnQgU2VjdGlvbnMgIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJheC1ncmlkIGF4LWdyaWQtY29scy0xMiBheC1nYXAtNFwiPlxuICAgICAgQGZvcihzZWN0aW9uIG9mIHZtLnNlY3Rpb25zKCk7IHRyYWNrIHNlY3Rpb24ubmFtZSgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FyZCBheC1tdC00XCIgW2dyaWRMYXlvdXRdPVwic2VjdGlvbi5sYXlvdXQoKVwiPlxuICAgICAgICA8YXgtZm9ybSAjZm9ybT5cbiAgICAgICAgICA8YXhwLXdpZGdldHMtY29udGFpbmVyIFtjb250ZXh0XT1cInZtLmNvbnRleHQoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcmQtaGVhZGVyICFheC1weS0yICFheC1weC00XCI+XG4gICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiIWF4LXRleHQtbGcgYXgtZm9udC1zZW1pYm9sZFwiPnt7IHNlY3Rpb24udGl0bGUoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICBAaWYoc2VjdGlvbi5kZXNjcmlwdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LXNtIGF4LWZvbnQtbm9ybWFsIGF4LXRleHQtZ3JheS01MDBcIj57eyBzZWN0aW9uLmRlc2NyaXB0aW9uKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIEBpZihzZWN0aW9uLmVkaXRhYmxlKCkpIHtcbiAgICAgICAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgteHNcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAgIFtsb29rXT1cIidibGFuaydcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInZtLmV4ZWN1dGVDb21tYW5kKCdtb2RpZnktZW50aXR5LXNlY3Rpb24nLCBzZWN0aW9uKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLXBlbiBheC10ZXh0LWdyYXktNjAwXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcmQtYm9keSAhYXgtZ3JpZCAhYXgtZ3JpZC1jb2xzLTEyICFheC1nYXAtNFwiPlxuICAgICAgICAgICAgICBAZm9yKGF0dHIgb2Ygc2VjdGlvbi5wcm9wcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTFcIiBbZ3JpZExheW91dF09XCJhdHRyLmxheW91dCgpXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZFwiPnt7IGF0dHIudGl0bGUoKSB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXRleHQtbmV1dHJhbC01MDBcIj5cbiAgICAgICAgICAgICAgICAgIDxheHAtd2lkZ2V0LXJlbmRlcmVyIFtub2RlXT1cImF0dHIubm9kZSgpXCIgW21vZGVdPVwiJ3ZpZXcnXCI+IDwvYXhwLXdpZGdldC1yZW5kZXJlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuICAgICAgICA8L2F4LWZvcm0+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEZpbmlzaCBTZWN0aW9ucyAgLS0+XG4gICAgQGlmKHZtLnJlbGF0ZWRFbnRpdGllcygpLmxlbmd0aCkge1xuICAgIDxheC10YWJzXG4gICAgICBbbG9va109XCInd2l0aC1saW5lJ1wiXG4gICAgICBjbGFzcz1cImF4LW10LTIgYXgtZm9udC1zZW1pYm9sZFwiXG4gICAgICAjdGFiXG4gICAgICAob25BY3RpdmVUYWJDaGFuZ2VkKT1cImhhbmRsZUFjdGl2ZVJlbGF0ZWRFbnRpdHlDaGFuZ2VkKCRldmVudClcIlxuICAgID5cbiAgICAgIEBmb3IoZSBvZiB2bS5yZWxhdGVkRW50aXRpZXMoKTt0cmFjayAkaW5kZXg7bGV0IGluZGV4PSAkaW5kZXgpe1xuICAgICAgPGF4LXRhYi1pdGVtIFt0ZXh0XT1cIihlLnRpdGxlKCkgfCB0cmFuc2xhdGUgfCBhc3luYykhXCIgW2tleV09XCJpbmRleC50b1N0cmluZygpXCI+IDwvYXgtdGFiLWl0ZW0+XG4gICAgICB9XG4gICAgPC9heC10YWJzPlxuICAgIEBmb3IoZSBvZiB2bS5yZWxhdGVkRW50aXRpZXMoKTt0cmFjayAkaW5kZXg7bGV0IGluZGV4PSAkaW5kZXgpe1xuICAgIDxkaXYgW2NsYXNzLmF4LWhpZGRlbl09XCIkaW5kZXggIT09IHNlbGVjdGVkUmVsYXRlZElFbnRpdHlUYWJJbmRleCgpXCI+XG4gICAgICA8YXhwLWVudGl0eS1kZXRhaWwtbGlzdC12aWV3IFt2aWV3TW9kZWxdPVwiZVwiPjwvYXhwLWVudGl0eS1kZXRhaWwtbGlzdC12aWV3PlxuICAgIDwvZGl2PlxuICAgIH0gfVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWVudGl0eS1kZXRhaWwtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL2xheW91dHMvbW9kdWxlLWVudGl0eS1kZXRhaWwtdmlldy9tb2R1bGUtZW50aXR5LWRldGFpbC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvbGF5b3V0cy9tb2R1bGUtZW50aXR5LWRldGFpbC12aWV3L21vZHVsZS1lbnRpdHktZGV0YWlsLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBMEIsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGtCQUFrQixHQUNuQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBOEIvRCxNQUFNLE9BQU8sa0NBQWtDO0lBNUIvQztRQTZCVSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQixPQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBbUMsQ0FBQztRQUMvRixFQUFFO1FBQ1EsVUFBSyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXRDLG1DQUE4QixHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQU8zQywyQkFBc0IsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FTOUM7SUFkQyxnQ0FBZ0MsQ0FBQyxDQUF5QjtRQUN4RCxJQUFJLENBQUMsOEJBQThCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUNuQixDQUFDO0lBSUQsNEJBQTRCLENBQUMsQ0FBeUI7UUFDcEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLENBQUM7OEdBckJVLGtDQUFrQztrR0FBbEMsa0NBQWtDLHdFQ3JEL0MsNGxMQTBITSwyQ0Q5RkYsWUFBWSxtRkFDWixZQUFZLCtRQUNaLGlCQUFpQix1VkFDakIsZ0JBQWdCLHdQQUNoQixlQUFlLDhCQUNmLFlBQVksME1BQ1osbUJBQW1CLDhCQUNuQixjQUFjLDhCQUNkLGNBQWMsOEJBQ2QsZUFBZSw4QkFDZixZQUFZLGthQUNaLGNBQWMsOHZCQUNkLG1CQUFtQjtnQkFDbkIsRUFBRTtnQkFDRixzQkFBc0Isb1dBQ3RCLGdCQUFnQiwrQkFDaEIsa0JBQWtCLHFMQUNsQixzQkFBc0I7Z0JBQ3RCLEVBQUU7Z0JBQ0YsbUJBQW1CLGdHQUNuQixnQ0FBZ0M7OzJGQUt2QixrQ0FBa0M7a0JBNUI5QyxTQUFTOzhCQUVDO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsRUFBRTt3QkFDRixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLEVBQUU7d0JBQ0YsbUJBQW1CO3dCQUNuQixnQ0FBZ0M7cUJBQ2pDLGNBQ1csSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhBY3Rpb25TaGVldE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9hY3Rpb24tc2hlZXQnO1xuaW1wb3J0IHsgQVhCcmVhZGNydW1ic01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9icmVhZGNydW1icyc7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERpYWxvZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kaWFsb2cnO1xuaW1wb3J0IHsgQVhEcmF3ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJhd2VyJztcbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhQb3BvdmVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcG92ZXInO1xuaW1wb3J0IHsgQVhUYWJzTW9kdWxlLCBBWFRhYlN0cmlwQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RhYnMnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQge1xuICBBWFBHcmlkTGF5b3V0RGlyZWN0aXZlLFxuICBBWFBTdGlja3lEaXJlY3RpdmUsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdNb2RlbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBBWFBFbnRpdHlEZXRhaWxMaXN0Vmlld0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQnO1xuaW1wb3J0IHsgQVhQTGF5b3V0VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS90aGVtZXMvc2hhcmVkJztcbmltcG9ydCB7IEFYUFdpZGdldHNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dpZGdldHMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9tb2R1bGUtZW50aXR5LWRldGFpbC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICBBWFBvcG92ZXJNb2R1bGUsXG4gICAgQVhGb3JtTW9kdWxlLFxuICAgIEFYQWN0aW9uU2hlZXRNb2R1bGUsXG4gICAgQVhEcmF3ZXJNb2R1bGUsXG4gICAgQVhEaWFsb2dNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYVGFic01vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWEJyZWFkY3J1bWJzTW9kdWxlLFxuICAgIC8vXG4gICAgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSxcbiAgICBBWFBXaWRnZXRzTW9kdWxlLFxuICAgIEFYUFN0aWNreURpcmVjdGl2ZSxcbiAgICBBWFBHcmlkTGF5b3V0RGlyZWN0aXZlLFxuICAgIC8vXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWFBFbnRpdHlEZXRhaWxMaXN0Vmlld0NvbXBvbmVudCxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFYUE1vZHVsZUVudGl0eURldGFpbFZpZXdDb21wb25lbnQge1xuICBwcml2YXRlIGFjdGl2ZVJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gdGhpcy5hY3RpdmVSb3V0ZS5zbmFwc2hvdC5kYXRhWyd2bSddIGFzIEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdNb2RlbDtcbiAgLy9cbiAgcHJvdGVjdGVkIHN0b3JlID0gaW5qZWN0KEFYUExheW91dFRoZW1lU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkUmVsYXRlZElFbnRpdHlUYWJJbmRleCA9IHNpZ25hbCgwKTtcblxuICBoYW5kbGVBY3RpdmVSZWxhdGVkRW50aXR5Q2hhbmdlZChlOiBBWFRhYlN0cmlwQ2hhbmdlZEV2ZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZFJlbGF0ZWRJRW50aXR5VGFiSW5kZXguc2V0KGUuaW5kZXgpO1xuICAgIHRoaXMudm0uc2VjdGlvbnM7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWREZXRhaWxUYWJJbmRleCA9IHNpZ25hbCgwKTtcblxuICBoYW5kbGVBY3RpdmVEZXRhaWxUYWJDaGFuZ2VkKGU6IEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLnNlbGVjdGVkRGV0YWlsVGFiSW5kZXguc2V0KGUuaW5kZXgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52bS5kZXN0cm95KCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC00IGF4LW1pbi1oLWZ1bGwgYXgtcHgtNCBheC1wYi00IG1kOmF4LXB4LTYgYXgtYmctc3VyZmFjZSBheC1ib3JkZXItYiBtZDpheC1ib3JkZXItMCBtZDpheC1iZy1kZWZhdWx0XCI+XG4gIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LXB0LTQgYXgtc3RpY2t5IGF4LXRvcC0wIGF4LXotMTAgYXgtdHJhbnNpdGlvbi1hbGxcIiAjc3RpY2t5PVwiYXhwU3RpY2t5XCJcbiAgICBbYXhwU3RpY2t5XT1cIidheC1iZy1zdXJmYWNlIGF4LXB4LTYgYXgtcHktMyAtYXgtbXgtNiBheC1zaGFkb3cteGwnXCIgW3N0aWNreU9mZnNldF09XCIzMFwiPlxuICAgIDwhLS0tLS0tLS0gQmVnaW4gVG9vbGJhciAgLS0tLS0tLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPCEtLS0tLS0tLSBCZWdpbiBUaXRsZSAgLS0tLS0tLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMSBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtdHJhbnNpdGlvblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LXhsIG1kOmF4LXRleHQtMnhsIGF4LWZvbnQtYm9sZFwiPnt7IHZtLnRpdGxlKCkgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvZGl2PlxuICAgICAgICAgIEBpZih2bS5kZXNjcmlwdGlvbigpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXRleHQtc20gYXgtdGV4dC1uZXV0cmFsLTYwMFwiIFtjbGFzcy5heC1oaWRkZW5dPVwic3RpY2t5LmlzU3RpY2t5XCI+XG4gICAgICAgICAgICB7eyB2bS5kZXNjcmlwdGlvbigpIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxheC1icmVhZGNydW1icyBjbGFzcz1cImNoaWxkOmF4LWZvbnQtbm9ybWFsIGNoaWxkOmF4LXRleHQtbmV1dHJhbC00MDBcIiBbY2xhc3MuYXgtaGlkZGVuXT1cInN0b3JlLmlzU21hbGwoKVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXZpZGVyPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNoZXZyb24tcmlnaHQgYXgtdGV4dC14cyBheC1teC0yXCI+PC9pPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIEBmb3IoYiBvZiB2bS5iZWFyZGNydW1icygpO3RyYWNrICRpbmRleDtsZXQgbGFzdD0kbGFzdCkge1xuICAgICAgICAgICAgPGF4LWJyZWFkY3J1bWJzLWl0ZW0gW2FjdGl2ZV09XCJsYXN0XCIgW2NsYXNzLiFheC1mb250LXNlbWlib2xkXT1cImxhc3RcIiBbY2xhc3MuIWF4LXRleHQtbmV1dHJhbC02MDBdPVwibGFzdFwiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImIudXJsXCI+XG4gICAgICAgICAgICAgIEBpZihiLmljb24pIHtcbiAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImIuaWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB7eyBiLnRpdGxlIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgIDwvYXgtYnJlYWRjcnVtYnMtaXRlbT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4LWJyZWFkY3J1bWJzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLS0tLS0tLSBGaW5pc2ggVGl0bGUgIC0tLS0tLS0tPlxuICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgICA8IS0tIEJlZ2luIEFjdGlvbiBNZW51ICAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtM1wiPlxuICAgICAgICBAZm9yKHRyIG9mIHZtLnByaW1hcnlBY3Rpb25zKCk7dHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxheC1idXR0b24gW3RleHRdPVwidHIudGl0bGUgfCB0cmFuc2xhdGUgfCBhc3luY1wiIFtjb2xvcl09XCJ0ci5jb2xvclwiIChvbkNsaWNrKT1cInZtLmV4ZWN1dGVDb21tYW5kKHRyLm5hbWUpXCI+XG4gICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cInRyLmljb25cIj4gPC9heC1pY29uPlxuICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgfSBAaWYodm0uc2Vjb25kYXJ5QWN0aW9ucygpLmxlbmd0aCkge1xuICAgICAgICA8YXgtYnV0dG9uIFt0ZXh0XT1cIihzdG9yZS5pc1NtYWxsKCkpID8gbnVsbCA6ICdBY3Rpb25zJ1wiIGNvbG9yPVwiZ2hvc3RcIj5cbiAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1lbGxpcHNpcy12ZXJ0aWNhbFwiPjwvaT5cbiAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICA8YXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgQGZvcih0ciBvZiB2bS5zZWNvbmRhcnlBY3Rpb25zKCk7dHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgQGlmKHRyLnNlcGFyYXRlZCkge1xuICAgICAgICAgICAgICAgIDxheC1kaXZpZGVyPjwvYXgtZGl2aWRlcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIFt0ZXh0XT1cInRyLnRpdGxlXCIgY2xhc3M9XCJheC1mb250LXNlbWlib2xkIGF4LXRleHQte3sgdHIuY29sb3IgfX1cIlxuICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwidm0uZXhlY3V0ZUNvbW1hbmQodHIubmFtZSlcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cInRyLmljb25cIj4gPC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIEZpbmlzaCBBY3Rpb24gTWVudSAgLS0+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBTdGFydCBTZWN0aW9ucyAgLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LWdyaWQgYXgtZ3JpZC1jb2xzLTEyIGF4LWdhcC00XCI+XG4gICAgICBAZm9yKHNlY3Rpb24gb2Ygdm0uc2VjdGlvbnMoKTsgdHJhY2sgc2VjdGlvbi5uYW1lKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXJkIGF4LW10LTRcIiBbZ3JpZExheW91dF09XCJzZWN0aW9uLmxheW91dCgpXCI+XG4gICAgICAgIDxheC1mb3JtICNmb3JtPlxuICAgICAgICAgIDxheHAtd2lkZ2V0cy1jb250YWluZXIgW2NvbnRleHRdPVwidm0uY29udGV4dCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FyZC1oZWFkZXIgIWF4LXB5LTIgIWF4LXB4LTRcIj5cbiAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCIhYXgtdGV4dC1sZyBheC1mb250LXNlbWlib2xkXCI+e3sgc2VjdGlvbi50aXRsZSgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICAgIEBpZihzZWN0aW9uLmRlc2NyaXB0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQtc20gYXgtZm9udC1ub3JtYWwgYXgtdGV4dC1ncmF5LTUwMFwiPnt7IHNlY3Rpb24uZGVzY3JpcHRpb24oKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgQGlmKHNlY3Rpb24uZWRpdGFibGUoKSkge1xuICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgteHNcIiBjb2xvcj1cImdob3N0XCIgW2xvb2tdPVwiJ2JsYW5rJ1wiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwidm0uZXhlY3V0ZUNvbW1hbmQoJ21vZGlmeS1lbnRpdHktc2VjdGlvbicsIHNlY3Rpb24pXCI+XG4gICAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS1wZW4gYXgtdGV4dC1ncmF5LTYwMFwiPiA8L2F4LWljb24+XG4gICAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jYXJkLWJvZHkgIWF4LWdyaWQgIWF4LWdyaWQtY29scy0xMiAhYXgtZ2FwLTRcIj5cbiAgICAgICAgICAgICAgQGZvcihhdHRyIG9mIHNlY3Rpb24ucHJvcHMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0xXCIgW2dyaWRMYXlvdXRdPVwiYXR0ci5sYXlvdXQoKVwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGRcIj57eyBhdHRyLnRpdGxlKCkgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LW5ldXRyYWwtNTAwXCI+XG4gICAgICAgICAgICAgICAgICA8YXhwLXdpZGdldC1yZW5kZXJlciBbbm9kZV09XCJhdHRyLm5vZGUoKVwiIFttb2RlXT1cIid2aWV3J1wiPiA8L2F4cC13aWRnZXQtcmVuZGVyZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2F4cC13aWRnZXRzLWNvbnRhaW5lcj5cbiAgICAgICAgPC9heC1mb3JtPlxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPCEtLSBGaW5pc2ggU2VjdGlvbnMgIC0tPlxuICAgIEBpZih2bS5yZWxhdGVkRW50aXRpZXMoKS5sZW5ndGgpIHtcbiAgICA8YXgtdGFicyBbbG9va109XCInd2l0aC1saW5lJ1wiIGNsYXNzPVwiYXgtbXQtMiBheC1mb250LXNlbWlib2xkXCIgI3RhYlxuICAgICAgKG9uQWN0aXZlVGFiQ2hhbmdlZCk9XCJoYW5kbGVBY3RpdmVSZWxhdGVkRW50aXR5Q2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICBAZm9yKGUgb2Ygdm0ucmVsYXRlZEVudGl0aWVzKCk7dHJhY2sgJGluZGV4O2xldCBpbmRleD0gJGluZGV4KXtcbiAgICAgIDxheC10YWItaXRlbSBbdGV4dF09XCIoZS50aXRsZSgpIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiIFtrZXldPVwiaW5kZXgudG9TdHJpbmcoKVwiPiA8L2F4LXRhYi1pdGVtPlxuICAgICAgfVxuICAgIDwvYXgtdGFicz5cbiAgICBAZm9yKGUgb2Ygdm0ucmVsYXRlZEVudGl0aWVzKCk7dHJhY2sgJGluZGV4O2xldCBpbmRleD0gJGluZGV4KXtcbiAgICA8ZGl2IFtjbGFzcy5heC1oaWRkZW5dPVwiJGluZGV4ICE9PSBzZWxlY3RlZFJlbGF0ZWRJRW50aXR5VGFiSW5kZXgoKVwiPlxuICAgICAgPGF4cC1lbnRpdHktZGV0YWlsLWxpc3QtdmlldyBbdmlld01vZGVsXT1cImVcIj48L2F4cC1lbnRpdHktZGV0YWlsLWxpc3Qtdmlldz5cbiAgICA8L2Rpdj5cbiAgICB9IH1cbiAgPC9kaXY+XG48L2Rpdj4iXX0=