@dignite-ng/expand.cms 0.0.52 → 0.0.54

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 (448) hide show
  1. package/config/cms-config.module.d.ts +8 -0
  2. package/config/components/domains/domains.component.d.ts +29 -0
  3. package/config/components/site-language/site-language.component.d.ts +29 -0
  4. package/config/{src/enums/index.ts → enums/index.d.ts} +1 -1
  5. package/config/enums/route-names.d.ts +8 -0
  6. package/config/index.d.ts +5 -0
  7. package/config/{src/providers/index.ts → providers/index.d.ts} +1 -1
  8. package/config/providers/route.provider.d.ts +9 -0
  9. package/config/proxy/admin/domains/domain-admin.service.d.ts +13 -0
  10. package/config/{src/proxy/dignite/cms/admin/domains/models.ts → proxy/admin/domains/models.d.ts} +7 -9
  11. package/config/proxy/dignite/cms/admin/sites/models.d.ts +4 -0
  12. package/config/proxy/dignite/cms/admin/sites/site-admin.service.d.ts +13 -0
  13. package/config/proxy/dignite/cms/sites/models.d.ts +4 -0
  14. package/config/{src/public-api.ts → public-api.d.ts} +3 -3
  15. package/config/services/validators.service.d.ts +16 -0
  16. package/esm2022/config/cms-config.module.mjs +18 -0
  17. package/esm2022/config/components/domains/domains.component.mjs +102 -0
  18. package/esm2022/config/components/site-language/site-language.component.mjs +105 -0
  19. package/esm2022/config/dignite-ng-expand.cms-config.mjs +5 -0
  20. package/esm2022/config/enums/index.mjs +2 -0
  21. package/esm2022/config/enums/route-names.mjs +10 -0
  22. package/esm2022/config/providers/index.mjs +2 -0
  23. package/esm2022/config/providers/route.provider.mjs +74 -0
  24. package/esm2022/config/proxy/admin/domains/domain-admin.service.mjs +32 -0
  25. package/esm2022/config/proxy/admin/domains/index.mjs +3 -0
  26. package/esm2022/config/proxy/admin/domains/models.mjs +2 -0
  27. package/esm2022/config/proxy/dignite/cms/admin/sites/index.mjs +3 -0
  28. package/esm2022/config/proxy/dignite/cms/admin/sites/models.mjs +2 -0
  29. package/esm2022/config/proxy/dignite/cms/admin/sites/site-admin.service.mjs +27 -0
  30. package/esm2022/config/proxy/dignite/cms/sites/models.mjs +2 -0
  31. package/esm2022/config/public-api.mjs +4 -0
  32. package/esm2022/config/services/validators.service.mjs +83 -0
  33. package/esm2022/dignite-ng-expand.cms.mjs +5 -0
  34. package/esm2022/lib/cms-routing.module.mjs +94 -0
  35. package/esm2022/lib/cms.module.mjs +133 -0
  36. package/esm2022/lib/components/admin/entries/create-or-edit-entries.component.mjs +303 -0
  37. package/esm2022/lib/components/admin/entries/create-or-update-entry-input-base.mjs +32 -0
  38. package/esm2022/lib/components/admin/entries/create.component.mjs +110 -0
  39. package/esm2022/lib/components/admin/entries/edit.component.mjs +110 -0
  40. package/esm2022/lib/components/admin/entries/entries.component.mjs +199 -0
  41. package/esm2022/lib/components/admin/entries/index.mjs +5 -0
  42. package/esm2022/lib/components/admin/fields/create-field.component.mjs +80 -0
  43. package/esm2022/lib/components/admin/fields/create-or-edit-field.component.mjs +114 -0
  44. package/esm2022/lib/components/admin/fields/create-or-update-field-input-base.mjs +25 -0
  45. package/esm2022/lib/components/admin/fields/edit-field.component.mjs +103 -0
  46. package/esm2022/lib/components/admin/fields/field-group.component.mjs +131 -0
  47. package/esm2022/lib/components/admin/fields/fields.component.mjs +108 -0
  48. package/esm2022/lib/components/admin/fields/index.mjs +7 -0
  49. package/esm2022/lib/components/admin/index.mjs +4 -0
  50. package/esm2022/lib/components/admin/sections/create-or-update-sections-input-base.mjs +27 -0
  51. package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.-entry-type-input-base.mjs +71 -0
  52. package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.component.mjs +389 -0
  53. package/esm2022/lib/components/admin/sections/entry-types/index.mjs +3 -0
  54. package/esm2022/lib/components/admin/sections/index.mjs +4 -0
  55. package/esm2022/lib/components/admin/sections/sections.component.mjs +292 -0
  56. package/esm2022/lib/components/dynamic-form/entry/entry-config.component.mjs +112 -0
  57. package/esm2022/lib/components/dynamic-form/entry/entry-config.mjs +18 -0
  58. package/esm2022/lib/components/dynamic-form/entry/entry-control.component.mjs +105 -0
  59. package/esm2022/lib/components/dynamic-form/entry/index.mjs +4 -0
  60. package/esm2022/lib/components/dynamic-form/form-control-group.mjs +28 -0
  61. package/esm2022/lib/components/dynamic-form/index.mjs +5 -0
  62. package/esm2022/lib/components/dynamic-form/matrix/index.mjs +4 -0
  63. package/esm2022/lib/components/dynamic-form/matrix/matrix-config.component.mjs +214 -0
  64. package/esm2022/lib/components/dynamic-form/matrix/matrix-config.mjs +50 -0
  65. package/esm2022/lib/components/dynamic-form/matrix/matrix-control.component.mjs +98 -0
  66. package/esm2022/lib/components/dynamic-form/table/index.mjs +4 -0
  67. package/esm2022/lib/components/dynamic-form/table/table-config.component.mjs +151 -0
  68. package/esm2022/lib/components/dynamic-form/table/table-config.mjs +38 -0
  69. package/esm2022/lib/components/dynamic-form/table/table-control.component.mjs +105 -0
  70. package/esm2022/lib/components/index.mjs +3 -0
  71. package/esm2022/lib/constants/styles.mjs +21 -0
  72. package/esm2022/lib/enums/ecms-component.mjs +13 -0
  73. package/esm2022/lib/enums/index.mjs +2 -0
  74. package/esm2022/lib/proxy/admin/dynamic-forms/form-admin.service.mjs +22 -0
  75. package/esm2022/lib/proxy/admin/dynamic-forms/index.mjs +3 -0
  76. package/esm2022/lib/proxy/admin/dynamic-forms/models.mjs +2 -0
  77. package/esm2022/lib/proxy/admin/entries/entry-admin.service.mjs +70 -0
  78. package/esm2022/lib/proxy/admin/entries/index.mjs +3 -0
  79. package/esm2022/lib/proxy/admin/entries/models.mjs +2 -0
  80. package/esm2022/lib/proxy/admin/fields/field-admin.service.mjs +45 -0
  81. package/esm2022/lib/proxy/admin/fields/field-group-admin.service.mjs +41 -0
  82. package/esm2022/lib/proxy/admin/fields/index.mjs +4 -0
  83. package/esm2022/lib/proxy/admin/fields/models.mjs +2 -0
  84. package/esm2022/lib/proxy/admin/sections/entry-type-admin.service.mjs +41 -0
  85. package/esm2022/lib/proxy/admin/sections/index.mjs +4 -0
  86. package/esm2022/lib/proxy/admin/sections/models.mjs +2 -0
  87. package/esm2022/lib/proxy/admin/sections/section-admin.service.mjs +51 -0
  88. package/esm2022/lib/proxy/admin/settings/index.mjs +2 -0
  89. package/esm2022/lib/proxy/admin/settings/site-settings-admin.service.mjs +31 -0
  90. package/esm2022/lib/proxy/dignite/abp/data/models.mjs +2 -0
  91. package/esm2022/lib/proxy/entries/entry-status.enum.mjs +8 -0
  92. package/esm2022/lib/proxy/entries/index.mjs +2 -0
  93. package/esm2022/lib/proxy/fields/models.mjs +2 -0
  94. package/esm2022/lib/proxy/sections/index.mjs +3 -0
  95. package/esm2022/lib/proxy/sections/models.mjs +2 -0
  96. package/esm2022/lib/proxy/sections/section-type.enum.mjs +9 -0
  97. package/esm2022/lib/proxy/settings/models.mjs +2 -0
  98. package/esm2022/lib/proxy/volo/cms-kit/users/models.mjs +2 -0
  99. package/esm2022/lib/resolvers/extensions-props-action-token.resolver.mjs +136 -0
  100. package/esm2022/lib/resolvers/page-default-toolbar-actions.mjs +160 -0
  101. package/esm2022/lib/resolvers/table-default-entity-actions.mjs +49 -0
  102. package/esm2022/lib/resolvers/table-default-entity-props.mjs +54 -0
  103. package/esm2022/lib/services/appent-content.mjs +15 -0
  104. package/esm2022/lib/services/cms-api.service.mjs +70 -0
  105. package/esm2022/lib/services/cms.service.mjs +21 -0
  106. package/esm2022/lib/services/field-abstracts.service.mjs +42 -0
  107. package/esm2022/lib/services/index.mjs +4 -0
  108. package/esm2022/lib/services/validators.service.mjs +83 -0
  109. package/esm2022/public-api.mjs +6 -0
  110. package/fesm2022/dignite-ng-expand.cms-config.mjs +426 -0
  111. package/fesm2022/dignite-ng-expand.cms-config.mjs.map +1 -0
  112. package/fesm2022/dignite-ng-expand.cms.mjs +3932 -0
  113. package/fesm2022/dignite-ng-expand.cms.mjs.map +1 -0
  114. package/index.d.ts +5 -0
  115. package/lib/cms-routing.module.d.ts +7 -0
  116. package/lib/cms.module.d.ts +35 -0
  117. package/lib/components/admin/entries/create-or-edit-entries.component.d.ts +96 -0
  118. package/lib/components/admin/entries/create-or-update-entry-input-base.d.ts +23 -0
  119. package/lib/components/admin/entries/create.component.d.ts +47 -0
  120. package/lib/components/admin/entries/edit.component.d.ts +47 -0
  121. package/lib/components/admin/entries/entries.component.d.ts +66 -0
  122. package/lib/components/admin/entries/index.d.ts +4 -0
  123. package/lib/components/admin/fields/create-field.component.d.ts +37 -0
  124. package/lib/components/admin/fields/create-or-edit-field.component.d.ts +38 -0
  125. package/lib/components/admin/fields/create-or-update-field-input-base.d.ts +16 -0
  126. package/lib/components/admin/fields/edit-field.component.d.ts +46 -0
  127. package/lib/components/admin/fields/field-group.component.d.ts +58 -0
  128. package/lib/components/admin/fields/fields.component.d.ts +35 -0
  129. package/lib/components/admin/fields/index.d.ts +6 -0
  130. package/lib/components/admin/index.d.ts +3 -0
  131. package/lib/components/admin/sections/create-or-update-sections-input-base.d.ts +17 -0
  132. package/lib/components/admin/sections/entry-types/create-or-edit.-entry-type-input-base.d.ts +38 -0
  133. package/lib/components/admin/sections/entry-types/create-or-edit.component.d.ts +138 -0
  134. package/lib/components/admin/sections/entry-types/index.d.ts +2 -0
  135. package/lib/components/admin/sections/index.d.ts +3 -0
  136. package/lib/components/admin/sections/sections.component.d.ts +64 -0
  137. package/lib/components/dynamic-form/entry/entry-config.component.d.ts +39 -0
  138. package/lib/components/dynamic-form/entry/entry-config.d.ts +9 -0
  139. package/lib/components/dynamic-form/entry/entry-control.component.d.ts +35 -0
  140. package/lib/components/dynamic-form/entry/index.d.ts +3 -0
  141. package/lib/components/dynamic-form/form-control-group.d.ts +4 -0
  142. package/lib/components/dynamic-form/index.d.ts +4 -0
  143. package/lib/components/dynamic-form/matrix/index.d.ts +3 -0
  144. package/lib/components/dynamic-form/matrix/matrix-config.component.d.ts +73 -0
  145. package/lib/components/dynamic-form/matrix/matrix-config.d.ts +24 -0
  146. package/lib/components/dynamic-form/matrix/matrix-control.component.d.ts +39 -0
  147. package/lib/components/dynamic-form/table/index.d.ts +3 -0
  148. package/lib/components/dynamic-form/table/table-config.component.d.ts +58 -0
  149. package/lib/components/dynamic-form/table/table-config.d.ts +18 -0
  150. package/lib/components/dynamic-form/table/table-control.component.d.ts +39 -0
  151. package/lib/components/index.d.ts +2 -0
  152. package/lib/constants/styles.d.ts +2 -0
  153. package/lib/enums/ecms-component.d.ts +11 -0
  154. package/lib/enums/index.d.ts +1 -0
  155. package/lib/proxy/admin/dynamic-forms/form-admin.service.d.ts +12 -0
  156. package/lib/proxy/admin/dynamic-forms/models.d.ts +4 -0
  157. package/lib/proxy/admin/entries/entry-admin.service.d.ts +22 -0
  158. package/lib/proxy/admin/entries/models.d.ts +60 -0
  159. package/lib/proxy/admin/fields/field-admin.service.d.ts +17 -0
  160. package/lib/proxy/admin/fields/field-group-admin.service.d.ts +16 -0
  161. package/{src/lib/proxy/admin/fields/models.ts → lib/proxy/admin/fields/models.d.ts} +34 -42
  162. package/lib/proxy/admin/sections/entry-type-admin.service.d.ts +15 -0
  163. package/{src/lib/proxy/admin/sections/models.ts → lib/proxy/admin/sections/models.d.ts} +67 -81
  164. package/lib/proxy/admin/sections/section-admin.service.d.ts +18 -0
  165. package/lib/proxy/admin/settings/site-settings-admin.service.d.ts +13 -0
  166. package/lib/proxy/dignite/abp/data/models.d.ts +3 -0
  167. package/lib/proxy/entries/entry-status.enum.d.ts +5 -0
  168. package/lib/proxy/fields/models.d.ts +8 -0
  169. package/lib/proxy/sections/models.d.ts +12 -0
  170. package/lib/proxy/sections/section-type.enum.d.ts +6 -0
  171. package/lib/proxy/settings/models.d.ts +5 -0
  172. package/{src/lib/proxy/volo/cms-kit/users/models.ts → lib/proxy/volo/cms-kit/users/models.d.ts} +7 -8
  173. package/lib/resolvers/extensions-props-action-token.resolver.d.ts +75 -0
  174. package/lib/resolvers/page-default-toolbar-actions.d.ts +18 -0
  175. package/lib/resolvers/table-default-entity-actions.d.ts +5 -0
  176. package/lib/resolvers/table-default-entity-props.d.ts +5 -0
  177. package/lib/services/appent-content.d.ts +1 -0
  178. package/lib/services/cms-api.service.d.ts +16 -0
  179. package/lib/services/cms.service.d.ts +10 -0
  180. package/lib/services/field-abstracts.service.d.ts +20 -0
  181. package/lib/services/index.d.ts +3 -0
  182. package/lib/services/validators.service.d.ts +15 -0
  183. package/package.json +22 -7
  184. package/{src/public-api.ts → public-api.d.ts} +2 -6
  185. package/config/ng-package.json +0 -6
  186. package/config/src/cms-config.module.ts +0 -12
  187. package/config/src/components/domains/domains.component.html +0 -17
  188. package/config/src/components/domains/domains.component.scss +0 -0
  189. package/config/src/components/domains/domains.component.spec.ts +0 -21
  190. package/config/src/components/domains/domains.component.ts +0 -109
  191. package/config/src/components/site-language/site-language.component.html +0 -31
  192. package/config/src/components/site-language/site-language.component.scss +0 -0
  193. package/config/src/components/site-language/site-language.component.spec.ts +0 -21
  194. package/config/src/components/site-language/site-language.component.ts +0 -117
  195. package/config/src/enums/route-names.ts +0 -8
  196. package/config/src/providers/route.provider.ts +0 -82
  197. package/config/src/proxy/admin/domains/domain-admin.service.ts +0 -38
  198. package/config/src/proxy/admin/domains/models.ts +0 -9
  199. package/config/src/proxy/dignite/abp/data/index.ts +0 -1
  200. package/config/src/proxy/dignite/abp/data/models.ts +0 -4
  201. package/config/src/proxy/dignite/abp/index.ts +0 -2
  202. package/config/src/proxy/dignite/cms/admin/domains/domain-admin.service.ts +0 -47
  203. package/config/src/proxy/dignite/cms/admin/domains/index.ts +0 -2
  204. package/config/src/proxy/dignite/cms/admin/dynamic-forms/form-admin.service.ts +0 -21
  205. package/config/src/proxy/dignite/cms/admin/dynamic-forms/models.ts +0 -5
  206. package/config/src/proxy/dignite/cms/admin/entries/entry-admin.service.ts +0 -109
  207. package/config/src/proxy/dignite/cms/admin/entries/models.ts +0 -68
  208. package/config/src/proxy/dignite/cms/admin/fields/field-admin.service.ts +0 -64
  209. package/config/src/proxy/dignite/cms/admin/fields/field-group-admin.service.ts +0 -56
  210. package/config/src/proxy/dignite/cms/admin/fields/models.ts +0 -42
  211. package/config/src/proxy/dignite/cms/admin/index.ts +0 -7
  212. package/config/src/proxy/dignite/cms/admin/sections/entry-type-admin.service.ts +0 -55
  213. package/config/src/proxy/dignite/cms/admin/sections/models.ts +0 -81
  214. package/config/src/proxy/dignite/cms/admin/sections/section-admin.service.ts +0 -74
  215. package/config/src/proxy/dignite/cms/admin/sites/models.ts +0 -5
  216. package/config/src/proxy/dignite/cms/admin/sites/site-admin.service.ts +0 -30
  217. package/config/src/proxy/dignite/cms/entries/entry-status.enum.ts +0 -8
  218. package/config/src/proxy/dignite/cms/fields/index.ts +0 -1
  219. package/config/src/proxy/dignite/cms/fields/models.ts +0 -9
  220. package/config/src/proxy/dignite/cms/index.ts +0 -6
  221. package/config/src/proxy/dignite/cms/sections/models.ts +0 -14
  222. package/config/src/proxy/dignite/cms/sections/section-type.enum.ts +0 -9
  223. package/config/src/proxy/dignite/cms/sites/index.ts +0 -1
  224. package/config/src/proxy/dignite/cms/sites/models.ts +0 -5
  225. package/config/src/proxy/dignite/cms-kit/admin/brand/brand-admin.service.ts +0 -21
  226. package/config/src/proxy/dignite/cms-kit/admin/brand/index.ts +0 -2
  227. package/config/src/proxy/dignite/cms-kit/admin/brand/models.ts +0 -7
  228. package/config/src/proxy/dignite/cms-kit/admin/index.ts +0 -2
  229. package/config/src/proxy/dignite/cms-kit/brand/brand.service.ts +0 -20
  230. package/config/src/proxy/dignite/cms-kit/brand/index.ts +0 -2
  231. package/config/src/proxy/dignite/cms-kit/brand/models.ts +0 -7
  232. package/config/src/proxy/dignite/cms-kit/index.ts +0 -3
  233. package/config/src/proxy/dignite/file-explorer/directories/file-descriptor.service.ts +0 -65
  234. package/config/src/proxy/dignite/file-explorer/directories/index.ts +0 -2
  235. package/config/src/proxy/dignite/file-explorer/directories/models.ts +0 -35
  236. package/config/src/proxy/dignite/file-explorer/files/file-descriptor.service.ts +0 -101
  237. package/config/src/proxy/dignite/file-explorer/files/index.ts +0 -2
  238. package/config/src/proxy/dignite/file-explorer/files/models.ts +0 -61
  239. package/config/src/proxy/dignite/file-explorer/index.ts +0 -3
  240. package/config/src/proxy/dignite/index.ts +0 -6
  241. package/config/src/proxy/dignite/travely/areas/index.ts +0 -1
  242. package/config/src/proxy/dignite/travely/areas/models.ts +0 -5
  243. package/config/src/proxy/dignite/travely/common/index.ts +0 -1
  244. package/config/src/proxy/dignite/travely/common/models.ts +0 -5
  245. package/config/src/proxy/dignite/travely/entity-snapshots/index.ts +0 -1
  246. package/config/src/proxy/dignite/travely/entity-snapshots/models.ts +0 -7
  247. package/config/src/proxy/dignite/travely/guides/index.ts +0 -1
  248. package/config/src/proxy/dignite/travely/guides/models.ts +0 -26
  249. package/config/src/proxy/dignite/travely/index.ts +0 -9
  250. package/config/src/proxy/dignite/travely/merchants/index.ts +0 -1
  251. package/config/src/proxy/dignite/travely/merchants/models.ts +0 -9
  252. package/config/src/proxy/dignite/travely/orders/index.ts +0 -1
  253. package/config/src/proxy/dignite/travely/orders/models.ts +0 -52
  254. package/config/src/proxy/dignite/travely/payment/index.ts +0 -1
  255. package/config/src/proxy/dignite/travely/payment/models.ts +0 -9
  256. package/config/src/proxy/dignite/travely/tours/booking-time-type.enum.ts +0 -9
  257. package/config/src/proxy/dignite/travely/tours/index.ts +0 -5
  258. package/config/src/proxy/dignite/travely/tours/models.ts +0 -77
  259. package/config/src/proxy/dignite/travely/tours/period-type.enum.ts +0 -9
  260. package/config/src/proxy/dignite/travely/tours/tour-recommendation-rank.enum.ts +0 -12
  261. package/config/src/proxy/dignite/travely/tours/tourist-type.enum.ts +0 -8
  262. package/config/src/proxy/microsoft/asp-net-core/index.ts +0 -2
  263. package/config/src/proxy/microsoft/asp-net-core/mvc/index.ts +0 -1
  264. package/config/src/proxy/microsoft/asp-net-core/mvc/models.ts +0 -12
  265. package/config/src/proxy/microsoft/extensions/index.ts +0 -2
  266. package/config/src/proxy/microsoft/extensions/primitives/index.ts +0 -1
  267. package/config/src/proxy/microsoft/extensions/primitives/models.ts +0 -9
  268. package/config/src/proxy/microsoft/index.ts +0 -4
  269. package/config/src/proxy/microsoft/net/http/headers/index.ts +0 -1
  270. package/config/src/proxy/microsoft/net/http/headers/models.ts +0 -7
  271. package/config/src/proxy/microsoft/net/http/index.ts +0 -2
  272. package/config/src/proxy/microsoft/net/index.ts +0 -2
  273. package/config/src/services/validators.service.ts +0 -80
  274. package/ng-package.json +0 -10
  275. package/src/lib/cms-routing.module.ts +0 -102
  276. package/src/lib/cms.module.ts +0 -109
  277. package/src/lib/components/admin/entries/create-or-edit-entries.component.html +0 -137
  278. package/src/lib/components/admin/entries/create-or-edit-entries.component.scss +0 -1
  279. package/src/lib/components/admin/entries/create-or-edit-entries.component.spec.ts +0 -21
  280. package/src/lib/components/admin/entries/create-or-edit-entries.component.ts +0 -318
  281. package/src/lib/components/admin/entries/create-or-update-entry-input-base.ts +0 -33
  282. package/src/lib/components/admin/entries/create.component.html +0 -13
  283. package/src/lib/components/admin/entries/create.component.scss +0 -1
  284. package/src/lib/components/admin/entries/create.component.spec.ts +0 -21
  285. package/src/lib/components/admin/entries/create.component.ts +0 -110
  286. package/src/lib/components/admin/entries/edit.component.html +0 -9
  287. package/src/lib/components/admin/entries/edit.component.scss +0 -1
  288. package/src/lib/components/admin/entries/edit.component.spec.ts +0 -21
  289. package/src/lib/components/admin/entries/edit.component.ts +0 -111
  290. package/src/lib/components/admin/entries/entries.component.html +0 -112
  291. package/src/lib/components/admin/entries/entries.component.scss +0 -1
  292. package/src/lib/components/admin/entries/entries.component.spec.ts +0 -21
  293. package/src/lib/components/admin/entries/entries.component.ts +0 -216
  294. package/src/lib/components/admin/entries/index.ts +0 -4
  295. package/src/lib/components/admin/fields/create-field.component.html +0 -12
  296. package/src/lib/components/admin/fields/create-field.component.scss +0 -1
  297. package/src/lib/components/admin/fields/create-field.component.spec.ts +0 -21
  298. package/src/lib/components/admin/fields/create-field.component.ts +0 -82
  299. package/src/lib/components/admin/fields/create-or-edit-field.component.html +0 -40
  300. package/src/lib/components/admin/fields/create-or-edit-field.component.scss +0 -0
  301. package/src/lib/components/admin/fields/create-or-edit-field.component.spec.ts +0 -21
  302. package/src/lib/components/admin/fields/create-or-edit-field.component.ts +0 -121
  303. package/src/lib/components/admin/fields/create-or-update-field-input-base.ts +0 -33
  304. package/src/lib/components/admin/fields/edit-field.component.html +0 -16
  305. package/src/lib/components/admin/fields/edit-field.component.scss +0 -0
  306. package/src/lib/components/admin/fields/edit-field.component.spec.ts +0 -21
  307. package/src/lib/components/admin/fields/edit-field.component.ts +0 -101
  308. package/src/lib/components/admin/fields/field-group.component.html +0 -69
  309. package/src/lib/components/admin/fields/field-group.component.scss +0 -0
  310. package/src/lib/components/admin/fields/field-group.component.spec.ts +0 -21
  311. package/src/lib/components/admin/fields/field-group.component.ts +0 -151
  312. package/src/lib/components/admin/fields/fields.component.html +0 -74
  313. package/src/lib/components/admin/fields/fields.component.scss +0 -1
  314. package/src/lib/components/admin/fields/fields.component.spec.ts +0 -21
  315. package/src/lib/components/admin/fields/fields.component.ts +0 -109
  316. package/src/lib/components/admin/fields/index.ts +0 -6
  317. package/src/lib/components/admin/index.ts +0 -3
  318. package/src/lib/components/admin/sections/create-or-update-sections-input-base.ts +0 -32
  319. package/src/lib/components/admin/sections/entry-types/create-or-edit.-entry-type-input-base.ts +0 -79
  320. package/src/lib/components/admin/sections/entry-types/create-or-edit.component.html +0 -187
  321. package/src/lib/components/admin/sections/entry-types/create-or-edit.component.scss +0 -1
  322. package/src/lib/components/admin/sections/entry-types/create-or-edit.component.spec.ts +0 -21
  323. package/src/lib/components/admin/sections/entry-types/create-or-edit.component.ts +0 -424
  324. package/src/lib/components/admin/sections/entry-types/index.ts +0 -2
  325. package/src/lib/components/admin/sections/index.ts +0 -3
  326. package/src/lib/components/admin/sections/sections.component.html +0 -188
  327. package/src/lib/components/admin/sections/sections.component.scss +0 -1
  328. package/src/lib/components/admin/sections/sections.component.spec.ts +0 -21
  329. package/src/lib/components/admin/sections/sections.component.ts +0 -302
  330. package/src/lib/components/dynamic-form/entry/entry-config.component.html +0 -36
  331. package/src/lib/components/dynamic-form/entry/entry-config.component.scss +0 -27
  332. package/src/lib/components/dynamic-form/entry/entry-config.component.spec.ts +0 -21
  333. package/src/lib/components/dynamic-form/entry/entry-config.component.ts +0 -114
  334. package/src/lib/components/dynamic-form/entry/entry-config.ts +0 -24
  335. package/src/lib/components/dynamic-form/entry/entry-control.component.html +0 -26
  336. package/src/lib/components/dynamic-form/entry/entry-control.component.scss +0 -1
  337. package/src/lib/components/dynamic-form/entry/entry-control.component.spec.ts +0 -21
  338. package/src/lib/components/dynamic-form/entry/entry-control.component.ts +0 -111
  339. package/src/lib/components/dynamic-form/entry/index.ts +0 -3
  340. package/src/lib/components/dynamic-form/form-control-group.ts +0 -27
  341. package/src/lib/components/dynamic-form/index.ts +0 -4
  342. package/src/lib/components/dynamic-form/matrix/index.ts +0 -3
  343. package/src/lib/components/dynamic-form/matrix/matrix-config.component.html +0 -148
  344. package/src/lib/components/dynamic-form/matrix/matrix-config.component.scss +0 -0
  345. package/src/lib/components/dynamic-form/matrix/matrix-config.component.spec.ts +0 -21
  346. package/src/lib/components/dynamic-form/matrix/matrix-config.component.ts +0 -239
  347. package/src/lib/components/dynamic-form/matrix/matrix-config.ts +0 -63
  348. package/src/lib/components/dynamic-form/matrix/matrix-control.component.html +0 -42
  349. package/src/lib/components/dynamic-form/matrix/matrix-control.component.scss +0 -0
  350. package/src/lib/components/dynamic-form/matrix/matrix-control.component.spec.ts +0 -21
  351. package/src/lib/components/dynamic-form/matrix/matrix-control.component.ts +0 -106
  352. package/src/lib/components/dynamic-form/table/index.ts +0 -3
  353. package/src/lib/components/dynamic-form/table/table-config.component.html +0 -85
  354. package/src/lib/components/dynamic-form/table/table-config.component.scss +0 -10
  355. package/src/lib/components/dynamic-form/table/table-config.component.spec.ts +0 -21
  356. package/src/lib/components/dynamic-form/table/table-config.component.ts +0 -170
  357. package/src/lib/components/dynamic-form/table/table-config.ts +0 -45
  358. package/src/lib/components/dynamic-form/table/table-control.component.html +0 -54
  359. package/src/lib/components/dynamic-form/table/table-control.component.scss +0 -1
  360. package/src/lib/components/dynamic-form/table/table-control.component.spec.ts +0 -21
  361. package/src/lib/components/dynamic-form/table/table-control.component.ts +0 -114
  362. package/src/lib/components/index.ts +0 -2
  363. package/src/lib/constants/index.ts +0 -1
  364. package/src/lib/constants/styles.ts +0 -20
  365. package/src/lib/enums/ecms-component.ts +0 -11
  366. package/src/lib/enums/index.ts +0 -1
  367. package/src/lib/proxy/README.md +0 -17
  368. package/src/lib/proxy/admin/domains/domain-admin.service.ts +0 -38
  369. package/src/lib/proxy/admin/domains/index.ts +0 -2
  370. package/src/lib/proxy/admin/domains/models.ts +0 -9
  371. package/src/lib/proxy/admin/dynamic-forms/form-admin.service.ts +0 -21
  372. package/src/lib/proxy/admin/dynamic-forms/index.ts +0 -2
  373. package/src/lib/proxy/admin/dynamic-forms/models.ts +0 -5
  374. package/src/lib/proxy/admin/entries/entry-admin.service.ts +0 -109
  375. package/src/lib/proxy/admin/entries/index.ts +0 -2
  376. package/src/lib/proxy/admin/entries/models.ts +0 -68
  377. package/src/lib/proxy/admin/fields/field-admin.service.ts +0 -64
  378. package/src/lib/proxy/admin/fields/field-group-admin.service.ts +0 -56
  379. package/src/lib/proxy/admin/fields/index.ts +0 -3
  380. package/src/lib/proxy/admin/index.ts +0 -7
  381. package/src/lib/proxy/admin/sections/entry-type-admin.service.ts +0 -55
  382. package/src/lib/proxy/admin/sections/index.ts +0 -3
  383. package/src/lib/proxy/admin/sections/section-admin.service.ts +0 -74
  384. package/src/lib/proxy/admin/settings/site-settings-admin.service.ts +0 -37
  385. package/src/lib/proxy/dignite/abp/data/index.ts +0 -1
  386. package/src/lib/proxy/dignite/abp/data/models.ts +0 -4
  387. package/src/lib/proxy/dignite/abp/index.ts +0 -2
  388. package/src/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.ts +0 -65
  389. package/src/lib/proxy/dignite/file-explorer/directories/index.ts +0 -2
  390. package/src/lib/proxy/dignite/file-explorer/directories/models.ts +0 -35
  391. package/src/lib/proxy/dignite/file-explorer/files/file-descriptor.service.ts +0 -86
  392. package/src/lib/proxy/dignite/file-explorer/files/index.ts +0 -2
  393. package/src/lib/proxy/dignite/file-explorer/files/models.ts +0 -58
  394. package/src/lib/proxy/dignite/file-explorer/index.ts +0 -3
  395. package/src/lib/proxy/dignite/index.ts +0 -3
  396. package/src/lib/proxy/entries/entry-status.enum.ts +0 -8
  397. package/src/lib/proxy/entries/index.ts +0 -1
  398. package/src/lib/proxy/fields/index.ts +0 -1
  399. package/src/lib/proxy/fields/models.ts +0 -9
  400. package/src/lib/proxy/generate-proxy.json +0 -11425
  401. package/src/lib/proxy/index.ts +0 -9
  402. package/src/lib/proxy/microsoft/asp-net-core/index.ts +0 -2
  403. package/src/lib/proxy/microsoft/asp-net-core/mvc/index.ts +0 -1
  404. package/src/lib/proxy/microsoft/asp-net-core/mvc/models.ts +0 -12
  405. package/src/lib/proxy/microsoft/extensions/index.ts +0 -2
  406. package/src/lib/proxy/microsoft/extensions/primitives/index.ts +0 -1
  407. package/src/lib/proxy/microsoft/extensions/primitives/models.ts +0 -9
  408. package/src/lib/proxy/microsoft/index.ts +0 -4
  409. package/src/lib/proxy/microsoft/net/http/headers/index.ts +0 -1
  410. package/src/lib/proxy/microsoft/net/http/headers/models.ts +0 -7
  411. package/src/lib/proxy/microsoft/net/http/index.ts +0 -2
  412. package/src/lib/proxy/microsoft/net/index.ts +0 -2
  413. package/src/lib/proxy/sections/index.ts +0 -2
  414. package/src/lib/proxy/sections/models.ts +0 -14
  415. package/src/lib/proxy/sections/section-type.enum.ts +0 -9
  416. package/src/lib/proxy/settings/index.ts +0 -1
  417. package/src/lib/proxy/settings/models.ts +0 -6
  418. package/src/lib/proxy/volo/abp/content/index.ts +0 -1
  419. package/src/lib/proxy/volo/abp/content/models.ts +0 -6
  420. package/src/lib/proxy/volo/abp/index.ts +0 -2
  421. package/src/lib/proxy/volo/cms-kit/index.ts +0 -2
  422. package/src/lib/proxy/volo/cms-kit/users/index.ts +0 -1
  423. package/src/lib/proxy/volo/index.ts +0 -3
  424. package/src/lib/resolvers/extensions-props-action-token.resolver.ts +0 -178
  425. package/src/lib/resolvers/page-default-toolbar-actions.ts +0 -170
  426. package/src/lib/resolvers/table-default-entity-actions.ts +0 -24
  427. package/src/lib/resolvers/table-default-entity-props.ts +0 -36
  428. package/src/lib/services/appent-content.ts +0 -13
  429. package/src/lib/services/cms-api.service.ts +0 -71
  430. package/src/lib/services/cms.service.ts +0 -18
  431. package/src/lib/services/field-abstracts.service.ts +0 -40
  432. package/src/lib/services/index.ts +0 -4
  433. package/src/lib/services/simple-reuse-strategy.ts +0 -74
  434. package/src/lib/services/update-list.service.ts +0 -15
  435. package/src/lib/services/validators.service.ts +0 -82
  436. package/src/test.ts +0 -26
  437. package/tsconfig.lib.json +0 -16
  438. package/tsconfig.lib.prod.json +0 -10
  439. package/tsconfig.spec.json +0 -17
  440. /package/config/{src/proxy/admin/domains/index.ts → proxy/admin/domains/index.d.ts} +0 -0
  441. /package/config/{src/proxy/dignite/cms/admin/sites/index.ts → proxy/dignite/cms/admin/sites/index.d.ts} +0 -0
  442. /package/{config/src/proxy/dignite/cms/admin/dynamic-forms/index.ts → lib/proxy/admin/dynamic-forms/index.d.ts} +0 -0
  443. /package/{config/src/proxy/dignite/cms/admin/entries/index.ts → lib/proxy/admin/entries/index.d.ts} +0 -0
  444. /package/{config/src/proxy/dignite/cms/admin/fields/index.ts → lib/proxy/admin/fields/index.d.ts} +0 -0
  445. /package/{config/src/proxy/dignite/cms/admin/sections/index.ts → lib/proxy/admin/sections/index.d.ts} +0 -0
  446. /package/{src/lib/proxy/admin/settings/index.ts → lib/proxy/admin/settings/index.d.ts} +0 -0
  447. /package/{config/src/proxy/dignite/cms/entries/index.ts → lib/proxy/entries/index.d.ts} +0 -0
  448. /package/{config/src/proxy/dignite/cms/sections/index.ts → lib/proxy/sections/index.d.ts} +0 -0
