@dignite-ng/expand.cms 0.0.52 → 0.0.53

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 +108 -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 +130 -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 +109 -0
  39. package/esm2022/lib/components/admin/entries/edit.component.mjs +110 -0
  40. package/esm2022/lib/components/admin/entries/entries.component.mjs +198 -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 +112 -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 +109 -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 +132 -0
  100. package/esm2022/lib/resolvers/page-default-toolbar-actions.mjs +160 -0
  101. package/esm2022/lib/services/appent-content.mjs +15 -0
  102. package/esm2022/lib/services/cms-api.service.mjs +78 -0
  103. package/esm2022/lib/services/cms.service.mjs +21 -0
  104. package/esm2022/lib/services/field-abstracts.service.mjs +42 -0
  105. package/esm2022/lib/services/index.mjs +5 -0
  106. package/esm2022/lib/services/simple-reuse-strategy.mjs +64 -0
  107. package/esm2022/lib/services/update-list.service.mjs +19 -0
  108. package/esm2022/lib/services/validators.service.mjs +85 -0
  109. package/esm2022/public-api.mjs +6 -0
  110. package/fesm2022/dignite-ng-expand.cms-config.mjs +428 -0
  111. package/fesm2022/dignite-ng-expand.cms-config.mjs.map +1 -0
  112. package/fesm2022/dignite-ng-expand.cms.mjs +3915 -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 +34 -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 +71 -0
  174. package/lib/resolvers/page-default-toolbar-actions.d.ts +18 -0
  175. package/lib/services/appent-content.d.ts +1 -0
  176. package/lib/services/cms-api.service.d.ts +20 -0
  177. package/lib/services/cms.service.d.ts +10 -0
  178. package/lib/services/field-abstracts.service.d.ts +20 -0
  179. package/lib/services/index.d.ts +4 -0
  180. package/lib/services/simple-reuse-strategy.d.ts +13 -0
  181. package/lib/services/update-list.service.d.ts +9 -0
  182. package/lib/services/validators.service.d.ts +17 -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,292 @@
