simpo-component-library 3.5.46 → 3.6.2

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 (278) hide show
  1. package/esm2022/lib/components/delete-hover-element/delete-hover-element.component.mjs +4 -4
  2. package/esm2022/lib/components/document/document.component.mjs +4 -4
  3. package/esm2022/lib/components/hover-elements/hover-elements.component.mjs +5 -5
  4. package/esm2022/lib/components/image-loading/image-loading.component.mjs +5 -5
  5. package/esm2022/lib/components/index.mjs +5 -5
  6. package/esm2022/lib/components/input-fields/input-fields.component.mjs +4 -4
  7. package/esm2022/lib/components/payment-details/payment-details.component.mjs +103 -18
  8. package/esm2022/lib/components/trasport-availability/trasport-availability.component.mjs +36 -0
  9. package/esm2022/lib/directive/alignment.directive.mjs +23 -0
  10. package/esm2022/lib/directive/animation-directive.mjs +4 -4
  11. package/esm2022/lib/directive/background-directive.mjs +133 -8
  12. package/esm2022/lib/directive/banner-content-fit-directive.mjs +4 -4
  13. package/esm2022/lib/directive/blur-content.directive.mjs +4 -4
  14. package/esm2022/lib/directive/border-directive.mjs +5 -5
  15. package/esm2022/lib/directive/borderlessImage.directive.mjs +7 -4
  16. package/esm2022/lib/directive/button-directive.directive.mjs +74 -19
  17. package/esm2022/lib/directive/button-editor.directive.mjs +24 -6
  18. package/esm2022/lib/directive/color.directive.mjs +4 -4
  19. package/esm2022/lib/directive/column-directive.directive.mjs +4 -4
  20. package/esm2022/lib/directive/container-alignment.directive.mjs +4 -4
  21. package/esm2022/lib/directive/container-fir.directive.mjs +4 -4
  22. package/esm2022/lib/directive/content-alignment-directive.mjs +4 -4
  23. package/esm2022/lib/directive/content-fit-directive.mjs +4 -4
  24. package/esm2022/lib/directive/content-title-spacing.directive.mjs +7 -7
  25. package/esm2022/lib/directive/contenteditable.directive.mjs +4 -4
  26. package/esm2022/lib/directive/corner-directive.mjs +4 -4
  27. package/esm2022/lib/directive/footer-layout-directive.mjs +4 -4
  28. package/esm2022/lib/directive/height.directive.mjs +29 -0
  29. package/esm2022/lib/directive/hover-animation.directive.mjs +14 -5
  30. package/esm2022/lib/directive/hover-element-directive.mjs +4 -4
  31. package/esm2022/lib/directive/hoverborder.directive.mjs +4 -4
  32. package/esm2022/lib/directive/image-container.directive.mjs +4 -4
  33. package/esm2022/lib/directive/image-directive.directive.mjs +4 -4
  34. package/esm2022/lib/directive/image-editor.directive.mjs +27 -7
  35. package/esm2022/lib/directive/image-position.directive.mjs +4 -4
  36. package/esm2022/lib/directive/overlay-directive.mjs +4 -4
  37. package/esm2022/lib/directive/position-layout-directive.directive.mjs +4 -4
  38. package/esm2022/lib/directive/removeCarousel-directive.mjs +4 -4
  39. package/esm2022/lib/directive/set-dynamic-background.directive.mjs +66 -0
  40. package/esm2022/lib/directive/spacing-around.directive.mjs +42 -5
  41. package/esm2022/lib/directive/spacing-horizontal.directive.mjs +8 -4
  42. package/esm2022/lib/directive/spacing.directive.mjs +29 -0
  43. package/esm2022/lib/directive/sticky-directive.mjs +5 -5
  44. package/esm2022/lib/directive/text-background-directive.directive.mjs +4 -4
  45. package/esm2022/lib/directive/text-size.directive.mjs +4 -4
  46. package/esm2022/lib/directive/translate-onhover.directive.mjs +47 -0
  47. package/esm2022/lib/directive/wrap-containers.directive.mjs +4 -4
  48. package/esm2022/lib/ecommerce/sections/address/address.component.mjs +97 -60
  49. package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +5 -5
  50. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +129 -15
  51. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.component.mjs +199 -0
  52. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.model.mjs +2 -0
  53. package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +216 -40
  54. package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +5 -5
  55. package/esm2022/lib/ecommerce/sections/checkout/checkout.component.mjs +5 -5
  56. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.component.mjs +5 -5
  57. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.component.mjs +405 -0
  58. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.model.mjs +2 -0
  59. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +8 -6
  60. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.modal.mjs +1 -1
  61. package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +9 -7
  62. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +44 -9
  63. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.modal.mjs +1 -1
  64. package/esm2022/lib/ecommerce/sections/item-varient/item-varient.component.mjs +4 -4
  65. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.component.mjs +144 -0
  66. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.modal.mjs +2 -0
  67. package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +100 -12
  68. package/esm2022/lib/ecommerce/sections/pagnination/pagnination.component.mjs +4 -4
  69. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs +4 -4
  70. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +390 -17
  71. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.modal.mjs +1 -1
  72. package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +627 -143
  73. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +95 -0
  74. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.model.mjs +2 -0
  75. package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +57 -0
  76. package/esm2022/lib/ecommerce/sections/scheme-selection/scheme-selection.component.mjs +36 -0
  77. package/esm2022/lib/ecommerce/sections/small-product-listing/small-product-listing.component.mjs +51 -6
  78. package/esm2022/lib/ecommerce/sections/store-list/store-list.component.mjs +157 -0
  79. package/esm2022/lib/ecommerce/sections/store-list/store-list.modal.mjs +2 -0
  80. package/esm2022/lib/ecommerce/sections/store-page/store-page.component.mjs +120 -0
  81. package/esm2022/lib/ecommerce/sections/store-page/store-page.model.mjs +2 -0
  82. package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +7 -6
  83. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +67 -17
  84. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +4 -4
  85. package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +18 -13
  86. package/esm2022/lib/ecommerce/styles/Collection.modal.mjs +5 -3
  87. package/esm2022/lib/ecommerce/styles/product.modal.mjs +22 -1
  88. package/esm2022/lib/ecommerce/styles/user.modal.mjs +3 -1
  89. package/esm2022/lib/elements/add-section/add-section.component.mjs +5 -6
  90. package/esm2022/lib/elements/address-list/address-list.component.mjs +98 -0
  91. package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +15 -10
  92. package/esm2022/lib/elements/button/button.component.mjs +4 -4
  93. package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +5 -5
  94. package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +10 -6
  95. package/esm2022/lib/elements/editor-service.service.mjs +34 -5
  96. package/esm2022/lib/elements/heading-element/heading-element.component.mjs +4 -4
  97. package/esm2022/lib/elements/image-editor/image-editor.component.mjs +148 -16
  98. package/esm2022/lib/elements/index.mjs +5 -5
  99. package/esm2022/lib/elements/link-editor/link-editor.component.mjs +109 -11
  100. package/esm2022/lib/elements/list-home-appointment/list-home-appointment.component.mjs +94 -0
  101. package/esm2022/lib/elements/media-selector/media-selector.component.mjs +4 -4
  102. package/esm2022/lib/elements/navbar-button-element/navbar-button-element.component.mjs +4 -5
  103. package/esm2022/lib/elements/portfolio/portfolio.component.mjs +4 -4
  104. package/esm2022/lib/elements/pricing-s1/pricing-s1.component.mjs +80 -0
  105. package/esm2022/lib/elements/property/property.component.mjs +4 -4
  106. package/esm2022/lib/elements/schedule-video-call/schedule-video-call.component.mjs +187 -0
  107. package/esm2022/lib/elements/simpo-button/simpo-button.component.mjs +5 -5
  108. package/esm2022/lib/elements/socia-icons/socia-icons.component.mjs +4 -4
  109. package/esm2022/lib/elements/svg-divider/svg-divider.component.mjs +4 -4
  110. package/esm2022/lib/elements/text/text.component.mjs +4 -4
  111. package/esm2022/lib/elements/text-editor/text-editor.component.mjs +74 -29
  112. package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +5 -5
  113. package/esm2022/lib/pipes/amount.pipe.mjs +4 -4
  114. package/esm2022/lib/pipes/gender.pipe.mjs +8 -4
  115. package/esm2022/lib/sections/add-new-section/add-new-section.component.mjs +5 -5
  116. package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +166 -100
  117. package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +8 -34
  118. package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +54 -19
  119. package/esm2022/lib/sections/banner-section/banner-section.component.mjs +8 -27
  120. package/esm2022/lib/sections/blog-list/blog-list.component.mjs +4 -4
  121. package/esm2022/lib/sections/carousel-banner/carousel-banner.component.mjs +10 -9
  122. package/esm2022/lib/sections/carousel-banner/carousel-banner.model.mjs +1 -1
  123. package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +8 -6
  124. package/esm2022/lib/sections/contact-us/contact-us.component.mjs +39 -9
  125. package/esm2022/lib/sections/contact-us/contact-us.modal.mjs +1 -1
  126. package/esm2022/lib/sections/faq-section/faq-section.component.mjs +6 -6
  127. package/esm2022/lib/sections/features-section/features-section.component.mjs +8 -6
  128. package/esm2022/lib/sections/features-section/features-section.model.mjs +1 -1
  129. package/esm2022/lib/sections/footer/footer.component.mjs +8 -11
  130. package/esm2022/lib/sections/footer-section/footer-section.component.mjs +4 -4
  131. package/esm2022/lib/sections/header-section/header-section.component.mjs +93 -14
  132. package/esm2022/lib/sections/header-section/header-section.model.mjs +1 -1
  133. package/esm2022/lib/sections/header-text/header-text.component.mjs +5 -5
  134. package/esm2022/lib/sections/header-text/header-text.model.mjs +1 -1
  135. package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +14 -24
  136. package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +11 -6
  137. package/esm2022/lib/sections/image-grid-section/image-grid-section.model.mjs +1 -1
  138. package/esm2022/lib/sections/image-section/image-section.component.mjs +14 -7
  139. package/esm2022/lib/sections/location-section/location-section.component.mjs +4 -4
  140. package/esm2022/lib/sections/logo-gallery/logo-gallery.component.mjs +11 -6
  141. package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +11 -5
  142. package/esm2022/lib/sections/logo-showcase/logo-showcase.modal.mjs +1 -1
  143. package/esm2022/lib/sections/moving-text/moving-text.component.mjs +61 -52
  144. package/esm2022/lib/sections/navbar-section/navbar-section.component.mjs +4 -4
  145. package/esm2022/lib/sections/new-services/new-services.component.mjs +6 -6
  146. package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +14 -8
  147. package/esm2022/lib/sections/news-letter-component/news-letter-component.component.mjs +108 -0
  148. package/esm2022/lib/sections/news-letter-component/news-letter.modal.mjs +2 -0
  149. package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +30 -6
  150. package/esm2022/lib/sections/pricing-section/pricing-section.modal.mjs +1 -1
  151. package/esm2022/lib/sections/process-modern/process-modern.component.mjs +14 -6
  152. package/esm2022/lib/sections/process-section/process-section.component.mjs +8 -5
  153. package/esm2022/lib/sections/process-section/process-section.modal.mjs +1 -1
  154. package/esm2022/lib/sections/property-component/property-component.component.mjs +4 -4
  155. package/esm2022/lib/sections/property-list/property-list.component.mjs +4 -4
  156. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +8 -6
  157. package/esm2022/lib/sections/registration-form/registration-form.component.mjs +27 -12
  158. package/esm2022/lib/sections/service-section/service-section.component.mjs +6 -6
  159. package/esm2022/lib/sections/service-section/service-section.model.mjs +1 -1
  160. package/esm2022/lib/sections/skeleton-loader-section/skeleton-loader-section.component.mjs +4 -4
  161. package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +4 -4
  162. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +8 -5
  163. package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +20 -5
  164. package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +4 -4
  165. package/esm2022/lib/sections/text-image-section/text-image-section.component.mjs +5 -19
  166. package/esm2022/lib/sections/text-section/text-section.component.mjs +5 -23
  167. package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +4 -4
  168. package/esm2022/lib/sections/video-section/video-section.component.mjs +18 -18
  169. package/esm2022/lib/sections/video-section/video-section.model.mjs +1 -1
  170. package/esm2022/lib/sections/view-blog/view-blog.component.mjs +4 -4
  171. package/esm2022/lib/services/cart.service.mjs +41 -38
  172. package/esm2022/lib/services/endUser.service.mjs +4 -4
  173. package/esm2022/lib/services/events.service.mjs +5 -11
  174. package/esm2022/lib/services/image-upload-service.service.mjs +10 -7
  175. package/esm2022/lib/services/rest.service.mjs +127 -70
  176. package/esm2022/lib/services/sanitizeHtml.mjs +4 -4
  177. package/esm2022/lib/services/storage.service.mjs +30 -47
  178. package/esm2022/lib/styles/index.mjs +2 -1
  179. package/esm2022/lib/styles/style.model.mjs +3 -2
  180. package/esm2022/lib/styles/types.mjs +1 -1
  181. package/esm2022/public-api.mjs +12 -1
  182. package/fesm2022/simpo-component-library.mjs +6122 -2119
  183. package/fesm2022/simpo-component-library.mjs.map +1 -1
  184. package/lib/components/payment-details/payment-details.component.d.ts +6 -0
  185. package/lib/components/trasport-availability/trasport-availability.component.d.ts +14 -0
  186. package/lib/directive/alignment.directive.d.ts +11 -0
  187. package/lib/directive/background-directive.d.ts +1 -1
  188. package/lib/directive/button-directive.directive.d.ts +3 -1
  189. package/lib/directive/button-editor.directive.d.ts +6 -2
  190. package/lib/directive/color.directive.d.ts +1 -1
  191. package/lib/directive/height.directive.d.ts +11 -0
  192. package/lib/directive/image-editor.directive.d.ts +6 -1
  193. package/lib/directive/set-dynamic-background.directive.d.ts +14 -0
  194. package/lib/directive/spacing-around.directive.d.ts +7 -2
  195. package/lib/directive/spacing.directive.d.ts +12 -0
  196. package/lib/directive/translate-onhover.directive.d.ts +11 -0
  197. package/lib/ecommerce/sections/address/address.component.d.ts +11 -3
  198. package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +23 -5
  199. package/lib/ecommerce/sections/book-appointment/book-appointment.component.d.ts +70 -0
  200. package/lib/ecommerce/sections/book-appointment/book-appointment.model.d.ts +14 -0
  201. package/lib/ecommerce/sections/cart/cart.component.d.ts +35 -3
  202. package/lib/ecommerce/sections/enrollment-form/enrollment-form.component.d.ts +54 -0
  203. package/lib/ecommerce/sections/enrollment-form/enrollment-form.model.d.ts +29 -0
  204. package/lib/ecommerce/sections/featured-category/featured-category.modal.d.ts +2 -0
  205. package/lib/ecommerce/sections/featured-products/featured-products.component.d.ts +6 -1
  206. package/lib/ecommerce/sections/featured-products/featured-products.modal.d.ts +6 -2
  207. package/lib/ecommerce/sections/new-collection/new-collection.component.d.ts +36 -0
  208. package/lib/ecommerce/sections/new-collection/new-collection.modal.d.ts +23 -0
  209. package/lib/ecommerce/sections/order-details/order-details.component.d.ts +18 -1
  210. package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +61 -2
  211. package/lib/ecommerce/sections/product-desc/product-desc.modal.d.ts +5 -0
  212. package/lib/ecommerce/sections/product-list/product-list.component.d.ts +110 -17
  213. package/lib/ecommerce/sections/returns-calculator/returns-calculator.component.d.ts +31 -0
  214. package/lib/ecommerce/sections/returns-calculator/returns-calculator.model.d.ts +14 -0
  215. package/lib/ecommerce/sections/scheme-details/scheme-details.component.d.ts +16 -0
  216. package/lib/ecommerce/sections/scheme-selection/scheme-selection.component.d.ts +18 -0
  217. package/lib/ecommerce/sections/small-product-listing/small-product-listing.component.d.ts +6 -1
  218. package/lib/ecommerce/sections/store-list/store-list.component.d.ts +43 -0
  219. package/lib/ecommerce/sections/store-list/store-list.modal.d.ts +11 -0
  220. package/lib/ecommerce/sections/store-page/store-page.component.d.ts +27 -0
  221. package/lib/ecommerce/sections/store-page/store-page.model.d.ts +11 -0
  222. package/lib/ecommerce/sections/user-profile/user-profile.component.d.ts +10 -1
  223. package/lib/ecommerce/sections/whislist/whislist.component.d.ts +4 -1
  224. package/lib/ecommerce/styles/Collection.modal.d.ts +1 -0
  225. package/lib/ecommerce/styles/product.modal.d.ts +19 -0
  226. package/lib/ecommerce/styles/user.modal.d.ts +3 -0
  227. package/lib/elements/address-list/address-list.component.d.ts +27 -0
  228. package/lib/elements/below-image-card/below-image-card.component.d.ts +3 -0
  229. package/lib/elements/covering-image-card/covering-image-card.component.d.ts +3 -0
  230. package/lib/elements/editor-service.service.d.ts +4 -0
  231. package/lib/elements/image-editor/image-editor.component.d.ts +29 -3
  232. package/lib/elements/link-editor/link-editor.component.d.ts +13 -1
  233. package/lib/elements/list-home-appointment/list-home-appointment.component.d.ts +27 -0
  234. package/lib/elements/pricing-s1/pricing-s1.component.d.ts +21 -0
  235. package/lib/elements/schedule-video-call/schedule-video-call.component.d.ts +33 -0
  236. package/lib/elements/text-editor/text-editor.component.d.ts +3 -0
  237. package/lib/sections/appointment-form/appointment-form.component.d.ts +11 -4
  238. package/lib/sections/banner-grid-section/banner-grid-section.component.d.ts +8 -1
  239. package/lib/sections/carousel-banner/carousel-banner.model.d.ts +1 -0
  240. package/lib/sections/contact-us/contact-us.component.d.ts +2 -1
  241. package/lib/sections/contact-us/contact-us.modal.d.ts +5 -1
  242. package/lib/sections/features-section/features-section.model.d.ts +2 -0
  243. package/lib/sections/header-section/header-section.component.d.ts +27 -2
  244. package/lib/sections/header-section/header-section.model.d.ts +5 -1
  245. package/lib/sections/header-text/header-text.model.d.ts +2 -1
  246. package/lib/sections/image-carousel-section/image-carousel-section.component.d.ts +2 -1
  247. package/lib/sections/image-grid-section/image-grid-section.component.d.ts +1 -0
  248. package/lib/sections/image-grid-section/image-grid-section.model.d.ts +3 -1
  249. package/lib/sections/image-section/image-section.component.d.ts +2 -1
  250. package/lib/sections/logo-gallery/logo-gallery.component.d.ts +2 -1
  251. package/lib/sections/logo-showcase/logo-showcase.component.d.ts +3 -1
  252. package/lib/sections/logo-showcase/logo-showcase.modal.d.ts +11 -2
  253. package/lib/sections/moving-text/moving-text.component.d.ts +11 -9
  254. package/lib/sections/new-testimonials/new-testimonials.component.d.ts +2 -1
  255. package/lib/sections/news-letter-component/news-letter-component.component.d.ts +26 -0
  256. package/lib/sections/news-letter-component/news-letter.modal.d.ts +19 -0
  257. package/lib/sections/pricing-section/pricing-section.component.d.ts +3 -1
  258. package/lib/sections/pricing-section/pricing-section.modal.d.ts +3 -0
  259. package/lib/sections/process-modern/process-modern.component.d.ts +2 -0
  260. package/lib/sections/process-section/process-section.component.d.ts +1 -0
  261. package/lib/sections/process-section/process-section.modal.d.ts +2 -0
  262. package/lib/sections/service-section/service-section.model.d.ts +2 -0
  263. package/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.d.ts +1 -0
  264. package/lib/sections/testimonial-section/testimonial-section.component.d.ts +1 -0
  265. package/lib/sections/video-section/video-section.component.d.ts +4 -3
  266. package/lib/sections/video-section/video-section.model.d.ts +1 -1
  267. package/lib/services/cart.service.d.ts +1 -6
  268. package/lib/services/events.service.d.ts +1 -6
  269. package/lib/services/rest.service.d.ts +29 -18
  270. package/lib/services/storage.service.d.ts +6 -5
  271. package/lib/styles/index.d.ts +2 -1
  272. package/lib/styles/style.model.d.ts +11 -1
  273. package/lib/styles/types.d.ts +10 -3
  274. package/package.json +1 -1
  275. package/public-api.d.ts +11 -0
  276. package/simpo-component-library-3.6.2.tgz +0 -0
  277. package/src/lib/styles/global-styles.css +61 -1
  278. package/simpo-component-library-3.5.46.tgz +0 -0