@@ -0,0 +1,303 @@
1
+ import { ConfigStateService } from '@abp/ng.core';
2
+ import { Component, inject, Input, ViewChildren, ViewContainerRef } from '@angular/core';
3
+ import { FormControl, Validators } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@abp/ng.theme.shared";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "@abp/ng.core";
8
+ import * as i4 from "../../../proxy/admin/sections";
9
+ import * as i5 from "../../../proxy/admin/entries";
10
+ import * as i6 from "@angular/router";
11
+ import * as i7 from "../../../services";
12
+ import * as i8 from "@angular/forms";
13
+ import * as i9 from "@ngx-validate/core";
14
+ import * as i10 from "@ng-bootstrap/ng-bootstrap";
15
+ import * as i11 from "@dignite-ng/expand.dynamic-form";
16
+ export class CreateOrEditEntriesComponent {
17
+ constructor(toaster, _location, configState, _SectionAdminService, _EntryAdminService, datePipe, _LocalizationService, router, _CmsApiService) {
18
+ this.toaster = toaster;
19
+ this._location = _location;
20
+ this.configState = configState;
21
+ this._SectionAdminService = _SectionAdminService;
22
+ this._EntryAdminService = _EntryAdminService;
23
+ this.datePipe = datePipe;
24
+ this._LocalizationService = _LocalizationService;
25
+ this.router = router;
26
+ this._CmsApiService = _CmsApiService;
27
+ /**语言 */
28
+ this.cultureName = '';
29
+ /**条目类型id */
30
+ this.entryTypeId = '';
31
+ /**新建版本的版本id,同条目id */
32
+ this.RevisionEntryId = '';
33
+ /**选择的条目项 */
34
+ this.entryTypesItem = '';
35
+ /**版块id */
36
+ this.sectionId = '';
37
+ /**版块详情 */
38
+ this.SectionSelect = '';
39
+ /**语言列表 */
40
+ this.languagesList = [];
41
+ /**条目类型列表-用于选择上级条目 */
42
+ this.entryTypesList = [];
43
+ /**版本列表 */
44
+ this.AllVersionsList = [];
45
+ /**是否是编辑 */
46
+ this.isEdit = false;
47
+ /**来自父组件的传值 */
48
+ this.FromParentQueryParams = '';
49
+ /**指定id的条目信息 */
50
+ this.entrySelect = '';
51
+ this.time = 0;
52
+ this.config = inject(ConfigStateService);
53
+ }
54
+ set ParentQueryParams(v) {
55
+ if (v) {
56
+ this.FromParentQueryParams = v;
57
+ }
58
+ }
59
+ set entity(v) {
60
+ if (v) {
61
+ this._entity = v;
62
+ }
63
+ }
64
+ set parentEntrySelect(v) {
65
+ if (v) {
66
+ let V_extraProperties = this._CmsApiService.deepClone(this.convertExtraProperties(v.extraProperties));
67
+ v.extraProperties = V_extraProperties;
68
+ this.entrySelect = v;
69
+ }
70
+ }
71
+ /**将对象中的ExtraProperties赋值到extraProperties */
72
+ convertExtraProperties(obj) {
73
+ for (let key in obj) {
74
+ if (Array.isArray(obj[key])) {
75
+ obj[key].forEach(item => {
76
+ if (item.hasOwnProperty('ExtraProperties')) {
77
+ item['extraProperties'] = item['ExtraProperties'];
78
+ }
79
+ });
80
+ }
81
+ }
82
+ return obj;
83
+ }
84
+ /**别名表单实体 */
85
+ get sluginput() {
86
+ return this._entity.get('slug');
87
+ }
88
+ /**语言表单实体 */
89
+ get cultureinput() {
90
+ return this._entity.get('culture');
91
+ }
92
+ /**语言表单实体影子 */
93
+ get culture_shadowInput() {
94
+ return this._entity.get('culture_shadow');
95
+ }
96
+ /**extraProperties配置表单实体 */
97
+ get extraProperties() {
98
+ return this._entity.get('extraProperties');
99
+ }
100
+ async ngAfterContentInit() {
101
+ //Called after ngOnInit when the component's or directive's content has been initialized.
102
+ //Add 'implements AfterContentInit' to the class.
103
+ let queryParams = this.FromParentQueryParams;
104
+ if (this._entity && this.FromParentQueryParams) {
105
+ this._entity.setControl('slug', new FormControl('', {
106
+ validators: Validators.required,
107
+ asyncValidators: this.repetitionAsyncValidator(),
108
+ updateOn: 'blur'
109
+ }));
110
+ this._entity.setControl('culture_shadow', new FormControl('', {
111
+ validators: [Validators.required],
112
+ asyncValidators: this.cultureAsyncValidator_test(),
113
+ }));
114
+ this._entity.get('culture').disable();
115
+ if (queryParams.RevisionEntryId && this.entrySelect) {
116
+ this.RevisionEntryId = queryParams.RevisionEntryId;
117
+ this.setEntryconfig(this.entrySelect);
118
+ }
119
+ else {
120
+ this.setEntryconfig(queryParams);
121
+ }
122
+ if (this.sectionId)
123
+ await this.getSectionSelect();
124
+ if (this.RevisionEntryId)
125
+ await this.getAllVersionsList();
126
+ }
127
+ }
128
+ /**定义自定义异步验证 */
129
+ cultureAsyncValidator_test() {
130
+ return (ctrl) => {
131
+ return new Promise(resolve => {
132
+ let subculture = this._entity?.get('culture').value;
133
+ if (subculture == this.entrySelect?.culture || this.SectionSelect.type !== 0) {
134
+ resolve(null);
135
+ return;
136
+ }
137
+ this._EntryAdminService.cultureExistWithSingleSection({
138
+ culture: subculture,
139
+ sectionId: this.sectionId,
140
+ entryTypeId: this.entryTypeId
141
+ }).subscribe(res => {
142
+ if (res) {
143
+ resolve({ repetition: this._LocalizationService.instant(`Cms::EntriesAlreadyExistEntryType`, this.entryTypesItem.displayName, this.languagesList.find(el => el.cultureName == subculture).displayName) });
144
+ }
145
+ else {
146
+ resolve(null);
147
+ }
148
+ });
149
+ });
150
+ };
151
+ }
152
+ /**
153
+ * 设置条目详情
154
+ * @param {object} source - 数据源对象
155
+ */
156
+ setEntryconfig(source) {
157
+ this.entryTypeId = source.entryTypeId;
158
+ this.cultureName = source.culture || source.cultureName;
159
+ this.sectionId = source.sectionId;
160
+ }
161
+ /**定义自定义异步验证 */
162
+ repetitionAsyncValidator() {
163
+ return (ctrl) => {
164
+ return new Promise(resolve => {
165
+ let subslug = this._entity?.get('slug').value;
166
+ if (subslug == this.entrySelect?.slug) {
167
+ resolve(null);
168
+ return;
169
+ }
170
+ this._EntryAdminService.slugExists({
171
+ culture: this.cultureName,
172
+ sectionId: this.sectionId,
173
+ slug: subslug
174
+ }).subscribe(res => {
175
+ if (res) {
176
+ resolve({ repetition: this._LocalizationService.instant(`Cms::EntrySlug{0}AlreadyExist`, ctrl.value) });
177
+ }
178
+ else {
179
+ resolve(null);
180
+ }
181
+ });
182
+ });
183
+ };
184
+ }
185
+ /**获取版块详情 */
186
+ getSectionSelect() {
187
+ return new Promise((resolve, rejects) => {
188
+ this._SectionAdminService.get(this.sectionId).subscribe(async (res) => {
189
+ let languages = this.configState.getDeep('localization.languages');
190
+ this.languagesList = languages;
191
+ let entryTypesItem = res.entryTypes.find(el => el.id == this.entryTypeId);
192
+ this.SectionSelect = res;
193
+ await this.getTypeEntryList();
194
+ this.entryTypesItem = entryTypesItem;
195
+ this.entryTypesList = res.entryTypes.filter(el => el.id == this.entryTypeId);
196
+ this._entity.patchValue({
197
+ ...this.entrySelect,
198
+ initialVersionId: this.entrySelect?.initialVersionId || this.RevisionEntryId || '',
199
+ culture: this.cultureName,
200
+ culture_shadow: this.cultureName,
201
+ entryTypeId: this.entryTypeId,
202
+ publishTime: this.datePipe.transform(new Date(), 'yyyy-MM-dd HH:mm:ss'),
203
+ });
204
+ resolve(true);
205
+ });
206
+ });
207
+ }
208
+ /**获取条目类型下所有条目列表 */
209
+ getTypeEntryList() {
210
+ return new Promise((resolve, rejects) => {
211
+ this._EntryAdminService.getList({
212
+ sectionId: this.sectionId,
213
+ maxResultCount: 1000,
214
+ culture: this.cultureName
215
+ }).subscribe((res) => {
216
+ let entryTypesList = res.items.filter(el => el.id != this.entrySelect.id);
217
+ let parentList = entryTypesList.filter(el => !el.parentId);
218
+ parentList.forEach(el => {
219
+ let layer = 0;
220
+ el.layer = new Array(layer);
221
+ el.children = this.groupByParentId(entryTypesList, el.id, (layer + 1));
222
+ });
223
+ this.entryTypesList = parentList;
224
+ resolve(res);
225
+ });
226
+ });
227
+ }
228
+ /**对数组按照父子关系进行分组 */
229
+ groupByParentId(arr, id = '', layer) {
230
+ let result = [];
231
+ result = arr.filter(el => el.parentId == id);
232
+ result.forEach(el => {
233
+ el.layer = new Array(layer);
234
+ el.children = this.groupByParentId(arr, el.id, (layer + 1));
235
+ });
236
+ return result;
237
+ }
238
+ /**获取条目版本列表 */
239
+ getAllVersionsList() {
240
+ return new Promise((resolve, rejects) => {
241
+ this._EntryAdminService.getAllVersions(this.RevisionEntryId).subscribe(res => {
242
+ this.AllVersionsList = res.items;
243
+ resolve(res);
244
+ });
245
+ });
246
+ }
247
+ /**标题转化别名 */
248
+ setTitleToSlugBlur(event) {
249
+ let val = event.target.value;
250
+ let slug = this._entity.get('slug');
251
+ let pinyinstr = '';
252
+ if (slug.value)
253
+ return;
254
+ pinyinstr = this._CmsApiService.chineseToPinyin(val);
255
+ this._entity.patchValue({
256
+ slug: pinyinstr || val
257
+ });
258
+ }
259
+ /**使用Unicode编码范围判断是否是中文字符 */
260
+ isChinese(str) {
261
+ return /^[\u4e00-\u9fa5]+$/.test(str);
262
+ }
263
+ /**激活 */
264
+ ActivatedVersion(VersionId) {
265
+ this._EntryAdminService.activate(VersionId).subscribe((res) => {
266
+ this.AllVersionsList.forEach(el => {
267
+ el.isActivatedVersion = el.id === VersionId;
268
+ });
269
+ return;
270
+ });
271
+ }
272
+ /**编辑版本 */
273
+ toEditUrl(id) {
274
+ this.router.navigateByUrl('', { skipLocationChange: true }).then(() => {
275
+ this.router.navigate([`/cms/admin/entries/${id}/edit`]);
276
+ });
277
+ }
278
+ /**删除版本 */
279
+ delectVersion(vid) {
280
+ this._EntryAdminService.delete(vid).subscribe(res => {
281
+ this.toaster.success(this._LocalizationService.instant(`AbpUi::SuccessfullyDeleted`));
282
+ this.getAllVersionsList();
283
+ });
284
+ }
285
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: CreateOrEditEntriesComponent, deps: [{ token: i1.ToasterService }, { token: i2.Location }, { token: i3.ConfigStateService }, { token: i4.SectionAdminService }, { token: i5.EntryAdminService }, { token: i2.DatePipe }, { token: i3.LocalizationService }, { token: i6.Router }, { token: i7.CmsApiService }], target: i0.ɵɵFactoryTarget.Component }); }
286
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: CreateOrEditEntriesComponent, selector: "cms-create-or-edit-entries", inputs: { isEdit: "isEdit", ParentQueryParams: "ParentQueryParams", entity: "entity", parentEntrySelect: "parentEntrySelect" }, viewQueries: [{ propertyName: "FormDynamicontrolRef", predicate: ["FormDynamicontrolRef"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"create-or-edit-entry-page\" [formGroup]=\"_entity\">\n <div class=\"container \">\n <div class=\"row\">\n <div class=\"col-md-8 \">\n <div class=\"card p-2\">\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"title\">{{'Cms::Title' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" (blur)=\"setTitleToSlugBlur($event)\"\n formControlName=\"title\">\n </div>\n <ng-container *ngFor=\"let item of entryTypesItem?.fieldTabs;let i =index\">\n <ng-container *ngFor=\"let el of item.fields;let i1 =index\">\n <ng-container *ngIf=\"el&&_entity\">\n <df-dynamic [entity]=\"_entity\" [fields]=\"el\"\n [selected]=\"entrySelect ? entrySelect.extraProperties[el.field.name] : ''\"\n [parentFiledName]=\"'extraProperties'\" [culture]=\"cultureinput.value\"></df-dynamic>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-4 \">\n <div class=\"card mb-0 p-2\">\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"slug\">{{'Cms::Slug' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"slug\">\n <div class=\"text-danger invalid-feedback\" *ngIf=\"sluginput.errors?.repetition\">\n {{sluginput.errors?.repetition}}\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"culture\">{{'AbpUi::Languages' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"culture\">\n <ng-container *ngFor=\"let item of languagesList;let i =index\">\n <option [value]=\"item.cultureName\">{{item.displayName}}</option>\n </ng-container>\n </select>\n <input type=\"text\" formControlName=\"culture_shadow\"\n style=\"position: absolute;z-index: -1;opacity: 0;\">\n <div class=\"text-danger invalid-feedback\" *ngIf=\"culture_shadowInput.errors?.repetition\">\n {{culture_shadowInput.errors?.repetition}}\n </div>\n </div>\n <div class=\"mb-2\" *ngIf=\"SectionSelect.type===1\">\n <label class=\"form-label\" for=\"parentId\">{{'Cms::ParentEntry' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"parentId\">\n <option value=\"\"></option>\n <ng-container *ngFor=\"let item of entryTypesList;let i =index\">\n <option [value]=\"item.id\">{{item.title}}</option>\n <ng-container *ngFor=\"let el of item.children\">\n <ng-container *ngTemplateOutlet=\"childTemplate; context: {\n $implicit: {\n value: el,\n }\n }\"></ng-container>\n <ng-template #childTemplate let-data>\n <option [value]=\"data.value.id\">\n <ng-container *ngFor=\"let item of data.value.layer\">--</ng-container>\n {{data.value.title}}</option>\n <ng-container *ngFor=\"let el of data.value.children\">\n <ng-container *ngTemplateOutlet=\"childTemplate; context: {\n $implicit: {\n value: el,\n }\n }\"></ng-container>\n </ng-container>\n\n </ng-template>\n </ng-container>\n\n </ng-container>\n </select>\n\n\n\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"publishTime\">{{'Cms::PublishTime' | abpLocalization}}</label>\n <input type=\"datetime-local\" class=\"form-control\" step=\"1\" formControlName=\"publishTime\">\n </div>\n <div class=\"mb-2\" *ngIf=\"isEdit\">\n <label class=\"form-label\" for=\"publishTime\">{{'Cms::Version' | abpLocalization}}</label>\n <ul class=\"list-group\">\n <ng-container *ngFor=\"let item of AllVersionsList\">\n <li class=\"list-group-item flex-between\">\n <div>\n {{item.initialVersionId?(item.creationTime| date: 'YYYY/MM/dd\n HH:mm:s'):('Cms::InitialVersion' | abpLocalization)}}\n <span class=\"badge text-bg-success ms-1\"\n *ngIf=\"item.isActivatedVersion\">{{'Cms::IsActive' | abpLocalization}}</span>\n <span class=\"badge text-bg-primary ms-1\"\n *ngIf=\"item.id === RevisionEntryId\">{{'Cms::Editing' |\n abpLocalization}}</span>\n </div>\n <div>\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-link-primary p-2 \"\n style=\"line-height: 0;\" id=\"dropdownBasic1\" ngbDropdownToggle>\n </button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\n <button ngbDropdownItem type=\"button\" *ngIf=\"!item.isActivatedVersion\"\n (click)=\"ActivatedVersion(item.id)\">\n <i class=\"fas fa-check me-1\"></i>{{'Cms::IsActive' |\n abpLocalization}}\n </button>\n <button ngbDropdownItem type=\"button\"\n routerLink=\"/cms/admin/entries/create\"\n [queryParams]=\"{RevisionEntryId:item.id}\">\n <i class=\"fas fa-plus me-1\"></i>{{'Cms::NewVersion' |\n abpLocalization}}\n </button>\n <button ngbDropdownItem type=\"button\" (click.stop)=\"toEditUrl(item.id)\"\n *ngIf=\"item.id !== RevisionEntryId\">\n <i class=\"fas fa-edit me-1\"></i>{{'AbpUi::Edit' | abpLocalization}}\n </button>\n <button ngbDropdownItem type=\"button\"\n (click.stop)=\"delectVersion(item.id)\"\n *ngIf=\"item.initialVersionId&&!item.isActivatedVersion&&item.id !== RevisionEntryId\">\n <i class=\"fas fa-trash me-1\"></i>{{'AbpUi::Delete' |\n abpLocalization}}\n </button>\n </div>\n </div>\n </div>\n </li>\n </ng-container>\n </ul>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"versionNotes\">{{'Cms::RevisionNotes' | abpLocalization}}</label>\n <textarea class=\"form-control\" formControlName=\"versionNotes\" rows=\"3\"></textarea>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: ["::ng-deep .create-or-edit-entry-page .dignite_page{height:calc(100vh - 125px);overflow:auto;background:transparent}::ng-deep .create-or-edit-entry-page .form-control,::ng-deep .create-or-edit-entry-page .form-select{padding:.475rem 1.25rem}::ng-deep .create-or-edit-entry-page .cursor-move{cursor:move}::ng-deep .create-or-edit-entry-page .bordernNavs{border:var(--bs-border-width) solid var(--lpx-border-color);padding-left:inherit;padding-right:inherit}::ng-deep .create-or-edit-entry-page .flex-between{display:flex;align-items:center;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i9.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "directive", type: i10.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i10.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i10.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i10.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: i10.NgbDropdownButtonItem, selector: "button[ngbDropdownItem]" }, { kind: "component", type: i11.DynamicComponent, selector: "df-dynamic", inputs: ["selected", "type", "entity", "culture", "parentFiledName", "fields"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] }); }
287
+ }
288
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: CreateOrEditEntriesComponent, decorators: [{
289
+ type: Component,
290
+ args: [{ selector: 'cms-create-or-edit-entries', template: "<div class=\"create-or-edit-entry-page\" [formGroup]=\"_entity\">\n <div class=\"container \">\n <div class=\"row\">\n <div class=\"col-md-8 \">\n <div class=\"card p-2\">\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"title\">{{'Cms::Title' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" (blur)=\"setTitleToSlugBlur($event)\"\n formControlName=\"title\">\n </div>\n <ng-container *ngFor=\"let item of entryTypesItem?.fieldTabs;let i =index\">\n <ng-container *ngFor=\"let el of item.fields;let i1 =index\">\n <ng-container *ngIf=\"el&&_entity\">\n <df-dynamic [entity]=\"_entity\" [fields]=\"el\"\n [selected]=\"entrySelect ? entrySelect.extraProperties[el.field.name] : ''\"\n [parentFiledName]=\"'extraProperties'\" [culture]=\"cultureinput.value\"></df-dynamic>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-4 \">\n <div class=\"card mb-0 p-2\">\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"slug\">{{'Cms::Slug' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"slug\">\n <div class=\"text-danger invalid-feedback\" *ngIf=\"sluginput.errors?.repetition\">\n {{sluginput.errors?.repetition}}\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"culture\">{{'AbpUi::Languages' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"culture\">\n <ng-container *ngFor=\"let item of languagesList;let i =index\">\n <option [value]=\"item.cultureName\">{{item.displayName}}</option>\n </ng-container>\n </select>\n <input type=\"text\" formControlName=\"culture_shadow\"\n style=\"position: absolute;z-index: -1;opacity: 0;\">\n <div class=\"text-danger invalid-feedback\" *ngIf=\"culture_shadowInput.errors?.repetition\">\n {{culture_shadowInput.errors?.repetition}}\n </div>\n </div>\n <div class=\"mb-2\" *ngIf=\"SectionSelect.type===1\">\n <label class=\"form-label\" for=\"parentId\">{{'Cms::ParentEntry' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"parentId\">\n <option value=\"\"></option>\n <ng-container *ngFor=\"let item of entryTypesList;let i =index\">\n <option [value]=\"item.id\">{{item.title}}</option>\n <ng-container *ngFor=\"let el of item.children\">\n <ng-container *ngTemplateOutlet=\"childTemplate; context: {\n $implicit: {\n value: el,\n }\n }\"></ng-container>\n <ng-template #childTemplate let-data>\n <option [value]=\"data.value.id\">\n <ng-container *ngFor=\"let item of data.value.layer\">--</ng-container>\n {{data.value.title}}</option>\n <ng-container *ngFor=\"let el of data.value.children\">\n <ng-container *ngTemplateOutlet=\"childTemplate; context: {\n $implicit: {\n value: el,\n }\n }\"></ng-container>\n </ng-container>\n\n </ng-template>\n </ng-container>\n\n </ng-container>\n </select>\n\n\n\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"publishTime\">{{'Cms::PublishTime' | abpLocalization}}</label>\n <input type=\"datetime-local\" class=\"form-control\" step=\"1\" formControlName=\"publishTime\">\n </div>\n <div class=\"mb-2\" *ngIf=\"isEdit\">\n <label class=\"form-label\" for=\"publishTime\">{{'Cms::Version' | abpLocalization}}</label>\n <ul class=\"list-group\">\n <ng-container *ngFor=\"let item of AllVersionsList\">\n <li class=\"list-group-item flex-between\">\n <div>\n {{item.initialVersionId?(item.creationTime| date: 'YYYY/MM/dd\n HH:mm:s'):('Cms::InitialVersion' | abpLocalization)}}\n <span class=\"badge text-bg-success ms-1\"\n *ngIf=\"item.isActivatedVersion\">{{'Cms::IsActive' | abpLocalization}}</span>\n <span class=\"badge text-bg-primary ms-1\"\n *ngIf=\"item.id === RevisionEntryId\">{{'Cms::Editing' |\n abpLocalization}}</span>\n </div>\n <div>\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-link-primary p-2 \"\n style=\"line-height: 0;\" id=\"dropdownBasic1\" ngbDropdownToggle>\n </button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\n <button ngbDropdownItem type=\"button\" *ngIf=\"!item.isActivatedVersion\"\n (click)=\"ActivatedVersion(item.id)\">\n <i class=\"fas fa-check me-1\"></i>{{'Cms::IsActive' |\n abpLocalization}}\n </button>\n <button ngbDropdownItem type=\"button\"\n routerLink=\"/cms/admin/entries/create\"\n [queryParams]=\"{RevisionEntryId:item.id}\">\n <i class=\"fas fa-plus me-1\"></i>{{'Cms::NewVersion' |\n abpLocalization}}\n </button>\n <button ngbDropdownItem type=\"button\" (click.stop)=\"toEditUrl(item.id)\"\n *ngIf=\"item.id !== RevisionEntryId\">\n <i class=\"fas fa-edit me-1\"></i>{{'AbpUi::Edit' | abpLocalization}}\n </button>\n <button ngbDropdownItem type=\"button\"\n (click.stop)=\"delectVersion(item.id)\"\n *ngIf=\"item.initialVersionId&&!item.isActivatedVersion&&item.id !== RevisionEntryId\">\n <i class=\"fas fa-trash me-1\"></i>{{'AbpUi::Delete' |\n abpLocalization}}\n </button>\n </div>\n </div>\n </div>\n </li>\n </ng-container>\n </ul>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"versionNotes\">{{'Cms::RevisionNotes' | abpLocalization}}</label>\n <textarea class=\"form-control\" formControlName=\"versionNotes\" rows=\"3\"></textarea>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: ["::ng-deep .create-or-edit-entry-page .dignite_page{height:calc(100vh - 125px);overflow:auto;background:transparent}::ng-deep .create-or-edit-entry-page .form-control,::ng-deep .create-or-edit-entry-page .form-select{padding:.475rem 1.25rem}::ng-deep .create-or-edit-entry-page .cursor-move{cursor:move}::ng-deep .create-or-edit-entry-page .bordernNavs{border:var(--bs-border-width) solid var(--lpx-border-color);padding-left:inherit;padding-right:inherit}::ng-deep .create-or-edit-entry-page .flex-between{display:flex;align-items:center;justify-content:space-between}\n"] }]
291
+ }], ctorParameters: () => [{ type: i1.ToasterService }, { type: i2.Location }, { type: i3.ConfigStateService }, { type: i4.SectionAdminService }, { type: i5.EntryAdminService }, { type: i2.DatePipe }, { type: i3.LocalizationService }, { type: i6.Router }, { type: i7.CmsApiService }], propDecorators: { isEdit: [{
292
+ type: Input
293
+ }], ParentQueryParams: [{
294
+ type: Input
295
+ }], entity: [{
296
+ type: Input
297
+ }], parentEntrySelect: [{
298
+ type: Input
299
+ }], FormDynamicontrolRef: [{
300
+ type: ViewChildren,
301
+ args: ['FormDynamicontrolRef', { read: ViewContainerRef }]
302
+ }] } });
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLWVkaXQtZW50cmllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvY3JlYXRlLW9yLWVkaXQtZW50cmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvY3JlYXRlLW9yLWVkaXQtZW50cmllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQXVCLE1BQU0sY0FBYyxDQUFDO0FBRXZFLE9BQU8sRUFBb0IsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBbUIsV0FBVyxFQUErQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWF2RyxNQUFNLE9BQU8sNEJBQTRCO0lBR3ZDLFlBQ1UsT0FBdUIsRUFDeEIsU0FBbUIsRUFDbEIsV0FBK0IsRUFDL0Isb0JBQXlDLEVBQ3pDLGtCQUFxQyxFQUNyQyxRQUFrQixFQUNsQixvQkFBeUMsRUFDekMsTUFBYyxFQUNkLGNBQTZCO1FBUjdCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbEIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDekMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDekMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBSXZDLFFBQVE7UUFDUixnQkFBVyxHQUFXLEVBQUUsQ0FBQTtRQUN4QixZQUFZO1FBQ1osZ0JBQVcsR0FBVyxFQUFFLENBQUE7UUFFeEIscUJBQXFCO1FBQ3JCLG9CQUFlLEdBQVEsRUFBRSxDQUFBO1FBQ3pCLFlBQVk7UUFDWixtQkFBYyxHQUFRLEVBQUUsQ0FBQTtRQUN4QixVQUFVO1FBQ1YsY0FBUyxHQUFXLEVBQUUsQ0FBQTtRQUN0QixVQUFVO1FBQ1Ysa0JBQWEsR0FBUSxFQUFFLENBQUE7UUFDdkIsVUFBVTtRQUNWLGtCQUFhLEdBQVUsRUFBRSxDQUFBO1FBQ3pCLHFCQUFxQjtRQUNyQixtQkFBYyxHQUFVLEVBQUUsQ0FBQTtRQUMxQixVQUFVO1FBQ1Ysb0JBQWUsR0FBVSxFQUFFLENBQUE7UUFFM0IsV0FBVztRQUNGLFdBQU0sR0FBRyxLQUFLLENBQUE7UUFFdkIsY0FBYztRQUNkLDBCQUFxQixHQUFRLEVBQUUsQ0FBQTtRQWdCL0IsZUFBZTtRQUNmLGdCQUFXLEdBQVEsRUFBRSxDQUFBO1FBOEdyQixTQUFJLEdBQVcsQ0FBQyxDQUFBO1FBMEJSLFdBQU0sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQXBMdkMsQ0FBQztJQTRCTCxJQUNXLGlCQUFpQixDQUFDLENBQU07UUFDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNOLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFJRCxJQUNXLE1BQU0sQ0FBQyxDQUFNO1FBQ3RCLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUdELElBQ1csaUJBQWlCLENBQUMsQ0FBTTtRQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ04sSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUE7WUFDckcsQ0FBQyxDQUFDLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQTtZQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUNELDRDQUE0QztJQUM1QyxzQkFBc0IsQ0FBQyxHQUFHO1FBQ3hCLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ3RCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7d0JBQzNDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUNwRCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZO0lBQ1osSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNqQyxDQUFDO0lBQ0QsWUFBWTtJQUNaLElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDcEMsQ0FBQztJQUNELGNBQWM7SUFDZCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDM0MsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBYyxDQUFBO0lBQ3pELENBQUM7SUFDRCxLQUFLLENBQUMsa0JBQWtCO1FBQ3RCLHlGQUF5RjtRQUN6RixpREFBaUQ7UUFDakQsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFBO1FBQzVDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFO2dCQUNsRCxVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVE7Z0JBQy9CLGVBQWUsRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7Z0JBQ2hELFFBQVEsRUFBRSxNQUFNO2FBQ2pCLENBQUMsQ0FBQyxDQUFBO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFO2dCQUM1RCxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUNqQyxlQUFlLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixFQUFFO2FBQ25ELENBQUMsQ0FBQyxDQUFBO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdEMsSUFBSSxXQUFXLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFBO2dCQUNsRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUztnQkFBRSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2xELElBQUksSUFBSSxDQUFDLGVBQWU7Z0JBQUUsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtRQUUzRCxDQUFDO0lBR0gsQ0FBQztJQVNELGVBQWU7SUFDZiwwQkFBMEI7UUFDeEIsT0FBTyxDQUFDLElBQXFCLEVBQTBFLEVBQUU7WUFDdkcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDM0IsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFBO2dCQUNuRCxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDN0UsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNkLE9BQU07Z0JBQ1IsQ0FBQztnQkFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsNkJBQTZCLENBQUM7b0JBQ3BELE9BQU8sRUFBRSxVQUFVO29CQUNuQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztpQkFDOUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDakIsSUFBSSxHQUFHLEVBQUUsQ0FBQzt3QkFDUixPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxtQ0FBbUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLElBQUksVUFBVSxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUM1TSxDQUFDO3lCQUFNLENBQUM7d0JBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNoQixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFBO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7SUFDSixDQUFDO0lBR0Q7OztLQUdDO0lBQ0QsY0FBYyxDQUFDLE1BQVc7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUNwQyxDQUFDO0lBR0QsZUFBZTtJQUNmLHdCQUF3QjtRQUN0QixPQUFPLENBQUMsSUFBcUIsRUFBMEUsRUFBRTtZQUN2RyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMzQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUE7Z0JBQzdDLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7b0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDZCxPQUFNO2dCQUNSLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztvQkFDakMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXO29CQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3pCLElBQUksRUFBRSxPQUFPO2lCQUNkLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2pCLElBQUksR0FBRyxFQUFFLENBQUM7d0JBQ1IsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsK0JBQStCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDMUcsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDaEIsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUlELFlBQVk7SUFDWixnQkFBZ0I7UUFDZCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQ3BFLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUE7Z0JBQ2xFLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFBO2dCQUM5QixJQUFJLGNBQWMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO2dCQUN6RSxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQTtnQkFDeEIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtnQkFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUE7Z0JBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtnQkFDNUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7b0JBQ3RCLEdBQUcsSUFBSSxDQUFDLFdBQVc7b0JBQ25CLGdCQUFnQixFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFO29CQUNsRixPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVc7b0JBQ3pCLGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVztvQkFDaEMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO29CQUM3QixXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQztpQkFDeEUsQ0FBQyxDQUFBO2dCQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNmLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsbUJBQW1CO0lBQ25CLGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztnQkFDOUIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXO2FBQzFCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDeEIsSUFBSSxjQUFjLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQ3pFLElBQUksVUFBVSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDMUQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtvQkFDdEIsSUFBSSxLQUFLLEdBQVcsQ0FBQyxDQUFBO29CQUNyQixFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO29CQUMzQixFQUFFLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDeEUsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUE7Z0JBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNkLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLGVBQWUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLO1FBQ2pDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUE7UUFDNUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNsQixFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQzNCLEVBQUUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzdELENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0lBSUQsY0FBYztJQUNkLGtCQUFrQjtRQUNoQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDM0UsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFBO2dCQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDZCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELFlBQVk7SUFDWixrQkFBa0IsQ0FBQyxLQUFLO1FBQ3RCLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFBO1FBQzVCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ25DLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQTtRQUNsQixJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTTtRQUN0QixTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDdEIsSUFBSSxFQUFFLFNBQVMsSUFBSSxHQUFHO1NBQ3ZCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCw0QkFBNEI7SUFDNUIsU0FBUyxDQUFDLEdBQUc7UUFDWCxPQUFPLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUTtJQUNSLGdCQUFnQixDQUFDLFNBQVM7UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM1RCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDaEMsRUFBRSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFBO1lBQzdDLENBQUMsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELFVBQVU7SUFDVixTQUFTLENBQUMsRUFBRTtRQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNwRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsVUFBVTtJQUNWLGFBQWEsQ0FBQyxHQUFHO1FBQ2YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7WUFDdEYsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUE7UUFDM0IsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOzhHQTNTVSw0QkFBNEI7a0dBQTVCLDRCQUE0Qiw4UkErSE8sZ0JBQWdCLDZCQy9JaEUsbW1TQXdJTTs7MkZEeEhPLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSw0QkFBNEI7dVRBeUM3QixNQUFNO3NCQUFkLEtBQUs7Z0JBS0ssaUJBQWlCO3NCQUQzQixLQUFLO2dCQVVLLE1BQU07c0JBRGhCLEtBQUs7Z0JBU0ssaUJBQWlCO3NCQUQzQixLQUFLO2dCQXFFNEQsb0JBQW9CO3NCQUFyRixZQUFZO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlnU3RhdGVTZXJ2aWNlLCBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEVudHJ5QWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvYWRtaW4vZW50cmllcyc7XG5pbXBvcnQgeyBTZWN0aW9uQWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvYWRtaW4vc2VjdGlvbnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0ZVBpcGUsIExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENtc0FwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Ntcy1jcmVhdGUtb3ItZWRpdC1lbnRyaWVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1vci1lZGl0LWVudHJpZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcmVhdGUtb3ItZWRpdC1lbnRyaWVzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3JlYXRlT3JFZGl0RW50cmllc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0b2FzdGVyOiBUb2FzdGVyU2VydmljZSxcbiAgICBwdWJsaWMgX2xvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIGNvbmZpZ1N0YXRlOiBDb25maWdTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfU2VjdGlvbkFkbWluU2VydmljZTogU2VjdGlvbkFkbWluU2VydmljZSxcbiAgICBwcml2YXRlIF9FbnRyeUFkbWluU2VydmljZTogRW50cnlBZG1pblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgcHJpdmF0ZSBfTG9jYWxpemF0aW9uU2VydmljZTogTG9jYWxpemF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgX0Ntc0FwaVNlcnZpY2U6IENtc0FwaVNlcnZpY2UsXG4gICkgeyB9XG5cblxuICAvKiror63oqIAgKi9cbiAgY3VsdHVyZU5hbWU6IHN0cmluZyA9ICcnXG4gIC8qKuadoeebruexu+Wei2lkICovXG4gIGVudHJ5VHlwZUlkOiBzdHJpbmcgPSAnJ1xuXG4gIC8qKuaWsOW7uueJiOacrOeahOeJiOacrGlk77yM5ZCM5p2h55uuaWQgKi9cbiAgUmV2aXNpb25FbnRyeUlkOiBhbnkgPSAnJ1xuICAvKirpgInmi6nnmoTmnaHnm67pobkgKi9cbiAgZW50cnlUeXBlc0l0ZW06IGFueSA9ICcnXG4gIC8qKueJiOWdl2lkICovXG4gIHNlY3Rpb25JZDogc3RyaW5nID0gJydcbiAgLyoq54mI5Z2X6K+m5oOFICovXG4gIFNlY3Rpb25TZWxlY3Q6IGFueSA9ICcnXG4gIC8qKuivreiogOWIl+ihqCAqL1xuICBsYW5ndWFnZXNMaXN0OiBhbnlbXSA9IFtdXG4gIC8qKuadoeebruexu+Wei+WIl+ihqC3nlKjkuo7pgInmi6nkuIrnuqfmnaHnm64gKi9cbiAgZW50cnlUeXBlc0xpc3Q6IGFueVtdID0gW11cbiAgLyoq54mI5pys5YiX6KGoICovXG4gIEFsbFZlcnNpb25zTGlzdDogYW55W10gPSBbXVxuXG4gIC8qKuaYr+WQpuaYr+e8lui+kSAqL1xuICBASW5wdXQoKSBpc0VkaXQgPSBmYWxzZVxuXG4gIC8qKuadpeiHqueItue7hOS7tueahOS8oOWAvCAqL1xuICBGcm9tUGFyZW50UXVlcnlQYXJhbXM6IGFueSA9ICcnXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgUGFyZW50UXVlcnlQYXJhbXModjogYW55KSB7XG4gICAgaWYgKHYpIHtcbiAgICAgIHRoaXMuRnJvbVBhcmVudFF1ZXJ5UGFyYW1zID0gdjtcbiAgICB9XG4gIH1cblxuICAvKirooajljZXlrp7kvZMgKi9cbiAgX2VudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZW50aXR5KHY6IGFueSkge1xuICAgIGlmICh2KSB7XG4gICAgICB0aGlzLl9lbnRpdHkgPSB2O1xuICAgIH1cbiAgfVxuICAvKirmjIflrpppZOeahOadoeebruS/oeaBryAqL1xuICBlbnRyeVNlbGVjdDogYW55ID0gJydcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwYXJlbnRFbnRyeVNlbGVjdCh2OiBhbnkpIHtcbiAgICBpZiAodikge1xuICAgICAgbGV0IFZfZXh0cmFQcm9wZXJ0aWVzID0gdGhpcy5fQ21zQXBpU2VydmljZS5kZWVwQ2xvbmUodGhpcy5jb252ZXJ0RXh0cmFQcm9wZXJ0aWVzKHYuZXh0cmFQcm9wZXJ0aWVzKSlcbiAgICAgIHYuZXh0cmFQcm9wZXJ0aWVzID0gVl9leHRyYVByb3BlcnRpZXNcbiAgICAgIHRoaXMuZW50cnlTZWxlY3QgPSB2O1xuICAgIH1cbiAgfVxuICAvKirlsIblr7nosaHkuK3nmoRFeHRyYVByb3BlcnRpZXPotYvlgLzliLBleHRyYVByb3BlcnRpZXMgKi9cbiAgY29udmVydEV4dHJhUHJvcGVydGllcyhvYmopIHtcbiAgICBmb3IgKGxldCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpba2V5XSkpIHtcbiAgICAgICAgb2JqW2tleV0uZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICBpZiAoaXRlbS5oYXNPd25Qcm9wZXJ0eSgnRXh0cmFQcm9wZXJ0aWVzJykpIHtcbiAgICAgICAgICAgIGl0ZW1bJ2V4dHJhUHJvcGVydGllcyddID0gaXRlbVsnRXh0cmFQcm9wZXJ0aWVzJ107XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8qKuWIq+WQjeihqOWNleWunuS9kyAqL1xuICBnZXQgc2x1Z2lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9lbnRpdHkuZ2V0KCdzbHVnJylcbiAgfVxuICAvKiror63oqIDooajljZXlrp7kvZMgKi9cbiAgZ2V0IGN1bHR1cmVpbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW50aXR5LmdldCgnY3VsdHVyZScpXG4gIH1cbiAgLyoq6K+t6KiA6KGo5Y2V5a6e5L2T5b2x5a2QICovXG4gIGdldCBjdWx0dXJlX3NoYWRvd0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9lbnRpdHkuZ2V0KCdjdWx0dXJlX3NoYWRvdycpXG4gIH1cblxuICAvKipleHRyYVByb3BlcnRpZXPphY3nva7ooajljZXlrp7kvZMgKi9cbiAgZ2V0IGV4dHJhUHJvcGVydGllcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZW50aXR5LmdldCgnZXh0cmFQcm9wZXJ0aWVzJykgYXMgRm9ybUdyb3VwXG4gIH1cbiAgYXN5bmMgbmdBZnRlckNvbnRlbnRJbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vQ2FsbGVkIGFmdGVyIG5nT25Jbml0IHdoZW4gdGhlIGNvbXBvbmVudCdzIG9yIGRpcmVjdGl2ZSdzIGNvbnRlbnQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCcgdG8gdGhlIGNsYXNzLlxuICAgIGxldCBxdWVyeVBhcmFtcyA9IHRoaXMuRnJvbVBhcmVudFF1ZXJ5UGFyYW1zXG4gICAgaWYgKHRoaXMuX2VudGl0eSAmJiB0aGlzLkZyb21QYXJlbnRRdWVyeVBhcmFtcykge1xuICAgICAgdGhpcy5fZW50aXR5LnNldENvbnRyb2woJ3NsdWcnLCBuZXcgRm9ybUNvbnRyb2woJycsIHtcbiAgICAgICAgdmFsaWRhdG9yczogVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgYXN5bmNWYWxpZGF0b3JzOiB0aGlzLnJlcGV0aXRpb25Bc3luY1ZhbGlkYXRvcigpLFxuICAgICAgICB1cGRhdGVPbjogJ2JsdXInXG4gICAgICB9KSlcbiAgICAgIHRoaXMuX2VudGl0eS5zZXRDb250cm9sKCdjdWx0dXJlX3NoYWRvdycsIG5ldyBGb3JtQ29udHJvbCgnJywge1xuICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIGFzeW5jVmFsaWRhdG9yczogdGhpcy5jdWx0dXJlQXN5bmNWYWxpZGF0b3JfdGVzdCgpLFxuICAgICAgfSkpXG4gICAgICB0aGlzLl9lbnRpdHkuZ2V0KCdjdWx0dXJlJykuZGlzYWJsZSgpO1xuICAgICAgaWYgKHF1ZXJ5UGFyYW1zLlJldmlzaW9uRW50cnlJZCAmJiB0aGlzLmVudHJ5U2VsZWN0KSB7XG4gICAgICAgIHRoaXMuUmV2aXNpb25FbnRyeUlkID0gcXVlcnlQYXJhbXMuUmV2aXNpb25FbnRyeUlkXG4gICAgICAgIHRoaXMuc2V0RW50cnljb25maWcodGhpcy5lbnRyeVNlbGVjdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldEVudHJ5Y29uZmlnKHF1ZXJ5UGFyYW1zKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnNlY3Rpb25JZCkgYXdhaXQgdGhpcy5nZXRTZWN0aW9uU2VsZWN0KCk7XG4gICAgICBpZiAodGhpcy5SZXZpc2lvbkVudHJ5SWQpIGF3YWl0IHRoaXMuZ2V0QWxsVmVyc2lvbnNMaXN0KClcblxuICAgIH1cblxuXG4gIH1cblxuICAvKirooajljZXmjqfku7bmqKHmnb8t5Yqo5oCB6KGo5Y2V6YWN572u57uE5Lu2ICovXG4gIEBWaWV3Q2hpbGRyZW4oJ0Zvcm1EeW5hbWljb250cm9sUmVmJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIEZvcm1EeW5hbWljb250cm9sUmVmOiBRdWVyeUxpc3Q8Vmlld0NvbnRhaW5lclJlZj47XG5cblxuXG5cblxuICAvKirlrprkuYnoh6rlrprkuYnlvILmraXpqozor4EgKi9cbiAgY3VsdHVyZUFzeW5jVmFsaWRhdG9yX3Rlc3QoKSB7XG4gICAgcmV0dXJuIChjdHJsOiBBYnN0cmFjdENvbnRyb2wpOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB8IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+ID0+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgbGV0IHN1YmN1bHR1cmUgPSB0aGlzLl9lbnRpdHk/LmdldCgnY3VsdHVyZScpLnZhbHVlXG4gICAgICAgIGlmIChzdWJjdWx0dXJlID09IHRoaXMuZW50cnlTZWxlY3Q/LmN1bHR1cmUgfHwgdGhpcy5TZWN0aW9uU2VsZWN0LnR5cGUgIT09IDApIHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlLmN1bHR1cmVFeGlzdFdpdGhTaW5nbGVTZWN0aW9uKHtcbiAgICAgICAgICBjdWx0dXJlOiBzdWJjdWx0dXJlLFxuICAgICAgICAgIHNlY3Rpb25JZDogdGhpcy5zZWN0aW9uSWQsXG4gICAgICAgICAgZW50cnlUeXBlSWQ6IHRoaXMuZW50cnlUeXBlSWRcbiAgICAgICAgfSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgcmVzb2x2ZSh7IHJlcGV0aXRpb246IHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQ21zOjpFbnRyaWVzQWxyZWFkeUV4aXN0RW50cnlUeXBlYCwgdGhpcy5lbnRyeVR5cGVzSXRlbS5kaXNwbGF5TmFtZSwgdGhpcy5sYW5ndWFnZXNMaXN0LmZpbmQoZWwgPT4gZWwuY3VsdHVyZU5hbWUgPT0gc3ViY3VsdHVyZSkuZGlzcGxheU5hbWUpIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cblxuXG4gIC8qKiAgXG4gKiDorr7nva7mnaHnm67or6bmg4UgIFxuICogQHBhcmFtIHtvYmplY3R9IHNvdXJjZSAtIOaVsOaNrua6kOWvueixoSAgXG4gKi9cbiAgc2V0RW50cnljb25maWcoc291cmNlOiBhbnkpIHtcbiAgICB0aGlzLmVudHJ5VHlwZUlkID0gc291cmNlLmVudHJ5VHlwZUlkO1xuICAgIHRoaXMuY3VsdHVyZU5hbWUgPSBzb3VyY2UuY3VsdHVyZSB8fCBzb3VyY2UuY3VsdHVyZU5hbWU7XG4gICAgdGhpcy5zZWN0aW9uSWQgPSBzb3VyY2Uuc2VjdGlvbklkO1xuICB9XG4gIHRpbWU6IG51bWJlciA9IDBcblxuICAvKirlrprkuYnoh6rlrprkuYnlvILmraXpqozor4EgKi9cbiAgcmVwZXRpdGlvbkFzeW5jVmFsaWRhdG9yKCkge1xuICAgIHJldHVybiAoY3RybDogQWJzdHJhY3RDb250cm9sKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gfCBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiA9PiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgIGxldCBzdWJzbHVnID0gdGhpcy5fZW50aXR5Py5nZXQoJ3NsdWcnKS52YWx1ZVxuICAgICAgICBpZiAoc3Vic2x1ZyA9PSB0aGlzLmVudHJ5U2VsZWN0Py5zbHVnKSB7XG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9FbnRyeUFkbWluU2VydmljZS5zbHVnRXhpc3RzKHtcbiAgICAgICAgICBjdWx0dXJlOiB0aGlzLmN1bHR1cmVOYW1lLFxuICAgICAgICAgIHNlY3Rpb25JZDogdGhpcy5zZWN0aW9uSWQsXG4gICAgICAgICAgc2x1Zzogc3Vic2x1Z1xuICAgICAgICB9KS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICByZXNvbHZlKHsgcmVwZXRpdGlvbjogdGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBDbXM6OkVudHJ5U2x1Z3swfUFscmVhZHlFeGlzdGAsIGN0cmwudmFsdWUpIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChDb25maWdTdGF0ZVNlcnZpY2UpXG5cbiAgLyoq6I635Y+W54mI5Z2X6K+m5oOFICovXG4gIGdldFNlY3Rpb25TZWxlY3QoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9TZWN0aW9uQWRtaW5TZXJ2aWNlLmdldCh0aGlzLnNlY3Rpb25JZCkuc3Vic2NyaWJlKGFzeW5jIChyZXMpID0+IHtcbiAgICAgICAgbGV0IGxhbmd1YWdlcyA9IHRoaXMuY29uZmlnU3RhdGUuZ2V0RGVlcCgnbG9jYWxpemF0aW9uLmxhbmd1YWdlcycpXG4gICAgICAgIHRoaXMubGFuZ3VhZ2VzTGlzdCA9IGxhbmd1YWdlc1xuICAgICAgICBsZXQgZW50cnlUeXBlc0l0ZW0gPSByZXMuZW50cnlUeXBlcy5maW5kKGVsID0+IGVsLmlkID09IHRoaXMuZW50cnlUeXBlSWQpXG4gICAgICAgIHRoaXMuU2VjdGlvblNlbGVjdCA9IHJlc1xuICAgICAgICBhd2FpdCB0aGlzLmdldFR5cGVFbnRyeUxpc3QoKVxuICAgICAgICB0aGlzLmVudHJ5VHlwZXNJdGVtID0gZW50cnlUeXBlc0l0ZW1cbiAgICAgICAgdGhpcy5lbnRyeVR5cGVzTGlzdCA9IHJlcy5lbnRyeVR5cGVzLmZpbHRlcihlbCA9PiBlbC5pZCA9PSB0aGlzLmVudHJ5VHlwZUlkKVxuICAgICAgICB0aGlzLl9lbnRpdHkucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgLi4udGhpcy5lbnRyeVNlbGVjdCxcbiAgICAgICAgICBpbml0aWFsVmVyc2lvbklkOiB0aGlzLmVudHJ5U2VsZWN0Py5pbml0aWFsVmVyc2lvbklkIHx8IHRoaXMuUmV2aXNpb25FbnRyeUlkIHx8ICcnLFxuICAgICAgICAgIGN1bHR1cmU6IHRoaXMuY3VsdHVyZU5hbWUsXG4gICAgICAgICAgY3VsdHVyZV9zaGFkb3c6IHRoaXMuY3VsdHVyZU5hbWUsXG4gICAgICAgICAgZW50cnlUeXBlSWQ6IHRoaXMuZW50cnlUeXBlSWQsXG4gICAgICAgICAgcHVibGlzaFRpbWU6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5ldyBEYXRlKCksICd5eXl5LU1NLWRkIEhIOm1tOnNzJyksXG4gICAgICAgIH0pXG4gICAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuICAvKirojrflj5bmnaHnm67nsbvlnovkuIvmiYDmnInmnaHnm67liJfooaggKi9cbiAgZ2V0VHlwZUVudHJ5TGlzdCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlLmdldExpc3Qoe1xuICAgICAgICBzZWN0aW9uSWQ6IHRoaXMuc2VjdGlvbklkLFxuICAgICAgICBtYXhSZXN1bHRDb3VudDogMTAwMCxcbiAgICAgICAgY3VsdHVyZTogdGhpcy5jdWx0dXJlTmFtZVxuICAgICAgfSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBsZXQgZW50cnlUeXBlc0xpc3QgPSByZXMuaXRlbXMuZmlsdGVyKGVsID0+IGVsLmlkICE9IHRoaXMuZW50cnlTZWxlY3QuaWQpXG4gICAgICAgIGxldCBwYXJlbnRMaXN0ID0gZW50cnlUeXBlc0xpc3QuZmlsdGVyKGVsID0+ICFlbC5wYXJlbnRJZClcbiAgICAgICAgcGFyZW50TGlzdC5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICBsZXQgbGF5ZXI6IG51bWJlciA9IDBcbiAgICAgICAgICBlbC5sYXllciA9IG5ldyBBcnJheShsYXllcilcbiAgICAgICAgICBlbC5jaGlsZHJlbiA9IHRoaXMuZ3JvdXBCeVBhcmVudElkKGVudHJ5VHlwZXNMaXN0LCBlbC5pZCwgKGxheWVyICsgMSkpXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuZW50cnlUeXBlc0xpc3QgPSBwYXJlbnRMaXN0XG4gICAgICAgIHJlc29sdmUocmVzKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLyoq5a+55pWw57uE5oyJ54Wn54i25a2Q5YWz57O76L+b6KGM5YiG57uEICovXG4gIGdyb3VwQnlQYXJlbnRJZChhcnIsIGlkID0gJycsIGxheWVyKSB7XG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgIHJlc3VsdCA9IGFyci5maWx0ZXIoZWwgPT4gZWwucGFyZW50SWQgPT0gaWQpXG4gICAgcmVzdWx0LmZvckVhY2goZWwgPT4ge1xuICAgICAgZWwubGF5ZXIgPSBuZXcgQXJyYXkobGF5ZXIpXG4gICAgICBlbC5jaGlsZHJlbiA9IHRoaXMuZ3JvdXBCeVBhcmVudElkKGFyciwgZWwuaWQsIChsYXllciArIDEpKVxuICAgIH0pXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cblxuXG4gIC8qKuiOt+WPluadoeebrueJiOacrOWIl+ihqCAqL1xuICBnZXRBbGxWZXJzaW9uc0xpc3QoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9FbnRyeUFkbWluU2VydmljZS5nZXRBbGxWZXJzaW9ucyh0aGlzLlJldmlzaW9uRW50cnlJZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuQWxsVmVyc2lvbnNMaXN0ID0gcmVzLml0ZW1zXG4gICAgICAgIHJlc29sdmUocmVzKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLyoq5qCH6aKY6L2s5YyW5Yir5ZCNICovXG4gIHNldFRpdGxlVG9TbHVnQmx1cihldmVudCkge1xuICAgIGxldCB2YWwgPSBldmVudC50YXJnZXQudmFsdWVcbiAgICBsZXQgc2x1ZyA9IHRoaXMuX2VudGl0eS5nZXQoJ3NsdWcnKVxuICAgIGxldCBwaW55aW5zdHIgPSAnJ1xuICAgIGlmIChzbHVnLnZhbHVlKSByZXR1cm5cbiAgICBwaW55aW5zdHIgPSB0aGlzLl9DbXNBcGlTZXJ2aWNlLmNoaW5lc2VUb1Bpbnlpbih2YWwpXG4gICAgdGhpcy5fZW50aXR5LnBhdGNoVmFsdWUoe1xuICAgICAgc2x1ZzogcGlueWluc3RyIHx8IHZhbFxuICAgIH0pXG4gIH1cbiAgLyoq5L2/55SoVW5pY29kZee8lueggeiMg+WbtOWIpOaWreaYr+WQpuaYr+S4reaWh+Wtl+espiAqL1xuICBpc0NoaW5lc2Uoc3RyKSB7XG4gICAgcmV0dXJuIC9eW1xcdTRlMDAtXFx1OWZhNV0rJC8udGVzdChzdHIpO1xuICB9XG5cbiAgLyoq5r+A5rS7ICovXG4gIEFjdGl2YXRlZFZlcnNpb24oVmVyc2lvbklkKSB7XG4gICAgdGhpcy5fRW50cnlBZG1pblNlcnZpY2UuYWN0aXZhdGUoVmVyc2lvbklkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgdGhpcy5BbGxWZXJzaW9uc0xpc3QuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgIGVsLmlzQWN0aXZhdGVkVmVyc2lvbiA9IGVsLmlkID09PSBWZXJzaW9uSWRcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9KVxuICB9XG4gIC8qKue8lui+keeJiOacrCAqL1xuICB0b0VkaXRVcmwoaWQpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcnLCB7IHNraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZSB9KS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Ntcy9hZG1pbi9lbnRyaWVzLyR7aWR9L2VkaXRgXSk7XG4gICAgfSk7XG4gIH1cbiAgLyoq5Yig6Zmk54mI5pysICovXG4gIGRlbGVjdFZlcnNpb24odmlkKSB7XG4gICAgdGhpcy5fRW50cnlBZG1pblNlcnZpY2UuZGVsZXRlKHZpZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpTdWNjZXNzZnVsbHlEZWxldGVkYCkpO1xuICAgICAgdGhpcy5nZXRBbGxWZXJzaW9uc0xpc3QoKVxuICAgIH0pXG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImNyZWF0ZS1vci1lZGl0LWVudHJ5LXBhZ2VcIiBbZm9ybUdyb3VwXT1cIl9lbnRpdHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTggXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgIHAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInRpdGxlXCI+e3snQ21zOjpUaXRsZScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIChibHVyKT1cInNldFRpdGxlVG9TbHVnQmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBlbnRyeVR5cGVzSXRlbT8uZmllbGRUYWJzO2xldCBpID1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZWwgb2YgaXRlbS5maWVsZHM7bGV0IGkxID1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbCYmX2VudGl0eVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGYtZHluYW1pYyBbZW50aXR5XT1cIl9lbnRpdHlcIiBbZmllbGRzXT1cImVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJlbnRyeVNlbGVjdCA/IGVudHJ5U2VsZWN0LmV4dHJhUHJvcGVydGllc1tlbC5maWVsZC5uYW1lXSA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJlbnRGaWxlZE5hbWVdPVwiJ2V4dHJhUHJvcGVydGllcydcIiBbY3VsdHVyZV09XCJjdWx0dXJlaW5wdXQudmFsdWVcIj48L2RmLWR5bmFtaWM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtYi0wIHAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInNsdWdcIj57eydDbXM6OlNsdWcnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJzbHVnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1kYW5nZXIgaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwic2x1Z2lucHV0LmVycm9ycz8ucmVwZXRpdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c2x1Z2lucHV0LmVycm9ycz8ucmVwZXRpdGlvbn19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3VsdHVyZVwiPnt7J0FicFVpOjpMYW5ndWFnZXMnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwiY3VsdHVyZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGFuZ3VhZ2VzTGlzdDtsZXQgaSA9aW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS5jdWx0dXJlTmFtZVwiPnt7aXRlbS5kaXNwbGF5TmFtZX19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImN1bHR1cmVfc2hhZG93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTt6LWluZGV4OiAtMTtvcGFjaXR5OiAwO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGFuZ2VyIGludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImN1bHR1cmVfc2hhZG93SW5wdXQuZXJyb3JzPy5yZXBldGl0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjdWx0dXJlX3NoYWRvd0lucHV0LmVycm9ycz8ucmVwZXRpdGlvbn19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCIgKm5nSWY9XCJTZWN0aW9uU2VsZWN0LnR5cGU9PT0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyZW50SWRcIj57eydDbXM6OlBhcmVudEVudHJ5JyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cInBhcmVudElkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZW50cnlUeXBlc0xpc3Q7bGV0IGkgPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIml0ZW0uaWRcIj57e2l0ZW0udGl0bGV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbCBvZiBpdGVtLmNoaWxkcmVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2hpbGRUZW1wbGF0ZTsgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NoaWxkVGVtcGxhdGUgbGV0LWRhdGE+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiZGF0YS52YWx1ZS5pZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGEudmFsdWUubGF5ZXJcIj4tLTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGEudmFsdWUudGl0bGV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsIG9mIGRhdGEudmFsdWUuY2hpbGRyZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNoaWxkVGVtcGxhdGU7IGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cblxuXG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicHVibGlzaFRpbWVcIj57eydDbXM6OlB1Ymxpc2hUaW1lJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHN0ZXA9XCIxXCIgZm9ybUNvbnRyb2xOYW1lPVwicHVibGlzaFRpbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCIgKm5nSWY9XCJpc0VkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwdWJsaXNoVGltZVwiPnt7J0Ntczo6VmVyc2lvbicgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBBbGxWZXJzaW9uc0xpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGZsZXgtYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uaW5pdGlhbFZlcnNpb25JZD8oaXRlbS5jcmVhdGlvblRpbWV8IGRhdGU6ICdZWVlZL01NL2RkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEg6bW06cycpOignQ21zOjpJbml0aWFsVmVyc2lvbicgfCBhYnBMb2NhbGl6YXRpb24pfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIHRleHQtYmctc3VjY2VzcyBtcy0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmlzQWN0aXZhdGVkVmVyc2lvblwiPnt7J0Ntczo6SXNBY3RpdmUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSB0ZXh0LWJnLXByaW1hcnkgbXMtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5pZCA9PT0gUmV2aXNpb25FbnRyeUlkXCI+e3snQ21zOjpFZGl0aW5nJyB8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicExvY2FsaXphdGlvbn19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGluay1wcmltYXJ5IHAtMiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJsaW5lLWhlaWdodDogMDtcIiBpZD1cImRyb3Bkb3duQmFzaWMxXCIgbmdiRHJvcGRvd25Ub2dnbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudSBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bkJhc2ljMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiIWl0ZW0uaXNBY3RpdmF0ZWRWZXJzaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiQWN0aXZhdGVkVmVyc2lvbihpdGVtLmlkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrIG1lLTFcIj48L2k+e3snQ21zOjpJc0FjdGl2ZScgfFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicExvY2FsaXphdGlvbn19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms9XCIvY21zL2FkbWluL2VudHJpZXMvY3JlYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwie1JldmlzaW9uRW50cnlJZDppdGVtLmlkfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMgbWUtMVwiPjwvaT57eydDbXM6Ok5ld1ZlcnNpb24nIHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnBMb2NhbGl6YXRpb259fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrLnN0b3ApPVwidG9FZGl0VXJsKGl0ZW0uaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uaWQgIT09IFJldmlzaW9uRW50cnlJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWVkaXQgbWUtMVwiPjwvaT57eydBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb259fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2suc3RvcCk9XCJkZWxlY3RWZXJzaW9uKGl0ZW0uaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uaW5pdGlhbFZlcnNpb25JZCYmIWl0ZW0uaXNBY3RpdmF0ZWRWZXJzaW9uJiZpdGVtLmlkICE9PSBSZXZpc2lvbkVudHJ5SWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10cmFzaCBtZS0xXCI+PC9pPnt7J0FicFVpOjpEZWxldGUnIHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnBMb2NhbGl6YXRpb259fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJ2ZXJzaW9uTm90ZXNcIj57eydDbXM6OlJldmlzaW9uTm90ZXMnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwidmVyc2lvbk5vdGVzXCIgcm93cz1cIjNcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
@@ -0,0 +1,32 @@
1
+ import { FormGroup, Validators } from "@angular/forms";
2
+ export class CreateOrUpdateEntryInputBase {
3
+ constructor(data) {
4
+ /**语言 */
5
+ this.culture = ['', [Validators.required]];
6
+ /**条目id */
7
+ this.entryTypeId = [''];
8
+ /**标题 */
9
+ this.title = ['', [Validators.required]];
10
+ /**别名 */
11
+ this.slug = ['', [Validators.required]];
12
+ /**是否是草稿 */
13
+ this.draft = ['', []];
14
+ /**发布时间 */
15
+ this.publishTime = ['', [Validators.required]];
16
+ /**上级目录 */
17
+ this.parentId = [null];
18
+ /**修订说明 */
19
+ this.versionNotes = [null];
20
+ /**版本 */
21
+ this.initialVersionId = [null];
22
+ this.extraProperties = new FormGroup({});
23
+ if (data) {
24
+ for (const key in data) {
25
+ if (data.hasOwnProperty(key)) {
26
+ this[key] = data[key];
27
+ }
28
+ }
29
+ }
30
+ }
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLXVwZGF0ZS1lbnRyeS1pbnB1dC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21zL3NyYy9saWIvY29tcG9uZW50cy9hZG1pbi9lbnRyaWVzL2NyZWF0ZS1vci11cGRhdGUtZW50cnktaW5wdXQtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZELE1BQU0sT0FBTyw0QkFBNEI7SUFvQnJDLFlBQVksSUFBbUM7UUFuQi9DLFFBQVE7UUFDUixZQUFPLEdBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUMxQyxVQUFVO1FBQ1YsZ0JBQVcsR0FBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZCLFFBQVE7UUFDUixVQUFLLEdBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUN4QyxRQUFRO1FBQ1IsU0FBSSxHQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDdkMsV0FBVztRQUNYLFVBQUssR0FBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNyQixVQUFVO1FBQ1YsZ0JBQVcsR0FBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQzlDLFVBQVU7UUFDVixhQUFRLEdBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuQixVQUFVO1FBQ1YsaUJBQVksR0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3ZCLFFBQVE7UUFDUixxQkFBZ0IsR0FBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlCLG9CQUFlLEdBQTBCLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBRXRELElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNyQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUIsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlT3JVcGRhdGVFbnRyeUlucHV0QmFzZSB7XHJcbiAgICAvKiror63oqIAgKi9cclxuICAgIGN1bHR1cmU6IGFueSA9IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXVxyXG4gICAgLyoq5p2h55uuaWQgKi9cclxuICAgIGVudHJ5VHlwZUlkOiBhbnkgPSBbJyddXHJcbiAgICAvKirmoIfpopggKi9cclxuICAgIHRpdGxlOiBhbnkgPSBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV1cclxuICAgIC8qKuWIq+WQjSAqL1xyXG4gICAgc2x1ZzogYW55ID0gWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dXHJcbiAgICAvKirmmK/lkKbmmK/ojYnnqL8gKi9cclxuICAgIGRyYWZ0OiBhbnkgPSBbJycsIFtdXVxyXG4gICAgLyoq5Y+R5biD5pe26Ze0ICovXHJcbiAgICBwdWJsaXNoVGltZTogYW55ID0gWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dXHJcbiAgICAvKirkuIrnuqfnm67lvZUgKi9cclxuICAgIHBhcmVudElkOmFueT1bbnVsbF1cclxuICAgIC8qKuS/ruiuouivtOaYjiAqL1xyXG4gICAgdmVyc2lvbk5vdGVzOmFueT1bbnVsbF1cclxuICAgIC8qKueJiOacrCAqL1xyXG4gICAgaW5pdGlhbFZlcnNpb25JZDogYW55ID0gW251bGxdXHJcbiAgICBleHRyYVByb3BlcnRpZXM6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZCA9IG5ldyBGb3JtR3JvdXAoe30pXHJcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogQ3JlYXRlT3JVcGRhdGVFbnRyeUlucHV0QmFzZSkge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzW2tleV0gPSBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==
@@ -0,0 +1,110 @@
1
+ import { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';
2
+ import { Component, inject, ViewChild } from '@angular/core';
3
+ import { FormBuilder } from '@angular/forms';
4
+ import { ECmsComponent } from '../../../enums';
5
+ // import { UpdateListService } from '@dignite-ng/expand.core';
6
+ import { CreateOrUpdateEntryInputBase } from './create-or-update-entry-input-base';
7
+ import { ValidatorsService } from '../../../services/validators.service';
8
+ import { UpdateListService } from '@dignite-ng/expand.core';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@abp/ng.theme.shared";
11
+ import * as i2 from "@angular/common";
12
+ import * as i3 from "@angular/router";
13
+ import * as i4 from "../../../proxy/admin/entries";
14
+ import * as i5 from "@abp/ng.core";
15
+ import * as i6 from "@angular/forms";
16
+ import * as i7 from "@ngx-validate/core";
17
+ import * as i8 from "@abp/ng.components/page";
18
+ import * as i9 from "./create-or-edit-entries.component";
19
+ export class CreateComponent {
20
+ constructor(toaster, _location, route, _EntryAdminService, _LocalizationService) {
21
+ this.toaster = toaster;
22
+ this._location = _location;
23
+ this.route = route;
24
+ this._EntryAdminService = _EntryAdminService;
25
+ this._LocalizationService = _LocalizationService;
26
+ this.fb = inject(FormBuilder);
27
+ this._updateListService = inject(UpdateListService);
28
+ /**是否是草稿 */
29
+ this.draftType = false;
30
+ /**页面传值用于传递到子组件 */
31
+ this.queryParams = '';
32
+ /**指定id的条目信息 */
33
+ this.entrySelect = '';
34
+ this._ValidatorsService = inject(ValidatorsService);
35
+ /**表单验证状态
36
+ * {
37
+ * title:true,
38
+ * }
39
+ */
40
+ this.formValidation = '';
41
+ this.isSubmit = false;
42
+ }
43
+ async ngOnInit() {
44
+ this.queryParams = this.route.snapshot.queryParams;
45
+ this.newEntity = this.fb.group(new CreateOrUpdateEntryInputBase());
46
+ if (this.queryParams.RevisionEntryId)
47
+ await this.getEntrySelect();
48
+ }
49
+ /**获取条目信息 */
50
+ getEntrySelect() {
51
+ return new Promise((resolve, rejects) => {
52
+ this._EntryAdminService.get(this.queryParams.RevisionEntryId).subscribe(res => {
53
+ this.entrySelect = res;
54
+ resolve(res);
55
+ });
56
+ });
57
+ }
58
+ /**保存 */
59
+ save(draft) {
60
+ this.newEntity.patchValue({
61
+ draft: draft
62
+ });
63
+ this.newEntity.get('culture').enable();
64
+ let input = this.newEntity.value;
65
+ input.publishTime = new Date(new Date(input.publishTime).getTime() + (8 * 60 * 60 * 1000)).toISOString();
66
+ input.culture = this.newEntity.get('culture').value;
67
+ if (!this.isSubmit)
68
+ return;
69
+ this.formValidation = this._ValidatorsService.getFormValidationStatus(this.newEntity);
70
+ if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms'))
71
+ return;
72
+ if (!this.newEntity.valid)
73
+ return;
74
+ this._EntryAdminService.create(input).subscribe(res => {
75
+ this.toaster.success(this._LocalizationService.instant(`AbpUi::SuccessfullyDeleted`));
76
+ this._location.back();
77
+ this._updateListService.updateList();
78
+ });
79
+ }
80
+ /**触发点击按钮替身 */
81
+ clickSubmit(type) {
82
+ this.isSubmit = true;
83
+ this.draftType = type;
84
+ this.submitclick.nativeElement.click();
85
+ }
86
+ /**返回上一页 */
87
+ backTo() {
88
+ this._location.back();
89
+ }
90
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: CreateComponent, deps: [{ token: i1.ToasterService }, { token: i2.Location }, { token: i3.ActivatedRoute }, { token: i4.EntryAdminService }, { token: i5.LocalizationService }], target: i0.ɵɵFactoryTarget.Component }); }
91
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: CreateComponent, selector: "cms-create", providers: [
92
+ {
93
+ provide: EXTENSIONS_IDENTIFIER,
94
+ useValue: ECmsComponent.Entries_Create,
95
+ },
96
+ ], viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }], ngImport: i0, template: "<form class=\"row g-3 needs-validation\" [formGroup]=\"newEntity\" (keydown.enter)=\"$event.preventDefault()\" [class]=\"{'was-validated':formValidation}\" (submit)=\"save(draftType)\">\n <abp-page [title]=\"'Cms::New'| abpLocalization\" [toolbar]=\"true\">\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n <ng-container *ngIf=\"entrySelect; else elseTemplate\">\n <cms-create-or-edit-entries [entity]=\"newEntity\" [ParentQueryParams]=\"queryParams\"\n [parentEntrySelect]=\"entrySelect\" ></cms-create-or-edit-entries>\n </ng-container>\n <ng-template #elseTemplate>\n <cms-create-or-edit-entries [entity]=\"newEntity\"\n [ParentQueryParams]=\"queryParams\" ></cms-create-or-edit-entries>\n </ng-template>\n </abp-page>\n</form>", styles: ["::ng-deep .create-or-edit-entry-page .dignite_page{height:calc(100vh - 125px);overflow:auto;background:transparent}::ng-deep .create-or-edit-entry-page .form-control,::ng-deep .create-or-edit-entry-page .form-select{padding:.475rem 1.25rem}::ng-deep .create-or-edit-entry-page .cursor-move{cursor:move}::ng-deep .create-or-edit-entry-page .bordernNavs{border:var(--bs-border-width) solid var(--lpx-border-color);padding-left:inherit;padding-right:inherit}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "component", type: i8.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i9.CreateOrEditEntriesComponent, selector: "cms-create-or-edit-entries", inputs: ["isEdit", "ParentQueryParams", "entity", "parentEntrySelect"] }, { kind: "pipe", type: i5.LocalizationPipe, name: "abpLocalization" }] }); }
97
+ }
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: CreateComponent, decorators: [{
99
+ type: Component,
100
+ args: [{ selector: 'cms-create', providers: [
101
+ {
102
+ provide: EXTENSIONS_IDENTIFIER,
103
+ useValue: ECmsComponent.Entries_Create,
104
+ },
105
+ ], template: "<form class=\"row g-3 needs-validation\" [formGroup]=\"newEntity\" (keydown.enter)=\"$event.preventDefault()\" [class]=\"{'was-validated':formValidation}\" (submit)=\"save(draftType)\">\n <abp-page [title]=\"'Cms::New'| abpLocalization\" [toolbar]=\"true\">\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n <ng-container *ngIf=\"entrySelect; else elseTemplate\">\n <cms-create-or-edit-entries [entity]=\"newEntity\" [ParentQueryParams]=\"queryParams\"\n [parentEntrySelect]=\"entrySelect\" ></cms-create-or-edit-entries>\n </ng-container>\n <ng-template #elseTemplate>\n <cms-create-or-edit-entries [entity]=\"newEntity\"\n [ParentQueryParams]=\"queryParams\" ></cms-create-or-edit-entries>\n </ng-template>\n </abp-page>\n</form>", styles: ["::ng-deep .create-or-edit-entry-page .dignite_page{height:calc(100vh - 125px);overflow:auto;background:transparent}::ng-deep .create-or-edit-entry-page .form-control,::ng-deep .create-or-edit-entry-page .form-select{padding:.475rem 1.25rem}::ng-deep .create-or-edit-entry-page .cursor-move{cursor:move}::ng-deep .create-or-edit-entry-page .bordernNavs{border:var(--bs-border-width) solid var(--lpx-border-color);padding-left:inherit;padding-right:inherit}\n"] }]
106
+ }], ctorParameters: () => [{ type: i1.ToasterService }, { type: i2.Location }, { type: i3.ActivatedRoute }, { type: i4.EntryAdminService }, { type: i5.LocalizationService }], propDecorators: { submitclick: [{
107
+ type: ViewChild,
108
+ args: ['submitclick', { static: true }]
109
+ }] } });
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvYWRtaW4vZW50cmllcy9jcmVhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21zL3NyYy9saWIvY29tcG9uZW50cy9hZG1pbi9lbnRyaWVzL2NyZWF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUl0RSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBR3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQywrREFBK0Q7QUFDL0QsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7O0FBYTVELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQ1UsT0FBdUIsRUFDeEIsU0FBbUIsRUFDbEIsS0FBcUIsRUFDckIsa0JBQXFDLEVBQ3JDLG9CQUF5QztRQUp6QyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ2xCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUUzQyxPQUFFLEdBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ3RC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QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVyxDQUFDLElBQUk7UUFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQTtRQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN4QyxDQUFDO0lBQ0QsV0FBVztJQUNYLE1BQU07UUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3ZCLENBQUM7OEdBL0VVLGVBQWU7a0dBQWYsZUFBZSxxQ0FQZjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFFBQVEsRUFBRSxhQUFhLENBQUMsY0FBYzthQUN2QztTQUNGLG9KQ3hCSCxvMUJBWU87OzJGRGNNLGVBQWU7a0JBWDNCLFNBQVM7K0JBQ0UsWUFBWSxhQUdYO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFFBQVEsRUFBRSxhQUFhLENBQUMsY0FBYzt5QkFDdkM7cUJBQ0Y7eU1BeUIyQyxXQUFXO3NCQUF0RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEVYVEVOU0lPTlNfSURFTlRJRklFUiB9IGZyb20gJ0BhYnAvbmcuY29tcG9uZW50cy9leHRlbnNpYmxlJztcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyAgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGluamVjdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRW50cnlBZG1pblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9hZG1pbi9lbnRyaWVzJztcbmltcG9ydCB7IEVDbXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XG4vLyBpbXBvcnQgeyBVcGRhdGVMaXN0U2VydmljZSB9IGZyb20gJ0BkaWduaXRlLW5nL2V4cGFuZC5jb3JlJztcbmltcG9ydCB7IENyZWF0ZU9yVXBkYXRlRW50cnlJbnB1dEJhc2UgfSBmcm9tICcuL2NyZWF0ZS1vci11cGRhdGUtZW50cnktaW5wdXQtYmFzZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRvcnMuc2VydmljZSc7XG5pbXBvcnQgeyBVcGRhdGVMaXN0U2VydmljZSB9IGZyb20gJ0BkaWduaXRlLW5nL2V4cGFuZC5jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY21zLWNyZWF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcmVhdGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRVhURU5TSU9OU19JREVOVElGSUVSLFxuICAgICAgdXNlVmFsdWU6IEVDbXNDb21wb25lbnQuRW50cmllc19DcmVhdGUsXG4gICAgfSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDcmVhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRvYXN0ZXI6IFRvYXN0ZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBfbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgX0VudHJ5QWRtaW5TZXJ2aWNlOiBFbnRyeUFkbWluU2VydmljZSxcbiAgICBwcml2YXRlIF9Mb2NhbGl6YXRpb25TZXJ2aWNlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLFxuICApIHsgfVxuICBwcml2YXRlIGZiPWluamVjdChGb3JtQnVpbGRlcilcbiAgcHJpdmF0ZSBfdXBkYXRlTGlzdFNlcnZpY2U9aW5qZWN0KFVwZGF0ZUxpc3RTZXJ2aWNlKVxuXG4gIC8qKuihqOWNleWunuS9kyAqL1xuICBuZXdFbnRpdHk6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZFxuXG4gIC8qKuaYr+WQpuaYr+iNieeovyAqL1xuICBkcmFmdFR5cGU6IGJvb2xlYW4gPSBmYWxzZVxuICAvKirpobXpnaLkvKDlgLznlKjkuo7kvKDpgJLliLDlrZDnu4Tku7YgKi9cbiAgcXVlcnlQYXJhbXM6IGFueSA9ICcnXG5cbiAgLyoq5oyH5a6aaWTnmoTmnaHnm67kv6Hmga8gKi9cbiAgZW50cnlTZWxlY3Q6IGFueSA9ICcnXG5cbiAgLyoq6I635Y+W5o+Q5Lqk5oyJ6ZKu5pu/6Lqr77yM55So5LqO55yf5a6e6Kem5Y+R6KGo5Y2V5o+Q5LqkICovXG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdGNsaWNrJywgeyBzdGF0aWM6IHRydWUgfSkgc3VibWl0Y2xpY2s6IEVsZW1lbnRSZWY7XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNcbiAgICB0aGlzLm5ld0VudGl0eSA9IHRoaXMuZmIuZ3JvdXAobmV3IENyZWF0ZU9yVXBkYXRlRW50cnlJbnB1dEJhc2UoKSlcbiAgICBpZih0aGlzLnF1ZXJ5UGFyYW1zLlJldmlzaW9uRW50cnlJZCkgICBhd2FpdCB0aGlzLmdldEVudHJ5U2VsZWN0KCk7XG4gIH1cblxuICAvKirojrflj5bmnaHnm67kv6Hmga8gKi9cbiAgZ2V0RW50cnlTZWxlY3QoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9FbnRyeUFkbWluU2VydmljZS5nZXQodGhpcy5xdWVyeVBhcmFtcy5SZXZpc2lvbkVudHJ5SWQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLmVudHJ5U2VsZWN0ID0gcmVzXG4gICAgICAgIFxuICAgICAgICByZXNvbHZlKHJlcylcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuICBwcml2YXRlIF9WYWxpZGF0b3JzU2VydmljZSA9IGluamVjdChWYWxpZGF0b3JzU2VydmljZSk7XG4gIC8qKuihqOWNlemqjOivgeeKtuaAgVxuICAgKiB7XG4gICAqICB0aXRsZTp0cnVlLFxuICAgKiB9XG4gICAqL1xuICBmb3JtVmFsaWRhdGlvbjogYW55ID0gJyc7XG5cblxuICAvKirkv53lrZggKi9cbiAgc2F2ZShkcmFmdCkge1xuICAgIHRoaXMubmV3RW50aXR5LnBhdGNoVmFsdWUoe1xuICAgICAgZHJhZnQ6IGRyYWZ0XG4gICAgfSlcbiAgICB0aGlzLm5ld0VudGl0eS5nZXQoJ2N1bHR1cmUnKS5lbmFibGUoKTtcbiAgICBsZXQgaW5wdXQgPSB0aGlzLm5ld0VudGl0eS52YWx1ZVxuICAgIGlucHV0LnB1Ymxpc2hUaW1lID0gbmV3IERhdGUobmV3IERhdGUoaW5wdXQucHVibGlzaFRpbWUpLmdldFRpbWUoKSArICg4ICogNjAgKiA2MCAqIDEwMDApKS50b0lTT1N0cmluZygpXG4gICAgaW5wdXQuY3VsdHVyZT10aGlzLm5ld0VudGl0eS5nZXQoJ2N1bHR1cmUnKS52YWx1ZVxuICAgIGlmICghdGhpcy5pc1N1Ym1pdCkgcmV0dXJuO1xuICAgIHRoaXMuZm9ybVZhbGlkYXRpb24gPSB0aGlzLl9WYWxpZGF0b3JzU2VydmljZS5nZXRGb3JtVmFsaWRhdGlvblN0YXR1cyh0aGlzLm5ld0VudGl0eSk7XG4gICAgaWYgKHRoaXMuX1ZhbGlkYXRvcnNTZXJ2aWNlLmlzQ2hlY2tGb3JtKHRoaXMuZm9ybVZhbGlkYXRpb24sJ0NtcycpKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLm5ld0VudGl0eS52YWxpZCkgcmV0dXJuXG4gICAgdGhpcy5fRW50cnlBZG1pblNlcnZpY2UuY3JlYXRlKGlucHV0KS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIHRoaXMudG9hc3Rlci5zdWNjZXNzKHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQWJwVWk6OlN1Y2Nlc3NmdWxseURlbGV0ZWRgKSk7XG4gICAgICAgIHRoaXMuX2xvY2F0aW9uLmJhY2soKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlTGlzdFNlcnZpY2UudXBkYXRlTGlzdCgpO1xuICAgIH0pXG4gIH1cbiAgaXNTdWJtaXQ6Ym9vbGVhbj1mYWxzZTtcbiAgLyoq6Kem5Y+R54K55Ye75oyJ6ZKu5pu/6LqrICovXG4gIGNsaWNrU3VibWl0KHR5cGUpIHtcbiAgICB0aGlzLmlzU3VibWl0ID0gdHJ1ZVxuICAgIHRoaXMuZHJhZnRUeXBlID0gdHlwZVxuICAgIHRoaXMuc3VibWl0Y2xpY2submF0aXZlRWxlbWVudC5jbGljaygpXG4gIH1cbiAgLyoq6L+U5Zue5LiK5LiA6aG1ICovXG4gIGJhY2tUbygpIHtcbiAgICB0aGlzLl9sb2NhdGlvbi5iYWNrKClcbiAgfVxuXG5cblxuXG59XG4iLCI8Zm9ybSBjbGFzcz1cInJvdyBnLTMgbmVlZHMtdmFsaWRhdGlvblwiIFtmb3JtR3JvdXBdPVwibmV3RW50aXR5XCIgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiBbY2xhc3NdPVwieyd3YXMtdmFsaWRhdGVkJzpmb3JtVmFsaWRhdGlvbn1cIiAoc3VibWl0KT1cInNhdmUoZHJhZnRUeXBlKVwiPlxuICAgIDxhYnAtcGFnZSBbdGl0bGVdPVwiJ0Ntczo6TmV3J3wgYWJwTG9jYWxpemF0aW9uXCIgW3Rvb2xiYXJdPVwidHJ1ZVwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgI3N1Ym1pdGNsaWNrPjwvYnV0dG9uPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW50cnlTZWxlY3Q7IGVsc2UgZWxzZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8Y21zLWNyZWF0ZS1vci1lZGl0LWVudHJpZXMgW2VudGl0eV09XCJuZXdFbnRpdHlcIiBbUGFyZW50UXVlcnlQYXJhbXNdPVwicXVlcnlQYXJhbXNcIlxuICAgICAgICAgICAgICAgIFtwYXJlbnRFbnRyeVNlbGVjdF09XCJlbnRyeVNlbGVjdFwiID48L2Ntcy1jcmVhdGUtb3ItZWRpdC1lbnRyaWVzPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlVGVtcGxhdGU+XG4gICAgICAgICAgICA8Y21zLWNyZWF0ZS1vci1lZGl0LWVudHJpZXMgW2VudGl0eV09XCJuZXdFbnRpdHlcIlxuICAgICAgICAgICAgICAgIFtQYXJlbnRRdWVyeVBhcmFtc109XCJxdWVyeVBhcmFtc1wiID48L2Ntcy1jcmVhdGUtb3ItZWRpdC1lbnRyaWVzPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYWJwLXBhZ2U+XG48L2Zvcm0+Il19