1
+ import { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';
2
+ import { LIST_QUERY_DEBOUNCE_TIME, ListService, } from '@abp/ng.core';
3
+ import { Component, ViewChild, inject } from '@angular/core';
4
+ import { ECmsComponent } from '../../../enums';
5
+ import { FormControl, Validators } from '@angular/forms';
6
+ import { UpdateListService } from '../../../services/update-list.service';
7
+ import { ColumnMode } from '@swimlane/ngx-datatable';
8
+ import { SectionType, sectionTypeOptions } from '../../../proxy/sections';
9
+ import { finalize } from 'rxjs';
10
+ import { CreateOrUpdateSectionsInputBase } from './create-or-update-sections-input-base';
11
+ import { ValidatorsService } from '../../../services/validators.service';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@abp/ng.core";
14
+ import * as i2 from "../../../proxy/admin/sections";
15
+ import * as i3 from "@abp/ng.theme.shared";
16
+ import * as i4 from "@angular/forms";
17
+ import * as i5 from "../../../services";
18
+ import * as i6 from "@angular/common";
19
+ import * as i7 from "@angular/router";
20
+ import * as i8 from "@swimlane/ngx-datatable";
21
+ import * as i9 from "@ngx-validate/core";
22
+ import * as i10 from "@ng-bootstrap/ng-bootstrap";
23
+ import * as i11 from "@abp/ng.components/page";
24
+ export class SectionsComponent {
25
+ constructor(list, _SectionAdminService, toaster, confirmation, fb, _EntryTypeAdminService, _LocalizationService, _CmsApiService) {
26
+ this.list = list;
27
+ this._SectionAdminService = _SectionAdminService;
28
+ this.toaster = toaster;
29
+ this.confirmation = confirmation;
30
+ this.fb = fb;
31
+ this._EntryTypeAdminService = _EntryTypeAdminService;
32
+ this._LocalizationService = _LocalizationService;
33
+ this._CmsApiService = _CmsApiService;
34
+ this._UpdateListService = inject(UpdateListService);
35
+ this.siteList = [];
36
+ this.ColumnMode = ColumnMode;
37
+ this.data = { items: [], totalCount: 0 };
38
+ this.filters = {};
39
+ this.visibleOpen = false;
40
+ this.modalBusy = false;
41
+ this._SectionType = SectionType;
42
+ this._sectionTypeOptions = sectionTypeOptions;
43
+ this._ValidatorsService = inject(ValidatorsService);
44
+ /**表单验证状态
45
+ * {
46
+ * title:true,
47
+ * }
48
+ */
49
+ this.formValidation = '';
50
+ }
51
+ hookToQuery() {
52
+ const getData = (query) => this._SectionAdminService.getList({ ...query, ...this.filters });
53
+ const setData = (list) => (this.data = list);
54
+ this.list.hookToQuery(getData).subscribe(setData);
55
+ }
56
+ async ngOnInit() {
57
+ this.hookToQuery();
58
+ this._UpdateListService.updateListEvent.subscribe(() => {
59
+ this.list.get();
60
+ });
61
+ }
62
+ siteIdChange() {
63
+ this.list.page = 0;
64
+ this.list.get();
65
+ }
66
+ VisibleChange(event) {
67
+ if (!event) {
68
+ this.selected = '';
69
+ return;
70
+ }
71
+ }
72
+ createSectionBtn() {
73
+ this.visibleOpen = true;
74
+ this.createOrEditForm = this.fb.group(new CreateOrUpdateSectionsInputBase());
75
+ this.setAsyncValidatorsFn();
76
+ }
77
+ editSectionBtn(row) {
78
+ this.visibleOpen = true;
79
+ this.createOrEditForm = this.fb.group(new CreateOrUpdateSectionsInputBase());
80
+ this.setAsyncValidatorsFn();
81
+ this._SectionAdminService.get(row.id).subscribe(res => {
82
+ this.createOrEditForm.patchValue(res);
83
+ this.selected = res;
84
+ });
85
+ }
86
+ deleteEntryType(row) {
87
+ this.confirmation
88
+ .warn(row.displayName, this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`))
89
+ .subscribe((status) => {
90
+ if (status == 'confirm') {
91
+ this._EntryTypeAdminService
92
+ .delete(row.id)
93
+ .pipe(finalize(() => { }))
94
+ .subscribe(res => {
95
+ this.toaster.success(this._LocalizationService.instant(`AbpUi::SuccessfullyDeleted`));
96
+ this.list.get();
97
+ });
98
+ }
99
+ });
100
+ }
101
+ createOrEditSave() {
102
+ if (this.selected) {
103
+ return this.EditSave();
104
+ }
105
+ this.createSave();
106
+ }
107
+ createSave() {
108
+ let input = this.createOrEditForm.value;
109
+ this.formValidation = this._ValidatorsService.getFormValidationStatus(this.createOrEditForm);
110
+ if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms'))
111
+ return;
112
+ if (!this.createOrEditForm.valid)
113
+ return;
114
+ this.modalBusy = true;
115
+ this._SectionAdminService
116
+ .create(input)
117
+ .pipe(finalize(() => {
118
+ this.modalBusy = false;
119
+ this.visibleOpen = false;
120
+ }))
121
+ .subscribe(res => {
122
+ this.toaster.success(this._LocalizationService.instant(`AbpUi::SuccessfullyDeleted`));
123
+ this.list.get();
124
+ });
125
+ }
126
+ EditSave() {
127
+ setTimeout(() => {
128
+ let input = this.createOrEditForm.value;
129
+ input.concurrencyStamp = this.selected.concurrencyStamp;
130
+ this.formValidation = this._ValidatorsService.getFormValidationStatus(this.createOrEditForm);
131
+ if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms'))
132
+ return;
133
+ if (!this.createOrEditForm.valid)
134
+ return;
135
+ this.modalBusy = true;
136
+ this._SectionAdminService
137
+ .update(this.selected.id, input)
138
+ .pipe(finalize(() => {
139
+ this.modalBusy = false;
140
+ this.visibleOpen = false;
141
+ }))
142
+ .subscribe(res => {
143
+ this.toaster.success(this._LocalizationService.instant(`AbpUi::SuccessfullyDeleted`));
144
+ this.list.get();
145
+ });
146
+ }, 100);
147
+ }
148
+ deletefield(row) {
149
+ this.confirmation
150
+ .warn(row.displayName, this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`))
151
+ .subscribe((status) => {
152
+ if (status == 'confirm') {
153
+ this._SectionAdminService
154
+ .delete(row.id)
155
+ .pipe(finalize(() => { }))
156
+ .subscribe(res => {
157
+ this.toaster.success(this._LocalizationService.instant(`AbpUi::SuccessfullyDeleted`));
158
+ this.list.get();
159
+ });
160
+ }
161
+ });
162
+ }
163
+ get displayNameInput() {
164
+ return this.createOrEditForm.get('displayName');
165
+ }
166
+ get nameInput() {
167
+ return this.createOrEditForm.get('name');
168
+ }
169
+ get routeInput() {
170
+ return this.createOrEditForm.get('route');
171
+ }
172
+ get templateInput() {
173
+ return this.createOrEditForm.get('template');
174
+ }
175
+ get typeInput() {
176
+ return this.createOrEditForm.get('type');
177
+ }
178
+ radiochange() {
179
+ this.routeInput.patchValue(this.routeInput.value);
180
+ }
181
+ disPlayNameInputBlur(event) {
182
+ let value = event.target.value;
183
+ let pinyin = this._CmsApiService.chineseToPinyin(value);
184
+ let nameInput = this.nameInput;
185
+ let routeInput = this.routeInput;
186
+ let templateInput = this.templateInput;
187
+ if (nameInput.value)
188
+ return;
189
+ nameInput.patchValue(pinyin);
190
+ if (routeInput.value)
191
+ return;
192
+ routeInput.patchValue(pinyin + (this.typeInput.value === 0 ? '' : '/{slug}'));
193
+ if (templateInput.value)
194
+ return;
195
+ templateInput.patchValue(pinyin + '/index');
196
+ }
197
+ setAsyncValidatorsFn() {
198
+ this.createOrEditForm.setControl('name', new FormControl(this.nameInput.value || '', {
199
+ validators: Validators.required,
200
+ asyncValidators: this.nameRepetitionAsyncValidator(),
201
+ }));
202
+ this.createOrEditForm.setControl('route', new FormControl(this.routeInput.value || '', {
203
+ validators: [Validators.required, this.forbiddenNameValidator()],
204
+ asyncValidators: [this.routeRepetitionAsyncValidator()],
205
+ }));
206
+ }
207
+ forbiddenNameValidator() {
208
+ return (control) => {
209
+ let inputValue = control.value.toLocaleLowerCase();
210
+ let forbidden = this.typeInput.value == 0 ? false : inputValue.includes('{slug}') ? false : true;
211
+ return forbidden
212
+ ? {
213
+ repetition: this._LocalizationService.instant(`Cms::RouteVerificationTips`, this._LocalizationService.instant(`Cms::Enum:SectionType:` + SectionType[this.typeInput.value]), '{slug}'),
214
+ }
215
+ : null;
216
+ };
217
+ }
218
+ nameRepetitionAsyncValidator() {
219
+ return (ctrl) => {
220
+ return new Promise(resolve => {
221
+ let subslug = this.createOrEditForm?.get('name');
222
+ if (subslug.value == this.selected?.name) {
223
+ resolve(null);
224
+ return;
225
+ }
226
+ this._SectionAdminService.nameExists({ name: subslug.value }).subscribe(res => {
227
+ if (res) {
228
+ resolve({
229
+ repetition: this._LocalizationService.instant(`Cms::SectionName{0}AlreadyExist`, ctrl.value),
230
+ });
231
+ }
232
+ else {
233
+ resolve(null);
234
+ }
235
+ });
236
+ });
237
+ };
238
+ }
239
+ routeRepetitionAsyncValidator() {
240
+ return (ctrl) => {
241
+ return new Promise(resolve => {
242
+ let subslug = this.createOrEditForm?.get('route').value;
243
+ if (subslug == this.selected?.route) {
244
+ resolve(null);
245
+ return;
246
+ }
247
+ this._SectionAdminService.routeExists({ route: subslug }).subscribe(res => {
248
+ if (res) {
249
+ resolve({
250
+ repetition: this._LocalizationService.instant(`Cms::SectionRoute{0}AlreadyExist`, ctrl.value),
251
+ });
252
+ }
253
+ else {
254
+ resolve(null);
255
+ }
256
+ });
257
+ });
258
+ };
259
+ }
260
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: SectionsComponent, deps: [{ token: i1.ListService }, { token: i2.SectionAdminService }, { token: i3.ToasterService }, { token: i3.ConfirmationService }, { token: i4.FormBuilder }, { token: i2.EntryTypeAdminService }, { token: i1.LocalizationService }, { token: i5.CmsApiService }], target: i0.ɵɵFactoryTarget.Component }); }
261
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: SectionsComponent, selector: "cms-sections", providers: [
262
+ // [Required]
263
+ ListService,
264
+ // [Optional]
265
+ // Provide this token if you want a different debounce time.
266
+ // Default is 300. Cannot be 0. Any value below 100 is not recommended.
267
+ { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },
268
+ {
269
+ provide: EXTENSIONS_IDENTIFIER,
270
+ useValue: ECmsComponent.Sections,
271
+ },
272
+ ], viewQueries: [{ propertyName: "createOrEditModalSubmitBtn", first: true, predicate: ["createOrEditModalSubmitBtn"], descendants: true }], ngImport: i0, template: "<abp-page [title]=\"'Cms::Sections' | abpLocalization\" [toolbar]=\"true\">\n <div class=\"sections-page\">\n <div class=\"card \" >\n <div class=\"card-body px-2 py-sm-2 border-bottom\">\n <div class=\"row align-items-end\">\n <div class=\"mb-2 col-3\">\n <label class=\"form-label\">{{'Cms::IsActive' | abpLocalization}}\uFF1A</label>\n <select class=\"form-select col-auto\" [(ngModel)]=\"filters.isActive\" (change)=\"siteIdChange()\">\n <option [value]=\"\"></option>\n <option [value]=\"true\">\u662F</option>\n <option [value]=\"false\">\u5426</option>\n </select>\n </div>\n <div class=\"mb-2 col-3\">\n <label class=\"form-label\">{{'AbpUi::Search' | abpLocalization}}\uFF1A</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\n [placeholder]=\"'AbpUi::Search' | abpLocalization\" />\n </div>\n <div class=\"mb-2 col-4\">\n <button class=\"btn btn-primary px-3\" type=\"button\" id=\"button-addon2\" (click)=\"list.get()\">\n <i class=\"fa fa-search\"></i>\n </button>\n </div>\n </div> \n </div>\n </div>\n <div class=\"card mb-0\">\n <div class=\"card-body p-0\">\n <div class=\"table-responsive table-fixed-header\">\n <ngx-datatable class=\"material \" [rows]=\"data.items\" [list]=\"list\"\n [columnMode]=\"ColumnMode.force\" [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\"\n [virtualization]=\"false\" [externalPaging]=\"true\" [count]=\"data.totalCount\" [scrollbarH]=\"true\">\n <ngx-datatable-column [name]=\"'Cms::DisplayName' | abpLocalization\" prop=\"displayName\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::Name' | abpLocalization\" prop=\"name\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::SectionType' | abpLocalization\" prop=\"type\" [width]=\"80\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{('Cms::Enum:SectionType:'+_SectionType[value]) | abpLocalization}}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::IsDefault' | abpLocalization\" prop=\"isDefault\" [width]=\"60\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <i class=\"fas fa-check text-success\" *ngIf=\"value\"></i>\n <i class=\"fas fa-times text-danger\" *ngIf=\"!value\"></i>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::IsActive' | abpLocalization\" prop=\"isActive\" [width]=\"60\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <i class=\"fas fa-check text-success\" *ngIf=\"value\"></i>\n <i class=\"fas fa-times text-danger\" *ngIf=\"!value\"></i>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::EntryType' | abpLocalization\" prop=\"SiteId\" [width]=\"100\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <div ngbDropdown container=\"body\">\n <button type=\"button\" class=\"btn btn-link\" ngbDropdownToggle id=\"dropdownBasic1\">\n {{'Cms::EntryType' | abpLocalization}}\n </button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\n <ng-container *ngFor=\"let item of row.entryTypes;let i =index\">\n <li ngbDropdownItem\n class=\"d-flex align-items-center justify-content-between\" [routerLink]=\"'/cms/admin/sections/'+row.id+'/entry-types/'+item.id+'/edit'\"\n >{{item.displayName}}\n <button class=\"btn btn-light btn-sm p-0\"\n (click.stop)=\"deleteEntryType(item)\"><i class=\"fas fa-trash p-sm-1\"\n style=\"font-size: 12px;\" role=\"button\"></i></button>\n </li>\n </ng-container>\n <li ngbDropdownItem [routerLink]=\"'/cms/admin/sections/'+row.id+'/entry-types/create'\"><i\n class=\"fas fa-plus-circle me-2\"></i>{{'Cms::New' |\n abpLocalization}}</li>\n </div>\n </div>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::CreationTime' | abpLocalization\" prop=\"creationTime\" [minWidth]=\"190\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value | date : 'yyyy/MM/dd hh:mm:ss' }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [sortable]=\"false\" [name]=\"'AbpUi::Actions' | abpLocalization\" [frozenLeft]=\"true\" [width]=\"110\" [maxWidth]=\"110\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <div ngbDropdown container=\"body\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\n <i class=\"me-1 fa fa-cog\"></i> {{'AbpUi::Actions' | abpLocalization}}\n </button>\n <div ngbDropdownMenu>\n <button ngbDropdownItem (click)=\"editSectionBtn(row)\">{{'AbpUi::Edit' |\n abpLocalization}}</button>\n <button ngbDropdownItem (click)=\"deletefield(row)\">{{'AbpUi::Delete' |\n abpLocalization}}</button>\n </div>\n </div>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </div>\n </div>\n </div>\n </div>\n</abp-page>\n<abp-modal [(visible)]=\"visibleOpen\" [busy]=\"modalBusy\" (visibleChange)=\"VisibleChange($event)\">\n <ng-template #abpHeader>\n <h3>{{selected?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"createOrEditForm; else loaderRef\">\n <form class=\"sites-modal-form\" [formGroup]=\"createOrEditForm\" (keydown.enter)=\"$event.preventDefault()\" [class]=\"{'was-validated':formValidation}\" (submit)=\"createOrEditSave()\">\n <button type=\"submit\" #createOrEditModalSubmitBtn style=\"display: none\"></button>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::EntryType' | abpLocalization}}</label>\n <div>\n <ng-container *ngFor=\"let item of _sectionTypeOptions;let i =index\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" [value]=\"item.value\"\n (change)=\"radiochange()\" formControlName=\"type\" id=\"flexRadioDefault{{i}}\">\n <label class=\"form-check-label\" for=\"flexRadioDefault{{i}}\">\n {{ 'Cms::Enum:SectionType:'+item.key | abpLocalization }}\n </label>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"disPlayNameInputBlur($event)\" placeholder=\"\" />\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\n <div class=\"text-danger invalid-feedback\" *ngIf=\"nameInput.errors?.repetition\">\n {{nameInput.errors?.repetition}}\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Route' | abpLocalization}} </label>\n <input type=\"text\" class=\"form-control\" formControlName=\"route\" placeholder=\"\" />\n <div class=\"text-danger invalid-feedback\" *ngIf=\"routeInput.errors?.repetition\">\n {{routeInput.errors?.repetition}}\n </div>\n <div class=\"form-text\">\n {{'Cms::RouteTips' | abpLocalization}}<br>\n &nbsp;&nbsp;blog<br>\n &nbsp;&nbsp;{{'blog/{slug}'}}<br>\n &nbsp;&nbsp;{{'blog/{publishTime:yyyy}/{publishTime:MM}/{slug}'}}\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Template' | abpLocalization}} </label>\n <input type=\"text\" class=\"form-control\" formControlName=\"template\" placeholder=\"\" />\n <div class=\"form-text\">\n {{\"Cms::TemplateTips\" | abpLocalization}}\n </div>\n </div>\n <div class=\"mb-2\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"isDefault\"\n id=\"isDefault\" />\n <label class=\"form-check-label\" for=\"isDefault\"> {{'Cms::Default' | abpLocalization}} </label>\n </div>\n </div>\n <div class=\"mb-2\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"isActive\"\n id=\"isActive\" />\n <label class=\"form-check-label\" for=\"isActive\"> {{'Cms::IsActive' | abpLocalization}}</label>\n </div>\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" (click)=\"createOrEditModalSubmitBtn.nativeElement.click()\">{{'AbpUi::Save' |\n abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: ["::ng-deep .sections-page .dignite_page{background:transparent}::ng-deep .sections-page .list-group-flush>.list-group-item:first-child{border-top-width:var(--bs-list-group-border-width)}::ng-deep .sections-page .card-header input{flex:2 1 auto}::ng-deep .sections-page .card-header .form-select{padding:.475rem 3.75rem .475rem 1.25rem}::ng-deep .sites-modal-form .form-control{padding:.4rem 1.25rem}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.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: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "component", type: i8.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { kind: "directive", type: i8.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { kind: "directive", type: i8.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "directive", type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i9.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "directive", type: i3.NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i3.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i3.ModalCloseDirective, selector: "[abpClose]" }, { 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.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }] }); }
273
+ }
274
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: SectionsComponent, decorators: [{
275
+ type: Component,
276
+ args: [{ selector: 'cms-sections', providers: [
277
+ // [Required]
278
+ ListService,
279
+ // [Optional]
280
+ // Provide this token if you want a different debounce time.
281
+ // Default is 300. Cannot be 0. Any value below 100 is not recommended.
282
+ { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },
283
+ {
284
+ provide: EXTENSIONS_IDENTIFIER,
285
+ useValue: ECmsComponent.Sections,
286
+ },
287
+ ], template: "<abp-page [title]=\"'Cms::Sections' | abpLocalization\" [toolbar]=\"true\">\n <div class=\"sections-page\">\n <div class=\"card \" >\n <div class=\"card-body px-2 py-sm-2 border-bottom\">\n <div class=\"row align-items-end\">\n <div class=\"mb-2 col-3\">\n <label class=\"form-label\">{{'Cms::IsActive' | abpLocalization}}\uFF1A</label>\n <select class=\"form-select col-auto\" [(ngModel)]=\"filters.isActive\" (change)=\"siteIdChange()\">\n <option [value]=\"\"></option>\n <option [value]=\"true\">\u662F</option>\n <option [value]=\"false\">\u5426</option>\n </select>\n </div>\n <div class=\"mb-2 col-3\">\n <label class=\"form-label\">{{'AbpUi::Search' | abpLocalization}}\uFF1A</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\n [placeholder]=\"'AbpUi::Search' | abpLocalization\" />\n </div>\n <div class=\"mb-2 col-4\">\n <button class=\"btn btn-primary px-3\" type=\"button\" id=\"button-addon2\" (click)=\"list.get()\">\n <i class=\"fa fa-search\"></i>\n </button>\n </div>\n </div> \n </div>\n </div>\n <div class=\"card mb-0\">\n <div class=\"card-body p-0\">\n <div class=\"table-responsive table-fixed-header\">\n <ngx-datatable class=\"material \" [rows]=\"data.items\" [list]=\"list\"\n [columnMode]=\"ColumnMode.force\" [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\"\n [virtualization]=\"false\" [externalPaging]=\"true\" [count]=\"data.totalCount\" [scrollbarH]=\"true\">\n <ngx-datatable-column [name]=\"'Cms::DisplayName' | abpLocalization\" prop=\"displayName\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::Name' | abpLocalization\" prop=\"name\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::SectionType' | abpLocalization\" prop=\"type\" [width]=\"80\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{('Cms::Enum:SectionType:'+_SectionType[value]) | abpLocalization}}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::IsDefault' | abpLocalization\" prop=\"isDefault\" [width]=\"60\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <i class=\"fas fa-check text-success\" *ngIf=\"value\"></i>\n <i class=\"fas fa-times text-danger\" *ngIf=\"!value\"></i>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::IsActive' | abpLocalization\" prop=\"isActive\" [width]=\"60\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <i class=\"fas fa-check text-success\" *ngIf=\"value\"></i>\n <i class=\"fas fa-times text-danger\" *ngIf=\"!value\"></i>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::EntryType' | abpLocalization\" prop=\"SiteId\" [width]=\"100\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <div ngbDropdown container=\"body\">\n <button type=\"button\" class=\"btn btn-link\" ngbDropdownToggle id=\"dropdownBasic1\">\n {{'Cms::EntryType' | abpLocalization}}\n </button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\n <ng-container *ngFor=\"let item of row.entryTypes;let i =index\">\n <li ngbDropdownItem\n class=\"d-flex align-items-center justify-content-between\" [routerLink]=\"'/cms/admin/sections/'+row.id+'/entry-types/'+item.id+'/edit'\"\n >{{item.displayName}}\n <button class=\"btn btn-light btn-sm p-0\"\n (click.stop)=\"deleteEntryType(item)\"><i class=\"fas fa-trash p-sm-1\"\n style=\"font-size: 12px;\" role=\"button\"></i></button>\n </li>\n </ng-container>\n <li ngbDropdownItem [routerLink]=\"'/cms/admin/sections/'+row.id+'/entry-types/create'\"><i\n class=\"fas fa-plus-circle me-2\"></i>{{'Cms::New' |\n abpLocalization}}</li>\n </div>\n </div>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'Cms::CreationTime' | abpLocalization\" prop=\"creationTime\" [minWidth]=\"190\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value | date : 'yyyy/MM/dd hh:mm:ss' }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [sortable]=\"false\" [name]=\"'AbpUi::Actions' | abpLocalization\" [frozenLeft]=\"true\" [width]=\"110\" [maxWidth]=\"110\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <div ngbDropdown container=\"body\">\n <button type=\"button\" class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\n <i class=\"me-1 fa fa-cog\"></i> {{'AbpUi::Actions' | abpLocalization}}\n </button>\n <div ngbDropdownMenu>\n <button ngbDropdownItem (click)=\"editSectionBtn(row)\">{{'AbpUi::Edit' |\n abpLocalization}}</button>\n <button ngbDropdownItem (click)=\"deletefield(row)\">{{'AbpUi::Delete' |\n abpLocalization}}</button>\n </div>\n </div>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </div>\n </div>\n </div>\n </div>\n</abp-page>\n<abp-modal [(visible)]=\"visibleOpen\" [busy]=\"modalBusy\" (visibleChange)=\"VisibleChange($event)\">\n <ng-template #abpHeader>\n <h3>{{selected?('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"createOrEditForm; else loaderRef\">\n <form class=\"sites-modal-form\" [formGroup]=\"createOrEditForm\" (keydown.enter)=\"$event.preventDefault()\" [class]=\"{'was-validated':formValidation}\" (submit)=\"createOrEditSave()\">\n <button type=\"submit\" #createOrEditModalSubmitBtn style=\"display: none\"></button>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::EntryType' | abpLocalization}}</label>\n <div>\n <ng-container *ngFor=\"let item of _sectionTypeOptions;let i =index\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"radio\" [value]=\"item.value\"\n (change)=\"radiochange()\" formControlName=\"type\" id=\"flexRadioDefault{{i}}\">\n <label class=\"form-check-label\" for=\"flexRadioDefault{{i}}\">\n {{ 'Cms::Enum:SectionType:'+item.key | abpLocalization }}\n </label>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"disPlayNameInputBlur($event)\" placeholder=\"\" />\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\n <div class=\"text-danger invalid-feedback\" *ngIf=\"nameInput.errors?.repetition\">\n {{nameInput.errors?.repetition}}\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Route' | abpLocalization}} </label>\n <input type=\"text\" class=\"form-control\" formControlName=\"route\" placeholder=\"\" />\n <div class=\"text-danger invalid-feedback\" *ngIf=\"routeInput.errors?.repetition\">\n {{routeInput.errors?.repetition}}\n </div>\n <div class=\"form-text\">\n {{'Cms::RouteTips' | abpLocalization}}<br>\n &nbsp;&nbsp;blog<br>\n &nbsp;&nbsp;{{'blog/{slug}'}}<br>\n &nbsp;&nbsp;{{'blog/{publishTime:yyyy}/{publishTime:MM}/{slug}'}}\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Template' | abpLocalization}} </label>\n <input type=\"text\" class=\"form-control\" formControlName=\"template\" placeholder=\"\" />\n <div class=\"form-text\">\n {{\"Cms::TemplateTips\" | abpLocalization}}\n </div>\n </div>\n <div class=\"mb-2\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"isDefault\"\n id=\"isDefault\" />\n <label class=\"form-check-label\" for=\"isDefault\"> {{'Cms::Default' | abpLocalization}} </label>\n </div>\n </div>\n <div class=\"mb-2\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"isActive\"\n id=\"isActive\" />\n <label class=\"form-check-label\" for=\"isActive\"> {{'Cms::IsActive' | abpLocalization}}</label>\n </div>\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" (click)=\"createOrEditModalSubmitBtn.nativeElement.click()\">{{'AbpUi::Save' |\n abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: ["::ng-deep .sections-page .dignite_page{background:transparent}::ng-deep .sections-page .list-group-flush>.list-group-item:first-child{border-top-width:var(--bs-list-group-border-width)}::ng-deep .sections-page .card-header input{flex:2 1 auto}::ng-deep .sections-page .card-header .form-select{padding:.475rem 3.75rem .475rem 1.25rem}::ng-deep .sites-modal-form .form-control{padding:.4rem 1.25rem}\n"] }]
288
+ }], ctorParameters: () => [{ type: i1.ListService }, { type: i2.SectionAdminService }, { type: i3.ToasterService }, { type: i3.ConfirmationService }, { type: i4.FormBuilder }, { type: i2.EntryTypeAdminService }, { type: i1.LocalizationService }, { type: i5.CmsApiService }], propDecorators: { createOrEditModalSubmitBtn: [{
289
+ type: ViewChild,
290
+ args: ['createOrEditModalSubmitBtn', { static: false }]
291
+ }] } });
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21zL3NyYy9saWIvY29tcG9uZW50cy9hZG1pbi9zZWN0aW9ucy9zZWN0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL3NlY3Rpb25zL3NlY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsV0FBVyxHQUdaLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE9BQU8sRUFBZ0MsV0FBVyxFQUE0QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqSSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUUxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFvQnpFLE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsWUFDa0IsSUFBaUIsRUFDekIsb0JBQXlDLEVBQ3pDLE9BQXVCLEVBQ3ZCLFlB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SixDQUFDOzhHQXBRVSxpQkFBaUI7a0dBQWpCLGlCQUFpQix1Q0FiakI7WUFDVCxhQUFhO1lBQ2IsV0FBVztZQUNYLGFBQWE7WUFDYiw0REFBNEQ7WUFDNUQsdUVBQXVFO1lBQ3ZFLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDcEQ7Z0JBQ0UsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRO2FBQ2pDO1NBQ0Ysb0tDdENILGl0WkEyTFk7OzJGRG5KQyxpQkFBaUI7a0JBakI3QixTQUFTOytCQUNFLGNBQWMsYUFHYjt3QkFDVCxhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYiw0REFBNEQ7d0JBQzVELHVFQUF1RTt3QkFDdkUsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTt3QkFDcEQ7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRO3lCQUNqQztxQkFDRjs2U0EwQ0QsMEJBQTBCO3NCQUR6QixTQUFTO3VCQUFDLDRCQUE0QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVYVEVOU0lPTlNfSURFTlRJRklFUiB9IGZyb20gJ0BhYnAvbmcuY29tcG9uZW50cy9leHRlbnNpYmxlJztcbmltcG9ydCB7XG4gIEFCUCxcbiAgTElTVF9RVUVSWV9ERUJPVU5DRV9USU1FLFxuICBMaXN0U2VydmljZSxcbiAgTG9jYWxpemF0aW9uU2VydmljZSxcbiAgUGFnZWRSZXN1bHREdG8sXG59IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgVmlld0NoaWxkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVDbXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSwgQ29uZmlybWF0aW9uU2VydmljZSwgQ29uZmlybWF0aW9uIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTZWN0aW9uQWRtaW5TZXJ2aWNlLCBFbnRyeVR5cGVBZG1pblNlcnZpY2UsIEdldFNlY3Rpb25zSW5wdXQsIFNlY3Rpb25EdG8gfSBmcm9tICcuLi8uLi8uLi9wcm94eS9hZG1pbi9zZWN0aW9ucyc7XG5pbXBvcnQgeyBDbXNBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgVXBkYXRlTGlzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91cGRhdGUtbGlzdC5zZXJ2aWNlJztcblxuaW1wb3J0IHsgQ29sdW1uTW9kZSB9IGZyb20gJ0Bzd2ltbGFuZS9uZ3gtZGF0YXRhYmxlJztcbmltcG9ydCB7IFNlY3Rpb25UeXBlLCBzZWN0aW9uVHlwZU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9zZWN0aW9ucyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ3JlYXRlT3JVcGRhdGVTZWN0aW9uc0lucHV0QmFzZSB9IGZyb20gJy4vY3JlYXRlLW9yLXVwZGF0ZS1zZWN0aW9ucy1pbnB1dC1iYXNlJztcbmltcG9ydCB7IFZhbGlkYXRvcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdmFsaWRhdG9ycy5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbXMtc2VjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VjdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWN0aW9ucy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICAvLyBbUmVxdWlyZWRdXG4gICAgTGlzdFNlcnZpY2UsXG4gICAgLy8gW09wdGlvbmFsXVxuICAgIC8vIFByb3ZpZGUgdGhpcyB0b2tlbiBpZiB5b3Ugd2FudCBhIGRpZmZlcmVudCBkZWJvdW5jZSB0aW1lLlxuICAgIC8vIERlZmF1bHQgaXMgMzAwLiBDYW5ub3QgYmUgMC4gQW55IHZhbHVlIGJlbG93IDEwMCBpcyBub3QgcmVjb21tZW5kZWQuXG4gICAgeyBwcm92aWRlOiBMSVNUX1FVRVJZX0RFQk9VTkNFX1RJTUUsIHVzZVZhbHVlOiA1MDAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBFWFRFTlNJT05TX0lERU5USUZJRVIsXG4gICAgICB1c2VWYWx1ZTogRUNtc0NvbXBvbmVudC5TZWN0aW9ucyxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTZWN0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgX1NlY3Rpb25BZG1pblNlcnZpY2U6IFNlY3Rpb25BZG1pblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdGVyOiBUb2FzdGVyU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwdWJsaWMgX0VudHJ5VHlwZUFkbWluU2VydmljZTogRW50cnlUeXBlQWRtaW5TZXJ2aWNlLFxuICAgIHB1YmxpYyBfTG9jYWxpemF0aW9uU2VydmljZTogTG9jYWxpemF0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgX0Ntc0FwaVNlcnZpY2U6IENtc0FwaVNlcnZpY2VcbiAgKSB7fVxuICBwcml2YXRlIF9VcGRhdGVMaXN0U2VydmljZSA9IGluamVjdChVcGRhdGVMaXN0U2VydmljZSk7XG4gIHNpdGVMaXN0OiBhbnlbXSA9IFtdO1xuICBDb2x1bW5Nb2RlID0gQ29sdW1uTW9kZTtcbiAgZGF0YTogUGFnZWRSZXN1bHREdG88U2VjdGlvbkR0bz4gPSB7IGl0ZW1zOiBbXSwgdG90YWxDb3VudDogMCB9O1xuICBmaWx0ZXJzID0ge30gYXMgR2V0U2VjdGlvbnNJbnB1dDtcbiAgaG9va1RvUXVlcnkoKSB7XG4gICAgY29uc3QgZ2V0RGF0YSA9IChxdWVyeTogQUJQLlBhZ2VRdWVyeVBhcmFtcykgPT5cbiAgICAgIHRoaXMuX1NlY3Rpb25BZG1pblNlcnZpY2UuZ2V0TGlzdCh7IC4uLnF1ZXJ5LCAuLi50aGlzLmZpbHRlcnMgfSk7XG4gICAgY29uc3Qgc2V0RGF0YSA9IChsaXN0OiBQYWdlZFJlc3VsdER0bzxTZWN0aW9uRHRvPikgPT4gKHRoaXMuZGF0YSA9IGxpc3QpO1xuICAgIHRoaXMubGlzdC5ob29rVG9RdWVyeShnZXREYXRhKS5zdWJzY3JpYmUoc2V0RGF0YSk7XG4gIH1cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5ob29rVG9RdWVyeSgpO1xuICAgIHRoaXMuX1VwZGF0ZUxpc3RTZXJ2aWNlLnVwZGF0ZUxpc3RFdmVudC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5saXN0LmdldCgpO1xuICAgIH0pO1xuICB9XG4gIHNpdGVJZENoYW5nZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnZSA9IDA7XG4gICAgdGhpcy5saXN0LmdldCgpO1xuICB9XG4gIHZpc2libGVPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIG1vZGFsQnVzeTogYm9vbGVhbiA9IGZhbHNlO1xuICBjcmVhdGVPckVkaXRGb3JtOiBGb3JtR3JvdXAgfCB1bmRlZmluZWQ7XG4gIHNlbGVjdGVkOiBhbnk7XG4gIF9TZWN0aW9uVHlwZSA9IFNlY3Rpb25UeXBlO1xuICBfc2VjdGlvblR5cGVPcHRpb25zID0gc2VjdGlvblR5cGVPcHRpb25zO1xuICBAVmlld0NoaWxkKCdjcmVhdGVPckVkaXRNb2RhbFN1Ym1pdEJ0bicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjcmVhdGVPckVkaXRNb2RhbFN1Ym1pdEJ0bjogRWxlbWVudFJlZjtcbiAgVmlzaWJsZUNoYW5nZShldmVudCkge1xuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgY3JlYXRlU2VjdGlvbkJ0bigpIHtcbiAgICB0aGlzLnZpc2libGVPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmNyZWF0ZU9yRWRpdEZvcm0gPSB0aGlzLmZiLmdyb3VwKG5ldyBDcmVhdGVPclVwZGF0ZVNlY3Rpb25zSW5wdXRCYXNlKCkpO1xuICAgIHRoaXMuc2V0QXN5bmNWYWxpZGF0b3JzRm4oKTtcbiAgfVxuICBlZGl0U2VjdGlvbkJ0bihyb3cpIHtcbiAgICB0aGlzLnZpc2libGVPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmNyZWF0ZU9yRWRpdEZvcm0gPSB0aGlzLmZiLmdyb3VwKG5ldyBDcmVhdGVPclVwZGF0ZVNlY3Rpb25zSW5wdXRCYXNlKCkpO1xuICAgIHRoaXMuc2V0QXN5bmNWYWxpZGF0b3JzRm4oKTtcbiAgICB0aGlzLl9TZWN0aW9uQWRtaW5TZXJ2aWNlLmdldChyb3cuaWQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgdGhpcy5jcmVhdGVPckVkaXRGb3JtLnBhdGNoVmFsdWUocmVzKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSByZXM7XG4gICAgfSk7XG4gIH1cbiAgZGVsZXRlRW50cnlUeXBlKHJvdykge1xuICAgIHRoaXMuY29uZmlybWF0aW9uXG4gICAgICAud2Fybihyb3cuZGlzcGxheU5hbWUsIHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQWJwVWk6Okl0ZW1XaWxsQmVEZWxldGVkTWVzc2FnZWApKVxuICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBDb25maXJtYXRpb24uU3RhdHVzKSA9PiB7XG4gICAgICAgIGlmIChzdGF0dXMgPT0gJ2NvbmZpcm0nKSB7XG4gICAgICAgICAgdGhpcy5fRW50cnlUeXBlQWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAuZGVsZXRlKHJvdy5pZClcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHt9KSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6U3VjY2Vzc2Z1bGx5RGVsZXRlZGApKTtcbiAgICAgICAgICAgICAgdGhpcy5saXN0LmdldCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG4gIGNyZWF0ZU9yRWRpdFNhdmUoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLkVkaXRTYXZlKCk7XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlU2F2ZSgpO1xuICB9XG4gIHByaXZhdGUgX1ZhbGlkYXRvcnNTZXJ2aWNlID0gaW5qZWN0KFZhbGlkYXRvcnNTZXJ2aWNlKTtcbiAgLyoq6KGo5Y2V6aqM6K+B54q25oCBXG4gICAqIHtcbiAgICogIHRpdGxlOnRydWUsXG4gICAqIH1cbiAgICovXG4gIGZvcm1WYWxpZGF0aW9uOiBhbnkgPSAnJztcblxuICBjcmVhdGVTYXZlKCkge1xuICAgIGxldCBpbnB1dCA9IHRoaXMuY3JlYXRlT3JFZGl0Rm9ybS52YWx1ZTtcbiAgICB0aGlzLmZvcm1WYWxpZGF0aW9uID0gdGhpcy5fVmFsaWRhdG9yc1NlcnZpY2UuZ2V0Rm9ybVZhbGlkYXRpb25TdGF0dXModGhpcy5jcmVhdGVPckVkaXRGb3JtKTtcbiAgICBpZiAodGhpcy5fVmFsaWRhdG9yc1NlcnZpY2UuaXNDaGVja0Zvcm0odGhpcy5mb3JtVmFsaWRhdGlvbiwnQ21zJykpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuY3JlYXRlT3JFZGl0Rm9ybS52YWxpZCkgcmV0dXJuO1xuICAgIHRoaXMubW9kYWxCdXN5ID0gdHJ1ZTtcbiAgICB0aGlzLl9TZWN0aW9uQWRtaW5TZXJ2aWNlXG4gICAgICAuY3JlYXRlKGlucHV0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm1vZGFsQnVzeSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudmlzaWJsZU9wZW4gPSBmYWxzZTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6U3VjY2Vzc2Z1bGx5RGVsZXRlZGApKTtcbiAgICAgICAgdGhpcy5saXN0LmdldCgpO1xuICAgICAgfSk7XG4gIH1cbiAgRWRpdFNhdmUoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBsZXQgaW5wdXQgPSB0aGlzLmNyZWF0ZU9yRWRpdEZvcm0udmFsdWU7XG4gICAgICBpbnB1dC5jb25jdXJyZW5jeVN0YW1wID0gdGhpcy5zZWxlY3RlZC5jb25jdXJyZW5jeVN0YW1wO1xuICAgICAgdGhpcy5mb3JtVmFsaWRhdGlvbiA9IHRoaXMuX1ZhbGlkYXRvcnNTZXJ2aWNlLmdldEZvcm1WYWxpZGF0aW9uU3RhdHVzKHRoaXMuY3JlYXRlT3JFZGl0Rm9ybSk7XG4gICAgICBpZiAodGhpcy5fVmFsaWRhdG9yc1NlcnZpY2UuaXNDaGVja0Zvcm0odGhpcy5mb3JtVmFsaWRhdGlvbiwnQ21zJykpIHJldHVybjtcbiAgICAgIGlmICghdGhpcy5jcmVhdGVPckVkaXRGb3JtLnZhbGlkKSByZXR1cm47XG4gICAgICB0aGlzLm1vZGFsQnVzeSA9IHRydWU7XG4gICAgICB0aGlzLl9TZWN0aW9uQWRtaW5TZXJ2aWNlXG4gICAgICAgIC51cGRhdGUodGhpcy5zZWxlY3RlZC5pZCwgaW5wdXQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubW9kYWxCdXN5ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVPcGVuID0gZmFsc2U7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6U3VjY2Vzc2Z1bGx5RGVsZXRlZGApKTtcbiAgICAgICAgICB0aGlzLmxpc3QuZ2V0KCk7XG4gICAgICAgIH0pO1xuICAgIH0sIDEwMCk7XG4gIH1cbiAgZGVsZXRlZmllbGQocm93KSB7XG4gICAgdGhpcy5jb25maXJtYXRpb25cbiAgICAgIC53YXJuKHJvdy5kaXNwbGF5TmFtZSwgdGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6SXRlbVdpbGxCZURlbGV0ZWRNZXNzYWdlYCkpXG4gICAgICAuc3Vic2NyaWJlKChzdGF0dXM6IENvbmZpcm1hdGlvbi5TdGF0dXMpID0+IHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PSAnY29uZmlybScpIHtcbiAgICAgICAgICB0aGlzLl9TZWN0aW9uQWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAuZGVsZXRlKHJvdy5pZClcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHt9KSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6U3VjY2Vzc2Z1bGx5RGVsZXRlZGApKTtcbiAgICAgICAgICAgICAgdGhpcy5saXN0LmdldCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG4gIGdldCBkaXNwbGF5TmFtZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9yRWRpdEZvcm0uZ2V0KCdkaXNwbGF5TmFtZScpO1xuICB9XG4gIGdldCBuYW1lSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT3JFZGl0Rm9ybS5nZXQoJ25hbWUnKTtcbiAgfVxuICBnZXQgcm91dGVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPckVkaXRGb3JtLmdldCgncm91dGUnKTtcbiAgfVxuICBnZXQgdGVtcGxhdGVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVPckVkaXRGb3JtLmdldCgndGVtcGxhdGUnKTtcbiAgfVxuICBnZXQgdHlwZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZU9yRWRpdEZvcm0uZ2V0KCd0eXBlJyk7XG4gIH1cbiAgcmFkaW9jaGFuZ2UoKSB7XG4gICAgdGhpcy5yb3V0ZUlucHV0LnBhdGNoVmFsdWUodGhpcy5yb3V0ZUlucHV0LnZhbHVlKTtcbiAgfVxuICBkaXNQbGF5TmFtZUlucHV0Qmx1cihldmVudCkge1xuICAgIGxldCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICBsZXQgcGlueWluID0gdGhpcy5fQ21zQXBpU2VydmljZS5jaGluZXNlVG9QaW55aW4odmFsdWUpO1xuICAgIGxldCBuYW1lSW5wdXQgPSB0aGlzLm5hbWVJbnB1dDtcbiAgICBsZXQgcm91dGVJbnB1dCA9IHRoaXMucm91dGVJbnB1dDtcbiAgICBsZXQgdGVtcGxhdGVJbnB1dCA9IHRoaXMudGVtcGxhdGVJbnB1dDtcbiAgICBpZiAobmFtZUlucHV0LnZhbHVlKSByZXR1cm47XG4gICAgbmFtZUlucHV0LnBhdGNoVmFsdWUocGlueWluKTtcbiAgICBpZiAocm91dGVJbnB1dC52YWx1ZSkgcmV0dXJuO1xuICAgIHJvdXRlSW5wdXQucGF0Y2hWYWx1ZShwaW55aW4gKyAodGhpcy50eXBlSW5wdXQudmFsdWUgPT09IDAgPyAnJyA6ICcve3NsdWd9JykpO1xuICAgIGlmICh0ZW1wbGF0ZUlucHV0LnZhbHVlKSByZXR1cm47XG4gICAgdGVtcGxhdGVJbnB1dC5wYXRjaFZhbHVlKHBpbnlpbiArICcvaW5kZXgnKTtcbiAgfVxuICBzZXRBc3luY1ZhbGlkYXRvcnNGbigpIHtcbiAgICB0aGlzLmNyZWF0ZU9yRWRpdEZvcm0uc2V0Q29udHJvbChcbiAgICAgICduYW1lJyxcbiAgICAgIG5ldyBGb3JtQ29udHJvbCh0aGlzLm5hbWVJbnB1dC52YWx1ZSB8fCAnJywge1xuICAgICAgICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBhc3luY1ZhbGlkYXRvcnM6IHRoaXMubmFtZVJlcGV0aXRpb25Bc3luY1ZhbGlkYXRvcigpLFxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuY3JlYXRlT3JFZGl0Rm9ybS5zZXRDb250cm9sKFxuICAgICAgJ3JvdXRlJyxcbiAgICAgIG5ldyBGb3JtQ29udHJvbCh0aGlzLnJvdXRlSW5wdXQudmFsdWUgfHwgJycsIHtcbiAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMuZm9yYmlkZGVuTmFtZVZhbGlkYXRvcigpXSxcbiAgICAgICAgYXN5bmNWYWxpZGF0b3JzOiBbdGhpcy5yb3V0ZVJlcGV0aXRpb25Bc3luY1ZhbGlkYXRvcigpXSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuICBmb3JiaWRkZW5OYW1lVmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGxldCBpbnB1dFZhbHVlID0gY29udHJvbC52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgbGV0IGZvcmJpZGRlbiA9XG4gICAgICAgIHRoaXMudHlwZUlucHV0LnZhbHVlID09IDAgPyBmYWxzZSA6IGlucHV0VmFsdWUuaW5jbHVkZXMoJ3tzbHVnfScpID8gZmFsc2UgOiB0cnVlO1xuICAgICAgcmV0dXJuIGZvcmJpZGRlblxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHJlcGV0aXRpb246IHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgYENtczo6Um91dGVWZXJpZmljYXRpb25UaXBzYCxcbiAgICAgICAgICAgICAgdGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgIGBDbXM6OkVudW06U2VjdGlvblR5cGU6YCArIFNlY3Rpb25UeXBlW3RoaXMudHlwZUlucHV0LnZhbHVlXVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAne3NsdWd9J1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbDtcbiAgICB9O1xuICB9XG4gIG5hbWVSZXBldGl0aW9uQXN5bmNWYWxpZGF0b3IoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGN0cmw6IEFic3RyYWN0Q29udHJvbFxuICAgICk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHwgT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gPT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICBsZXQgc3Vic2x1ZyA9IHRoaXMuY3JlYXRlT3JFZGl0Rm9ybT8uZ2V0KCduYW1lJyk7XG4gICAgICAgIGlmIChzdWJzbHVnLnZhbHVlID09IHRoaXMuc2VsZWN0ZWQ/Lm5hbWUpIHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9TZWN0aW9uQWRtaW5TZXJ2aWNlLm5hbWVFeGlzdHMoeyBuYW1lOiBzdWJzbHVnLnZhbHVlIH0pLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICByZXBldGl0aW9uOiB0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgYENtczo6U2VjdGlvbk5hbWV7MH1BbHJlYWR5RXhpc3RgLFxuICAgICAgICAgICAgICAgIGN0cmwudmFsdWVcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG4gIHJvdXRlUmVwZXRpdGlvbkFzeW5jVmFsaWRhdG9yKCkge1xuICAgIHJldHVybiAoXG4gICAgICBjdHJsOiBBYnN0cmFjdENvbnRyb2xcbiAgICApOiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiB8IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+ID0+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgbGV0IHN1YnNsdWcgPSB0aGlzLmNyZWF0ZU9yRWRpdEZvcm0/LmdldCgncm91dGUnKS52YWx1ZTtcbiAgICAgICAgaWYgKHN1YnNsdWcgPT0gdGhpcy5zZWxlY3RlZD8ucm91dGUpIHtcbiAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9TZWN0aW9uQWRtaW5TZXJ2aWNlLnJvdXRlRXhpc3RzKHsgcm91dGU6IHN1YnNsdWcgfSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgIHJlcGV0aXRpb246IHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICBgQ21zOjpTZWN0aW9uUm91dGV7MH1BbHJlYWR5RXhpc3RgLFxuICAgICAgICAgICAgICAgIGN0cmwudmFsdWVcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG59XG4iLCI8YWJwLXBhZ2UgW3RpdGxlXT1cIidDbXM6OlNlY3Rpb25zJyB8IGFicExvY2FsaXphdGlvblwiIFt0b29sYmFyXT1cInRydWVcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbnMtcGFnZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBcIiA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB4LTIgcHktc20tMiBib3JkZXItYm90dG9tXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTIgY29sLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6OklzQWN0aXZlJyB8IGFicExvY2FsaXphdGlvbn1977yaPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBjb2wtYXV0b1wiIFsobmdNb2RlbCldPVwiZmlsdGVycy5pc0FjdGl2ZVwiIChjaGFuZ2UpPVwic2l0ZUlkQ2hhbmdlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJcIj48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJ0cnVlXCI+5pivPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiZmFsc2VcIj7lkKY8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTIgY29sLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydBYnBVaTo6U2VhcmNoJyB8IGFicExvY2FsaXphdGlvbn1977yaPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJmaWx0ZXJzLmZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0FicFVpOjpTZWFyY2gnIHwgYWJwTG9jYWxpemF0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yIGNvbC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHB4LTNcIiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJidXR0b24tYWRkb24yXCIgKGNsaWNrKT1cImxpc3QuZ2V0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj4gXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG1iLTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgdGFibGUtZml4ZWQtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlIGNsYXNzPVwibWF0ZXJpYWwgXCIgW3Jvd3NdPVwiZGF0YS5pdGVtc1wiIFtsaXN0XT1cImxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbk1vZGVdPVwiQ29sdW1uTW9kZS5mb3JjZVwiIFtoZWFkZXJIZWlnaHRdPVwiNTBcIiBbZm9vdGVySGVpZ2h0XT1cIjUwXCIgcm93SGVpZ2h0PVwiYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmlydHVhbGl6YXRpb25dPVwiZmFsc2VcIiBbZXh0ZXJuYWxQYWdpbmddPVwidHJ1ZVwiIFtjb3VudF09XCJkYXRhLnRvdGFsQ291bnRcIiBbc2Nyb2xsYmFySF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW4gW25hbWVdPVwiJ0Ntczo6RGlzcGxheU5hbWUnIHwgYWJwTG9jYWxpemF0aW9uXCIgcHJvcD1cImRpc3BsYXlOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdmFsdWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiBbbmFtZV09XCInQ21zOjpOYW1lJyB8IGFicExvY2FsaXphdGlvblwiIHByb3A9XCJuYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdmFsdWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiBbbmFtZV09XCInQ21zOjpTZWN0aW9uVHlwZScgfCBhYnBMb2NhbGl6YXRpb25cIiBwcm9wPVwidHlwZVwiIFt3aWR0aF09XCI4MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KCdDbXM6OkVudW06U2VjdGlvblR5cGU6JytfU2VjdGlvblR5cGVbdmFsdWVdKSB8IGFicExvY2FsaXphdGlvbn19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW4gW25hbWVdPVwiJ0Ntczo6SXNEZWZhdWx0JyB8IGFicExvY2FsaXphdGlvblwiIHByb3A9XCJpc0RlZmF1bHRcIiBbd2lkdGhdPVwiNjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGVjayB0ZXh0LXN1Y2Nlc3NcIiAqbmdJZj1cInZhbHVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10aW1lcyB0ZXh0LWRhbmdlclwiICpuZ0lmPVwiIXZhbHVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uIFtuYW1lXT1cIidDbXM6OklzQWN0aXZlJyB8IGFicExvY2FsaXphdGlvblwiIHByb3A9XCJpc0FjdGl2ZVwiIFt3aWR0aF09XCI2MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrIHRleHQtc3VjY2Vzc1wiICpuZ0lmPVwidmFsdWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzIHRleHQtZGFuZ2VyXCIgKm5nSWY9XCIhdmFsdWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW4gW25hbWVdPVwiJ0Ntczo6RW50cnlUeXBlJyB8IGFicExvY2FsaXphdGlvblwiIHByb3A9XCJTaXRlSWRcIiBbd2lkdGhdPVwiMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93biBjb250YWluZXI9XCJib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlua1wiIG5nYkRyb3Bkb3duVG9nZ2xlIGlkPVwiZHJvcGRvd25CYXNpYzFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydDbXM6OkVudHJ5VHlwZScgfCBhYnBMb2NhbGl6YXRpb259fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudSBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bkJhc2ljMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygcm93LmVudHJ5VHlwZXM7bGV0IGkgPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBuZ2JEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiIFtyb3V0ZXJMaW5rXT1cIicvY21zL2FkbWluL3NlY3Rpb25zLycrcm93LmlkKycvZW50cnktdHlwZXMvJytpdGVtLmlkKycvZWRpdCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7aXRlbS5kaXNwbGF5TmFtZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gcC0wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2suc3RvcCk9XCJkZWxldGVFbnRyeVR5cGUoaXRlbSlcIj48aSBjbGFzcz1cImZhcyBmYS10cmFzaCBwLXNtLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDtcIiByb2xlPVwiYnV0dG9uXCI+PC9pPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBuZ2JEcm9wZG93bkl0ZW0gW3JvdXRlckxpbmtdPVwiJy9jbXMvYWRtaW4vc2VjdGlvbnMvJytyb3cuaWQrJy9lbnRyeS10eXBlcy9jcmVhdGUnXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmFzIGZhLXBsdXMtY2lyY2xlIG1lLTJcIj48L2k+e3snQ21zOjpOZXcnIHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJwTG9jYWxpemF0aW9ufX08L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uIFtuYW1lXT1cIidDbXM6OkNyZWF0aW9uVGltZScgfCBhYnBMb2NhbGl6YXRpb25cIiBwcm9wPVwiY3JlYXRpb25UaW1lXCIgW21pbldpZHRoXT1cIjE5MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHZhbHVlIHwgZGF0ZSA6ICd5eXl5L01NL2RkIGhoOm1tOnNzJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uIFtzb3J0YWJsZV09XCJmYWxzZVwiICBbbmFtZV09XCInQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uXCIgICBbZnJvemVuTGVmdF09XCJ0cnVlXCIgW3dpZHRoXT1cIjExMFwiIFttYXhXaWR0aF09XCIxMTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIG5nYkRyb3Bkb3duVG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWUtMSBmYSBmYS1jb2dcIj48L2k+IHt7J0FicFVpOjpBY3Rpb25zJyB8IGFicExvY2FsaXphdGlvbn19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJlZGl0U2VjdGlvbkJ0bihyb3cpXCI+e3snQWJwVWk6OkVkaXQnIHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZGVsZXRlZmllbGQocm93KVwiPnt7J0FicFVpOjpEZWxldGUnIHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9hYnAtcGFnZT5cbjxhYnAtbW9kYWwgWyh2aXNpYmxlKV09XCJ2aXNpYmxlT3BlblwiIFtidXN5XT1cIm1vZGFsQnVzeVwiICh2aXNpYmxlQ2hhbmdlKT1cIlZpc2libGVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxuICAgICAgICA8aDM+e3tzZWxlY3RlZD8oJ0FicFVpOjpFZGl0JyB8IGFicExvY2FsaXphdGlvbik6KCdDbXM6Ok5ldycgfCBhYnBMb2NhbGl6YXRpb24pfX08L2gzPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxuICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRlclJlZj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxpIGNsYXNzPVwiZmEgZmEtcHVsc2UgZmEtc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNyZWF0ZU9yRWRpdEZvcm07IGVsc2UgbG9hZGVyUmVmXCI+XG4gICAgICAgICAgICA8Zm9ybSBjbGFzcz1cInNpdGVzLW1vZGFsLWZvcm1cIiBbZm9ybUdyb3VwXT1cImNyZWF0ZU9yRWRpdEZvcm1cIiAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIFtjbGFzc109XCJ7J3dhcy12YWxpZGF0ZWQnOmZvcm1WYWxpZGF0aW9ufVwiICAoc3VibWl0KT1cImNyZWF0ZU9yRWRpdFNhdmUoKVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiICNjcmVhdGVPckVkaXRNb2RhbFN1Ym1pdEJ0biBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQ21zOjpFbnRyeVR5cGUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfc2VjdGlvblR5cGVPcHRpb25zO2xldCBpID1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwicmFkaW9cIiBbdmFsdWVdPVwiaXRlbS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInJhZGlvY2hhbmdlKClcIiBmb3JtQ29udHJvbE5hbWU9XCJ0eXBlXCIgaWQ9XCJmbGV4UmFkaW9EZWZhdWx0e3tpfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImZsZXhSYWRpb0RlZmF1bHR7e2l9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0Ntczo6RW51bTpTZWN0aW9uVHlwZTonK2l0ZW0ua2V5IHwgYWJwTG9jYWxpemF0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7J0Ntczo6RGlzcGxheU5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImRpc3BsYXlOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cImRpc1BsYXlOYW1lSW5wdXRCbHVyKCRldmVudClcIiBwbGFjZWhvbGRlcj1cIlwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7J0Ntczo6TmFtZScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIHBsYWNlaG9sZGVyPVwiXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGFuZ2VyIGludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cIm5hbWVJbnB1dC5lcnJvcnM/LnJlcGV0aXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bmFtZUlucHV0LmVycm9ycz8ucmVwZXRpdGlvbn19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6OlJvdXRlJyB8IGFicExvY2FsaXphdGlvbn19IDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwicm91dGVcIiBwbGFjZWhvbGRlcj1cIlwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWRhbmdlciBpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJyb3V0ZUlucHV0LmVycm9ycz8ucmVwZXRpdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tyb3V0ZUlucHV0LmVycm9ycz8ucmVwZXRpdGlvbn19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eydDbXM6OlJvdXRlVGlwcycgfCBhYnBMb2NhbGl6YXRpb259fTxicj5cbiAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwO2Jsb2c8YnI+XG4gICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDt7eydibG9nL3tzbHVnfSd9fTxicj5cbiAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwO3t7J2Jsb2cve3B1Ymxpc2hUaW1lOnl5eXl9L3twdWJsaXNoVGltZTpNTX0ve3NsdWd9J319XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6OlRlbXBsYXRlJyB8IGFicExvY2FsaXphdGlvbn19IDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwidGVtcGxhdGVcIiBwbGFjZWhvbGRlcj1cIlwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7XCJDbXM6OlRlbXBsYXRlVGlwc1wiIHwgYWJwTG9jYWxpemF0aW9ufX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cInRydWVcIiBmb3JtQ29udHJvbE5hbWU9XCJpc0RlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNEZWZhdWx0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJpc0RlZmF1bHRcIj4ge3snQ21zOjpEZWZhdWx0JyB8IGFicExvY2FsaXphdGlvbn19IDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNBY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaXNBY3RpdmVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImlzQWN0aXZlXCI+IHt7J0Ntczo6SXNBY3RpdmUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPnt7J0FicFVpOjpDbG9zZScgfCBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxuICAgICAgICA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIChjbGljayk9XCJjcmVhdGVPckVkaXRNb2RhbFN1Ym1pdEJ0bi5uYXRpdmVFbGVtZW50LmNsaWNrKClcIj57eydBYnBVaTo6U2F2ZScgfFxuICAgICAgICAgICAgYWJwTG9jYWxpemF0aW9ufX08L2FicC1idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvYWJwLW1vZGFsPiJdfQ==
@@ -0,0 +1,112 @@
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { EntryConfig } from './entry-config';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "../../../proxy/admin/sections";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "@abp/ng.core";
9
+ import * as i5 from "@ngx-validate/core";
10
+ export class EntryConfigComponent {
11
+ constructor(fb,
12
+ // private _SiteAdminService: SiteAdminService,
13
+ _SectionAdminService) {
14
+ this.fb = fb;
15
+ this._SectionAdminService = _SectionAdminService;
16
+ /**站点列表 */
17
+ this.siteList = [];
18
+ /**选择的站点id */
19
+ // siteId: string = ''
20
+ this.siteId = new FormControl('');
21
+ /**站点下的版块 */
22
+ this.SiteOfSectionList = [];
23
+ }
24
+ set type(v) {
25
+ if (v == this._type)
26
+ return;
27
+ this._type = v;
28
+ }
29
+ set Entity(v) {
30
+ this._Entity = v;
31
+ }
32
+ set selected(v) {
33
+ this._selected = v;
34
+ }
35
+ set culture(v) {
36
+ this._culture = v;
37
+ }
38
+ get formConfiguration() {
39
+ return this._Entity.get('formConfiguration');
40
+ }
41
+ ngAfterContentInit() {
42
+ //Called after ngOnInit when the component's or directive's content has been initialized.
43
+ //Add 'implements AfterContentInit' to the class.
44
+ this.dataLoaded(2);
45
+ }
46
+ async dataLoaded(val) {
47
+ if (this._Entity && this._type) {
48
+ await this.AfterInit();
49
+ this.submitclick.nativeElement.click();
50
+ }
51
+ }
52
+ AfterInit() {
53
+ return new Promise(async (resolve, rejects) => {
54
+ this._Entity.setControl('formConfiguration', this.fb.group(new EntryConfig()));
55
+ // await this.getsiteList()
56
+ await this.getSiteOfSectionList();
57
+ if (this._selected) {
58
+ this.formConfiguration.patchValue({
59
+ ...this._selected.formConfiguration
60
+ });
61
+ }
62
+ resolve(true);
63
+ });
64
+ }
65
+ /**获取站点列表 */
66
+ // getsiteList() {
67
+ // return new Promise((resolve, rejects) => {
68
+ // this._SiteAdminService.getList({}).subscribe(res => {
69
+ // this.siteList = res.items
70
+ // this.siteId = res.items[0]?.id || ''
71
+ // resolve(res.items)
72
+ // })
73
+ // })
74
+ // }
75
+ /**获取站点下的版块 */
76
+ getSiteOfSectionList() {
77
+ return new Promise((resolve, rejects) => {
78
+ this._SectionAdminService.getList({
79
+ maxResultCount: 1000,
80
+ // siteId: this.siteId
81
+ }).subscribe(res => {
82
+ this.SiteOfSectionList = res.items;
83
+ this.formConfiguration.patchValue({
84
+ 'Entry.SectionId': res.items[0]?.id || ''
85
+ });
86
+ resolve(res.items);
87
+ });
88
+ });
89
+ }
90
+ /**切换站点 */
91
+ async siteIdChange() {
92
+ await this.getSiteOfSectionList();
93
+ }
94
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: EntryConfigComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SectionAdminService }], target: i0.ɵɵFactoryTarget.Component }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: EntryConfigComponent, selector: "cms-entry-config", inputs: { type: "type", Entity: "Entity", selected: "selected", culture: "culture" }, viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }], ngImport: i0, template: "<!-- <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Sites' | abpLocalization}}</label>\n <select class=\"form-select col-auto\" [(ngModel)]=\"siteId\" (change)=\"siteIdChange()\">\n <ng-container *ngFor=\"let item of siteList\">\n <option [value]=\"item.id\">{{item.displayName}}</option>\n </ng-container>\n </select>\n</div> -->\n<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n \n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Sections' | abpLocalization}}</label>\n <select class=\"form-select col-auto\" formControlName=\"Entry.SectionId\">\n <ng-container *ngFor=\"let item of SiteOfSectionList\">\n <option [value]=\"item.id\">{{item.displayName}}</option>\n </ng-container>\n </select>\n </div>\n\n <div class=\"mb-2\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Entry.Multiple\" id=\"Multiple\">\n <label class=\"form-check-label\" for=\"Multiple\">\n {{'Cms::Multiple' | abpLocalization}}\n </label>\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Placeholder' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"Entry.Placeholder\">\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>", styles: [":ng-deep .ant-select:not(.ant-select-customize-input) .ant-select-selector{background-color:transparent!important;border:none!important}:ng-deep .ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector{border-color:transparent!important;box-shadow:none!important}.selectclassliveview{overflow:hidden}::ng-deep .ant-select:not(.ant-select-disabled):hover .ant-select-selector{border-color:transparent}::ng-deep .ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector{border-color:transparent;box-shadow:none}::ng-deep .ant-select:not(.ant-select-customize-input) .ant-select-selector{background:transparent;border:1px solid transparent}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i4.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { kind: "directive", type: i5.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i5.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }] }); }
96
+ }
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: EntryConfigComponent, decorators: [{
98
+ type: Component,
99
+ args: [{ selector: 'cms-entry-config', template: "<!-- <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Sites' | abpLocalization}}</label>\n <select class=\"form-select col-auto\" [(ngModel)]=\"siteId\" (change)=\"siteIdChange()\">\n <ng-container *ngFor=\"let item of siteList\">\n <option [value]=\"item.id\">{{item.displayName}}</option>\n </ng-container>\n </select>\n</div> -->\n<form [formGroup]=\"_Entity\">\n <div formGroupName=\"formConfiguration\">\n \n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Sections' | abpLocalization}}</label>\n <select class=\"form-select col-auto\" formControlName=\"Entry.SectionId\">\n <ng-container *ngFor=\"let item of SiteOfSectionList\">\n <option [value]=\"item.id\">{{item.displayName}}</option>\n </ng-container>\n </select>\n </div>\n\n <div class=\"mb-2\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"Entry.Multiple\" id=\"Multiple\">\n <label class=\"form-check-label\" for=\"Multiple\">\n {{'Cms::Multiple' | abpLocalization}}\n </label>\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\">{{'Cms::Placeholder' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"Entry.Placeholder\">\n </div>\n <button type=\"submit\" (abpInit)=\"submitclick?.nativeElement?.click()\" style=\"display: none;\"\n #submitclick></button>\n </div>\n</form>", styles: [":ng-deep .ant-select:not(.ant-select-customize-input) .ant-select-selector{background-color:transparent!important;border:none!important}:ng-deep .ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector{border-color:transparent!important;box-shadow:none!important}.selectclassliveview{overflow:hidden}::ng-deep .ant-select:not(.ant-select-disabled):hover .ant-select-selector{border-color:transparent}::ng-deep .ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector{border-color:transparent;box-shadow:none}::ng-deep .ant-select:not(.ant-select-customize-input) .ant-select-selector{background:transparent;border:1px solid transparent}\n"] }]
100
+ }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.SectionAdminService }], propDecorators: { type: [{
101
+ type: Input
102
+ }], Entity: [{
103
+ type: Input
104
+ }], selected: [{
105
+ type: Input
106
+ }], culture: [{
107
+ type: Input
108
+ }], submitclick: [{
109
+ type: ViewChild,
110
+ args: ['submitclick', { static: true }]
111
+ }] } });
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnktY29uZmlnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2VudHJ5L2VudHJ5LWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9lbnRyeS9lbnRyeS1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQWMsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQWUsV0FBVyxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBTzdDLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDVSxFQUFlO0lBQ3ZCLCtDQUErQztJQUN2QyxvQkFBeUM7UUFGekMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUVmLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFrQ25ELFVBQVU7UUFDVixhQUFRLEdBQWEsRUFBRSxDQUFBO1FBRXZCLGFBQWE7UUFDYixzQkFBc0I7UUFDdEIsV0FBTSxHQUFRLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ2pDLFlBQVk7UUFDWixzQkFBaUIsR0FBYSxFQUFFLENBQUE7SUF2Q2hDLENBQUM7SUFHRCxJQUNXLElBQUksQ0FBQyxDQUFNO1FBQ3BCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTTtRQUUzQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQTtJQUNoQixDQUFDO0lBR0QsSUFDVyxNQUFNLENBQUMsQ0FBWTtRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFH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T3NDLFdBQVc7c0JBQXRELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVudHJ5Q29uZmlnIH0gZnJvbSAnLi9lbnRyeS1jb25maWcnO1xuaW1wb3J0IHsgU2VjdGlvbkFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2FkbWluL3NlY3Rpb25zJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Ntcy1lbnRyeS1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW50cnktY29uZmlnLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW50cnktY29uZmlnLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRW50cnlDb25maWdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0e1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICAvLyBwcml2YXRlIF9TaXRlQWRtaW5TZXJ2aWNlOiBTaXRlQWRtaW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgX1NlY3Rpb25BZG1pblNlcnZpY2U6IFNlY3Rpb25BZG1pblNlcnZpY2UsXG4gICkge1xuICB9XG4gIC8qKuihqOWNleaOp+S7tuexu+WeiyAqL1xuICBfdHlwZTogYW55XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdHlwZSh2OiBhbnkpIHtcbiAgICBpZiAodiA9PSB0aGlzLl90eXBlKSByZXR1cm5cblxuICAgIHRoaXMuX3R5cGUgPSB2XG4gIH1cbiAgLyoq6KGo5Y2V5a6e5L2TICovXG4gIF9FbnRpdHk6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZFxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IEVudGl0eSh2OiBGb3JtR3JvdXApIHtcbiAgICB0aGlzLl9FbnRpdHkgPSB2O1xuICB9XG4gIC8qKumAieaLqeeahOihqOWNleS/oeaBryAqL1xuICBfc2VsZWN0ZWQ6IGFueVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkKHY6IGFueSkge1xuICAgIHRoaXMuX3NlbGVjdGVkID0gdlxuICB9XG4gIC8qKuivreiogCAqL1xuICBfY3VsdHVyZTogYW55XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY3VsdHVyZSh2OiBhbnkpIHtcbiAgICB0aGlzLl9jdWx0dXJlID0gdlxuICB9XG4gIGdldCBmb3JtQ29uZmlndXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fRW50aXR5LmdldCgnZm9ybUNvbmZpZ3VyYXRpb24nKSBhcyBGb3JtR3JvdXBcbiAgfVxuICBAVmlld0NoaWxkKCdzdWJtaXRjbGljaycsIHsgc3RhdGljOiB0cnVlIH0pIHN1Ym1pdGNsaWNrOiBFbGVtZW50UmVmO1xuXG4gIC8qKuermeeCueWIl+ihqCAqL1xuICBzaXRlTGlzdDogYW55W2FueV0gPSBbXVxuXG4gIC8qKumAieaLqeeahOermeeCuWlkICovXG4gIC8vIHNpdGVJZDogc3RyaW5nID0gJydcbiAgc2l0ZUlkOiBhbnkgPSBuZXcgRm9ybUNvbnRyb2woJycpXG4gIC8qKuermeeCueS4i+eahOeJiOWdlyAqL1xuICBTaXRlT2ZTZWN0aW9uTGlzdDogYW55W2FueV0gPSBbXVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvL0NhbGxlZCBhZnRlciBuZ09uSW5pdCB3aGVuIHRoZSBjb21wb25lbnQncyBvciBkaXJlY3RpdmUncyBjb250ZW50IGhhcyBiZWVuIGluaXRpYWxpemVkLlxuICAgIC8vQWRkICdpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQnIHRvIHRoZSBjbGFzcy5cbiAgICB0aGlzLmRhdGFMb2FkZWQoMilcbiAgfVxuXG4gIGFzeW5jIGRhdGFMb2FkZWQodmFsKSB7XG4gICAgaWYgKHRoaXMuX0VudGl0eSAmJiB0aGlzLl90eXBlKSB7XG4gICAgICBhd2FpdCB0aGlzLkFmdGVySW5pdCgpXG4gICAgICB0aGlzLnN1Ym1pdGNsaWNrLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBBZnRlckluaXQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9FbnRpdHkuc2V0Q29udHJvbCgnZm9ybUNvbmZpZ3VyYXRpb24nLCB0aGlzLmZiLmdyb3VwKG5ldyBFbnRyeUNvbmZpZygpKSlcbiAgICAgIC8vIGF3YWl0IHRoaXMuZ2V0c2l0ZUxpc3QoKVxuICAgICAgYXdhaXQgdGhpcy5nZXRTaXRlT2ZTZWN0aW9uTGlzdCgpXG4gICAgICBpZiAodGhpcy5fc2VsZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29uZmlndXJhdGlvbi5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAuLi50aGlzLl9zZWxlY3RlZC5mb3JtQ29uZmlndXJhdGlvblxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgIH0pXG4gIH1cblxuICAvKirojrflj5bnq5nngrnliJfooaggKi9cbiAgLy8gZ2V0c2l0ZUxpc3QoKSB7XG4gIC8vICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gIC8vICAgICB0aGlzLl9TaXRlQWRtaW5TZXJ2aWNlLmdldExpc3Qoe30pLnN1YnNjcmliZShyZXMgPT4ge1xuICAvLyAgICAgICB0aGlzLnNpdGVMaXN0ID0gcmVzLml0ZW1zXG4gIC8vICAgICAgIHRoaXMuc2l0ZUlkID0gcmVzLml0ZW1zWzBdPy5pZCB8fCAnJ1xuICAvLyAgICAgICByZXNvbHZlKHJlcy5pdGVtcylcbiAgLy8gICAgIH0pXG4gIC8vICAgfSlcbiAgLy8gfVxuICAvKirojrflj5bnq5nngrnkuIvnmoTniYjlnZcgKi9cbiAgZ2V0U2l0ZU9mU2VjdGlvbkxpc3QoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9TZWN0aW9uQWRtaW5TZXJ2aWNlLmdldExpc3Qoe1xuICAgICAgICBtYXhSZXN1bHRDb3VudDogMTAwMCxcbiAgICAgICAgLy8gc2l0ZUlkOiB0aGlzLnNpdGVJZFxuICAgICAgfSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuU2l0ZU9mU2VjdGlvbkxpc3QgPSByZXMuaXRlbXNcbiAgICAgICAgdGhpcy5mb3JtQ29uZmlndXJhdGlvbi5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAnRW50cnkuU2VjdGlvbklkJzogcmVzLml0ZW1zWzBdPy5pZCB8fCAnJ1xuICAgICAgICB9KVxuICAgICAgICByZXNvbHZlKHJlcy5pdGVtcylcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKuWIh+aNouermeeCuSAqL1xuICBhc3luYyBzaXRlSWRDaGFuZ2UoKSB7XG4gICAgYXdhaXQgdGhpcy5nZXRTaXRlT2ZTZWN0aW9uTGlzdCgpXG4gIH1cbn1cbiIsIjwhLS0gPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQ21zOjpTaXRlcycgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IGNvbC1hdXRvXCIgIFsobmdNb2RlbCldPVwic2l0ZUlkXCIgKGNoYW5nZSk9XCJzaXRlSWRDaGFuZ2UoKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNpdGVMaXN0XCI+XG4gICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkXCI+e3tpdGVtLmRpc3BsYXlOYW1lfX08L29wdGlvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9zZWxlY3Q+XG48L2Rpdj4gLS0+XG48Zm9ybSBbZm9ybUdyb3VwXT1cIl9FbnRpdHlcIj5cbiAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9XCJmb3JtQ29uZmlndXJhdGlvblwiPlxuICAgICAgICBcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6OlNlY3Rpb25zJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBjb2wtYXV0b1wiIGZvcm1Db250cm9sTmFtZT1cIkVudHJ5LlNlY3Rpb25JZFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgU2l0ZU9mU2VjdGlvbkxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS5pZFwiPnt7aXRlbS5kaXNwbGF5TmFtZX19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIGZvcm1Db250cm9sTmFtZT1cIkVudHJ5Lk11bHRpcGxlXCIgaWQ9XCJNdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJNdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eydDbXM6Ok11bHRpcGxlJyB8IGFicExvY2FsaXphdGlvbn19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydDbXM6OlBsYWNlaG9sZGVyJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiRW50cnkuUGxhY2Vob2xkZXJcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIChhYnBJbml0KT1cInN1Ym1pdGNsaWNrPy5uYXRpdmVFbGVtZW50Py5jbGljaygpXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiXG4gICAgICAgICAgICAjc3VibWl0Y2xpY2s+PC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Zvcm0+Il19