@@ -2,7 +2,6 @@ import { Component, HostListener, Input } from '@angular/core';
2
2
  import { ColorDirective } from '../../directive/color.directive';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { SociaIconsComponent } from './../../elements/socia-icons/socia-icons.component';
5
- import { SanitizeHtmlPipe } from '../../services/sanitizeHtml';
6
5
  import { FormsModule } from '@angular/forms';
7
6
  import { BackgroundDirective } from '../../directive/background-directive';
8
7
  import { SpacingHorizontalDirective } from '../../directive/spacing-horizontal.directive';
@@ -59,11 +58,10 @@ export class FooterComponent extends BaseSection {
59
58
  }
60
59
  }
61
60
  editLinks() {
62
- console.log('Link Edit Successfully');
63
61
  }
64
62
  redirectTo(link) {
65
63
  if (this.edit) {
66
- this.matDialog.open(LinkEditorComponent, { panelClass: 'link-editor', data: { linkData: link } });
64
+ this.matDialog.open(LinkEditorComponent, { panelClass: 'link-editor', data: { linkData: link, type: "LINK" } });
67
65
  }
68
66
  else
69
67
  this._eventService.buttonRedirection.emit({ data: link });
@@ -83,7 +81,7 @@ export class FooterComponent extends BaseSection {
83
81
  this._eventService.pageRedirectionButton.emit({ data: data });
84
82
  }
85
83
  createNewLink(folderIndex) {
86
- const editorComponent = this.matDialog.open(LinkEditorComponent, { panelClass: 'link-editor' });
84
+ const editorComponent = this.matDialog.open(LinkEditorComponent, { panelClass: 'link-editor', data: { type: "LINK" } });
87
85
  this.linkEditorSubscription = editorComponent.afterClosed().subscribe((res) => {
88
86
  if (res.link) {
89
87
  this.content?.folder[folderIndex].links.push(res.link);
@@ -91,7 +89,7 @@ export class FooterComponent extends BaseSection {
91
89
  });
92
90
  }
93
91
  createNewFolder() {
94
- const editorComponent = this.matDialog.open(LinkEditorComponent, { panelClass: 'link-editor' });
92
+ const editorComponent = this.matDialog.open(LinkEditorComponent, { panelClass: 'link-editor', data: { type: "LINK" } });
95
93
  editorComponent.afterClosed().subscribe((res) => {
96
94
  if (res.link) {
97
95
  let folder = {
@@ -104,19 +102,18 @@ export class FooterComponent extends BaseSection {
104
102
  }
105
103
  });
106
104
  }
107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: FooterComponent, deps: [{ token: i1.EventsService }, { token: i2.RestService }, { token: i3.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
108
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: FooterComponent, isStandalone: true, selector: "simpo-footer", inputs: { data: "data", index: "index", edit: "edit", delete: "delete" }, host: { listeners: { "window:resize": "getScreenSize($event)" } }, usesInheritance: true, ngImport: i0, template: "<section class=\"total-container\" simpoHover\r\n(hovering)=\"showEditTabs($event)\"[spacingHorizontal]=\"stylesLayout\" [simpoBackground]=\"style?.background\" [simpoLayout]=\"style?.layout\" [id]=\"data?.id\">\r\n <div>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer1'\">\r\n <ng-container *ngTemplateOutlet=\"Footer1\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer2'\">\r\n <ng-container *ngTemplateOutlet=\"Footer2\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer3'\">\r\n <ng-container *ngTemplateOutlet=\"Footer3\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer4'\">\r\n <ng-container *ngTemplateOutlet=\"Footer4\"></ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n\r\n</section>\r\n\r\n<ng-template #Footer1>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-4\">\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"descSection\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth > 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <div class=\"row\">\r\n <ng-container *ngTemplateOutlet=\"foldersVertical\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth < 475\" class=\"d-flex justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <hr *ngIf=\"content?.displayBranding\">\r\n <div *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #Footer2>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-3\">\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"descSection\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth > 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <div class=\"row\">\r\n <ng-container *ngTemplateOutlet=\"pagesHorizontal\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth < 475\" class=\"d-flex justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <hr *ngIf=\"content?.displayBranding\">\r\n <div *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #Footer3>\r\n <div class=\"row\" [class.align-items-start]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"foldersVertical\"></ng-container>\r\n </div>\r\n <hr>\r\n <div class=\"row justify-content-between\">\r\n <div class=\"col-md-4\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-center align-items-start\" *ngIf=\"content?.socialLinks?.display\"\r\n [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-end\" *ngIf=\"content?.displayBranding\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #Footer4>\r\n <div class=\"row align-items-center\">\r\n <ng-container *ngTemplateOutlet=\"pagesHorizontal\"></ng-container>\r\n </div>\r\n <hr>\r\n <div class=\"row justify-content-between\">\r\n <div class=\"col-md-4\">\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-center align-items-start\" *ngIf=\"content?.socialLinks?.display\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-end\" *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #logoSection>\r\n <div class=\"d-flex\" [class.justify-content-center]=\"screenWidth < 475\">\r\n <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer mb-4\"\r\n *ngIf=\"!content?.logo?.isImage || !content?.logo?.image?.url\">\r\n <div *ngIf=\"content?.logo?.text?.isIcon && content?.logo?.text?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"logo\" [width]=\"content?.logo?.size\" loading=\"lazy\">\r\n </div>\r\n <div class=\"heading-small\" *ngIf=\"content?.logo?.text?.isText\" [simpoColor]=\"style?.background?.color\">\r\n <b [ngStyle]=\"{'font-family': content?.logo?.text?.fontFamily}\">{{content?.siteName?.value}}</b>\r\n </div>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer mb-4\"\r\n *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.image?.url\" alt=\"logo\"\r\n [style.width.%]=\"screenWidth > 475 || (content?.logo?.size || 10) < 50 ? content?.logo?.size : ((content?.logo?.size || 10) - 10)\"\r\n loading=\"lazy\">\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #descSection>\r\n <ng-container *ngIf = \"content?.additionalDetails as textItem\" >\r\n <simpo-text-editor [(value)]=\"textItem.value \" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [label]=\"content?.additionalDetails?.label || ''\"></simpo-text-editor>\r\n </ng-container> <!-- <div class=\"description\" [innerHTML]=\"content?.additionalDetails?.value ?? '' | sanitizeHtml\"></div> -->\r\n</ng-template>\r\n\r\n<ng-template #socialIcons>\r\n <div class=\"d-flex align-items-start align-items-lg-center flex-column flex-lg-row gap-lg-0 gap-3\"\r\n [ngClass]=\"content?.socialLinks?.display ? 'justify-content-between' : 'justify-content-end'\">\r\n <div class=\"d-flex mt-0\" *ngIf=\"content?.socialLinks?.display\">\r\n <ng-container *ngFor=\"let item of content?.socialLinks?.channels\">\r\n <div class=\"icons\">\r\n <simpo-socia-icons [iconColor]=\"data?.styles?.background?.accentColor\" [socialIconData]=\"item\"\r\n [color]=\"style?.background?.color\" [sectionId]=\"data?.id\"></simpo-socia-icons>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #branding>\r\n <div class=\"heading-small text-center branding-text\">Made with <a class=\"branding-text fw-600\"\r\n href=\"https://simpo.ai\" target=\"_blank\">Simpo</a></div>\r\n</ng-template>\r\n\r\n<ng-template #pagesHorizontal>\r\n <div class=\"col-md-3 mb-3 pageType\" *ngFor=\"let page of pages\" [class.w-50]=\"screenWidth < 475\" [class.text-center]=\"screenWidth < 475\" (click)=\"redirectToPage(page)\">\r\n {{page.pageName}}\r\n </div>\r\n</ng-template>\r\n\r\n<!-- <ng-template #pagesVertical>\r\n <div class=\"page-container col-md-3 mb-3\" [class.w-50]=\"screenWidth < 475\">\r\n <div class=\"pageType mb-3\">{{pageLink}}</div>\r\n <ng-container *ngFor=\"let page of pages\">\r\n <div class=\"pages mb-2\" (click)=\"redirectToPage(page)\">{{page?.pageName}}</div>\r\n </ng-container>\r\n </div>\r\n</ng-template> -->\r\n\r\n<ng-template #foldersVertical>\r\n <div class=\"page-container col-md-3 mb-3\" *ngFor=\"let folder of content?.folder;let folderIndex = index\" [class.w-50]=\"screenWidth < 475\">\r\n <simpo-text-editor [(value)]=\"folder.label\" [editable]=\"edit || false\" [sectionId]=\"data?.id\"></simpo-text-editor>\r\n <div class=\"mt-15\">\r\n <ng-container *ngFor=\"let page of folder.links;let linkIndex = index\">\r\n <div class=\"folder-page\" [ngClass]=\"{'hoverWhenEditable' : edit}\">\r\n <div class=\"pages mb-2\" (click)=\"redirectTo(page)\">{{page.label}}</div>\r\n <mat-icon (click)=\"deleteFolderLinks(folderIndex, linkIndex)\">delete</mat-icon>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"edit ? addLinks : null; context: {data: folderIndex}\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"(content?.folder?.length || 0) < 4\" [class.w-50]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"edit ? addFolder : null\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #addLinks let-folderIndex=\"data\">\r\n <div class=\"addLinks\" (click)=\"createNewLink(folderIndex)\">\r\n <mat-icon>add</mat-icon>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #addFolder>\r\n <div class=\"addLinks h-100\" (click)=\"createNewFolder()\">\r\n <mat-icon>add</mat-icon>\r\n </div>\r\n</ng-template>\r\n", styles: [".total-container{height:auto;position:relative}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.pageType{font-size:16px;font-weight:600;line-height:22px}.pages{font-size:16px;font-weight:400;line-height:22px;cursor:pointer}.branding-text{font-size:16px;font-weight:400;line-height:22px;text-decoration:unset}.fw-600{font-weight:600!important}.w-50{width:50%!important}.w-30{width:30%!important}.align-items-start{align-items:start!important}.mt-15{margin-top:15px}.folder-page{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.folder-page mat-icon{font-size:17px;display:flex;align-items:center;justify-content:center;display:none}.hoverWhenEditable:hover{border:1px solid #E9E9E9;border-radius:5px;cursor:pointer}.hoverWhenEditable:hover mat-icon{display:inline}.addLinks{padding-bottom:8px;padding-top:9px;border:1px dashed;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:5px}.addLinks mat-icon{border:1px solid rgb(219,223,225);display:flex;border-radius:100%;align-items:center;justify-content:center;font-size:16px;color:#dbdfe1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }, { kind: "component", type: SociaIconsComponent, selector: "simpo-socia-icons", inputs: ["socialIconData", "color", "sectionId", "iconColor"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i5.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i6.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type:
105
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FooterComponent, deps: [{ token: i1.EventsService }, { token: i2.RestService }, { token: i3.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
106
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FooterComponent, isStandalone: true, selector: "simpo-footer", inputs: { data: "data", index: "index", edit: "edit", delete: "delete" }, host: { listeners: { "window:resize": "getScreenSize($event)" } }, usesInheritance: true, ngImport: i0, template: "<section class=\"total-container\" simpoHover\r\n(hovering)=\"showEditTabs($event)\"[spacingHorizontal]=\"stylesLayout\" [simpoBackground]=\"style?.background\" [simpoLayout]=\"style?.layout\" [id]=\"data?.id\">\r\n <div>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer1'\">\r\n <ng-container *ngTemplateOutlet=\"Footer1\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer2'\">\r\n <ng-container *ngTemplateOutlet=\"Footer2\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer3'\">\r\n <ng-container *ngTemplateOutlet=\"Footer3\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer4'\">\r\n <ng-container *ngTemplateOutlet=\"Footer4\"></ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n\r\n</section>\r\n\r\n<ng-template #Footer1>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-4\">\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"descSection\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth > 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <div class=\"row\">\r\n <ng-container *ngTemplateOutlet=\"foldersVertical\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth < 475\" class=\"d-flex justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <hr *ngIf=\"content?.displayBranding\">\r\n <div *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #Footer2>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-3\">\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"descSection\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth > 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <div class=\"row\">\r\n <ng-container *ngTemplateOutlet=\"pagesHorizontal\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth < 475\" class=\"d-flex justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <hr *ngIf=\"content?.displayBranding\">\r\n <div *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #Footer3>\r\n <div class=\"row\" [class.align-items-start]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"foldersVertical\"></ng-container>\r\n </div>\r\n <hr>\r\n <div class=\"row justify-content-between\">\r\n <div class=\"col-md-4\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-center align-items-start\" *ngIf=\"content?.socialLinks?.display\"\r\n [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-end\" *ngIf=\"content?.displayBranding\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #Footer4>\r\n <div class=\"row align-items-center\">\r\n <ng-container *ngTemplateOutlet=\"pagesHorizontal\"></ng-container>\r\n </div>\r\n <hr>\r\n <div class=\"row justify-content-between\">\r\n <div class=\"col-md-4\">\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-center align-items-start\" *ngIf=\"content?.socialLinks?.display\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-end\" *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #logoSection>\r\n <div class=\"d-flex\" [class.justify-content-center]=\"screenWidth < 475\">\r\n <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer mb-4\"\r\n *ngIf=\"!content?.logo?.isImage || !content?.logo?.image?.url\">\r\n <div *ngIf=\"content?.logo?.text?.isIcon && content?.logo?.text?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"logo\" [width]=\"content?.logo?.size\" loading=\"lazy\">\r\n </div>\r\n <div class=\"heading-small\" *ngIf=\"content?.logo?.text?.isText\" [simpoColor]=\"style?.background?.color\">\r\n <b [ngStyle]=\"{'font-family': content?.logo?.text?.fontFamily}\">{{content?.siteName?.value}}</b>\r\n </div>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer mb-4\"\r\n *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.image?.url\" alt=\"logo\"\r\n [style.width.%]=\"screenWidth > 475 || (content?.logo?.size || 10) < 50 ? content?.logo?.size : ((content?.logo?.size || 10) - 10)\"\r\n loading=\"lazy\">\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #descSection>\r\n <ng-container *ngIf = \"content?.additionalDetails as textItem\" >\r\n <simpo-text-editor [(value)]=\"textItem.value \" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [label]=\"content?.additionalDetails?.label || ''\"></simpo-text-editor>\r\n </ng-container> <!-- <div class=\"description\" [innerHTML]=\"content?.additionalDetails?.value ?? '' | sanitizeHtml\"></div> -->\r\n</ng-template>\r\n\r\n<ng-template #socialIcons>\r\n <div class=\"d-flex align-items-start align-items-lg-center flex-column flex-lg-row gap-lg-0 gap-3\"\r\n [ngClass]=\"content?.socialLinks?.display ? 'justify-content-between' : 'justify-content-end'\">\r\n <div class=\"d-flex mt-0\" *ngIf=\"content?.socialLinks?.display\">\r\n <ng-container *ngFor=\"let item of content?.socialLinks?.channels\">\r\n <div class=\"icons\">\r\n <simpo-socia-icons [iconColor]=\"data?.styles?.background?.accentColor\" [socialIconData]=\"item\"\r\n [color]=\"style?.background?.color\" [sectionId]=\"data?.id\"></simpo-socia-icons>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #branding>\r\n <div class=\"heading-small text-center branding-text\">Made with <a class=\"branding-text fw-600\"\r\n href=\"https://simpo.ai\" target=\"_blank\">Simpo</a></div>\r\n</ng-template>\r\n\r\n<ng-template #pagesHorizontal>\r\n <div class=\"col-md-3 mb-3 pageType\" *ngFor=\"let page of pages\" [class.w-50]=\"screenWidth < 475\" [class.text-center]=\"screenWidth < 475\" (click)=\"redirectToPage(page)\">\r\n {{page.pageName}}\r\n </div>\r\n</ng-template>\r\n\r\n<!-- <ng-template #pagesVertical>\r\n <div class=\"page-container col-md-3 mb-3\" [class.w-50]=\"screenWidth < 475\">\r\n <div class=\"pageType mb-3\">{{pageLink}}</div>\r\n <ng-container *ngFor=\"let page of pages\">\r\n <div class=\"pages mb-2\" (click)=\"redirectToPage(page)\">{{page?.pageName}}</div>\r\n </ng-container>\r\n </div>\r\n</ng-template> -->\r\n\r\n<ng-template #foldersVertical>\r\n <div class=\"page-container col-md-3 mb-3\" *ngFor=\"let folder of content?.folder;let folderIndex = index\" [class.w-50]=\"screenWidth < 475\">\r\n <simpo-text-editor [(value)]=\"folder.label\" [editable]=\"edit || false\" [sectionId]=\"data?.id\"></simpo-text-editor>\r\n <div class=\"mt-15\">\r\n <ng-container *ngFor=\"let page of folder.links;let linkIndex = index\">\r\n <div class=\"folder-page\" [ngClass]=\"{'hoverWhenEditable' : edit}\">\r\n <div class=\"pages mb-2\" (click)=\"redirectTo(page)\">{{page.label}}</div>\r\n <mat-icon (click)=\"deleteFolderLinks(folderIndex, linkIndex)\">delete</mat-icon>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"edit ? addLinks : null; context: {data: folderIndex}\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"(content?.folder?.length || 0) < 4\" [class.w-50]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"edit ? addFolder : null\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #addLinks let-folderIndex=\"data\">\r\n <div class=\"addLinks\" (click)=\"createNewLink(folderIndex)\">\r\n <mat-icon>add</mat-icon>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #addFolder>\r\n <div class=\"addLinks h-100\" (click)=\"createNewFolder()\">\r\n <mat-icon>add</mat-icon>\r\n </div>\r\n</ng-template>\r\n", styles: [".total-container{height:auto;position:relative}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.pageType{font-size:16px;font-weight:600;line-height:22px}.pages{font-size:16px;font-weight:400;line-height:22px;cursor:pointer}.branding-text{font-size:16px;font-weight:400;line-height:22px;text-decoration:unset}.fw-600{font-weight:600!important}.w-50{width:50%!important}.w-30{width:30%!important}.align-items-start{align-items:start!important}.mt-15{margin-top:15px}.folder-page{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.folder-page mat-icon{font-size:17px;display:flex;align-items:center;justify-content:center;display:none}.hoverWhenEditable:hover{border:1px solid #E9E9E9;border-radius:5px;cursor:pointer}.hoverWhenEditable:hover mat-icon{display:inline}.addLinks{padding-bottom:8px;padding-top:9px;border:1px dashed;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:5px}.addLinks mat-icon{border:1px solid rgb(219,223,225);display:flex;border-radius:100%;align-items:center;justify-content:center;font-size:16px;color:#dbdfe1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: ColorDirective, selector: "[simpoColor]", inputs: ["simpoColor"] }, { kind: "component", type: SociaIconsComponent, selector: "simpo-socia-icons", inputs: ["socialIconData", "color", "sectionId", "iconColor"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i5.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i6.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type:
109
107
  //directives
110
108
  SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label"], outputs: ["valueChange"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }] }); }
111
109
  }
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: FooterComponent, decorators: [{
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FooterComponent, decorators: [{
113
111
  type: Component,
114
112
  args: [{ selector: 'simpo-footer', standalone: true, imports: [
115
113
  CommonModule,
116
114
  ColorDirective,
117
115
  SociaIconsComponent,
118
116
  FormsModule,
119
- SanitizeHtmlPipe,
120
117
  SimpoComponentModule,
121
118
  MatIconModule,
122
119
  MatDialogModule,
@@ -126,7 +123,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
126
123
  ContentFitDirective,
127
124
  TextEditorComponent,
128
125
  HoverDirective
129
- ], template: "<section class=\"total-container\" simpoHover\r\n(hovering)=\"showEditTabs($event)\"[spacingHorizontal]=\"stylesLayout\" [simpoBackground]=\"style?.background\" [simpoLayout]=\"style?.layout\" [id]=\"data?.id\">\r\n <div>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer1'\">\r\n <ng-container *ngTemplateOutlet=\"Footer1\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer2'\">\r\n <ng-container *ngTemplateOutlet=\"Footer2\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer3'\">\r\n <ng-container *ngTemplateOutlet=\"Footer3\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer4'\">\r\n <ng-container *ngTemplateOutlet=\"Footer4\"></ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n\r\n</section>\r\n\r\n<ng-template #Footer1>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-4\">\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"descSection\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth > 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <div class=\"row\">\r\n <ng-container *ngTemplateOutlet=\"foldersVertical\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth < 475\" class=\"d-flex justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <hr *ngIf=\"content?.displayBranding\">\r\n <div *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #Footer2>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-3\">\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"descSection\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth > 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <div class=\"row\">\r\n <ng-container *ngTemplateOutlet=\"pagesHorizontal\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth < 475\" class=\"d-flex justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <hr *ngIf=\"content?.displayBranding\">\r\n <div *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #Footer3>\r\n <div class=\"row\" [class.align-items-start]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"foldersVertical\"></ng-container>\r\n </div>\r\n <hr>\r\n <div class=\"row justify-content-between\">\r\n <div class=\"col-md-4\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-center align-items-start\" *ngIf=\"content?.socialLinks?.display\"\r\n [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-end\" *ngIf=\"content?.displayBranding\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #Footer4>\r\n <div class=\"row align-items-center\">\r\n <ng-container *ngTemplateOutlet=\"pagesHorizontal\"></ng-container>\r\n </div>\r\n <hr>\r\n <div class=\"row justify-content-between\">\r\n <div class=\"col-md-4\">\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-center align-items-start\" *ngIf=\"content?.socialLinks?.display\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-end\" *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #logoSection>\r\n <div class=\"d-flex\" [class.justify-content-center]=\"screenWidth < 475\">\r\n <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer mb-4\"\r\n *ngIf=\"!content?.logo?.isImage || !content?.logo?.image?.url\">\r\n <div *ngIf=\"content?.logo?.text?.isIcon && content?.logo?.text?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"logo\" [width]=\"content?.logo?.size\" loading=\"lazy\">\r\n </div>\r\n <div class=\"heading-small\" *ngIf=\"content?.logo?.text?.isText\" [simpoColor]=\"style?.background?.color\">\r\n <b [ngStyle]=\"{'font-family': content?.logo?.text?.fontFamily}\">{{content?.siteName?.value}}</b>\r\n </div>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer mb-4\"\r\n *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.image?.url\" alt=\"logo\"\r\n [style.width.%]=\"screenWidth > 475 || (content?.logo?.size || 10) < 50 ? content?.logo?.size : ((content?.logo?.size || 10) - 10)\"\r\n loading=\"lazy\">\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #descSection>\r\n <ng-container *ngIf = \"content?.additionalDetails as textItem\" >\r\n <simpo-text-editor [(value)]=\"textItem.value \" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [label]=\"content?.additionalDetails?.label || ''\"></simpo-text-editor>\r\n </ng-container> <!-- <div class=\"description\" [innerHTML]=\"content?.additionalDetails?.value ?? '' | sanitizeHtml\"></div> -->\r\n</ng-template>\r\n\r\n<ng-template #socialIcons>\r\n <div class=\"d-flex align-items-start align-items-lg-center flex-column flex-lg-row gap-lg-0 gap-3\"\r\n [ngClass]=\"content?.socialLinks?.display ? 'justify-content-between' : 'justify-content-end'\">\r\n <div class=\"d-flex mt-0\" *ngIf=\"content?.socialLinks?.display\">\r\n <ng-container *ngFor=\"let item of content?.socialLinks?.channels\">\r\n <div class=\"icons\">\r\n <simpo-socia-icons [iconColor]=\"data?.styles?.background?.accentColor\" [socialIconData]=\"item\"\r\n [color]=\"style?.background?.color\" [sectionId]=\"data?.id\"></simpo-socia-icons>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #branding>\r\n <div class=\"heading-small text-center branding-text\">Made with <a class=\"branding-text fw-600\"\r\n href=\"https://simpo.ai\" target=\"_blank\">Simpo</a></div>\r\n</ng-template>\r\n\r\n<ng-template #pagesHorizontal>\r\n <div class=\"col-md-3 mb-3 pageType\" *ngFor=\"let page of pages\" [class.w-50]=\"screenWidth < 475\" [class.text-center]=\"screenWidth < 475\" (click)=\"redirectToPage(page)\">\r\n {{page.pageName}}\r\n </div>\r\n</ng-template>\r\n\r\n<!-- <ng-template #pagesVertical>\r\n <div class=\"page-container col-md-3 mb-3\" [class.w-50]=\"screenWidth < 475\">\r\n <div class=\"pageType mb-3\">{{pageLink}}</div>\r\n <ng-container *ngFor=\"let page of pages\">\r\n <div class=\"pages mb-2\" (click)=\"redirectToPage(page)\">{{page?.pageName}}</div>\r\n </ng-container>\r\n </div>\r\n</ng-template> -->\r\n\r\n<ng-template #foldersVertical>\r\n <div class=\"page-container col-md-3 mb-3\" *ngFor=\"let folder of content?.folder;let folderIndex = index\" [class.w-50]=\"screenWidth < 475\">\r\n <simpo-text-editor [(value)]=\"folder.label\" [editable]=\"edit || false\" [sectionId]=\"data?.id\"></simpo-text-editor>\r\n <div class=\"mt-15\">\r\n <ng-container *ngFor=\"let page of folder.links;let linkIndex = index\">\r\n <div class=\"folder-page\" [ngClass]=\"{'hoverWhenEditable' : edit}\">\r\n <div class=\"pages mb-2\" (click)=\"redirectTo(page)\">{{page.label}}</div>\r\n <mat-icon (click)=\"deleteFolderLinks(folderIndex, linkIndex)\">delete</mat-icon>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"edit ? addLinks : null; context: {data: folderIndex}\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"(content?.folder?.length || 0) < 4\" [class.w-50]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"edit ? addFolder : null\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #addLinks let-folderIndex=\"data\">\r\n <div class=\"addLinks\" (click)=\"createNewLink(folderIndex)\">\r\n <mat-icon>add</mat-icon>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #addFolder>\r\n <div class=\"addLinks h-100\" (click)=\"createNewFolder()\">\r\n <mat-icon>add</mat-icon>\r\n </div>\r\n</ng-template>\r\n", styles: [".total-container{height:auto;position:relative}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.pageType{font-size:16px;font-weight:600;line-height:22px}.pages{font-size:16px;font-weight:400;line-height:22px;cursor:pointer}.branding-text{font-size:16px;font-weight:400;line-height:22px;text-decoration:unset}.fw-600{font-weight:600!important}.w-50{width:50%!important}.w-30{width:30%!important}.align-items-start{align-items:start!important}.mt-15{margin-top:15px}.folder-page{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.folder-page mat-icon{font-size:17px;display:flex;align-items:center;justify-content:center;display:none}.hoverWhenEditable:hover{border:1px solid #E9E9E9;border-radius:5px;cursor:pointer}.hoverWhenEditable:hover mat-icon{display:inline}.addLinks{padding-bottom:8px;padding-top:9px;border:1px dashed;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:5px}.addLinks mat-icon{border:1px solid rgb(219,223,225);display:flex;border-radius:100%;align-items:center;justify-content:center;font-size:16px;color:#dbdfe1}\n"] }]
126
+ ], template: "<section class=\"total-container\" simpoHover\r\n(hovering)=\"showEditTabs($event)\"[spacingHorizontal]=\"stylesLayout\" [simpoBackground]=\"style?.background\" [simpoLayout]=\"style?.layout\" [id]=\"data?.id\">\r\n <div>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer1'\">\r\n <ng-container *ngTemplateOutlet=\"Footer1\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer2'\">\r\n <ng-container *ngTemplateOutlet=\"Footer2\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer3'\">\r\n <ng-container *ngTemplateOutlet=\"Footer3\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"style?.footerType == 'Footer4'\">\r\n <ng-container *ngTemplateOutlet=\"Footer4\"></ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n\r\n</section>\r\n\r\n<ng-template #Footer1>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-4\">\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"descSection\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth > 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-8\">\r\n <div class=\"row\">\r\n <ng-container *ngTemplateOutlet=\"foldersVertical\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth < 475\" class=\"d-flex justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <hr *ngIf=\"content?.displayBranding\">\r\n <div *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #Footer2>\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-3\">\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"descSection\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth > 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <div class=\"row\">\r\n <ng-container *ngTemplateOutlet=\"pagesHorizontal\"></ng-container>\r\n </div>\r\n <div *ngIf=\"content?.socialLinks?.display && screenWidth < 475\" class=\"d-flex justify-content-center\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <hr *ngIf=\"content?.displayBranding\">\r\n <div *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #Footer3>\r\n <div class=\"row\" [class.align-items-start]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"foldersVertical\"></ng-container>\r\n </div>\r\n <hr>\r\n <div class=\"row justify-content-between\">\r\n <div class=\"col-md-4\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-center align-items-start\" *ngIf=\"content?.socialLinks?.display\"\r\n [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-end\" *ngIf=\"content?.displayBranding\" [class.w-30]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #Footer4>\r\n <div class=\"row align-items-center\">\r\n <ng-container *ngTemplateOutlet=\"pagesHorizontal\"></ng-container>\r\n </div>\r\n <hr>\r\n <div class=\"row justify-content-between\">\r\n <div class=\"col-md-4\">\r\n <ng-container *ngTemplateOutlet=\"logoSection\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-center align-items-start\" *ngIf=\"content?.socialLinks?.display\">\r\n <ng-container *ngTemplateOutlet=\"socialIcons\"></ng-container>\r\n </div>\r\n <div class=\"col-md-4 d-flex justify-content-end\" *ngIf=\"content?.displayBranding\">\r\n <ng-container *ngTemplateOutlet=\"branding\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n</ng-template>\r\n\r\n<ng-template #logoSection>\r\n <div class=\"d-flex\" [class.justify-content-center]=\"screenWidth < 475\">\r\n <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer mb-4\"\r\n *ngIf=\"!content?.logo?.isImage || !content?.logo?.image?.url\">\r\n <div *ngIf=\"content?.logo?.text?.isIcon && content?.logo?.text?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.text?.url\" alt=\"logo\" [width]=\"content?.logo?.size\" loading=\"lazy\">\r\n </div>\r\n <div class=\"heading-small\" *ngIf=\"content?.logo?.text?.isText\" [simpoColor]=\"style?.background?.color\">\r\n <b [ngStyle]=\"{'font-family': content?.logo?.text?.fontFamily}\">{{content?.siteName?.value}}</b>\r\n </div>\r\n </div>\r\n <div class=\"d-flex gap-3 align-items-lg-center cursor-pointer mb-4\"\r\n *ngIf=\"content?.logo?.isImage && content?.logo?.image?.url\">\r\n <img loading=\"lazy\" [src]=\"content?.logo?.image?.url\" alt=\"logo\"\r\n [style.width.%]=\"screenWidth > 475 || (content?.logo?.size || 10) < 50 ? content?.logo?.size : ((content?.logo?.size || 10) - 10)\"\r\n loading=\"lazy\">\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #descSection>\r\n <ng-container *ngIf = \"content?.additionalDetails as textItem\" >\r\n <simpo-text-editor [(value)]=\"textItem.value \" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [label]=\"content?.additionalDetails?.label || ''\"></simpo-text-editor>\r\n </ng-container> <!-- <div class=\"description\" [innerHTML]=\"content?.additionalDetails?.value ?? '' | sanitizeHtml\"></div> -->\r\n</ng-template>\r\n\r\n<ng-template #socialIcons>\r\n <div class=\"d-flex align-items-start align-items-lg-center flex-column flex-lg-row gap-lg-0 gap-3\"\r\n [ngClass]=\"content?.socialLinks?.display ? 'justify-content-between' : 'justify-content-end'\">\r\n <div class=\"d-flex mt-0\" *ngIf=\"content?.socialLinks?.display\">\r\n <ng-container *ngFor=\"let item of content?.socialLinks?.channels\">\r\n <div class=\"icons\">\r\n <simpo-socia-icons [iconColor]=\"data?.styles?.background?.accentColor\" [socialIconData]=\"item\"\r\n [color]=\"style?.background?.color\" [sectionId]=\"data?.id\"></simpo-socia-icons>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #branding>\r\n <div class=\"heading-small text-center branding-text\">Made with <a class=\"branding-text fw-600\"\r\n href=\"https://simpo.ai\" target=\"_blank\">Simpo</a></div>\r\n</ng-template>\r\n\r\n<ng-template #pagesHorizontal>\r\n <div class=\"col-md-3 mb-3 pageType\" *ngFor=\"let page of pages\" [class.w-50]=\"screenWidth < 475\" [class.text-center]=\"screenWidth < 475\" (click)=\"redirectToPage(page)\">\r\n {{page.pageName}}\r\n </div>\r\n</ng-template>\r\n\r\n<!-- <ng-template #pagesVertical>\r\n <div class=\"page-container col-md-3 mb-3\" [class.w-50]=\"screenWidth < 475\">\r\n <div class=\"pageType mb-3\">{{pageLink}}</div>\r\n <ng-container *ngFor=\"let page of pages\">\r\n <div class=\"pages mb-2\" (click)=\"redirectToPage(page)\">{{page?.pageName}}</div>\r\n </ng-container>\r\n </div>\r\n</ng-template> -->\r\n\r\n<ng-template #foldersVertical>\r\n <div class=\"page-container col-md-3 mb-3\" *ngFor=\"let folder of content?.folder;let folderIndex = index\" [class.w-50]=\"screenWidth < 475\">\r\n <simpo-text-editor [(value)]=\"folder.label\" [editable]=\"edit || false\" [sectionId]=\"data?.id\"></simpo-text-editor>\r\n <div class=\"mt-15\">\r\n <ng-container *ngFor=\"let page of folder.links;let linkIndex = index\">\r\n <div class=\"folder-page\" [ngClass]=\"{'hoverWhenEditable' : edit}\">\r\n <div class=\"pages mb-2\" (click)=\"redirectTo(page)\">{{page.label}}</div>\r\n <mat-icon (click)=\"deleteFolderLinks(folderIndex, linkIndex)\">delete</mat-icon>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"edit ? addLinks : null; context: {data: folderIndex}\"></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3\" *ngIf=\"(content?.folder?.length || 0) < 4\" [class.w-50]=\"screenWidth < 475\">\r\n <ng-container *ngTemplateOutlet=\"edit ? addFolder : null\"></ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #addLinks let-folderIndex=\"data\">\r\n <div class=\"addLinks\" (click)=\"createNewLink(folderIndex)\">\r\n <mat-icon>add</mat-icon>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #addFolder>\r\n <div class=\"addLinks h-100\" (click)=\"createNewFolder()\">\r\n <mat-icon>add</mat-icon>\r\n </div>\r\n</ng-template>\r\n", styles: [".total-container{height:auto;position:relative}*{font-family:var(--website-font-family)}mat-icon{font-family:Material Icons!important}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.pageType{font-size:16px;font-weight:600;line-height:22px}.pages{font-size:16px;font-weight:400;line-height:22px;cursor:pointer}.branding-text{font-size:16px;font-weight:400;line-height:22px;text-decoration:unset}.fw-600{font-weight:600!important}.w-50{width:50%!important}.w-30{width:30%!important}.align-items-start{align-items:start!important}.mt-15{margin-top:15px}.folder-page{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.folder-page mat-icon{font-size:17px;display:flex;align-items:center;justify-content:center;display:none}.hoverWhenEditable:hover{border:1px solid #E9E9E9;border-radius:5px;cursor:pointer}.hoverWhenEditable:hover mat-icon{display:inline}.addLinks{padding-bottom:8px;padding-top:9px;border:1px dashed;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:5px}.addLinks mat-icon{border:1px solid rgb(219,223,225);display:flex;border-radius:100%;align-items:center;justify-content:center;font-size:16px;color:#dbdfe1}\n"] }]
130
127
  }], ctorParameters: () => [{ type: i1.EventsService }, { type: i2.RestService }, { type: i3.MatDialog }], propDecorators: { data: [{
131
128
  type: Input
132
129
  }], index: [{
@@ -139,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImpor
139
136
  type: HostListener,
140
137
  args: ['window:resize', ['$event']]
141
138
  }] } });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFVLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFHNUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDekYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sV0FBVyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFh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QU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTTtvQkFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUUzQixJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs4R0F0R1UsZUFBZTtrR0FBZixlQUFlLDRPQy9DNUIsbWhUQWtOQSwycENEdExJLFlBQVksMGxCQUNaLGNBQWMsaUZBQ2QsbUJBQW1CLDRIQUNuQixXQUFXLDhCQUVYLG9CQUFvQixtV0FDcEIsYUFBYSxtTEFDYixlQUFlO2dCQUVmLFlBQVk7Z0JBQ1osMEJBQTBCLDJHQUMxQixtQkFBbUIsMEdBQ25CLG1CQUFtQixtRkFDbkIsbUJBQW1CLDZJQUNuQixjQUFjOzsyRkFLTCxlQUFlO2tCQXZCM0IsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2IsZUFBZTt3QkFFZixZQUFZO3dCQUNaLDBCQUEwQjt3QkFDMUIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsY0FBYztxQkFDZjtvSUFLUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBMkJOLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsIE5nWm9uZSwgUExBVEZPUk1fSUQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvb3RlckNvbnRlbnRNb2RlbCwgRm9vdGVyU2VjdGlvbk1vZGVsLCBGb290ZXJTdHlsZXNNb2RlbCB9IGZyb20gJy4vZm9vdGVyLm1vZGFsJztcclxuaW1wb3J0IHsgQnV0dG9uLCBMYXlPdXRNb2RlbCB9IGZyb20gJy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IENvbG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTb2NpYUljb25zQ29tcG9uZW50IH0gZnJvbSAnLi8uLi8uLi9lbGVtZW50cy9zb2NpYS1pY29ucy9zb2NpYS1pY29ucy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTYW5pdGl6ZUh0bWxQaXBlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2FuaXRpemVIdG1sJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFNwYWNpbmdBcm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvc3BhY2luZy1hcm91bmQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctaG9yaXpvbnRhbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9lbGVtZW50cy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vQmFzZVNlY3Rpb24nO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBMaW5rRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvbGluay1lZGl0b3IvbGluay1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NpbXBvLWZvb3RlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBDb2xvckRpcmVjdGl2ZSxcclxuICAgIFNvY2lhSWNvbnNDb21wb25lbnQsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFNhbml0aXplSHRtbFBpcGUsXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcblxyXG4gICAgLy9kaXJlY3RpdmVzXHJcbiAgICBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSxcclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgVGV4dEVkaXRvckNvbXBvbmVudCxcclxuICAgIEhvdmVyRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9vdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZm9vdGVyLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb290ZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiB7XHJcbiAgQElucHV0KCkgZGF0YT86IEZvb3RlclNlY3Rpb25Nb2RlbDtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZGVsZXRlPyA9IGZhbHNlO1xyXG5cclxuICBjb250ZW50PzogRm9vdGVyQ29udGVudE1vZGVsO1xyXG4gIHN0eWxlPzogRm9vdGVyU3R5bGVzTW9kZWw7XHJcbiAgbGlua0VkaXRvclN1YnNjcmlwdGlvbj8gOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGZvb3RlclR5cGU6IHN0cmluZyA9IFwiMVwiO1xyXG4gIHNjcmVlbldpZHRoOiBudW1iZXIgPSA0NzU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtYXREaWFsb2c6IE1hdERpYWxvZykge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuZ2V0U2NyZWVuU2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnN0eWxlID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLmdldFBhZ2VzKClcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCl7XHJcbiAgICB0aGlzLmxpbmtFZGl0b3JTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKClcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIGdldFNjcmVlblNpemUoZXZlbnQ/OiBudW1iZXIpIHtcclxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB0aGlzLnNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc3R5bGVzTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZT8ubGF5b3V0IH0gYXMgTGF5T3V0TW9kZWw7XHJcbiAgfVxyXG5cclxuICBwYWdlTGluazogc3RyaW5nID0gXCJQYWdlc1wiXHJcbiAgcGFnZXM6IGFueSA9IFtdXHJcblxyXG4gIGRlbGV0ZUZvbGRlckxpbmtzKGZvbGRlckluZGV4OiBudW1iZXIsIGxpbmtJbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmNvbnRlbnQ/LmZvbGRlcltmb2xkZXJJbmRleF0ubGlua3Muc3BsaWNlKGxpbmtJbmRleCwgMSk7XHJcbiAgICBpZiAoKHRoaXMuY29udGVudD8uZm9sZGVyPy5bZm9sZGVySW5kZXhdPy5saW5rcz8ubGVuZ3RoIHx8IDApIDw9IDApIHtcclxuICAgICAgdGhpcy5jb250ZW50Py5mb2xkZXIuc3BsaWNlKGZvbGRlckluZGV4LCAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVkaXRMaW5rcygpIHtcclxuICAgIGNvbnNvbGUubG9nKCdMaW5rIEVkaXQgU3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgfVxyXG5cclxuICByZWRpcmVjdFRvKGxpbms6IEJ1dHRvbikge1xyXG4gICAgaWYgKHRoaXMuZWRpdCkge1xyXG4gICAgICB0aGlzLm1hdERpYWxvZy5vcGVuKExpbmtFZGl0b3JDb21wb25lbnQsIHsgcGFuZWxDbGFzczogJ2xpbmstZWRpdG9yJywgZGF0YTogeyBsaW5rRGF0YTogbGluayB9IH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuYnV0dG9uUmVkaXJlY3Rpb24uZW1pdCh7IGRhdGE6IGxpbmsgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRQYWdlcygpIHtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0VGVtcGxhdGUoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucGFnZXMgPSByZXMuZGF0YVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0VG9QYWdlKHBhZ2VEYXRhOiBhbnkpIHtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBsYWJlbCA6IHBhZ2VEYXRhLnBhZ2VOYW1lLFxyXG4gICAgICByZWRpcmVjdGlvblVybDpwYWdlRGF0YS5wYXRoLFxyXG4gICAgICBwYWdlSWQ6IHBhZ2VEYXRhLmlkLFxyXG4gICAgICBzdGF0dXM6IHRydWUsXHJcbiAgICB9XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UucGFnZVJlZGlyZWN0aW9uQnV0dG9uLmVtaXQoeyBkYXRhOiBkYXRhIH0pXHJcbiAgfVxyXG5cclxuICBjcmVhdGVOZXdMaW5rKGZvbGRlckluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGVkaXRvckNvbXBvbmVudCA9IHRoaXMubWF0RGlhbG9nLm9wZW4oTGlua0VkaXRvckNvbXBvbmVudCwgeyBwYW5lbENsYXNzOiAnbGluay1lZGl0b3InIH0pO1xyXG4gICAgdGhpcy5saW5rRWRpdG9yU3Vic2NyaXB0aW9uID0gZWRpdG9yQ29tcG9uZW50LmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzLmxpbmspIHtcclxuICAgICAgICB0aGlzLmNvbnRlbnQ/LmZvbGRlcltmb2xkZXJJbmRleF0ubGlua3MucHVzaChyZXMubGluayk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjcmVhdGVOZXdGb2xkZXIoKSB7XHJcbiAgICBjb25zdCBlZGl0b3JDb21wb25lbnQgPSB0aGlzLm1hdERpYWxvZy5vcGVuKExpbmtFZGl0b3JDb21wb25lbnQsIHsgcGFuZWxDbGFzczogJ2xpbmstZWRpdG9yJyB9KTtcclxuICAgIGVkaXRvckNvbXBvbmVudC5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzLmxpbmspIHtcclxuICAgICAgICBsZXQgZm9sZGVyID0ge1xyXG4gICAgICAgICAgbGFiZWw6IFwiQWRkIGZvbGRlciBuYW1lXCIsXHJcbiAgICAgICAgICBsaW5rczogW3Jlcy5saW5rXVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmNvbnRlbnQgJiYgIXRoaXMuY29udGVudD8uZm9sZGVyKVxyXG4gICAgICAgICAgdGhpcy5jb250ZW50LmZvbGRlciA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmNvbnRlbnQ/LmZvbGRlci5wdXNoKGZvbGRlcik7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwidG90YWwtY29udGFpbmVyXCIgc2ltcG9Ib3ZlclxyXG4oaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIltzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIiBbc2ltcG9CYWNrZ3JvdW5kXT1cInN0eWxlPy5iYWNrZ3JvdW5kXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlPy5sYXlvdXRcIiBbaWRdPVwiZGF0YT8uaWRcIj5cclxuICA8ZGl2PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlPy5mb290ZXJUeXBlID09ICdGb290ZXIxJ1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRm9vdGVyMVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGU/LmZvb3RlclR5cGUgPT0gJ0Zvb3RlcjInXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJGb290ZXIyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHlsZT8uZm9vdGVyVHlwZSA9PSAnRm9vdGVyMydcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkZvb3RlcjNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlPy5mb290ZXJUeXBlID09ICdGb290ZXI0J1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRm9vdGVyNFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgPC9kaXY+XHJcblxyXG48L3NlY3Rpb24+XHJcblxyXG48bmctdGVtcGxhdGUgI0Zvb3RlcjE+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2dvU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVzY1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheSAmJiBzY3JlZW5XaWR0aCA+IDQ3NVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb2NpYWxJY29uc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9sZGVyc1ZlcnRpY2FsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uc29jaWFsTGlua3M/LmRpc3BsYXkgJiYgc2NyZWVuV2lkdGggPCA0NzVcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvY2lhbEljb25zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGhyICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUJyYW5kaW5nXCI+XHJcbiAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlCcmFuZGluZ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyYW5kaW5nXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI0Zvb3RlcjI+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2dvU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVzY1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheSAmJiBzY3JlZW5XaWR0aCA+IDQ3NVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb2NpYWxJY29uc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZXNIb3Jpem9udGFsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uc29jaWFsTGlua3M/LmRpc3BsYXkgJiYgc2NyZWVuV2lkdGggPCA0NzVcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvY2lhbEljb25zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGhyICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUJyYW5kaW5nXCI+XHJcbiAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlCcmFuZGluZ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyYW5kaW5nXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI0Zvb3RlcjM+XHJcbiAgPGRpdiBjbGFzcz1cInJvd1wiIFtjbGFzcy5hbGlnbi1pdGVtcy1zdGFydF09XCJzY3JlZW5XaWR0aCA8IDQ3NVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvbGRlcnNWZXJ0aWNhbFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxocj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIiBbY2xhc3Mudy0zMF09XCJzY3JlZW5XaWR0aCA8IDQ3NVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9nb1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLXN0YXJ0XCIgKm5nSWY9XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheVwiXHJcbiAgICAgIFtjbGFzcy53LTMwXT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb2NpYWxJY29uc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlCcmFuZGluZ1wiIFtjbGFzcy53LTMwXT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJicmFuZGluZ1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNGb290ZXI0PlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZXNIb3Jpem9udGFsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGhyPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9nb1NlY3Rpb25cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLXN0YXJ0XCIgKm5nSWY9XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic29jaWFsSWNvbnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5QnJhbmRpbmdcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyYW5kaW5nXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xvZ29TZWN0aW9uPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBbY2xhc3MuanVzdGlmeS1jb250ZW50LWNlbnRlcl09XCJzY3JlZW5XaWR0aCA8IDQ3NVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBhbGlnbi1pdGVtcy1sZy1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgbWItNFwiXHJcbiAgICAgICpuZ0lmPVwiIWNvbnRlbnQ/LmxvZ28/LmlzSW1hZ2UgfHwgIWNvbnRlbnQ/LmxvZ28/LmltYWdlPy51cmxcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmxvZ28/LnRleHQ/LmlzSWNvbiAmJiBjb250ZW50Py5sb2dvPy50ZXh0Py51cmxcIj5cclxuICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJjb250ZW50Py5sb2dvPy50ZXh0Py51cmxcIiBhbHQ9XCJsb2dvXCIgW3dpZHRoXT1cImNvbnRlbnQ/LmxvZ28/LnNpemVcIiBsb2FkaW5nPVwibGF6eVwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctc21hbGxcIiAqbmdJZj1cImNvbnRlbnQ/LmxvZ28/LnRleHQ/LmlzVGV4dFwiIFtzaW1wb0NvbG9yXT1cInN0eWxlPy5iYWNrZ3JvdW5kPy5jb2xvclwiPlxyXG4gICAgICAgIDxiIFtuZ1N0eWxlXT1cInsnZm9udC1mYW1pbHknOiBjb250ZW50Py5sb2dvPy50ZXh0Py5mb250RmFtaWx5fVwiPnt7Y29udGVudD8uc2l0ZU5hbWU/LnZhbHVlfX08L2I+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIGFsaWduLWl0ZW1zLWxnLWNlbnRlciBjdXJzb3ItcG9pbnRlciBtYi00XCJcclxuICAgICAgKm5nSWY9XCJjb250ZW50Py5sb2dvPy5pc0ltYWdlICYmIGNvbnRlbnQ/LmxvZ28/LmltYWdlPy51cmxcIj5cclxuICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiY29udGVudD8ubG9nbz8uaW1hZ2U/LnVybFwiIGFsdD1cImxvZ29cIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aC4lXT1cInNjcmVlbldpZHRoID4gNDc1IHx8IChjb250ZW50Py5sb2dvPy5zaXplIHx8IDEwKSA8IDUwID8gY29udGVudD8ubG9nbz8uc2l6ZSA6ICgoY29udGVudD8ubG9nbz8uc2l6ZSB8fCAxMCkgLSAxMClcIlxyXG4gICAgICAgIGxvYWRpbmc9XCJsYXp5XCI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVzY1NlY3Rpb24+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZiA9IFwiY29udGVudD8uYWRkaXRpb25hbERldGFpbHMgYXMgdGV4dEl0ZW1cIiA+XHJcbiAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwidGV4dEl0ZW0udmFsdWUgXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCIgW2xhYmVsXT1cImNvbnRlbnQ/LmFkZGl0aW9uYWxEZXRhaWxzPy5sYWJlbCB8fCAnJ1wiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgPC9uZy1jb250YWluZXI+ICA8IS0tIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwiY29udGVudD8uYWRkaXRpb25hbERldGFpbHM/LnZhbHVlID8/ICcnIHwgc2FuaXRpemVIdG1sXCI+PC9kaXY+IC0tPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzb2NpYWxJY29ucz5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGFsaWduLWl0ZW1zLWxnLWNlbnRlciBmbGV4LWNvbHVtbiBmbGV4LWxnLXJvdyBnYXAtbGctMCBnYXAtM1wiXHJcbiAgICBbbmdDbGFzc109XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheSA/ICdqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbicgOiAnanVzdGlmeS1jb250ZW50LWVuZCdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtMFwiICpuZ0lmPVwiY29udGVudD8uc29jaWFsTGlua3M/LmRpc3BsYXlcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5zb2NpYWxMaW5rcz8uY2hhbm5lbHNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbnNcIj5cclxuICAgICAgICAgIDxzaW1wby1zb2NpYS1pY29ucyBbaWNvbkNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiBbc29jaWFsSWNvbkRhdGFdPVwiaXRlbVwiXHJcbiAgICAgICAgICAgIFtjb2xvcl09XCJzdHlsZT8uYmFja2dyb3VuZD8uY29sb3JcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCI+PC9zaW1wby1zb2NpYS1pY29ucz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnJhbmRpbmc+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRpbmctc21hbGwgdGV4dC1jZW50ZXIgIGJyYW5kaW5nLXRleHRcIj5NYWRlIHdpdGggPGEgY2xhc3M9XCJicmFuZGluZy10ZXh0IGZ3LTYwMFwiXHJcbiAgICAgIGhyZWY9XCJodHRwczovL3NpbXBvLmFpXCIgdGFyZ2V0PVwiX2JsYW5rXCI+U2ltcG88L2E+PC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3BhZ2VzSG9yaXpvbnRhbD5cclxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbWItMyBwYWdlVHlwZVwiICpuZ0Zvcj1cImxldCBwYWdlIG9mIHBhZ2VzXCIgW2NsYXNzLnctNTBdPVwic2NyZWVuV2lkdGggPCA0NzVcIiBbY2xhc3MudGV4dC1jZW50ZXJdPVwic2NyZWVuV2lkdGggPCA0NzVcIiAoY2xpY2spPVwicmVkaXJlY3RUb1BhZ2UocGFnZSlcIj5cclxuICAgIHt7cGFnZS5wYWdlTmFtZX19XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIDxuZy10ZW1wbGF0ZSAjcGFnZXNWZXJ0aWNhbD5cclxuICA8ZGl2IGNsYXNzPVwicGFnZS1jb250YWluZXIgY29sLW1kLTMgbWItM1wiIFtjbGFzcy53LTUwXT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGFnZVR5cGUgbWItM1wiPnt7cGFnZUxpbmt9fTwvZGl2PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFnZSBvZiBwYWdlc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGFnZXMgbWItMlwiIChjbGljayk9XCJyZWRpcmVjdFRvUGFnZShwYWdlKVwiPnt7cGFnZT8ucGFnZU5hbWV9fTwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+IC0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmb2xkZXJzVmVydGljYWw+XHJcbiAgPGRpdiBjbGFzcz1cInBhZ2UtY29udGFpbmVyIGNvbC1tZC0zIG1iLTNcIiAqbmdGb3I9XCJsZXQgZm9sZGVyIG9mIGNvbnRlbnQ/LmZvbGRlcjtsZXQgZm9sZGVySW5kZXggPSBpbmRleFwiIFtjbGFzcy53LTUwXT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwiZm9sZGVyLmxhYmVsXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC0xNVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYWdlIG9mIGZvbGRlci5saW5rcztsZXQgbGlua0luZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9sZGVyLXBhZ2VcIiBbbmdDbGFzc109XCJ7J2hvdmVyV2hlbkVkaXRhYmxlJyA6IGVkaXR9XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZXMgbWItMlwiIChjbGljayk9XCJyZWRpcmVjdFRvKHBhZ2UpXCI+e3twYWdlLmxhYmVsfX08L2Rpdj5cclxuICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiZGVsZXRlRm9sZGVyTGlua3MoZm9sZGVySW5kZXgsIGxpbmtJbmRleClcIj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVkaXQgPyBhZGRMaW5rcyA6IG51bGw7IGNvbnRleHQ6IHtkYXRhOiBmb2xkZXJJbmRleH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiICpuZ0lmPVwiKGNvbnRlbnQ/LmZvbGRlcj8ubGVuZ3RoIHx8IDApIDwgNFwiIFtjbGFzcy53LTUwXT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZWRpdCA/IGFkZEZvbGRlciA6IG51bGxcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYWRkTGlua3MgbGV0LWZvbGRlckluZGV4PVwiZGF0YVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJhZGRMaW5rc1wiIChjbGljayk9XCJjcmVhdGVOZXdMaW5rKGZvbGRlckluZGV4KVwiPlxyXG4gICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2FkZEZvbGRlcj5cclxuICA8ZGl2IGNsYXNzPVwiYWRkTGlua3MgaC0xMDBcIiAoY2xpY2spPVwiY3JlYXRlTmV3Rm9sZGVyKClcIj5cclxuICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFVLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFHNUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFekYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sV0FBVyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxt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SUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTTtvQkFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUUzQixJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzsrR0FyR1UsZUFBZTttR0FBZixlQUFlLDRPQzlDNUIsbWhUQWtOQSxrdkNEdExJLFlBQVksMGxCQUNaLGNBQWMsaUZBQ2QsbUJBQW1CLDRIQUNuQixXQUFXLDhCQUNYLG9CQUFvQixtV0FDcEIsYUFBYSxtTEFDYixlQUFlO2dCQUVmLFlBQVk7Z0JBQ1osMEJBQTBCLDJHQUMxQixtQkFBbUIsMEdBQ25CLG1CQUFtQixtRkFDbkIsbUJBQW1CLDZJQUNuQixjQUFjOzs0RkFLTCxlQUFlO2tCQXRCM0IsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLGVBQWU7d0JBRWYsWUFBWTt3QkFDWiwwQkFBMEI7d0JBQzFCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGNBQWM7cUJBQ2Y7b0lBS1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQTJCTixhQUFhO3NCQURaLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBOZ1pvbmUsIFBMQVRGT1JNX0lELCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb290ZXJDb250ZW50TW9kZWwsIEZvb3RlclNlY3Rpb25Nb2RlbCwgRm9vdGVyU3R5bGVzTW9kZWwgfSBmcm9tICcuL2Zvb3Rlci5tb2RhbCc7XHJcbmltcG9ydCB7IEJ1dHRvbiwgTGF5T3V0TW9kZWwgfSBmcm9tICcuLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBDb2xvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb2xvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU29jaWFJY29uc0NvbXBvbmVudCB9IGZyb20gJy4vLi4vLi4vZWxlbWVudHMvc29jaWEtaWNvbnMvc29jaWEtaWNvbnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2FuaXRpemVIdG1sUGlwZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Nhbml0aXplSHRtbCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTcGFjaW5nQXJvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctYXJvdW5kLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9zcGFjaW5nLWhvcml6b250YWwuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGVudEZpdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvdGV4dC1lZGl0b3IvdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTGlua0VkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL2xpbmstZWRpdG9yL2xpbmstZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1mb290ZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQ29sb3JEaXJlY3RpdmUsXHJcbiAgICBTb2NpYUljb25zQ29tcG9uZW50LFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcblxyXG4gICAgLy9kaXJlY3RpdmVzXHJcbiAgICBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSxcclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBDb250ZW50Rml0RGlyZWN0aXZlLFxyXG4gICAgVGV4dEVkaXRvckNvbXBvbmVudCxcclxuICAgIEhvdmVyRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9vdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZm9vdGVyLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb290ZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VjdGlvbiB7XHJcbiAgQElucHV0KCkgZGF0YT86IEZvb3RlclNlY3Rpb25Nb2RlbDtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZGVsZXRlPyA9IGZhbHNlO1xyXG5cclxuICBjb250ZW50PzogRm9vdGVyQ29udGVudE1vZGVsO1xyXG4gIHN0eWxlPzogRm9vdGVyU3R5bGVzTW9kZWw7XHJcbiAgbGlua0VkaXRvclN1YnNjcmlwdGlvbj8gOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGZvb3RlclR5cGU6IHN0cmluZyA9IFwiMVwiO1xyXG4gIHNjcmVlbldpZHRoOiBudW1iZXIgPSA0NzU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtYXREaWFsb2c6IE1hdERpYWxvZykge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuZ2V0U2NyZWVuU2l6ZSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnN0eWxlID0gdGhpcy5kYXRhPy5zdHlsZXM7XHJcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLmdldFBhZ2VzKClcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCl7XHJcbiAgICB0aGlzLmxpbmtFZGl0b3JTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKClcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIGdldFNjcmVlblNpemUoZXZlbnQ/OiBudW1iZXIpIHtcclxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB0aGlzLnNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgc3R5bGVzTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZT8ubGF5b3V0IH0gYXMgTGF5T3V0TW9kZWw7XHJcbiAgfVxyXG5cclxuICBwYWdlTGluazogc3RyaW5nID0gXCJQYWdlc1wiXHJcbiAgcGFnZXM6IGFueSA9IFtdXHJcblxyXG4gIGRlbGV0ZUZvbGRlckxpbmtzKGZvbGRlckluZGV4OiBudW1iZXIsIGxpbmtJbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmNvbnRlbnQ/LmZvbGRlcltmb2xkZXJJbmRleF0ubGlua3Muc3BsaWNlKGxpbmtJbmRleCwgMSk7XHJcbiAgICBpZiAoKHRoaXMuY29udGVudD8uZm9sZGVyPy5bZm9sZGVySW5kZXhdPy5saW5rcz8ubGVuZ3RoIHx8IDApIDw9IDApIHtcclxuICAgICAgdGhpcy5jb250ZW50Py5mb2xkZXIuc3BsaWNlKGZvbGRlckluZGV4LCAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVkaXRMaW5rcygpIHtcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0VG8obGluazogQnV0dG9uKSB7XHJcbiAgICBpZiAodGhpcy5lZGl0KSB7XHJcbiAgICAgIHRoaXMubWF0RGlhbG9nLm9wZW4oTGlua0VkaXRvckNvbXBvbmVudCwgeyBwYW5lbENsYXNzOiAnbGluay1lZGl0b3InLCBkYXRhOiB7IGxpbmtEYXRhOiBsaW5rLHR5cGUgOiBcIkxJTktcIiB9IH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuYnV0dG9uUmVkaXJlY3Rpb24uZW1pdCh7IGRhdGE6IGxpbmsgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRQYWdlcygpIHtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0VGVtcGxhdGUoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucGFnZXMgPSByZXMuZGF0YVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0VG9QYWdlKHBhZ2VEYXRhOiBhbnkpIHtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBsYWJlbCA6IHBhZ2VEYXRhLnBhZ2VOYW1lLFxyXG4gICAgICByZWRpcmVjdGlvblVybDpwYWdlRGF0YS5wYXRoLFxyXG4gICAgICBwYWdlSWQ6IHBhZ2VEYXRhLmlkLFxyXG4gICAgICBzdGF0dXM6IHRydWUsXHJcbiAgICB9XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UucGFnZVJlZGlyZWN0aW9uQnV0dG9uLmVtaXQoeyBkYXRhOiBkYXRhIH0pXHJcbiAgfVxyXG5cclxuICBjcmVhdGVOZXdMaW5rKGZvbGRlckluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGVkaXRvckNvbXBvbmVudCA9IHRoaXMubWF0RGlhbG9nLm9wZW4oTGlua0VkaXRvckNvbXBvbmVudCwgeyBwYW5lbENsYXNzOiAnbGluay1lZGl0b3InICwgZGF0YToge3R5cGUgOiBcIkxJTktcIn0gfSk7XHJcbiAgICB0aGlzLmxpbmtFZGl0b3JTdWJzY3JpcHRpb24gPSBlZGl0b3JDb21wb25lbnQuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMubGluaykge1xyXG4gICAgICAgIHRoaXMuY29udGVudD8uZm9sZGVyW2ZvbGRlckluZGV4XS5saW5rcy5wdXNoKHJlcy5saW5rKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNyZWF0ZU5ld0ZvbGRlcigpIHtcclxuICAgIGNvbnN0IGVkaXRvckNvbXBvbmVudCA9IHRoaXMubWF0RGlhbG9nLm9wZW4oTGlua0VkaXRvckNvbXBvbmVudCwgeyBwYW5lbENsYXNzOiAnbGluay1lZGl0b3InICxkYXRhOiB7dHlwZSA6IFwiTElOS1wifX0pO1xyXG4gICAgZWRpdG9yQ29tcG9uZW50LmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZihyZXMubGluaykge1xyXG4gICAgICAgIGxldCBmb2xkZXIgPSB7XHJcbiAgICAgICAgICBsYWJlbDogXCJBZGQgZm9sZGVyIG5hbWVcIixcclxuICAgICAgICAgIGxpbmtzOiBbcmVzLmxpbmtdXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRoaXMuY29udGVudCAmJiAhdGhpcy5jb250ZW50Py5mb2xkZXIpXHJcbiAgICAgICAgICB0aGlzLmNvbnRlbnQuZm9sZGVyID0gW107XHJcblxyXG4gICAgICAgIHRoaXMuY29udGVudD8uZm9sZGVyLnB1c2goZm9sZGVyKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJ0b3RhbC1jb250YWluZXJcIiBzaW1wb0hvdmVyXHJcbihob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGU/LmJhY2tncm91bmRcIiBbc2ltcG9MYXlvdXRdPVwic3R5bGU/LmxheW91dFwiIFtpZF09XCJkYXRhPy5pZFwiPlxyXG4gIDxkaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGU/LmZvb3RlclR5cGUgPT0gJ0Zvb3RlcjEnXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJGb290ZXIxXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHlsZT8uZm9vdGVyVHlwZSA9PSAnRm9vdGVyMidcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkZvb3RlcjJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlPy5mb290ZXJUeXBlID09ICdGb290ZXIzJ1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiRm9vdGVyM1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGU/LmZvb3RlclR5cGUgPT0gJ0Zvb3RlcjQnXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJGb290ZXI0XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGVkaXR9XCIgKm5nSWY9XCJzaG93RWRpdG9yc1wiPlxyXG4gICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cInNob3dEZWxldGVcIiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGRlbGV0ZX1cIj5cclxuICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cclxuICA8L2Rpdj5cclxuXHJcbjwvc2VjdGlvbj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjRm9vdGVyMT5cclxuICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvZ29TZWN0aW9uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZXNjU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LnNvY2lhbExpbmtzPy5kaXNwbGF5ICYmIHNjcmVlbldpZHRoID4gNDc1XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvY2lhbEljb25zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLThcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb2xkZXJzVmVydGljYWxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheSAmJiBzY3JlZW5XaWR0aCA8IDQ3NVwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic29jaWFsSWNvbnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8aHIgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5QnJhbmRpbmdcIj5cclxuICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUJyYW5kaW5nXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnJhbmRpbmdcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjRm9vdGVyMj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvZ29TZWN0aW9uXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZXNjU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LnNvY2lhbExpbmtzPy5kaXNwbGF5ICYmIHNjcmVlbldpZHRoID4gNDc1XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvY2lhbEljb25zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYWdlc0hvcml6b250YWxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheSAmJiBzY3JlZW5XaWR0aCA8IDQ3NVwiIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic29jaWFsSWNvbnNcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8aHIgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5QnJhbmRpbmdcIj5cclxuICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUJyYW5kaW5nXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnJhbmRpbmdcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjRm9vdGVyMz5cclxuICA8ZGl2IGNsYXNzPVwicm93XCIgW2NsYXNzLmFsaWduLWl0ZW1zLXN0YXJ0XT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9sZGVyc1ZlcnRpY2FsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGhyPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiIFtjbGFzcy53LTMwXT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2dvU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtc3RhcnRcIiAqbmdJZj1cImNvbnRlbnQ/LnNvY2lhbExpbmtzPy5kaXNwbGF5XCJcclxuICAgICAgW2NsYXNzLnctMzBdPVwic2NyZWVuV2lkdGggPCA0NzVcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvY2lhbEljb25zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUJyYW5kaW5nXCIgW2NsYXNzLnctMzBdPVwic2NyZWVuV2lkdGggPCA0NzVcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyYW5kaW5nXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI0Zvb3RlcjQ+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYWdlc0hvcml6b250YWxcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8aHI+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2dvU2VjdGlvblwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtc3RhcnRcIiAqbmdJZj1cImNvbnRlbnQ/LnNvY2lhbExpbmtzPy5kaXNwbGF5XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb2NpYWxJY29uc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlCcmFuZGluZ1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnJhbmRpbmdcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbG9nb1NlY3Rpb24+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleFwiIFtjbGFzcy5qdXN0aWZ5LWNvbnRlbnQtY2VudGVyXT1cInNjcmVlbldpZHRoIDwgNDc1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0zIGFsaWduLWl0ZW1zLWxnLWNlbnRlciBjdXJzb3ItcG9pbnRlciBtYi00XCJcclxuICAgICAgKm5nSWY9XCIhY29udGVudD8ubG9nbz8uaXNJbWFnZSB8fCAhY29udGVudD8ubG9nbz8uaW1hZ2U/LnVybFwiPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8ubG9nbz8udGV4dD8uaXNJY29uICYmIGNvbnRlbnQ/LmxvZ28/LnRleHQ/LnVybFwiPlxyXG4gICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cImNvbnRlbnQ/LmxvZ28/LnRleHQ/LnVybFwiIGFsdD1cImxvZ29cIiBbd2lkdGhdPVwiY29udGVudD8ubG9nbz8uc2l6ZVwiIGxvYWRpbmc9XCJsYXp5XCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1zbWFsbFwiICpuZ0lmPVwiY29udGVudD8ubG9nbz8udGV4dD8uaXNUZXh0XCIgW3NpbXBvQ29sb3JdPVwic3R5bGU/LmJhY2tncm91bmQ/LmNvbG9yXCI+XHJcbiAgICAgICAgPGIgW25nU3R5bGVdPVwieydmb250LWZhbWlseSc6IGNvbnRlbnQ/LmxvZ28/LnRleHQ/LmZvbnRGYW1pbHl9XCI+e3tjb250ZW50Py5zaXRlTmFtZT8udmFsdWV9fTwvYj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTMgYWxpZ24taXRlbXMtbGctY2VudGVyIGN1cnNvci1wb2ludGVyIG1iLTRcIlxyXG4gICAgICAqbmdJZj1cImNvbnRlbnQ/LmxvZ28/LmlzSW1hZ2UgJiYgY29udGVudD8ubG9nbz8uaW1hZ2U/LnVybFwiPlxyXG4gICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJjb250ZW50Py5sb2dvPy5pbWFnZT8udXJsXCIgYWx0PVwibG9nb1wiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoLiVdPVwic2NyZWVuV2lkdGggPiA0NzUgfHwgKGNvbnRlbnQ/LmxvZ28/LnNpemUgfHwgMTApIDwgNTAgPyBjb250ZW50Py5sb2dvPy5zaXplIDogKChjb250ZW50Py5sb2dvPy5zaXplIHx8IDEwKSAtIDEwKVwiXHJcbiAgICAgICAgbG9hZGluZz1cImxhenlcIj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkZXNjU2VjdGlvbj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmID0gXCJjb250ZW50Py5hZGRpdGlvbmFsRGV0YWlscyBhcyB0ZXh0SXRlbVwiID5cclxuICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJ0ZXh0SXRlbS52YWx1ZSBcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbbGFiZWxdPVwiY29udGVudD8uYWRkaXRpb25hbERldGFpbHM/LmxhYmVsIHx8ICcnXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cclxuICA8L25nLWNvbnRhaW5lcj4gIDwhLS0gPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCIgW2lubmVySFRNTF09XCJjb250ZW50Py5hZGRpdGlvbmFsRGV0YWlscz8udmFsdWUgPz8gJycgfCBzYW5pdGl6ZUh0bWxcIj48L2Rpdj4gLS0+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3NvY2lhbEljb25zPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtc3RhcnQgYWxpZ24taXRlbXMtbGctY2VudGVyIGZsZXgtY29sdW1uIGZsZXgtbGctcm93IGdhcC1sZy0wIGdhcC0zXCJcclxuICAgIFtuZ0NsYXNzXT1cImNvbnRlbnQ/LnNvY2lhbExpbmtzPy5kaXNwbGF5ID8gJ2p1c3RpZnktY29udGVudC1iZXR3ZWVuJyA6ICdqdXN0aWZ5LWNvbnRlbnQtZW5kJ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC0wXCIgKm5nSWY9XCJjb250ZW50Py5zb2NpYWxMaW5rcz8uZGlzcGxheVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbnRlbnQ/LnNvY2lhbExpbmtzPy5jaGFubmVsc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29uc1wiPlxyXG4gICAgICAgICAgPHNpbXBvLXNvY2lhLWljb25zIFtpY29uQ29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIFtzb2NpYWxJY29uRGF0YV09XCJpdGVtXCJcclxuICAgICAgICAgICAgW2NvbG9yXT1cInN0eWxlPy5iYWNrZ3JvdW5kPy5jb2xvclwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIj48L3NpbXBvLXNvY2lhLWljb25zPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNicmFuZGluZz5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1zbWFsbCB0ZXh0LWNlbnRlciAgYnJhbmRpbmctdGV4dFwiPk1hZGUgd2l0aCA8YSBjbGFzcz1cImJyYW5kaW5nLXRleHQgZnctNjAwXCJcclxuICAgICAgaHJlZj1cImh0dHBzOi8vc2ltcG8uYWlcIiB0YXJnZXQ9XCJfYmxhbmtcIj5TaW1wbzwvYT48L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcGFnZXNIb3Jpem9udGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBtYi0zIHBhZ2VUeXBlXCIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgcGFnZXNcIiBbY2xhc3Mudy01MF09XCJzY3JlZW5XaWR0aCA8IDQ3NVwiIFtjbGFzcy50ZXh0LWNlbnRlcl09XCJzY3JlZW5XaWR0aCA8IDQ3NVwiIChjbGljayk9XCJyZWRpcmVjdFRvUGFnZShwYWdlKVwiPlxyXG4gICAge3twYWdlLnBhZ2VOYW1lfX1cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gPG5nLXRlbXBsYXRlICNwYWdlc1ZlcnRpY2FsPlxyXG4gIDxkaXYgY2xhc3M9XCJwYWdlLWNvbnRhaW5lciBjb2wtbWQtMyBtYi0zXCIgW2NsYXNzLnctNTBdPVwic2NyZWVuV2lkdGggPCA0NzVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwYWdlVHlwZSBtYi0zXCI+e3twYWdlTGlua319PC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYWdlIG9mIHBhZ2VzXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwYWdlcyBtYi0yXCIgKGNsaWNrKT1cInJlZGlyZWN0VG9QYWdlKHBhZ2UpXCI+e3twYWdlPy5wYWdlTmFtZX19PC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4gLS0+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZvbGRlcnNWZXJ0aWNhbD5cclxuICA8ZGl2IGNsYXNzPVwicGFnZS1jb250YWluZXIgY29sLW1kLTMgbWItM1wiICpuZ0Zvcj1cImxldCBmb2xkZXIgb2YgY29udGVudD8uZm9sZGVyO2xldCBmb2xkZXJJbmRleCA9IGluZGV4XCIgW2NsYXNzLnctNTBdPVwic2NyZWVuV2lkdGggPCA0NzVcIj5cclxuICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJmb2xkZXIubGFiZWxcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgPGRpdiBjbGFzcz1cIm10LTE1XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgZm9sZGVyLmxpbmtzO2xldCBsaW5rSW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb2xkZXItcGFnZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJXaGVuRWRpdGFibGUnIDogZWRpdH1cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlcyBtYi0yXCIgKGNsaWNrKT1cInJlZGlyZWN0VG8ocGFnZSlcIj57e3BhZ2UubGFiZWx9fTwvZGl2PlxyXG4gICAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJkZWxldGVGb2xkZXJMaW5rcyhmb2xkZXJJbmRleCwgbGlua0luZGV4KVwiPmRlbGV0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZWRpdCA/IGFkZExpbmtzIDogbnVsbDsgY29udGV4dDoge2RhdGE6IGZvbGRlckluZGV4fVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCIgKm5nSWY9XCIoY29udGVudD8uZm9sZGVyPy5sZW5ndGggfHwgMCkgPCA0XCIgW2NsYXNzLnctNTBdPVwic2NyZWVuV2lkdGggPCA0NzVcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlZGl0ID8gYWRkRm9sZGVyIDogbnVsbFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhZGRMaW5rcyBsZXQtZm9sZGVySW5kZXg9XCJkYXRhXCI+XHJcbiAgPGRpdiBjbGFzcz1cImFkZExpbmtzXCIgKGNsaWNrKT1cImNyZWF0ZU5ld0xpbmsoZm9sZGVySW5kZXgpXCI+XHJcbiAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYWRkRm9sZGVyPlxyXG4gIDxkaXYgY2xhc3M9XCJhZGRMaW5rcyBoLTEwMFwiIChjbGljayk9XCJjcmVhdGVOZXdGb2xkZXIoKVwiPlxyXG4gICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==