simpo-component-library 3.6.320 → 3.6.324

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 (232) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/components/delete-hover-element/delete-hover-element.component.mjs +3 -3
  3. package/esm2022/lib/components/document/document.component.mjs +3 -3
  4. package/esm2022/lib/components/image-loading/image-loading.component.mjs +3 -3
  5. package/esm2022/lib/components/payment-details/payment-details.component.mjs +3 -3
  6. package/esm2022/lib/constants/business.constant.mjs +1 -1
  7. package/esm2022/lib/directive/alignment.directive.mjs +1 -1
  8. package/esm2022/lib/directive/blur-content.directive.mjs +1 -1
  9. package/esm2022/lib/directive/borderlessImage.directive.mjs +1 -1
  10. package/esm2022/lib/directive/button-directive.directive.mjs +1 -1
  11. package/esm2022/lib/directive/button-editor.directive.mjs +1 -1
  12. package/esm2022/lib/directive/color.directive.mjs +1 -1
  13. package/esm2022/lib/directive/column-directive.directive.mjs +1 -1
  14. package/esm2022/lib/directive/container-alignment.directive.mjs +1 -1
  15. package/esm2022/lib/directive/container-fir.directive.mjs +1 -1
  16. package/esm2022/lib/directive/content-title-spacing.directive.mjs +1 -1
  17. package/esm2022/lib/directive/contenteditable.directive.mjs +1 -1
  18. package/esm2022/lib/directive/corner-directive.mjs +1 -1
  19. package/esm2022/lib/directive/height.directive.mjs +1 -1
  20. package/esm2022/lib/directive/hover-animation.directive.mjs +1 -1
  21. package/esm2022/lib/directive/hoverborder.directive.mjs +1 -1
  22. package/esm2022/lib/directive/icon-directive.directive.mjs +2 -1
  23. package/esm2022/lib/directive/image-container.directive.mjs +1 -1
  24. package/esm2022/lib/directive/image-directive.directive.mjs +2 -2
  25. package/esm2022/lib/directive/image-editor.directive.mjs +1 -1
  26. package/esm2022/lib/directive/image-position.directive.mjs +1 -1
  27. package/esm2022/lib/directive/merge-header.directive.mjs +1 -1
  28. package/esm2022/lib/directive/position-layout-directive.directive.mjs +1 -1
  29. package/esm2022/lib/directive/set-dynamic-background.directive.mjs +4 -7
  30. package/esm2022/lib/directive/spacing-around.directive.mjs +2 -2
  31. package/esm2022/lib/directive/spacing-horizontal.directive.mjs +1 -1
  32. package/esm2022/lib/directive/spacing.directive.mjs +1 -1
  33. package/esm2022/lib/directive/sticky-directive.mjs +1 -1
  34. package/esm2022/lib/directive/text-background-directive.directive.mjs +1 -1
  35. package/esm2022/lib/directive/text-size.directive.mjs +1 -1
  36. package/esm2022/lib/directive/translate-onhover.directive.mjs +1 -1
  37. package/esm2022/lib/directive/wrap-containers.directive.mjs +1 -1
  38. package/esm2022/lib/ecommerce/sections/address/address.component.mjs +3 -3
  39. package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +3 -3
  40. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +3 -19
  41. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.model.mjs +1 -1
  42. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.component.mjs +3 -3
  43. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.model.mjs +1 -1
  44. package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +4 -4
  45. package/esm2022/lib/ecommerce/sections/cart/cart.modal.mjs +1 -1
  46. package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +3 -3
  47. package/esm2022/lib/ecommerce/sections/category-product/category-product.model.mjs +1 -1
  48. package/esm2022/lib/ecommerce/sections/checkout/checkout.component.mjs +3 -3
  49. package/esm2022/lib/ecommerce/sections/checkout/checkout.modal.mjs +1 -1
  50. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.component.mjs +3 -3
  51. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.model.mjs +1 -1
  52. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.component.mjs +3 -3
  53. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.model.mjs +1 -1
  54. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +3 -3
  55. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.modal.mjs +1 -1
  56. package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +3 -3
  57. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +3 -3
  58. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.modal.mjs +1 -1
  59. package/esm2022/lib/ecommerce/sections/item-varient/item-varient.component.mjs +3 -3
  60. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.component.mjs +3 -3
  61. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.modal.mjs +1 -1
  62. package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +3 -3
  63. package/esm2022/lib/ecommerce/sections/pagnination/pagnination.component.mjs +3 -3
  64. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs +3 -3
  65. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.model.mjs +1 -1
  66. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +3 -3
  67. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.modal.mjs +1 -1
  68. package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +3 -3
  69. package/esm2022/lib/ecommerce/sections/product-list/product-list.modal.mjs +1 -1
  70. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +18 -227
  71. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.model.mjs +1 -1
  72. package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +14 -193
  73. package/esm2022/lib/ecommerce/sections/scheme-selection/scheme-selection.component.mjs +3 -3
  74. package/esm2022/lib/ecommerce/sections/small-product-listing/small-product-listing.component.mjs +3 -3
  75. package/esm2022/lib/ecommerce/sections/store-list/store-list.component.mjs +3 -3
  76. package/esm2022/lib/ecommerce/sections/store-list/store-list.modal.mjs +1 -1
  77. package/esm2022/lib/ecommerce/sections/store-page/store-page.component.mjs +3 -3
  78. package/esm2022/lib/ecommerce/sections/store-page/store-page.model.mjs +1 -1
  79. package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +3 -3
  80. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +22 -179
  81. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.modal.mjs +1 -1
  82. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +31 -90
  83. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.model.mjs +1 -1
  84. package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +3 -3
  85. package/esm2022/lib/ecommerce/styles/BaseCollection.modal.mjs +1 -1
  86. package/esm2022/lib/ecommerce/styles/Collection.modal.mjs +1 -1
  87. package/esm2022/lib/ecommerce/styles/OrderedItems.modal.mjs +1 -1
  88. package/esm2022/lib/ecommerce/styles/PincodeLocation.model.mjs +1 -1
  89. package/esm2022/lib/ecommerce/styles/PincodeLocationInter.model.mjs +1 -1
  90. package/esm2022/lib/ecommerce/styles/cart.modal.mjs +1 -1
  91. package/esm2022/lib/ecommerce/styles/category.modal.mjs +1 -1
  92. package/esm2022/lib/ecommerce/styles/order.modal.mjs +1 -1
  93. package/esm2022/lib/ecommerce/styles/product.modal.mjs +1 -1
  94. package/esm2022/lib/ecommerce/styles/review.modal.mjs +1 -1
  95. package/esm2022/lib/ecommerce/styles/user.modal.mjs +1 -1
  96. package/esm2022/lib/elements/add-section/add-section.component.mjs +3 -3
  97. package/esm2022/lib/elements/address-list/address-list.component.mjs +3 -3
  98. package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +3 -3
  99. package/esm2022/lib/elements/button/button.component.mjs +3 -3
  100. package/esm2022/lib/elements/button/button.model.mjs +1 -1
  101. package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +3 -3
  102. package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +3 -3
  103. package/esm2022/lib/elements/editor-service.service.mjs +1 -1
  104. package/esm2022/lib/elements/heading-element/heading-element.component.mjs +3 -3
  105. package/esm2022/lib/elements/image-editor/image-editor.component.mjs +4 -3
  106. package/esm2022/lib/elements/index.mjs +1 -1
  107. package/esm2022/lib/elements/link-editor/link-editor.component.mjs +3 -3
  108. package/esm2022/lib/elements/list-home-appointment/list-home-appointment.component.mjs +3 -3
  109. package/esm2022/lib/elements/media-selector/media-selector.component.mjs +3 -3
  110. package/esm2022/lib/elements/portfolio/portfolio.component.mjs +3 -3
  111. package/esm2022/lib/elements/pricing-s1/pricing-s1.component.mjs +3 -3
  112. package/esm2022/lib/elements/property/property.component.mjs +3 -3
  113. package/esm2022/lib/elements/schedule-video-call/schedule-video-call.component.mjs +3 -3
  114. package/esm2022/lib/elements/simpo-button/simpo-button.component.mjs +3 -3
  115. package/esm2022/lib/elements/svg-divider/svg-divider.component.mjs +3 -3
  116. package/esm2022/lib/elements/text/text.component.mjs +3 -3
  117. package/esm2022/lib/elements/text-editor/text-editor.component.mjs +3 -3
  118. package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +3 -3
  119. package/esm2022/lib/pipes/amount.pipe.mjs +1 -1
  120. package/esm2022/lib/pipes/gender.pipe.mjs +1 -1
  121. package/esm2022/lib/sections/BaseSection.mjs +1 -1
  122. package/esm2022/lib/sections/add-new-section/add-new-section.component.mjs +3 -3
  123. package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +3 -3
  124. package/esm2022/lib/sections/appointment-form/appointment-form.model.mjs +1 -1
  125. package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +3 -3
  126. package/esm2022/lib/sections/banner-carousel/banner-carousel.model.mjs +1 -1
  127. package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +3 -3
  128. package/esm2022/lib/sections/blog-list/blog-list.component.mjs +3 -3
  129. package/esm2022/lib/sections/blog-list/blog-list.model.mjs +1 -1
  130. package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +3 -3
  131. package/esm2022/lib/sections/choose-us-section/choose-us-section.model.mjs +1 -1
  132. package/esm2022/lib/sections/faq-section/faq-section.component.mjs +3 -3
  133. package/esm2022/lib/sections/faq-section/faq-section.modal.mjs +1 -1
  134. package/esm2022/lib/sections/features-section/features-section.component.mjs +3 -3
  135. package/esm2022/lib/sections/features-section/features-section.model.mjs +1 -1
  136. package/esm2022/lib/sections/footer/footer.component.mjs +3 -3
  137. package/esm2022/lib/sections/footer/footer.modal.mjs +1 -1
  138. package/esm2022/lib/sections/header-section/header-section.component.mjs +12 -46
  139. package/esm2022/lib/sections/header-section/header-section.model.mjs +1 -1
  140. package/esm2022/lib/sections/header-text/header-text.component.mjs +3 -3
  141. package/esm2022/lib/sections/header-text/header-text.model.mjs +1 -1
  142. package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +3 -3
  143. package/esm2022/lib/sections/image-carousel-section/image-carousel.model.mjs +1 -1
  144. package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +3 -3
  145. package/esm2022/lib/sections/image-grid-section/image-grid-section.model.mjs +1 -1
  146. package/esm2022/lib/sections/image-section/image-section.component.mjs +3 -3
  147. package/esm2022/lib/sections/image-section/image-section.model.mjs +1 -1
  148. package/esm2022/lib/sections/location-section/location-section.component.mjs +3 -3
  149. package/esm2022/lib/sections/location-section/location-section.modal.mjs +1 -1
  150. package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +3 -3
  151. package/esm2022/lib/sections/logo-showcase/logo-showcase.modal.mjs +1 -1
  152. package/esm2022/lib/sections/moving-text/moving-text.component.mjs +3 -3
  153. package/esm2022/lib/sections/moving-text/moving-text.modal.mjs +1 -1
  154. package/esm2022/lib/sections/new-services/new-services.component.mjs +3 -3
  155. package/esm2022/lib/sections/new-services/new-services.model.mjs +1 -1
  156. package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +3 -3
  157. package/esm2022/lib/sections/new-testimonials/new-testimonials.model.mjs +1 -1
  158. package/esm2022/lib/sections/news-letter-component/news-letter-component.component.mjs +3 -3
  159. package/esm2022/lib/sections/news-letter-component/news-letter.modal.mjs +1 -1
  160. package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +3 -3
  161. package/esm2022/lib/sections/pricing-section/pricing-section.modal.mjs +1 -1
  162. package/esm2022/lib/sections/process-modern/process-modern.component.mjs +3 -3
  163. package/esm2022/lib/sections/process-modern/process-modern.model.mjs +1 -1
  164. package/esm2022/lib/sections/process-section/process-section.component.mjs +3 -3
  165. package/esm2022/lib/sections/process-section/process-section.modal.mjs +1 -1
  166. package/esm2022/lib/sections/property-component/property-component.component.mjs +3 -3
  167. package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
  168. package/esm2022/lib/sections/property-list/property-list.component.mjs +3 -3
  169. package/esm2022/lib/sections/property-list/property-list.modal.mjs +1 -1
  170. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +3 -3
  171. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.model.mjs +1 -1
  172. package/esm2022/lib/sections/registration-form/registration-form.component.mjs +3 -3
  173. package/esm2022/lib/sections/registration-form/registrationForm.model.mjs +1 -1
  174. package/esm2022/lib/sections/service-section/service-section.component.mjs +3 -3
  175. package/esm2022/lib/sections/service-section/service-section.model.mjs +1 -1
  176. package/esm2022/lib/sections/skeleton-loader-section/skeleton-loader-section.component.mjs +3 -3
  177. package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +3 -3
  178. package/esm2022/lib/sections/team-member-section/team-member-section.model.mjs +1 -1
  179. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +3 -3
  180. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.model.mjs +1 -1
  181. package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +3 -3
  182. package/esm2022/lib/sections/testimonial-section/testimonial-section.model.mjs +1 -1
  183. package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +3 -3
  184. package/esm2022/lib/sections/testimonial-video/testimonial-video.model.mjs +1 -1
  185. package/esm2022/lib/sections/text-section/text-section.component.mjs +3 -3
  186. package/esm2022/lib/sections/text-section/text-section.model.mjs +1 -1
  187. package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +3 -3
  188. package/esm2022/lib/sections/usp-video-section/usp-video-section.model.mjs +1 -1
  189. package/esm2022/lib/sections/video-section/video-section.component.mjs +3 -3
  190. package/esm2022/lib/sections/video-section/video-section.model.mjs +1 -1
  191. package/esm2022/lib/sections/view-blog/view-blog.component.mjs +3 -3
  192. package/esm2022/lib/services/cart.service.mjs +1 -1
  193. package/esm2022/lib/services/endUser.service.mjs +1 -1
  194. package/esm2022/lib/services/image-upload-service.service.mjs +1 -1
  195. package/esm2022/lib/services/rest.service.mjs +8 -81
  196. package/esm2022/lib/services/sanitizeHtml.mjs +1 -1
  197. package/esm2022/lib/services/storage.service.mjs +1 -8
  198. package/esm2022/lib/styles/index.mjs +1 -2
  199. package/esm2022/lib/styles/style.model.mjs +1 -1
  200. package/esm2022/lib/styles/types.mjs +1 -1
  201. package/esm2022/lib/tokens/api-token.mjs +1 -1
  202. package/esm2022/public-api.mjs +1 -3
  203. package/fesm2022/simpo-component-library.mjs +308 -1372
  204. package/fesm2022/simpo-component-library.mjs.map +1 -1
  205. package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +1 -2
  206. package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +1 -1
  207. package/lib/ecommerce/sections/returns-calculator/returns-calculator.component.d.ts +3 -41
  208. package/lib/ecommerce/sections/scheme-details/scheme-details.component.d.ts +3 -35
  209. package/lib/ecommerce/sections/user-profile/user-profile.component.d.ts +2 -19
  210. package/lib/ecommerce/sections/verify-payment/verify-payment.component.d.ts +0 -4
  211. package/lib/elements/link-editor/link-editor.component.d.ts +1 -1
  212. package/lib/elements/pricing-s1/pricing-s1.component.d.ts +1 -1
  213. package/lib/sections/header-section/header-section.component.d.ts +1 -3
  214. package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
  215. package/lib/services/rest.service.d.ts +2 -18
  216. package/lib/services/storage.service.d.ts +0 -2
  217. package/lib/styles/index.d.ts +1 -2
  218. package/package.json +1 -1
  219. package/public-api.d.ts +0 -2
  220. package/simpo-component-library-3.6.324.tgz +0 -0
  221. package/src/lib/styles/global-styles.css +263 -272
  222. package/esm2022/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.mjs +0 -37
  223. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.mjs +0 -108
  224. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.model.mjs +0 -2
  225. package/esm2022/lib/sections/scheme-detail/scheme-detail.component.mjs +0 -265
  226. package/esm2022/lib/sections/scheme-detail/scheme-detail.modal.mjs +0 -2
  227. package/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.d.ts +0 -14
  228. package/lib/ecommerce/sections/schemes/schemes.component.d.ts +0 -28
  229. package/lib/ecommerce/sections/schemes/schemes.component.model.d.ts +0 -21
  230. package/lib/sections/scheme-detail/scheme-detail.component.d.ts +0 -68
  231. package/lib/sections/scheme-detail/scheme-detail.modal.d.ts +0 -17
  232. package/simpo-component-library-3.6.320.tgz +0 -0
@@ -98,11 +98,11 @@ export class LogoShowcaseComponent extends BaseSection {
98
98
  }, 100);
99
99
  }
100
100
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LogoShowcaseComponent, deps: [{ token: i1.EventsService }], target: i0.ɵɵFactoryTarget.Component }); }
101
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LogoShowcaseComponent, isStandalone: true, selector: "simpo-logo-showcase", inputs: { data: "data", index: "index", edit: "edit", delete: "delete", customClass: "customClass", nextComponentColor: "nextComponentColor" }, host: { listeners: { "window:resize": "getScreenSize($event)" } }, usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"styles?.showCaseType==='Grid'\">\r\n <div [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" class=\"total-container\"\r\n [attr.style]=\"customClass\">\r\n <div class=\"py-3 w-100 \" [simpoBackground]=\"styles?.background\"\r\n [ngClass]=\"styles?.fullWidth === true ? 'px-0' : ''\" [id]=\"data?.id\" [simpoAnimation]=\"styles?.animation\"\r\n #mainContainer [simpoOverlay]=\"styles?.background\" [simpoBorder]=\"styles?.border\"\r\n [spacingHorizontal]=\"stylesLayout\">\r\n <div class=\"row g-5 gridtext\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\"\r\n [simpoPositionLayoutDirective]=\"styles?.positionLayout\"\r\n *ngIf=\"styles?.positionLayout?.value === 'left' || styles?.positionLayout?.value === 'right'\"\r\n [ngClass]=\"{ 'align-items-stretch': styles?.positionLayout?.value === 'left' || styles?.positionLayout?.value === 'right'}\">\r\n\r\n <div class=\"col-5 gridimg w-full mb-20 content-side\" [id]=\"data?.id\"\r\n [simpoContentAlignment]=\"styles?.contentAlignment\">\r\n <div *ngFor=\"let item of content?.inputText\">\r\n <ng-container *ngIf=\"edit || item.value\">\r\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"data?.action && data?.action?.display\" class=\"button-display mt-20\">\r\n <div *ngFor=\"let button of data?.action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\r\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\" [edit]=\"edit\"\r\n [color]=\"data?.styles?.background?.accentColor\"\r\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap flex-1 width-max\">\r\n <div class=\"slider flex overflow-hidden w-full\">\r\n <div class=\"slider-track\" *ngIf=\"content?.display?.showIcon && !content?.display?.showText\"\r\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\r\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic'}\"\r\n *ngFor=\"let item of content?.listItem?.data;let i = index\">\r\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\r\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\r\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\r\n <ng-container\r\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\r\n <div [id]=\"data?.id\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n class=\"logo-img d-flex justify-content-center align-items-center\"\r\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\r\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\r\n [showIcon]=\"content?.display?.showIcon\">\r\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\r\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\r\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"slider-track w-full\"\r\n *ngIf=\"!content?.display?.showIcon && content?.display?.showText\"\r\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\"\r\n *ngFor=\"let item of content?.listItem?.data\"\r\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic'}\">\r\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n <div class=\"slider-track w-full\"\r\n *ngIf=\"content?.display?.showIcon && content?.display?.showText\"\r\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides d-flex\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\r\n *ngFor=\"let item of content?.listItem?.data\"\r\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic','flex-row' : styles?.logoPosition == 'left' , 'flex-row-reverse' : styles?.logoPosition == 'right', 'flex-column' : styles?.logoPosition == 'top' , 'flex-column-reverse' : styles?.logoPosition == 'bottom'}\">\r\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\r\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\r\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\r\n <ng-container\r\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\r\n <div [id]=\"data?.id\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n class=\"logo-img d-flex justify-content-center align-items-center\"\r\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\r\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\r\n [showIcon]=\"content?.display?.showIcon\">\r\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\r\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\r\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\r\n </div>\r\n </ng-container>\r\n\r\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex-column row g-2\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\"\r\n *ngIf=\"styles?.positionLayout?.value === 'bottom'\">\r\n <div class=\"px-5 mb-20 content-side\" [id]=\"data?.id\"\r\n [ngClass]=\"{'align-items-stretch':styles?.layout?.align==='left' || styles?.layout?.align==='center' || styles?.layout?.align==='right'}\">\r\n <div *ngFor=\"let item of content?.inputText\">\r\n <ng-container *ngIf=\"edit || item.value\">\r\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"data?.action && data?.action?.display\" class=\"button-display mt-20\">\r\n <div *ngFor=\"let button of data?.action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\r\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\" [edit]=\"edit\"\r\n [color]=\"data?.styles?.background?.accentColor\"\r\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-12 flex flex-wrap items-center w-full gap-2 justify-center\">\r\n <!-- flex flex-wrap items-center w-full gap-2 justify-center -->\r\n <div class=\"slider flex overflow-hidden w-full\">\r\n <div class=\"slider-track w-full\"\r\n *ngIf=\"content?.display?.showIcon && !content?.display?.showText\"\r\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\r\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\r\n *ngFor=\"let item of content?.listItem?.data; let i = index\">\r\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\r\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\r\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\r\n <ng-container\r\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\r\n <div [id]=\"data?.id\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n class=\"logo-img d-flex justify-content-center align-items-center\"\r\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\r\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\r\n [showIcon]=\"content?.display?.showIcon\">\r\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\r\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\r\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"slider-track w-full\"\r\n *ngIf=\"!content?.display?.showIcon && content?.display?.showText\"\r\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\"\r\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\r\n *ngFor=\"let item of content?.listItem?.data\">\r\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n <div class=\"slider-track w-full\"\r\n *ngIf=\"content?.display?.showIcon && content?.display?.showText\"\r\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides d-flex align-items-center\" [simpoCorner]=\"styles?.corners\"\r\n *ngFor=\"let item of content?.listItem?.data\" [id]=\"data?.id\"\r\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'flex-row' : styles?.logoPosition == 'left' , 'flex-row-reverse' : styles?.logoPosition == 'right', 'flex-column' : styles?.logoPosition == 'top' , 'flex-column-reverse' : styles?.logoPosition == 'bottom'}\">\r\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\r\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\r\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\r\n <ng-container\r\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\r\n <div [id]=\"data?.id\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n class=\"logo-img d-flex justify-content-center align-items-center\"\r\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\r\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\r\n [showIcon]=\"content?.display?.showIcon\">\r\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\r\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\r\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\r\n </div>\r\n </ng-container>\r\n <simpo-text-editor class=\"mt-2\" [(value)]=\"item.inputText[0].value\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"styles?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [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 </div>\r\n</div>\r\n\r\n<div *ngIf=\"styles?.showCaseType==='Carousal'\">\r\n <div [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" class=\"total-container\">\r\n\r\n <div class=\"w-100\" [id]=\"data?.id\" #mainContainer [simpoOverlay]=\"styles?.background\"\r\n [simpoBorder]=\"styles?.border\" [spacingHorizontal]=\"stylesLayout\"\r\n [ngClass]=\"styles?.fullWidth === true ? 'px-0' : ''\" [simpoBackground]=\"styles?.background\">\r\n <div class=\"flex-column row g-2\" [id]=\"data?.id\" [simpoAnimation]=\"styles?.animation\"\r\n [simpoLayout]=\"styles?.layout\">\r\n <div class=\"mainsec content-side\" [id]=\"data?.id\"\r\n [ngClass]=\"{'align-items-stretch':styles?.layout?.align==='left' || styles?.layout?.align==='center' || styles?.layout?.align==='right'}\">\r\n\r\n <div *ngFor=\"let item of content?.inputText\">\r\n <ng-container *ngIf=\"edit || item.value\">\r\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"data?.action && data?.action?.display\" class=\"gap-2 d-md-flex mt-15\" [ngClass]=\"[\r\n styles?.layout?.align === 'left' ? 'justify-content-md-start' : '',\r\n styles?.layout?.align === 'center' ? 'justify-content-md-center' : '',\r\n styles?.layout?.align === 'right' ? 'justify-content-md-end' : ''\r\n ]\">\r\n <div *ngFor=\"let button of data?.action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\r\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\" [edit]=\"edit\"\r\n [color]=\"data?.styles?.background?.accentColor\"\r\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\r\n </div>\r\n </div>\r\n\r\n <div [ngClass]=\"{\r\n 'fullwidth flex-1 inline-edit ': styles?.fullWidth,\r\n 'nofullwidth flex-1 inline-edit ': !styles?.fullWidth\r\n }\">\r\n <div class=\"masking\">\r\n\r\n <div class=\"slider animation \" [style.animationDuration]=\"animationDuration\"\r\n [style.animationDirection]=\"animationDirection\">\r\n <div class=\"slider-track2\"\r\n *ngIf=\"content?.display?.showIcon && !content?.display?.showText\"\r\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides2\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\r\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\r\n *ngFor=\"let item of content?.listItem?.data;let i = index\">\r\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\r\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\"\r\n [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\r\n [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\r\n <ng-container\r\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\r\n <div [id]=\"data?.id\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n class=\"logo-img d-flex justify-content-center align-items-center\"\r\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\r\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\r\n [sectionId]=\"data?.id\" [showIcon]=\"content?.display?.showIcon\">\r\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\r\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\r\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"slider-track2\"\r\n *ngIf=\"content?.display?.showText && !content?.display?.showIcon\"\r\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\"\r\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\r\n *ngFor=\"let item of content?.listItem?.data\">\r\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n <div class=\"slider-track2 d-flex w-full\"\r\n *ngIf=\"content?.display?.showIcon && content?.display?.showText\"\r\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides d-flex\" [simpoCorner]=\"styles?.corners\"\r\n *ngFor=\"let item of content?.listItem?.data\" [id]=\"data?.id\"\r\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'align-items-start': styles?.layout?.align === 'left', 'align-items-center': styles?.layout?.align === 'center', 'align-items-end': styles?.layout?.align === 'right' , 'flex-row' : styles?.logoPosition == 'left' , 'flex-row-reverse' : styles?.logoPosition == 'right', 'flex-column' : styles?.logoPosition == 'top' , 'flex-column-reverse' : styles?.logoPosition == 'bottom'}\">\r\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\r\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\"\r\n [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\r\n [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\r\n <ng-container\r\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\r\n <div [id]=\"data?.id\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n class=\"logo-img d-flex justify-content-center align-items-center\"\r\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\r\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\r\n [sectionId]=\"data?.id\" [showIcon]=\"content?.display?.showIcon\">\r\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\r\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\r\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\r\n </div>\r\n </ng-container>\r\n <simpo-text-editor class=\"mt-2\" [(value)]=\"item.inputText[0].value\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"styles?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [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 </div>\r\n</div>", styles: [".masking{mask:linear-gradient(90deg,transparent,white 5%,white 95%,transparent);overflow:hidden;width:100%}.sliderdad{width:100%;display:flex}@media (min-width: 860px){.nofullwidth{overflow:hidden}}.slider-track2{min-width:max-content;translate:none;rotate:none;scale:none;gap:1rem;justify-content:center;align-items:center;flex-wrap:wrap;width:100%;display:flex}.mainsec{gap:2rem;flex-direction:column;display:flex}.slider-track2.logotype-boxed{gap:1rem}.slider-track2.logotype-basic{gap:5rem}.slides2.logotype-boxed{padding:1.5rem 1.25rem;--tw-bg-opacity: .05;flex-shrink:0;width:auto;height:auto;display:flex;position:relative;box-shadow:#0000002e 0 2px 4px;margin:10px 0}.slides2.logotype-basic{flex-shrink:0;width:auto;height:auto;display:flex;position:relative}.slides2.img{height:100%;max-width:100%;border-style:solid}@keyframes scrollLeft{0%{transform:translateZ(0)}to{transform:translate3d(-100%,0,0)}}@keyframes scrollRight{0%{transform:translate3d(-100%,0,0)}to{transform:translateZ(0)}}.animation{animation:scrollLeft linear infinite}.slider-track{justify-content:center;align-items:center;flex-wrap:wrap;width:100%;display:flex;gap:10px}.slider-track.logotype-basic{gap:5rem}.slider-track.logotype-boxed{gap:1rem}.slides.logotype-basic{flex-shrink:0;width:auto;min-height:5rem;height:auto;display:flex;position:relative}.slides.logotype-boxed{padding:1.5rem .625rem;--tw-bg-opacity: .05;box-shadow:#0000002e 0 2px 4px;width:auto;height:auto;display:flex;align-items:center;margin:10px 0}.width-max{width:max-content;max-width:50%}.slides.texttype-boxed{padding:1.5rem .625rem;justify-content:center;width:auto;display:flex;position:relative;box-shadow:#0000002e 0 2px 4px;margin:10px 0;align-items:center}.slides.texttype-boxed:hover{--tw-bg-opacity: .05;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.slides.img{border-style:solid;max-width:100%;height:100%}@media only screen and (max-width: 500px){.col-xxl-8{padding-left:0!important;padding-right:0!important}.mainsec{padding-right:2rem!important;padding-left:2rem!important}.col-7{min-width:50%;width:100%;max-width:100%}.col-5{width:100%}.slides img{width:88%}}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.total-container{position:relative;height:auto}.mt-20{margin-top:20px}.mb-20{margin-bottom:20px}.row{margin-left:0;margin-right:0}\n"], dependencies: [{ kind: "component", type: SimpoButtonComponent, selector: "app-button-element", inputs: ["buttonContent", "buttonStyle", "buttonId", "color", "sectionId", "edit", "backgroundInfo"] }, { kind: "ngmodule", type: SimpoElementsModule }, { kind: "component", type: i2.SvgDividerComponent, selector: "simpo-svg-divider", inputs: ["dividerType", "color"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label"], outputs: ["valueChange"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i3.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i4.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatGridListModule }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: BorderDirective, selector: "[simpoBorder]", inputs: ["simpoBorder"] }, { kind: "directive", type: CornerDirective, selector: "[simpoCorner]", inputs: ["simpoCorner"] }, { kind: "directive", type: simpoConetenAlignmentDirective, selector: "[simpoContentAlignment]", inputs: ["simpoContentAlignment"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: OverlayDirective, selector: "[simpoOverlay]", inputs: ["simpoOverlay"] }, { kind: "directive", type: PositionLayoutDirectiveDirective, selector: "[simpoPositionLayoutDirective]", inputs: ["simpoPositionLayoutDirective"] }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "directive", type: ImageEditorDirective, selector: "[appImageEditor]", inputs: ["appImageEditor", "imageData", "sectionId", "showIcon", "iconData"] }, { kind: "directive", type: IconDirectiveDirective, selector: "[simpoIconDirective]", inputs: ["simpoIconDirective", "iconId"] }] }); }
101
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LogoShowcaseComponent, isStandalone: true, selector: "simpo-logo-showcase", inputs: { data: "data", index: "index", edit: "edit", delete: "delete", customClass: "customClass", nextComponentColor: "nextComponentColor" }, host: { listeners: { "window:resize": "getScreenSize($event)" } }, usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"styles?.showCaseType==='Grid'\">\n <div [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" class=\"total-container\"\n [attr.style]=\"customClass\">\n <div class=\"py-3 w-100 \" [simpoBackground]=\"styles?.background\"\n [ngClass]=\"styles?.fullWidth === true ? 'px-0' : ''\" [id]=\"data?.id\" [simpoAnimation]=\"styles?.animation\"\n #mainContainer [simpoOverlay]=\"styles?.background\" [simpoBorder]=\"styles?.border\"\n [spacingHorizontal]=\"stylesLayout\">\n <div class=\"row g-5 gridtext\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\"\n [simpoPositionLayoutDirective]=\"styles?.positionLayout\"\n *ngIf=\"styles?.positionLayout?.value === 'left' || styles?.positionLayout?.value === 'right'\"\n [ngClass]=\"{ 'align-items-stretch': styles?.positionLayout?.value === 'left' || styles?.positionLayout?.value === 'right'}\">\n\n <div class=\"col-5 gridimg w-full mb-20 content-side\" [id]=\"data?.id\"\n [simpoContentAlignment]=\"styles?.contentAlignment\">\n <div *ngFor=\"let item of content?.inputText\">\n <ng-container *ngIf=\"edit || item.value\">\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\n </ng-container>\n </div>\n <div *ngIf=\"data?.action && data?.action?.display\" class=\"button-display mt-20\">\n <div *ngFor=\"let button of data?.action?.buttons\">\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\" [edit]=\"edit\"\n [color]=\"data?.styles?.background?.accentColor\"\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\n </div>\n </div>\n </div>\n <div class=\"col-7 d-flex flex-wrap flex-1 w-full\">\n <div class=\"slider flex overflow-hidden w-full\">\n <div class=\"slider-track\" *ngIf=\"content?.display?.showIcon && !content?.display?.showText\"\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'gap-0': styles?.removeGaps}\">\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic'}\"\n *ngFor=\"let item of content?.listItem?.data;let i = index\">\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\n <ng-container\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\n <div [id]=\"data?.id\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n class=\"logo-img d-flex justify-content-center align-items-center\"\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\n [showIcon]=\"content?.display?.showIcon\">\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"slider-track w-full\"\n *ngIf=\"!content?.display?.showIcon && content?.display?.showText\"\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\"\n *ngFor=\"let item of content?.listItem?.data\"\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic'}\">\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\n [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n </div>\n <div class=\"slider-track w-full\"\n *ngIf=\"content?.display?.showIcon && content?.display?.showText\"\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\n <div class=\"slides d-flex\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\n *ngFor=\"let item of content?.listItem?.data\"\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic','flex-row' : styles?.logoPosition == 'left' , 'flex-row-reverse' : styles?.logoPosition == 'right', 'flex-column' : styles?.logoPosition == 'top' , 'flex-column-reverse' : styles?.logoPosition == 'bottom'}\">\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\n <ng-container\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\n <div [id]=\"data?.id\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n class=\"logo-img d-flex justify-content-center align-items-center\"\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\n [showIcon]=\"content?.display?.showIcon\">\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\n </div>\n </ng-container>\n\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\n [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex-column row g-2\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\"\n *ngIf=\"styles?.positionLayout?.value === 'bottom'\">\n <div class=\"px-5 mb-20 content-side\" [id]=\"data?.id\"\n [ngClass]=\"{'align-items-stretch':styles?.layout?.align==='left' || styles?.layout?.align==='center' || styles?.layout?.align==='right'}\">\n <div *ngFor=\"let item of content?.inputText\">\n <ng-container *ngIf=\"edit || item.value\">\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\n </ng-container>\n </div>\n <div *ngIf=\"data?.action && data?.action?.display\" class=\"button-display mt-20\">\n <div *ngFor=\"let button of data?.action?.buttons\">\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\" [edit]=\"edit\"\n [color]=\"data?.styles?.background?.accentColor\"\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\n </div>\n </div>\n </div>\n <div class=\"col-lg-12 flex flex-wrap items-center w-full gap-2 justify-center\">\n <!-- flex flex-wrap items-center w-full gap-2 justify-center -->\n <div class=\"slider flex overflow-hidden w-full\">\n <div class=\"slider-track w-full\"\n *ngIf=\"content?.display?.showIcon && !content?.display?.showText\"\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\n *ngFor=\"let item of content?.listItem?.data; let i = index\">\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\n <ng-container\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\n <div [id]=\"data?.id\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n class=\"logo-img d-flex justify-content-center align-items-center\"\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\n [showIcon]=\"content?.display?.showIcon\">\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"slider-track w-full\"\n *ngIf=\"!content?.display?.showIcon && content?.display?.showText\"\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\"\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\n *ngFor=\"let item of content?.listItem?.data\">\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\n [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n </div>\n <div class=\"slider-track w-full\"\n *ngIf=\"content?.display?.showIcon && content?.display?.showText\"\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\n <div class=\"slides d-flex align-items-center\" [simpoCorner]=\"styles?.corners\"\n *ngFor=\"let item of content?.listItem?.data\" [id]=\"data?.id\"\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'flex-row' : styles?.logoPosition == 'left' , 'flex-row-reverse' : styles?.logoPosition == 'right', 'flex-column' : styles?.logoPosition == 'top' , 'flex-column-reverse' : styles?.logoPosition == 'bottom'}\">\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\n <ng-container\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\n <div [id]=\"data?.id\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n class=\"logo-img d-flex justify-content-center align-items-center\"\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\n [showIcon]=\"content?.display?.showIcon\">\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\n </div>\n </ng-container>\n <simpo-text-editor class=\"mt-2\" [(value)]=\"item.inputText[0].value\"\n [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"styles?.devider?.display\">\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\n </ng-container>\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"styles?.showCaseType==='Carousal'\">\n <div [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" class=\"total-container\">\n\n <div class=\"w-100\" [id]=\"data?.id\" #mainContainer [simpoOverlay]=\"styles?.background\"\n [simpoBorder]=\"styles?.border\" [spacingHorizontal]=\"stylesLayout\"\n [ngClass]=\"styles?.fullWidth === true ? 'px-0' : ''\" [simpoBackground]=\"styles?.background\">\n <div class=\"flex-column row g-2\" [id]=\"data?.id\" [simpoAnimation]=\"styles?.animation\"\n [simpoLayout]=\"styles?.layout\">\n <div class=\"mainsec content-side\" [id]=\"data?.id\"\n [ngClass]=\"{'align-items-stretch':styles?.layout?.align==='left' || styles?.layout?.align==='center' || styles?.layout?.align==='right'}\">\n\n <div *ngFor=\"let item of content?.inputText\">\n <ng-container *ngIf=\"edit || item.value\">\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\n </ng-container>\n </div>\n <div *ngIf=\"data?.action && data?.action?.display\" class=\"gap-2 d-md-flex mt-15\" [ngClass]=\"[\n styles?.layout?.align === 'left' ? 'justify-content-md-start' : '',\n styles?.layout?.align === 'center' ? 'justify-content-md-center' : '',\n styles?.layout?.align === 'right' ? 'justify-content-md-end' : ''\n ]\">\n <div *ngFor=\"let button of data?.action?.buttons\">\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\" [edit]=\"edit\"\n [color]=\"data?.styles?.background?.accentColor\"\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\n </div>\n </div>\n\n <div [ngClass]=\"{\n 'fullwidth flex-1 inline-edit ': styles?.fullWidth,\n 'nofullwidth flex-1 inline-edit ': !styles?.fullWidth\n }\">\n <div class=\"masking\">\n\n <div class=\"slider animation \" [style.animationDuration]=\"animationDuration\"\n [style.animationDirection]=\"animationDirection\">\n <div class=\"slider-track2\"\n *ngIf=\"content?.display?.showIcon && !content?.display?.showText\"\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'gap-0': styles?.removeGaps}\">\n <div class=\"slides2\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\n *ngFor=\"let item of content?.listItem?.data;let i = index\">\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\"\n [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\n [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\n <ng-container\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\n <div [id]=\"data?.id\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n class=\"logo-img d-flex justify-content-center align-items-center\"\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\n [sectionId]=\"data?.id\" [showIcon]=\"content?.display?.showIcon\">\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"slider-track2\"\n *ngIf=\"content?.display?.showText && !content?.display?.showIcon\"\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\"\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\n *ngFor=\"let item of content?.listItem?.data\">\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\n [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n </div>\n <div class=\"slider-track2 d-flex w-full\"\n *ngIf=\"content?.display?.showIcon && content?.display?.showText\"\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\n <div class=\"slides d-flex\" [simpoCorner]=\"styles?.corners\"\n *ngFor=\"let item of content?.listItem?.data\" [id]=\"data?.id\"\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'align-items-start': styles?.layout?.align === 'left', 'align-items-center': styles?.layout?.align === 'center', 'align-items-end': styles?.layout?.align === 'right' , 'flex-row' : styles?.logoPosition == 'left' , 'flex-row-reverse' : styles?.logoPosition == 'right', 'flex-column' : styles?.logoPosition == 'top' , 'flex-column-reverse' : styles?.logoPosition == 'bottom'}\">\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\"\n [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\n [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\n <ng-container\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\n <div [id]=\"data?.id\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n class=\"logo-img d-flex justify-content-center align-items-center\"\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\n [sectionId]=\"data?.id\" [showIcon]=\"content?.display?.showIcon\">\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\n </div>\n </ng-container>\n <simpo-text-editor class=\"mt-2\" [(value)]=\"item.inputText[0].value\"\n [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"styles?.devider?.display\">\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\n </ng-container>\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\n </div>\n </div>\n</div>", styles: [".masking{mask:linear-gradient(90deg,transparent,white 5%,white 95%,transparent);overflow:hidden;width:100%}.sliderdad{width:100%;display:flex}@media (min-width: 860px){.nofullwidth{overflow:hidden}}.slider-track2{min-width:max-content;translate:none;rotate:none;scale:none;gap:1rem;justify-content:center;align-items:center;flex-wrap:wrap;width:100%;display:flex}.mainsec{gap:2rem;flex-direction:column;display:flex}.slider-track2.logotype-boxed{gap:1rem}.slider-track2.logotype-basic{gap:5rem}.slides2.logotype-boxed{padding:1.5rem 1.25rem;--tw-bg-opacity: .05;flex-shrink:0;width:auto;height:auto;display:flex;position:relative;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.slides2.logotype-basic{flex-shrink:0;width:auto;height:auto;display:flex;position:relative}.slides2.img{height:100%;max-width:100%;border-style:solid}@keyframes scrollLeft{0%{transform:translateZ(0)}to{transform:translate3d(-100%,0,0)}}@keyframes scrollRight{0%{transform:translate3d(-100%,0,0)}to{transform:translateZ(0)}}.animation{animation:scrollLeft linear infinite}.slider-track{justify-content:center;align-items:center;flex-wrap:wrap;width:100%;display:flex;gap:10px}.slider-track.logotype-basic{gap:5rem}.slider-track.logotype-boxed{gap:1rem}.slides.logotype-basic{flex-shrink:0;width:auto;min-height:5rem;height:auto;display:flex;position:relative}.slides.logotype-boxed{padding:1.5rem .625rem;--tw-bg-opacity: .05;background-color:rgba(0,0,0,var(--tw-bg-opacity));width:auto;height:auto;display:flex;position:relative}.slides.texttype-boxed{padding:1.5rem .625rem;justify-content:center;width:auto;display:flex;position:relative;box-shadow:#0000002e 0 2px 4px;margin:10px 0}.slides.texttype-boxed:hover{--tw-bg-opacity: .05;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.slides.img{border-style:solid;max-width:100%;height:100%}@media only screen and (max-width: 500px){.col-xxl-8{padding-left:0!important;padding-right:0!important}.mainsec{padding-right:2rem!important;padding-left:2rem!important}.col-7{min-width:50%;width:100%;max-width:100%}.col-5{width:100%}.slides img{width:88%}}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.total-container{position:relative;height:auto}.mt-20{margin-top:20px}.mb-20{margin-bottom:20px}.row{margin-left:0;margin-right:0}\n"], dependencies: [{ kind: "component", type: SimpoButtonComponent, selector: "app-button-element", inputs: ["buttonContent", "buttonStyle", "buttonId", "color", "sectionId", "edit", "backgroundInfo"] }, { kind: "ngmodule", type: SimpoElementsModule }, { kind: "component", type: i2.SvgDividerComponent, selector: "simpo-svg-divider", inputs: ["dividerType", "color"] }, { kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "sectionId", "label"], outputs: ["valueChange"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i3.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i4.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatGridListModule }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: ContentFitDirective, selector: "[simpoLayout]", inputs: ["simpoLayout"] }, { kind: "directive", type: BorderDirective, selector: "[simpoBorder]", inputs: ["simpoBorder"] }, { kind: "directive", type: CornerDirective, selector: "[simpoCorner]", inputs: ["simpoCorner"] }, { kind: "directive", type: simpoConetenAlignmentDirective, selector: "[simpoContentAlignment]", inputs: ["simpoContentAlignment"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "directive", type: OverlayDirective, selector: "[simpoOverlay]", inputs: ["simpoOverlay"] }, { kind: "directive", type: PositionLayoutDirectiveDirective, selector: "[simpoPositionLayoutDirective]", inputs: ["simpoPositionLayoutDirective"] }, { kind: "directive", type: SpacingHorizontalDirective, selector: "[spacingHorizontal]", inputs: ["spacingHorizontal", "isHeader"] }, { kind: "directive", type: ImageEditorDirective, selector: "[appImageEditor]", inputs: ["appImageEditor", "imageData", "sectionId", "showIcon", "iconData"] }, { kind: "directive", type: IconDirectiveDirective, selector: "[simpoIconDirective]", inputs: ["simpoIconDirective", "iconId"] }] }); }
102
102
  }
103
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LogoShowcaseComponent, decorators: [{
104
104
  type: Component,
105
- args: [{ selector: 'simpo-logo-showcase', standalone: true, imports: [SimpoButtonComponent, SimpoElementsModule, SanitizeHtmlPipe, TextEditorComponent, SimpoComponentModule, CommonModule, MatGridListModule, AnimationDirective, BackgroundDirective, ContentFitDirective, BorderDirective, BannerContentFitDirective, ButtonDirectiveDirective, ColumnDirectiveDirective, ContainerFitDirective, CornerDirective, simpoConetenAlignmentDirective, SimpoFooterLayoutDirective, HoverDirective, ImageDirectiveDirective, OverlayDirective, PositionLayoutDirectiveDirective, TextBackgroundDirectiveDirective, SpacingHorizontalDirective, ObjectPositionDirective, ImageEditorDirective, IconDirectiveDirective], template: "<div *ngIf=\"styles?.showCaseType==='Grid'\">\r\n <div [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" class=\"total-container\"\r\n [attr.style]=\"customClass\">\r\n <div class=\"py-3 w-100 \" [simpoBackground]=\"styles?.background\"\r\n [ngClass]=\"styles?.fullWidth === true ? 'px-0' : ''\" [id]=\"data?.id\" [simpoAnimation]=\"styles?.animation\"\r\n #mainContainer [simpoOverlay]=\"styles?.background\" [simpoBorder]=\"styles?.border\"\r\n [spacingHorizontal]=\"stylesLayout\">\r\n <div class=\"row g-5 gridtext\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\"\r\n [simpoPositionLayoutDirective]=\"styles?.positionLayout\"\r\n *ngIf=\"styles?.positionLayout?.value === 'left' || styles?.positionLayout?.value === 'right'\"\r\n [ngClass]=\"{ 'align-items-stretch': styles?.positionLayout?.value === 'left' || styles?.positionLayout?.value === 'right'}\">\r\n\r\n <div class=\"col-5 gridimg w-full mb-20 content-side\" [id]=\"data?.id\"\r\n [simpoContentAlignment]=\"styles?.contentAlignment\">\r\n <div *ngFor=\"let item of content?.inputText\">\r\n <ng-container *ngIf=\"edit || item.value\">\r\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"data?.action && data?.action?.display\" class=\"button-display mt-20\">\r\n <div *ngFor=\"let button of data?.action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\r\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\" [edit]=\"edit\"\r\n [color]=\"data?.styles?.background?.accentColor\"\r\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap flex-1 width-max\">\r\n <div class=\"slider flex overflow-hidden w-full\">\r\n <div class=\"slider-track\" *ngIf=\"content?.display?.showIcon && !content?.display?.showText\"\r\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\r\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic'}\"\r\n *ngFor=\"let item of content?.listItem?.data;let i = index\">\r\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\r\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\r\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\r\n <ng-container\r\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\r\n <div [id]=\"data?.id\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n class=\"logo-img d-flex justify-content-center align-items-center\"\r\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\r\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\r\n [showIcon]=\"content?.display?.showIcon\">\r\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\r\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\r\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"slider-track w-full\"\r\n *ngIf=\"!content?.display?.showIcon && content?.display?.showText\"\r\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\"\r\n *ngFor=\"let item of content?.listItem?.data\"\r\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic'}\">\r\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n <div class=\"slider-track w-full\"\r\n *ngIf=\"content?.display?.showIcon && content?.display?.showText\"\r\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides d-flex\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\r\n *ngFor=\"let item of content?.listItem?.data\"\r\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic','flex-row' : styles?.logoPosition == 'left' , 'flex-row-reverse' : styles?.logoPosition == 'right', 'flex-column' : styles?.logoPosition == 'top' , 'flex-column-reverse' : styles?.logoPosition == 'bottom'}\">\r\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\r\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\r\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\r\n <ng-container\r\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\r\n <div [id]=\"data?.id\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n class=\"logo-img d-flex justify-content-center align-items-center\"\r\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\r\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\r\n [showIcon]=\"content?.display?.showIcon\">\r\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\r\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\r\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\r\n </div>\r\n </ng-container>\r\n\r\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex-column row g-2\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\"\r\n *ngIf=\"styles?.positionLayout?.value === 'bottom'\">\r\n <div class=\"px-5 mb-20 content-side\" [id]=\"data?.id\"\r\n [ngClass]=\"{'align-items-stretch':styles?.layout?.align==='left' || styles?.layout?.align==='center' || styles?.layout?.align==='right'}\">\r\n <div *ngFor=\"let item of content?.inputText\">\r\n <ng-container *ngIf=\"edit || item.value\">\r\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"data?.action && data?.action?.display\" class=\"button-display mt-20\">\r\n <div *ngFor=\"let button of data?.action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\r\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\" [edit]=\"edit\"\r\n [color]=\"data?.styles?.background?.accentColor\"\r\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-12 flex flex-wrap items-center w-full gap-2 justify-center\">\r\n <!-- flex flex-wrap items-center w-full gap-2 justify-center -->\r\n <div class=\"slider flex overflow-hidden w-full\">\r\n <div class=\"slider-track w-full\"\r\n *ngIf=\"content?.display?.showIcon && !content?.display?.showText\"\r\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\r\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\r\n *ngFor=\"let item of content?.listItem?.data; let i = index\">\r\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\r\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\r\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\r\n <ng-container\r\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\r\n <div [id]=\"data?.id\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n class=\"logo-img d-flex justify-content-center align-items-center\"\r\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\r\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\r\n [showIcon]=\"content?.display?.showIcon\">\r\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\r\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\r\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"slider-track w-full\"\r\n *ngIf=\"!content?.display?.showIcon && content?.display?.showText\"\r\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\"\r\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\r\n *ngFor=\"let item of content?.listItem?.data\">\r\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n <div class=\"slider-track w-full\"\r\n *ngIf=\"content?.display?.showIcon && content?.display?.showText\"\r\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides d-flex align-items-center\" [simpoCorner]=\"styles?.corners\"\r\n *ngFor=\"let item of content?.listItem?.data\" [id]=\"data?.id\"\r\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'flex-row' : styles?.logoPosition == 'left' , 'flex-row-reverse' : styles?.logoPosition == 'right', 'flex-column' : styles?.logoPosition == 'top' , 'flex-column-reverse' : styles?.logoPosition == 'bottom'}\">\r\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\r\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\r\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\r\n <ng-container\r\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\r\n <div [id]=\"data?.id\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n class=\"logo-img d-flex justify-content-center align-items-center\"\r\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\r\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\r\n [showIcon]=\"content?.display?.showIcon\">\r\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\r\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\r\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\r\n </div>\r\n </ng-container>\r\n <simpo-text-editor class=\"mt-2\" [(value)]=\"item.inputText[0].value\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"styles?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [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 </div>\r\n</div>\r\n\r\n<div *ngIf=\"styles?.showCaseType==='Carousal'\">\r\n <div [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" class=\"total-container\">\r\n\r\n <div class=\"w-100\" [id]=\"data?.id\" #mainContainer [simpoOverlay]=\"styles?.background\"\r\n [simpoBorder]=\"styles?.border\" [spacingHorizontal]=\"stylesLayout\"\r\n [ngClass]=\"styles?.fullWidth === true ? 'px-0' : ''\" [simpoBackground]=\"styles?.background\">\r\n <div class=\"flex-column row g-2\" [id]=\"data?.id\" [simpoAnimation]=\"styles?.animation\"\r\n [simpoLayout]=\"styles?.layout\">\r\n <div class=\"mainsec content-side\" [id]=\"data?.id\"\r\n [ngClass]=\"{'align-items-stretch':styles?.layout?.align==='left' || styles?.layout?.align==='center' || styles?.layout?.align==='right'}\">\r\n\r\n <div *ngFor=\"let item of content?.inputText\">\r\n <ng-container *ngIf=\"edit || item.value\">\r\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"data?.action && data?.action?.display\" class=\"gap-2 d-md-flex mt-15\" [ngClass]=\"[\r\n styles?.layout?.align === 'left' ? 'justify-content-md-start' : '',\r\n styles?.layout?.align === 'center' ? 'justify-content-md-center' : '',\r\n styles?.layout?.align === 'right' ? 'justify-content-md-end' : ''\r\n ]\">\r\n <div *ngFor=\"let button of data?.action?.buttons\">\r\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\r\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\" [edit]=\"edit\"\r\n [color]=\"data?.styles?.background?.accentColor\"\r\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\r\n </div>\r\n </div>\r\n\r\n <div [ngClass]=\"{\r\n 'fullwidth flex-1 inline-edit ': styles?.fullWidth,\r\n 'nofullwidth flex-1 inline-edit ': !styles?.fullWidth\r\n }\">\r\n <div class=\"masking\">\r\n\r\n <div class=\"slider animation \" [style.animationDuration]=\"animationDuration\"\r\n [style.animationDirection]=\"animationDirection\">\r\n <div class=\"slider-track2\"\r\n *ngIf=\"content?.display?.showIcon && !content?.display?.showText\"\r\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides2\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\r\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\r\n *ngFor=\"let item of content?.listItem?.data;let i = index\">\r\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\r\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\"\r\n [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\r\n [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\r\n <ng-container\r\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\r\n <div [id]=\"data?.id\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n class=\"logo-img d-flex justify-content-center align-items-center\"\r\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\r\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\r\n [sectionId]=\"data?.id\" [showIcon]=\"content?.display?.showIcon\">\r\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\r\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\r\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"slider-track2\"\r\n *ngIf=\"content?.display?.showText && !content?.display?.showIcon\"\r\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\"\r\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\r\n *ngFor=\"let item of content?.listItem?.data\">\r\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n <div class=\"slider-track2 d-flex w-full\"\r\n *ngIf=\"content?.display?.showIcon && content?.display?.showText\"\r\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\r\n <div class=\"slides d-flex\" [simpoCorner]=\"styles?.corners\"\r\n *ngFor=\"let item of content?.listItem?.data\" [id]=\"data?.id\"\r\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'align-items-start': styles?.layout?.align === 'left', 'align-items-center': styles?.layout?.align === 'center', 'align-items-end': styles?.layout?.align === 'right' , 'flex-row' : styles?.logoPosition == 'left' , 'flex-row-reverse' : styles?.logoPosition == 'right', 'flex-column' : styles?.logoPosition == 'top' , 'flex-column-reverse' : styles?.logoPosition == 'bottom'}\">\r\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\r\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\"\r\n [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\r\n [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\r\n <ng-container\r\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\r\n <div [id]=\"data?.id\"\r\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\r\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\r\n class=\"logo-img d-flex justify-content-center align-items-center\"\r\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\r\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\r\n [sectionId]=\"data?.id\" [showIcon]=\"content?.display?.showIcon\">\r\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\r\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\r\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\r\n </div>\r\n </ng-container>\r\n <simpo-text-editor class=\"mt-2\" [(value)]=\"item.inputText[0].value\"\r\n [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"styles?.devider?.display\">\r\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\r\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\r\n </ng-container>\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [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 </div>\r\n</div>", styles: [".masking{mask:linear-gradient(90deg,transparent,white 5%,white 95%,transparent);overflow:hidden;width:100%}.sliderdad{width:100%;display:flex}@media (min-width: 860px){.nofullwidth{overflow:hidden}}.slider-track2{min-width:max-content;translate:none;rotate:none;scale:none;gap:1rem;justify-content:center;align-items:center;flex-wrap:wrap;width:100%;display:flex}.mainsec{gap:2rem;flex-direction:column;display:flex}.slider-track2.logotype-boxed{gap:1rem}.slider-track2.logotype-basic{gap:5rem}.slides2.logotype-boxed{padding:1.5rem 1.25rem;--tw-bg-opacity: .05;flex-shrink:0;width:auto;height:auto;display:flex;position:relative;box-shadow:#0000002e 0 2px 4px;margin:10px 0}.slides2.logotype-basic{flex-shrink:0;width:auto;height:auto;display:flex;position:relative}.slides2.img{height:100%;max-width:100%;border-style:solid}@keyframes scrollLeft{0%{transform:translateZ(0)}to{transform:translate3d(-100%,0,0)}}@keyframes scrollRight{0%{transform:translate3d(-100%,0,0)}to{transform:translateZ(0)}}.animation{animation:scrollLeft linear infinite}.slider-track{justify-content:center;align-items:center;flex-wrap:wrap;width:100%;display:flex;gap:10px}.slider-track.logotype-basic{gap:5rem}.slider-track.logotype-boxed{gap:1rem}.slides.logotype-basic{flex-shrink:0;width:auto;min-height:5rem;height:auto;display:flex;position:relative}.slides.logotype-boxed{padding:1.5rem .625rem;--tw-bg-opacity: .05;box-shadow:#0000002e 0 2px 4px;width:auto;height:auto;display:flex;align-items:center;margin:10px 0}.width-max{width:max-content;max-width:50%}.slides.texttype-boxed{padding:1.5rem .625rem;justify-content:center;width:auto;display:flex;position:relative;box-shadow:#0000002e 0 2px 4px;margin:10px 0;align-items:center}.slides.texttype-boxed:hover{--tw-bg-opacity: .05;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.slides.img{border-style:solid;max-width:100%;height:100%}@media only screen and (max-width: 500px){.col-xxl-8{padding-left:0!important;padding-right:0!important}.mainsec{padding-right:2rem!important;padding-left:2rem!important}.col-7{min-width:50%;width:100%;max-width:100%}.col-5{width:100%}.slides img{width:88%}}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.total-container{position:relative;height:auto}.mt-20{margin-top:20px}.mb-20{margin-bottom:20px}.row{margin-left:0;margin-right:0}\n"] }]
105
+ args: [{ selector: 'simpo-logo-showcase', standalone: true, imports: [SimpoButtonComponent, SimpoElementsModule, SanitizeHtmlPipe, TextEditorComponent, SimpoComponentModule, CommonModule, MatGridListModule, AnimationDirective, BackgroundDirective, ContentFitDirective, BorderDirective, BannerContentFitDirective, ButtonDirectiveDirective, ColumnDirectiveDirective, ContainerFitDirective, CornerDirective, simpoConetenAlignmentDirective, SimpoFooterLayoutDirective, HoverDirective, ImageDirectiveDirective, OverlayDirective, PositionLayoutDirectiveDirective, TextBackgroundDirectiveDirective, SpacingHorizontalDirective, ObjectPositionDirective, ImageEditorDirective, IconDirectiveDirective], template: "<div *ngIf=\"styles?.showCaseType==='Grid'\">\n <div [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" class=\"total-container\"\n [attr.style]=\"customClass\">\n <div class=\"py-3 w-100 \" [simpoBackground]=\"styles?.background\"\n [ngClass]=\"styles?.fullWidth === true ? 'px-0' : ''\" [id]=\"data?.id\" [simpoAnimation]=\"styles?.animation\"\n #mainContainer [simpoOverlay]=\"styles?.background\" [simpoBorder]=\"styles?.border\"\n [spacingHorizontal]=\"stylesLayout\">\n <div class=\"row g-5 gridtext\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\"\n [simpoPositionLayoutDirective]=\"styles?.positionLayout\"\n *ngIf=\"styles?.positionLayout?.value === 'left' || styles?.positionLayout?.value === 'right'\"\n [ngClass]=\"{ 'align-items-stretch': styles?.positionLayout?.value === 'left' || styles?.positionLayout?.value === 'right'}\">\n\n <div class=\"col-5 gridimg w-full mb-20 content-side\" [id]=\"data?.id\"\n [simpoContentAlignment]=\"styles?.contentAlignment\">\n <div *ngFor=\"let item of content?.inputText\">\n <ng-container *ngIf=\"edit || item.value\">\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\n </ng-container>\n </div>\n <div *ngIf=\"data?.action && data?.action?.display\" class=\"button-display mt-20\">\n <div *ngFor=\"let button of data?.action?.buttons\">\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\" [edit]=\"edit\"\n [color]=\"data?.styles?.background?.accentColor\"\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\n </div>\n </div>\n </div>\n <div class=\"col-7 d-flex flex-wrap flex-1 w-full\">\n <div class=\"slider flex overflow-hidden w-full\">\n <div class=\"slider-track\" *ngIf=\"content?.display?.showIcon && !content?.display?.showText\"\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'gap-0': styles?.removeGaps}\">\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic'}\"\n *ngFor=\"let item of content?.listItem?.data;let i = index\">\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\n <ng-container\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\n <div [id]=\"data?.id\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n class=\"logo-img d-flex justify-content-center align-items-center\"\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\n [showIcon]=\"content?.display?.showIcon\">\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"slider-track w-full\"\n *ngIf=\"!content?.display?.showIcon && content?.display?.showText\"\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\"\n *ngFor=\"let item of content?.listItem?.data\"\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic'}\">\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\n [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n </div>\n <div class=\"slider-track w-full\"\n *ngIf=\"content?.display?.showIcon && content?.display?.showText\"\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\n <div class=\"slides d-flex\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\n *ngFor=\"let item of content?.listItem?.data\"\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic','flex-row' : styles?.logoPosition == 'left' , 'flex-row-reverse' : styles?.logoPosition == 'right', 'flex-column' : styles?.logoPosition == 'top' , 'flex-column-reverse' : styles?.logoPosition == 'bottom'}\">\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\n <ng-container\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\n <div [id]=\"data?.id\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n class=\"logo-img d-flex justify-content-center align-items-center\"\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\n [showIcon]=\"content?.display?.showIcon\">\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\n </div>\n </ng-container>\n\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\n [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex-column row g-2\" [id]=\"data?.id\" [simpoLayout]=\"styles?.layout\"\n *ngIf=\"styles?.positionLayout?.value === 'bottom'\">\n <div class=\"px-5 mb-20 content-side\" [id]=\"data?.id\"\n [ngClass]=\"{'align-items-stretch':styles?.layout?.align==='left' || styles?.layout?.align==='center' || styles?.layout?.align==='right'}\">\n <div *ngFor=\"let item of content?.inputText\">\n <ng-container *ngIf=\"edit || item.value\">\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\n </ng-container>\n </div>\n <div *ngIf=\"data?.action && data?.action?.display\" class=\"button-display mt-20\">\n <div *ngFor=\"let button of data?.action?.buttons\">\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\" [edit]=\"edit\"\n [color]=\"data?.styles?.background?.accentColor\"\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\n </div>\n </div>\n </div>\n <div class=\"col-lg-12 flex flex-wrap items-center w-full gap-2 justify-center\">\n <!-- flex flex-wrap items-center w-full gap-2 justify-center -->\n <div class=\"slider flex overflow-hidden w-full\">\n <div class=\"slider-track w-full\"\n *ngIf=\"content?.display?.showIcon && !content?.display?.showText\"\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\n *ngFor=\"let item of content?.listItem?.data; let i = index\">\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\n <ng-container\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\n <div [id]=\"data?.id\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n class=\"logo-img d-flex justify-content-center align-items-center\"\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\n [showIcon]=\"content?.display?.showIcon\">\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"slider-track w-full\"\n *ngIf=\"!content?.display?.showIcon && content?.display?.showText\"\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\"\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\n *ngFor=\"let item of content?.listItem?.data\">\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\n [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n </div>\n <div class=\"slider-track w-full\"\n *ngIf=\"content?.display?.showIcon && content?.display?.showText\"\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\n <div class=\"slides d-flex align-items-center\" [simpoCorner]=\"styles?.corners\"\n *ngFor=\"let item of content?.listItem?.data\" [id]=\"data?.id\"\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'flex-row' : styles?.logoPosition == 'left' , 'flex-row-reverse' : styles?.logoPosition == 'right', 'flex-column' : styles?.logoPosition == 'top' , 'flex-column-reverse' : styles?.logoPosition == 'bottom'}\">\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\n [sectionId]=\"data?.id\" [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\n <ng-container\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\n <div [id]=\"data?.id\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n class=\"logo-img d-flex justify-content-center align-items-center\"\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\n [showIcon]=\"content?.display?.showIcon\">\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\n </div>\n </ng-container>\n <simpo-text-editor class=\"mt-2\" [(value)]=\"item.inputText[0].value\"\n [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n </div>\n </div>\n <!-- </div> -->\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"styles?.devider?.display\">\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\n </ng-container>\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"styles?.showCaseType==='Carousal'\">\n <div [id]=\"data?.id\" simpoHover (hovering)=\"showEditTabs($event)\" class=\"total-container\">\n\n <div class=\"w-100\" [id]=\"data?.id\" #mainContainer [simpoOverlay]=\"styles?.background\"\n [simpoBorder]=\"styles?.border\" [spacingHorizontal]=\"stylesLayout\"\n [ngClass]=\"styles?.fullWidth === true ? 'px-0' : ''\" [simpoBackground]=\"styles?.background\">\n <div class=\"flex-column row g-2\" [id]=\"data?.id\" [simpoAnimation]=\"styles?.animation\"\n [simpoLayout]=\"styles?.layout\">\n <div class=\"mainsec content-side\" [id]=\"data?.id\"\n [ngClass]=\"{'align-items-stretch':styles?.layout?.align==='left' || styles?.layout?.align==='center' || styles?.layout?.align==='right'}\">\n\n <div *ngFor=\"let item of content?.inputText\">\n <ng-container *ngIf=\"edit || item.value\">\n <simpo-text-editor [(value)]=\"item.value\" [editable]=\"edit || false\"></simpo-text-editor>\n </ng-container>\n </div>\n <div *ngIf=\"data?.action && data?.action?.display\" class=\"gap-2 d-md-flex mt-15\" [ngClass]=\"[\n styles?.layout?.align === 'left' ? 'justify-content-md-start' : '',\n styles?.layout?.align === 'center' ? 'justify-content-md-center' : '',\n styles?.layout?.align === 'right' ? 'justify-content-md-end' : ''\n ]\">\n <div *ngFor=\"let button of data?.action?.buttons\">\n <app-button-element [buttonContent]=\"button.content\" [buttonStyle]=\"button.styles\"\n [buttonId]=\"button.id\" [sectionId]=\"data?.id\" [edit]=\"edit\"\n [color]=\"data?.styles?.background?.accentColor\"\n [backgroundInfo]=\"data?.styles?.background\"></app-button-element>\n </div>\n </div>\n\n <div [ngClass]=\"{\n 'fullwidth flex-1 inline-edit ': styles?.fullWidth,\n 'nofullwidth flex-1 inline-edit ': !styles?.fullWidth\n }\">\n <div class=\"masking\">\n\n <div class=\"slider animation \" [style.animationDuration]=\"animationDuration\"\n [style.animationDirection]=\"animationDirection\">\n <div class=\"slider-track2\"\n *ngIf=\"content?.display?.showIcon && !content?.display?.showText\"\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'gap-0': styles?.removeGaps}\">\n <div class=\"slides2\" [simpoCorner]=\"styles?.corners\" [id]=\"data?.id\"\n [ngClass]=\"{'logotype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\n *ngFor=\"let item of content?.listItem?.data;let i = index\">\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\"\n [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\n [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\n <ng-container\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\n <div [id]=\"data?.id\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n class=\"logo-img d-flex justify-content-center align-items-center\"\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\n [sectionId]=\"data?.id\" [showIcon]=\"content?.display?.showIcon\">\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"slider-track2\"\n *ngIf=\"content?.display?.showText && !content?.display?.showIcon\"\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\n <div class=\"slides\" [simpoCorner]=\"styles?.corners\"\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'justify-content-start': styles?.layout?.align === 'left', 'justify-content-center': styles?.layout?.align === 'center', 'justify-content-end': styles?.layout?.align === 'right'}\"\n *ngFor=\"let item of content?.listItem?.data\">\n <simpo-text-editor [(value)]=\"item.inputText[0].value\"\n [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n </div>\n <div class=\"slider-track2 d-flex w-full\"\n *ngIf=\"content?.display?.showIcon && content?.display?.showText\"\n [ngClass]=\"{'gap-0': styles?.removeGaps}\">\n <div class=\"slides d-flex\" [simpoCorner]=\"styles?.corners\"\n *ngFor=\"let item of content?.listItem?.data\" [id]=\"data?.id\"\n [ngClass]=\"{'texttype-boxed': styles?.logoType === 'Boxed' , 'logotype-basic' : styles?.logoType === 'Basic', 'align-items-start': styles?.layout?.align === 'left', 'align-items-center': styles?.layout?.align === 'center', 'align-items-end': styles?.layout?.align === 'right' , 'flex-row' : styles?.logoPosition == 'left' , 'flex-row-reverse' : styles?.logoPosition == 'right', 'flex-column' : styles?.logoPosition == 'top' , 'flex-column-reverse' : styles?.logoPosition == 'bottom'}\">\n <img loading=\"lazy\" [src]=\"item?.icon?.url\"\n *ngIf=\"!item?.icon?.url?.includes('.png') && !item?.icon?.url?.includes('.svg')\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n [alt]=\"item?.icon?.altText\" [appImageEditor]=\"edit || false\"\n [iconData]=\"item?.icon\" [sectionId]=\"data?.id\"\n [class]=\"data?.id+(item?.icon?.id || '')\" [showIcon]=\"content?.display?.showIcon\">\n <ng-container\n *ngIf=\"(item?.icon?.url?.includes('.png') || item?.icon?.url?.includes('.svg'))\">\n <div [id]=\"data?.id\"\n [style.height.px]=\"(styles?.containerHeight ?? 1) / (isMobile ? 2 : 1)\"\n [style.width.px]=\"(styles?.containerWidth ?? 1) / (isMobile ? 2 : 1)\"\n class=\"logo-img d-flex justify-content-center align-items-center\"\n [style.background]=\"item?.icon?.showBackground ? item?.icon?.backgroundColor : 'transparent'\"\n [appImageEditor]=\"edit || false\" [iconData]=\"item?.icon\"\n [sectionId]=\"data?.id\" [showIcon]=\"content?.display?.showIcon\">\n <div [id]=\"data?.id\" [iconId]=\"data?.id + (item?.icon?.id ?? '' )\"\n [simpoIconDirective]=\"item?.icon\" class=\"w-75 h-100\"\n [class.w-100]=\"!item?.icon?.showBackground\"></div>\n </div>\n </ng-container>\n <simpo-text-editor class=\"mt-2\" [(value)]=\"item.inputText[0].value\"\n [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"styles?.devider?.display\">\n <simpo-svg-divider [dividerType]=\"styles?.devider?.deviderType\"\n [color]=\"nextComponentColor?.color\"></simpo-svg-divider>\n </ng-container>\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\n </div>\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\n </div>\n </div>\n</div>", styles: [".masking{mask:linear-gradient(90deg,transparent,white 5%,white 95%,transparent);overflow:hidden;width:100%}.sliderdad{width:100%;display:flex}@media (min-width: 860px){.nofullwidth{overflow:hidden}}.slider-track2{min-width:max-content;translate:none;rotate:none;scale:none;gap:1rem;justify-content:center;align-items:center;flex-wrap:wrap;width:100%;display:flex}.mainsec{gap:2rem;flex-direction:column;display:flex}.slider-track2.logotype-boxed{gap:1rem}.slider-track2.logotype-basic{gap:5rem}.slides2.logotype-boxed{padding:1.5rem 1.25rem;--tw-bg-opacity: .05;flex-shrink:0;width:auto;height:auto;display:flex;position:relative;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.slides2.logotype-basic{flex-shrink:0;width:auto;height:auto;display:flex;position:relative}.slides2.img{height:100%;max-width:100%;border-style:solid}@keyframes scrollLeft{0%{transform:translateZ(0)}to{transform:translate3d(-100%,0,0)}}@keyframes scrollRight{0%{transform:translate3d(-100%,0,0)}to{transform:translateZ(0)}}.animation{animation:scrollLeft linear infinite}.slider-track{justify-content:center;align-items:center;flex-wrap:wrap;width:100%;display:flex;gap:10px}.slider-track.logotype-basic{gap:5rem}.slider-track.logotype-boxed{gap:1rem}.slides.logotype-basic{flex-shrink:0;width:auto;min-height:5rem;height:auto;display:flex;position:relative}.slides.logotype-boxed{padding:1.5rem .625rem;--tw-bg-opacity: .05;background-color:rgba(0,0,0,var(--tw-bg-opacity));width:auto;height:auto;display:flex;position:relative}.slides.texttype-boxed{padding:1.5rem .625rem;justify-content:center;width:auto;display:flex;position:relative;box-shadow:#0000002e 0 2px 4px;margin:10px 0}.slides.texttype-boxed:hover{--tw-bg-opacity: .05;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.slides.img{border-style:solid;max-width:100%;height:100%}@media only screen and (max-width: 500px){.col-xxl-8{padding-left:0!important;padding-right:0!important}.mainsec{padding-right:2rem!important;padding-left:2rem!important}.col-7{min-width:50%;width:100%;max-width:100%}.col-5{width:100%}.slides img{width:88%}}.hover_effect{position:unset;width:100%;top:0;left:0;height:100%}.total-container{position:relative;height:auto}.mt-20{margin-top:20px}.mb-20{margin-bottom:20px}.row{margin-left:0;margin-right:0}\n"] }]
106
106
  }], ctorParameters: () => [{ type: i1.EventsService }], propDecorators: { data: [{
107
107
  type: Input
108
108
  }], index: [{
@@ -119,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
119
119
  type: HostListener,
120
120
  args: ['window:resize', ['$event']]
121
121
  }] } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nby1zaG93Y2FzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2xvZ28tc2hvd2Nhc2UvbG9nby1zaG93Y2FzZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2xvZ28tc2hvd2Nhc2UvbG9nby1zaG93Y2FzZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRWxGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDN0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUl6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7O0FBUWxGLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxXQUFXO0lBa0JwRCxZQUNVLGFBQTRCO1FBRXBDLEtBQUssRUFBRSxDQUFDO1FBRkEsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFQdEMsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFDNUIsdUJBQWtCLEdBQVcsRUFBRSxDQUFDO1FBQ2hDLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBNkQ1QixnQkFBVyxHQUFXLEdBQUcsQ0FBQztRQXJEeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFHRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDakUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDM0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUM7UUFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDM0IsQ0FBQztJQUdELElBQUksWUFBWTtRQUNkLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFpQixDQUFDO0lBQ25ELENBQUM7SUFDRCxJQUFJLGlCQUFpQjtRQUNuQixRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDL0IsS0FBSyxJQUFJO2dCQUNQLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQTtZQUN2QixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFBO1lBQ3pCLEtBQUssSUFBSTtnQkFDUCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUE7WUFDdkIsS0FBSyxJQUFJO2dCQUNQLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQTtRQUM3QixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFBO0lBQ3pCLENBQUM7SUFDRCxJQUFJLGtCQUFrQjtRQUNwQixRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDbkMsS0FBSyxPQUFPO2dCQUNWLE9BQU8sU0FBUyxDQUFBO1lBQ2xCLEtBQUssTUFBTTtnQkFDVCxPQUFPLFFBQVEsQ0FBQTtRQUVuQixDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFBO0lBQzNCLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBeUIsQ0FBQztJQUNuRSxDQUFDO0lBUUQsYUFBYSxDQUFDLEtBQWM7UUFDMUIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFDRCxXQUFXO1FBRVQsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLEdBQUc7WUFDMUIsT0FBTTtRQUNSLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzsrR0ExRlUscUJBQXFCO21HQUFyQixxQkFBcUIseVRDMUNsQyx3MjZCQThVTSxzMUVEeFNNLG9CQUFvQixvS0FBRSxtQkFBbUIscUpBQW9CLG1CQUFtQiw0SUFBRSxvQkFBb0IsbVdBQUUsWUFBWSw2VkFBRSxpQkFBaUIsK0JBQUUsa0JBQWtCLHlGQUFFLG1CQUFtQiwwR0FBRSxtQkFBbUIsbUZBQUUsZUFBZSxtRkFBd0csZUFBZSxtRkFBRSw4QkFBOEIsdUdBQThCLGNBQWMsZ0ZBQTJCLGdCQUFnQixxRkFBRSxnQ0FBZ0MscUhBQW9DLDBCQUEwQiwyR0FBMkIsb0JBQW9CLDJJQUFHLHNCQUFzQjs7NEZBSTNtQixxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLDhCQUE4QixFQUFFLDBCQUEwQixFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxnQ0FBZ0MsRUFBRSxnQ0FBZ0MsRUFBRSwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSxvQkFBb0IsRUFBRyxzQkFBc0IsQ0FBQztrRkFLOW1CLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkF1RU4sYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aW9uTW9kZWwsIEJhY2tncm91bmRNb2RlbCwgTGF5T3V0TW9kZWwsIFBvc2l0aW9uTGF5b3V0TW9kYWwgfSBmcm9tICcuLi8uLi9zdHlsZXMvc3R5bGUubW9kZWwnO1xyXG5pbXBvcnQgeyBTaW1wb0VsZW1lbnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTaW1wb0NvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBNYXRHcmlkTGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2dyaWQtbGlzdCc7XHJcbmltcG9ydCB7IFNpbXBvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvc2ltcG8tYnV0dG9uL3NpbXBvLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhbm5lckNvbnRlbnRGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYmFubmVyLWNvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJvcmRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9ib3JkZXItZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29sdW1uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbHVtbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29udGFpbmVyRml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRhaW5lci1maXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgc2ltcG9Db25ldGVuQWxpZ25tZW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtYWxpZ25tZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvcm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb3JuZXItZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2ltcG9Gb290ZXJMYXlvdXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvZm9vdGVyLWxheW91dC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2ltYWdlLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBPdmVybGF5RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL292ZXJsYXktZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUG9zaXRpb25MYXlvdXREaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvcG9zaXRpb24tbGF5b3V0LWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBUZXh0QmFja2dyb3VuZERpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS90ZXh0LWJhY2tncm91bmQtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE9iamVjdFBvc2l0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2ltYWdlLXBvc2l0aW9uLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi9CYXNlU2VjdGlvbic7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9zY2hlZHVsZXIvQWN0aW9uJztcclxuaW1wb3J0IHsgTG9nb1Nob3djYXNlQ29udGVudE1vZGVsLCBMb2dvU2hvd2Nhc2VTZWN0aW9uLCBMb2dvU2hvd2Nhc2VTdHlsZXNNb2RlbCB9IGZyb20gJy4vbG9nby1zaG93Y2FzZS5tb2RhbCc7XHJcbmltcG9ydCB7IGxvZ29EaXJlY3Rpb24sIGxvZ29TcGVlZCB9IGZyb20gJy4uLy4uL3N0eWxlcy9pbmRleCc7XHJcbmltcG9ydCB7IHNob3dDYXNlVHlwZSB9IGZyb20gJy4uLy4uL3N0eWxlcy9pbmRleCc7XHJcbmltcG9ydCB7IFNhbml0aXplSHRtbFBpcGUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zYW5pdGl6ZUh0bWwnO1xyXG5pbXBvcnQgeyBUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvdGV4dC1lZGl0b3IvdGV4dC1lZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW1hZ2VFZGl0b3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaW1hZ2UtZWRpdG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctaG9yaXpvbnRhbC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJY29uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2ljb24tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tbG9nby1zaG93Y2FzZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbU2ltcG9CdXR0b25Db21wb25lbnQsIFNpbXBvRWxlbWVudHNNb2R1bGUsIFNhbml0aXplSHRtbFBpcGUsIFRleHRFZGl0b3JDb21wb25lbnQsIFNpbXBvQ29tcG9uZW50TW9kdWxlLCBDb21tb25Nb2R1bGUsIE1hdEdyaWRMaXN0TW9kdWxlLCBBbmltYXRpb25EaXJlY3RpdmUsIEJhY2tncm91bmREaXJlY3RpdmUsIENvbnRlbnRGaXREaXJlY3RpdmUsIEJvcmRlckRpcmVjdGl2ZSwgQmFubmVyQ29udGVudEZpdERpcmVjdGl2ZSwgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlLCBDb2x1bW5EaXJlY3RpdmVEaXJlY3RpdmUsIENvbnRhaW5lckZpdERpcmVjdGl2ZSwgQ29ybmVyRGlyZWN0aXZlLCBzaW1wb0NvbmV0ZW5BbGlnbm1lbnREaXJlY3RpdmUsIFNpbXBvRm9vdGVyTGF5b3V0RGlyZWN0aXZlLCBIb3ZlckRpcmVjdGl2ZSwgSW1hZ2VEaXJlY3RpdmVEaXJlY3RpdmUsIE92ZXJsYXlEaXJlY3RpdmUsIFBvc2l0aW9uTGF5b3V0RGlyZWN0aXZlRGlyZWN0aXZlLCBUZXh0QmFja2dyb3VuZERpcmVjdGl2ZURpcmVjdGl2ZSwgU3BhY2luZ0hvcml6b250YWxEaXJlY3RpdmUsIE9iamVjdFBvc2l0aW9uRGlyZWN0aXZlLCBJbWFnZUVkaXRvckRpcmVjdGl2ZSAsIEljb25EaXJlY3RpdmVEaXJlY3RpdmVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2dvLXNob3djYXNlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vbG9nby1zaG93Y2FzZS5jb21wb25lbnQuY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvZ29TaG93Y2FzZUNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBkYXRhPzogTG9nb1Nob3djYXNlU2VjdGlvbjtcclxuICBASW5wdXQoKSBpbmRleD86IG51bWJlcjtcclxuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkZWxldGU/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNsYXNzPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG5leHRDb21wb25lbnRDb2xvcj86IEJhY2tncm91bmRNb2RlbDtcclxuXHJcbiAgaWQgITogc3RyaW5nO1xyXG4gIGFjdGlvbiE6IEFjdGlvbk1vZGVsO1xyXG4gIGNvbnRlbnQ/OiBMb2dvU2hvd2Nhc2VDb250ZW50TW9kZWw7XHJcbiAgc3R5bGVzPzogTG9nb1Nob3djYXNlU3R5bGVzTW9kZWw7XHJcbiAgbG9nb1NwZWVkQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG4gIGxvZ29EaXJlY3Rpb25DbGFzczogc3RyaW5nID0gJyc7XHJcbiAgaXNGdWxsV2lkdGg6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5nZXRTY3JlZW5TaXplKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMuZGF0YT8uc3R5bGVzO1xyXG4gICAgdGhpcy5kZWxldGVTZWxlY3RlZCA9IHRoaXMuZGVsZXRlO1xyXG4gICAgdGhpcy5sb2dvU3BlZWRDbGFzcyA9IHRoaXMuc3R5bGVzPy5sb2dvU3BlZWQgfHwgbG9nb1NwZWVkLk5vcm1hbDtcclxuICAgIHRoaXMubG9nb0RpcmVjdGlvbkNsYXNzID0gdGhpcy5zdHlsZXM/LmxvZ29EaXJlY3Rpb24gfHwgbG9nb0RpcmVjdGlvbi5MZWZ0O1xyXG4gICAgdGhpcy5pc0Z1bGxXaWR0aCA9IHRoaXMuc3R5bGVzPy5mdWxsV2lkdGggfHwgdHJ1ZTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuY29udGVudClcclxuICB9XHJcblxyXG5cclxuICBnZXQgc3R5bGVzTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZXM/LmxheW91dCB9IGFzIExheU91dE1vZGVsO1xyXG4gIH1cclxuICBnZXQgYW5pbWF0aW9uRHVyYXRpb24oKSB7XHJcbiAgICBzd2l0Y2ggKHRoaXMuc3R5bGVzPy5sb2dvU3BlZWQpIHtcclxuICAgICAgY2FzZSAnNHMnOlxyXG4gICAgICAgIHJldHVybiBsb2dvU3BlZWQuU2xvd1xyXG4gICAgICBjYXNlICczcyc6XHJcbiAgICAgICAgcmV0dXJuIGxvZ29TcGVlZC5Ob3JtYWxcclxuICAgICAgY2FzZSAnMnMnOlxyXG4gICAgICAgIHJldHVybiBsb2dvU3BlZWQuRmFzdFxyXG4gICAgICBjYXNlICcxcyc6XHJcbiAgICAgICAgcmV0dXJuIGxvZ29TcGVlZC5WZXJ5RmFzdFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxvZ29TcGVlZC5Ob3JtYWxcclxuICB9XHJcbiAgZ2V0IGFuaW1hdGlvbkRpcmVjdGlvbigpIHtcclxuICAgIHN3aXRjaCAodGhpcy5zdHlsZXM/LmxvZ29EaXJlY3Rpb24pIHtcclxuICAgICAgY2FzZSAnUmlnaHQnOlxyXG4gICAgICAgIHJldHVybiAncmV2ZXJzZSdcclxuICAgICAgY2FzZSAnTGVmdCc6XHJcbiAgICAgICAgcmV0dXJuICdub3JtYWwnXHJcblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxvZ29EaXJlY3Rpb24uTGVmdFxyXG4gIH1cclxuICBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPD0gNDc1O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdldFBvc2l0aW9uTGF5b3V0KCkge1xyXG4gICAgcmV0dXJuIHsgLi4udGhpcy5zdHlsZXM/LnBvc2l0aW9uTGF5b3V0IH0gYXMgUG9zaXRpb25MYXlvdXRNb2RhbDtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICBzY3JlZW5XaWR0aDogbnVtYmVyID0gNDc1O1xyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIGdldFNjcmVlblNpemUoZXZlbnQ/OiBudW1iZXIpIHtcclxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICB0aGlzLnNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGVkaXRTZWN0aW9uKCkge1xyXG5cclxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzUpXHJcbiAgICAgIHJldHVyblxyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnRvZ2dsZUVkaXRvckV2ZW50LmVtaXQoZmFsc2UpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2V2ZW50U2VydmljZS5lZGl0U2VjdGlvbi5lbWl0KHsgZGF0YTogdGhpcy5kYXRhIH0pO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJzdHlsZXM/LnNob3dDYXNlVHlwZT09PSdHcmlkJ1wiPlxyXG4gICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIGNsYXNzPVwidG90YWwtY29udGFpbmVyXCJcclxuICAgICAgICBbYXR0ci5zdHlsZV09XCJjdXN0b21DbGFzc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJweS0zIHctMTAwIFwiIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwic3R5bGVzPy5mdWxsV2lkdGggPT09IHRydWUgPyAncHgtMCcgOiAnJ1wiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0FuaW1hdGlvbl09XCJzdHlsZXM/LmFuaW1hdGlvblwiXHJcbiAgICAgICAgICAgICNtYWluQ29udGFpbmVyIFtzaW1wb092ZXJsYXldPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCIgW3NpbXBvQm9yZGVyXT1cInN0eWxlcz8uYm9yZGVyXCJcclxuICAgICAgICAgICAgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctNSBncmlkdGV4dFwiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0xheW91dF09XCJzdHlsZXM/LmxheW91dFwiXHJcbiAgICAgICAgICAgICAgICBbc2ltcG9Qb3NpdGlvbkxheW91dERpcmVjdGl2ZV09XCJzdHlsZXM/LnBvc2l0aW9uTGF5b3V0XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwic3R5bGVzPy5wb3NpdGlvbkxheW91dD8udmFsdWUgPT09ICdsZWZ0JyB8fCBzdHlsZXM/LnBvc2l0aW9uTGF5b3V0Py52YWx1ZSA9PT0gJ3JpZ2h0J1wiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdhbGlnbi1pdGVtcy1zdHJldGNoJzogc3R5bGVzPy5wb3NpdGlvbkxheW91dD8udmFsdWUgPT09ICdsZWZ0JyB8fCBzdHlsZXM/LnBvc2l0aW9uTGF5b3V0Py52YWx1ZSA9PT0gJ3JpZ2h0J31cIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgZ3JpZGltZyB3LWZ1bGwgbWItMjAgY29udGVudC1zaWRlXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2ltcG9Db250ZW50QWxpZ25tZW50XT1cInN0eWxlcz8uY29udGVudEFsaWdubWVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudD8uaW5wdXRUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0IHx8IGl0ZW0udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJpdGVtLnZhbHVlXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YT8uYWN0aW9uICYmIGRhdGE/LmFjdGlvbj8uZGlzcGxheVwiIGNsYXNzPVwiYnV0dG9uLWRpc3BsYXkgbXQtMjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGRhdGE/LmFjdGlvbj8uYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idXR0b24tZWxlbWVudCBbYnV0dG9uQ29udGVudF09XCJidXR0b24uY29udGVudFwiIFtidXR0b25TdHlsZV09XCJidXR0b24uc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uSWRdPVwiYnV0dG9uLmlkXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtlZGl0XT1cImVkaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmFja2dyb3VuZEluZm9dPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kXCI+PC9hcHAtYnV0dG9uLWVsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBmbGV4LTEgd2lkdGgtbWF4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlciBmbGV4IG92ZXJmbG93LWhpZGRlbiB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci10cmFja1wiICpuZ0lmPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0ljb24gJiYgIWNvbnRlbnQ/LmRpc3BsYXk/LnNob3dUZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbG9nb3R5cGUtYm94ZWQnOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQm94ZWQnICwgJ2xvZ290eXBlLWJhc2ljJyA6IHN0eWxlcz8ubG9nb1R5cGUgPT09ICdCYXNpYycsICdnYXAtMCc6IHN0eWxlcz8ucmVtb3ZlR2Fwc31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXNcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGVzPy5jb3JuZXJzXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2xvZ290eXBlLWJveGVkJzogc3R5bGVzPy5sb2dvVHlwZSA9PT0gJ0JveGVkJyAsICdsb2dvdHlwZS1iYXNpYycgOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQmFzaWMnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudD8ubGlzdEl0ZW0/LmRhdGE7bGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIml0ZW0/Lmljb24/LnVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0/Lmljb24/LnVybD8uaW5jbHVkZXMoJy5wbmcnKSAmJiAhaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCIoc3R5bGVzPy5jb250YWluZXJIZWlnaHQgPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiKHN0eWxlcz8uY29udGFpbmVyV2lkdGggPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0/Lmljb24/LmFsdFRleHRcIiBbYXBwSW1hZ2VFZGl0b3JdPVwiZWRpdCB8fCBmYWxzZVwiIFtpY29uRGF0YV09XCJpdGVtPy5pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtjbGFzc109XCJkYXRhPy5pZCsoaXRlbT8uaWNvbj8uaWQgfHwgJycpXCIgW3Nob3dJY29uXT1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihpdGVtPy5pY29uPy51cmw/LmluY2x1ZGVzKCcucG5nJykgfHwgaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihzdHlsZXM/LmNvbnRhaW5lckhlaWdodCA/PyAxKSAvIChpc01vYmlsZSA/IDIgOiAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiKHN0eWxlcz8uY29udGFpbmVyV2lkdGggPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsb2dvLWltZyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiaXRlbT8uaWNvbj8uc2hvd0JhY2tncm91bmQgPyBpdGVtPy5pY29uPy5iYWNrZ3JvdW5kQ29sb3IgOiAndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBJbWFnZUVkaXRvcl09XCJlZGl0IHx8IGZhbHNlXCIgW2ljb25EYXRhXT1cIml0ZW0/Lmljb25cIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SWNvbl09XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBbaWNvbklkXT1cImRhdGE/LmlkICsgKGl0ZW0/Lmljb24/LmlkID8/ICcnIClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW1wb0ljb25EaXJlY3RpdmVdPVwiaXRlbT8uaWNvblwiIGNsYXNzPVwidy03NSBoLTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnctMTAwXT1cIiFpdGVtPy5pY29uPy5zaG93QmFja2dyb3VuZFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci10cmFjayB3LWZ1bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29udGVudD8uZGlzcGxheT8uc2hvd0ljb24gJiYgY29udGVudD8uZGlzcGxheT8uc2hvd1RleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydnYXAtMCc6IHN0eWxlcz8ucmVtb3ZlR2Fwc31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXNcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGVzPy5jb3JuZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5saXN0SXRlbT8uZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0ZXh0dHlwZS1ib3hlZCc6IHN0eWxlcz8ubG9nb1R5cGUgPT09ICdCb3hlZCcgLCAnbG9nb3R5cGUtYmFzaWMnIDogc3R5bGVzPy5sb2dvVHlwZSA9PT0gJ0Jhc2ljJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwiaXRlbS5pbnB1dFRleHRbMF0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXItdHJhY2sgdy1mdWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0ljb24gJiYgY29udGVudD8uZGlzcGxheT8uc2hvd1RleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydnYXAtMCc6IHN0eWxlcz8ucmVtb3ZlR2Fwc31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXMgZC1mbGV4XCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiIFtpZF09XCJkYXRhPy5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudD8ubGlzdEl0ZW0/LmRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndGV4dHR5cGUtYm94ZWQnOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQm94ZWQnICwgJ2xvZ290eXBlLWJhc2ljJyA6IHN0eWxlcz8ubG9nb1R5cGUgPT09ICdCYXNpYycsJ2ZsZXgtcm93JyA6IHN0eWxlcz8ubG9nb1Bvc2l0aW9uID09ICdsZWZ0JyAsICdmbGV4LXJvdy1yZXZlcnNlJyA6IHN0eWxlcz8ubG9nb1Bvc2l0aW9uID09ICdyaWdodCcsICdmbGV4LWNvbHVtbicgOiBzdHlsZXM/LmxvZ29Qb3NpdGlvbiA9PSAndG9wJyAsICdmbGV4LWNvbHVtbi1yZXZlcnNlJyA6IHN0eWxlcz8ubG9nb1Bvc2l0aW9uID09ICdib3R0b20nfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIml0ZW0/Lmljb24/LnVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0/Lmljb24/LnVybD8uaW5jbHVkZXMoJy5wbmcnKSAmJiAhaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCIoc3R5bGVzPy5jb250YWluZXJIZWlnaHQgPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiKHN0eWxlcz8uY29udGFpbmVyV2lkdGggPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0/Lmljb24/LmFsdFRleHRcIiBbYXBwSW1hZ2VFZGl0b3JdPVwiZWRpdCB8fCBmYWxzZVwiIFtpY29uRGF0YV09XCJpdGVtPy5pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtjbGFzc109XCJkYXRhPy5pZCsoaXRlbT8uaWNvbj8uaWQgfHwgJycpXCIgW3Nob3dJY29uXT1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihpdGVtPy5pY29uPy51cmw/LmluY2x1ZGVzKCcucG5nJykgfHwgaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihzdHlsZXM/LmNvbnRhaW5lckhlaWdodCA/PyAxKSAvIChpc01vYmlsZSA/IDIgOiAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiKHN0eWxlcz8uY29udGFpbmVyV2lkdGggPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsb2dvLWltZyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiaXRlbT8uaWNvbj8uc2hvd0JhY2tncm91bmQgPyBpdGVtPy5pY29uPy5iYWNrZ3JvdW5kQ29sb3IgOiAndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBJbWFnZUVkaXRvcl09XCJlZGl0IHx8IGZhbHNlXCIgW2ljb25EYXRhXT1cIml0ZW0/Lmljb25cIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SWNvbl09XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBbaWNvbklkXT1cImRhdGE/LmlkICsgKGl0ZW0/Lmljb24/LmlkID8/ICcnIClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW1wb0ljb25EaXJlY3RpdmVdPVwiaXRlbT8uaWNvblwiIGNsYXNzPVwidy03NSBoLTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnctMTAwXT1cIiFpdGVtPy5pY29uPy5zaG93QmFja2dyb3VuZFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cIml0ZW0uaW5wdXRUZXh0WzBdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb2x1bW4gcm93IGctMlwiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0xheW91dF09XCJzdHlsZXM/LmxheW91dFwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInN0eWxlcz8ucG9zaXRpb25MYXlvdXQ/LnZhbHVlID09PSAnYm90dG9tJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTUgbWItMjAgY29udGVudC1zaWRlXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FsaWduLWl0ZW1zLXN0cmV0Y2gnOnN0eWxlcz8ubGF5b3V0Py5hbGlnbj09PSdsZWZ0JyB8fCBzdHlsZXM/LmxheW91dD8uYWxpZ249PT0nY2VudGVyJyB8fCBzdHlsZXM/LmxheW91dD8uYWxpZ249PT0ncmlnaHQnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudD8uaW5wdXRUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0IHx8IGl0ZW0udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJpdGVtLnZhbHVlXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YT8uYWN0aW9uICYmIGRhdGE/LmFjdGlvbj8uZGlzcGxheVwiIGNsYXNzPVwiYnV0dG9uLWRpc3BsYXkgbXQtMjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGRhdGE/LmFjdGlvbj8uYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idXR0b24tZWxlbWVudCBbYnV0dG9uQ29udGVudF09XCJidXR0b24uY29udGVudFwiIFtidXR0b25TdHlsZV09XCJidXR0b24uc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uSWRdPVwiYnV0dG9uLmlkXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtlZGl0XT1cImVkaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmFja2dyb3VuZEluZm9dPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kXCI+PC9hcHAtYnV0dG9uLWVsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciB3LWZ1bGwgZ2FwLTIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciB3LWZ1bGwgZ2FwLTIganVzdGlmeS1jZW50ZXIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlciBmbGV4IG92ZXJmbG93LWhpZGRlbiB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci10cmFjayB3LWZ1bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvbiAmJiAhY29udGVudD8uZGlzcGxheT8uc2hvd1RleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydnYXAtMCc6IHN0eWxlcz8ucmVtb3ZlR2Fwc31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXNcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGVzPy5jb3JuZXJzXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2xvZ290eXBlLWJveGVkJzogc3R5bGVzPy5sb2dvVHlwZSA9PT0gJ0JveGVkJyAsICdsb2dvdHlwZS1iYXNpYycgOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQmFzaWMnLCAnanVzdGlmeS1jb250ZW50LXN0YXJ0Jzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnbGVmdCcsICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnY2VudGVyJywgJ2p1c3RpZnktY29udGVudC1lbmQnOiBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdyaWdodCd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5saXN0SXRlbT8uZGF0YTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIml0ZW0/Lmljb24/LnVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0/Lmljb24/LnVybD8uaW5jbHVkZXMoJy5wbmcnKSAmJiAhaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCIoc3R5bGVzPy5jb250YWluZXJIZWlnaHQgPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiKHN0eWxlcz8uY29udGFpbmVyV2lkdGggPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0/Lmljb24/LmFsdFRleHRcIiBbYXBwSW1hZ2VFZGl0b3JdPVwiZWRpdCB8fCBmYWxzZVwiIFtpY29uRGF0YV09XCJpdGVtPy5pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtjbGFzc109XCJkYXRhPy5pZCsoaXRlbT8uaWNvbj8uaWQgfHwgJycpXCIgW3Nob3dJY29uXT1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihpdGVtPy5pY29uPy51cmw/LmluY2x1ZGVzKCcucG5nJykgfHwgaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihzdHlsZXM/LmNvbnRhaW5lckhlaWdodCA/PyAxKSAvIChpc01vYmlsZSA/IDIgOiAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiKHN0eWxlcz8uY29udGFpbmVyV2lkdGggPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsb2dvLWltZyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiaXRlbT8uaWNvbj8uc2hvd0JhY2tncm91bmQgPyBpdGVtPy5pY29uPy5iYWNrZ3JvdW5kQ29sb3IgOiAndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBJbWFnZUVkaXRvcl09XCJlZGl0IHx8IGZhbHNlXCIgW2ljb25EYXRhXT1cIml0ZW0/Lmljb25cIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SWNvbl09XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBbaWNvbklkXT1cImRhdGE/LmlkICsgKGl0ZW0/Lmljb24/LmlkID8/ICcnIClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW1wb0ljb25EaXJlY3RpdmVdPVwiaXRlbT8uaWNvblwiIGNsYXNzPVwidy03NSBoLTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnctMTAwXT1cIiFpdGVtPy5pY29uPy5zaG93QmFja2dyb3VuZFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci10cmFjayB3LWZ1bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29udGVudD8uZGlzcGxheT8uc2hvd0ljb24gJiYgY29udGVudD8uZGlzcGxheT8uc2hvd1RleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydnYXAtMCc6IHN0eWxlcz8ucmVtb3ZlR2Fwc31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXNcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGVzPy5jb3JuZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RleHR0eXBlLWJveGVkJzogc3R5bGVzPy5sb2dvVHlwZSA9PT0gJ0JveGVkJyAsICdsb2dvdHlwZS1iYXNpYycgOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQmFzaWMnLCAnanVzdGlmeS1jb250ZW50LXN0YXJ0Jzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnbGVmdCcsICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnY2VudGVyJywgJ2p1c3RpZnktY29udGVudC1lbmQnOiBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdyaWdodCd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5saXN0SXRlbT8uZGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJpdGVtLmlucHV0VGV4dFswXS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci10cmFjayB3LWZ1bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvbiAmJiBjb250ZW50Py5kaXNwbGF5Py5zaG93VGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2dhcC0wJzogc3R5bGVzPy5yZW1vdmVHYXBzfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlcyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudD8ubGlzdEl0ZW0/LmRhdGFcIiBbaWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndGV4dHR5cGUtYm94ZWQnOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQm94ZWQnICwgJ2xvZ290eXBlLWJhc2ljJyA6IHN0eWxlcz8ubG9nb1R5cGUgPT09ICdCYXNpYycsICdmbGV4LXJvdycgOiBzdHlsZXM/LmxvZ29Qb3NpdGlvbiA9PSAnbGVmdCcgLCAnZmxleC1yb3ctcmV2ZXJzZScgOiBzdHlsZXM/LmxvZ29Qb3NpdGlvbiA9PSAncmlnaHQnLCAnZmxleC1jb2x1bW4nIDogc3R5bGVzPy5sb2dvUG9zaXRpb24gPT0gJ3RvcCcgLCAnZmxleC1jb2x1bW4tcmV2ZXJzZScgOiBzdHlsZXM/LmxvZ29Qb3NpdGlvbiA9PSAnYm90dG9tJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJpdGVtPy5pY29uPy51cmxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpdGVtPy5pY29uPy51cmw/LmluY2x1ZGVzKCcucG5nJykgJiYgIWl0ZW0/Lmljb24/LnVybD8uaW5jbHVkZXMoJy5zdmcnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKHN0eWxlcz8uY29udGFpbmVySGVpZ2h0ID8/IDEpIC8gKGlzTW9iaWxlID8gMiA6IDEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIihzdHlsZXM/LmNvbnRhaW5lcldpZHRoID8/IDEpIC8gKGlzTW9iaWxlID8gMiA6IDEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJpdGVtPy5pY29uPy5hbHRUZXh0XCIgW2FwcEltYWdlRWRpdG9yXT1cImVkaXQgfHwgZmFsc2VcIiBbaWNvbkRhdGFdPVwiaXRlbT8uaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbY2xhc3NdPVwiZGF0YT8uaWQrKGl0ZW0/Lmljb24/LmlkIHx8ICcnKVwiIFtzaG93SWNvbl09XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnBuZycpIHx8IGl0ZW0/Lmljb24/LnVybD8uaW5jbHVkZXMoJy5zdmcnKSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCIoc3R5bGVzPy5jb250YWluZXJIZWlnaHQgPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIihzdHlsZXM/LmNvbnRhaW5lcldpZHRoID8/IDEpIC8gKGlzTW9iaWxlID8gMiA6IDEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibG9nby1pbWcgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIml0ZW0/Lmljb24/LnNob3dCYWNrZ3JvdW5kID8gaXRlbT8uaWNvbj8uYmFja2dyb3VuZENvbG9yIDogJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwSW1hZ2VFZGl0b3JdPVwiZWRpdCB8fCBmYWxzZVwiIFtpY29uRGF0YV09XCJpdGVtPy5pY29uXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0ljb25dPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0ljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cImRhdGE/LmlkXCIgW2ljb25JZF09XCJkYXRhPy5pZCArIChpdGVtPy5pY29uPy5pZCA/PyAnJyApXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2ltcG9JY29uRGlyZWN0aXZlXT1cIml0ZW0/Lmljb25cIiBjbGFzcz1cInctNzUgaC0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53LTEwMF09XCIhaXRlbT8uaWNvbj8uc2hvd0JhY2tncm91bmRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIGNsYXNzPVwibXQtMlwiIFsodmFsdWUpXT1cIml0ZW0uaW5wdXRUZXh0WzBdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHlsZXM/LmRldmlkZXI/LmRpc3BsYXlcIj5cclxuICAgICAgICAgICAgPHNpbXBvLXN2Zy1kaXZpZGVyIFtkaXZpZGVyVHlwZV09XCJzdHlsZXM/LmRldmlkZXI/LmRldmlkZXJUeXBlXCJcclxuICAgICAgICAgICAgICAgIFtjb2xvcl09XCJuZXh0Q29tcG9uZW50Q29sb3I/LmNvbG9yXCI+PC9zaW1wby1zdmctZGl2aWRlcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICAgICAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICAgICAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJzdHlsZXM/LnNob3dDYXNlVHlwZT09PSdDYXJvdXNhbCdcIj5cclxuICAgIDxkaXYgW2lkXT1cImRhdGE/LmlkXCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lclwiPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDBcIiBbaWRdPVwiZGF0YT8uaWRcIiAjbWFpbkNvbnRhaW5lciBbc2ltcG9PdmVybGF5XT1cInN0eWxlcz8uYmFja2dyb3VuZFwiXHJcbiAgICAgICAgICAgIFtzaW1wb0JvcmRlcl09XCJzdHlsZXM/LmJvcmRlclwiIFtzcGFjaW5nSG9yaXpvbnRhbF09XCJzdHlsZXNMYXlvdXRcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJzdHlsZXM/LmZ1bGxXaWR0aCA9PT0gdHJ1ZSA/ICdweC0wJyA6ICcnXCIgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29sdW1uIHJvdyBnLTJcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbnNlYyBjb250ZW50LXNpZGVcIiBbaWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWxpZ24taXRlbXMtc3RyZXRjaCc6c3R5bGVzPy5sYXlvdXQ/LmFsaWduPT09J2xlZnQnIHx8IHN0eWxlcz8ubGF5b3V0Py5hbGlnbj09PSdjZW50ZXInIHx8IHN0eWxlcz8ubGF5b3V0Py5hbGlnbj09PSdyaWdodCd9XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudD8uaW5wdXRUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0IHx8IGl0ZW0udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJpdGVtLnZhbHVlXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YT8uYWN0aW9uICYmIGRhdGE/LmFjdGlvbj8uZGlzcGxheVwiIGNsYXNzPVwiZ2FwLTIgZC1tZC1mbGV4IG10LTE1XCIgW25nQ2xhc3NdPVwiW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2xlZnQnID8gJ2p1c3RpZnktY29udGVudC1tZC1zdGFydCcgOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdjZW50ZXInID8gJ2p1c3RpZnktY29udGVudC1tZC1jZW50ZXInIDogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAncmlnaHQnID8gJ2p1c3RpZnktY29udGVudC1tZC1lbmQnIDogJydcclxuICAgICAgICAgICAgICAgICAgICAgIF1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGRhdGE/LmFjdGlvbj8uYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idXR0b24tZWxlbWVudCBbYnV0dG9uQ29udGVudF09XCJidXR0b24uY29udGVudFwiIFtidXR0b25TdHlsZV09XCJidXR0b24uc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uSWRdPVwiYnV0dG9uLmlkXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtlZGl0XT1cImVkaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmFja2dyb3VuZEluZm9dPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kXCI+PC9hcHAtYnV0dG9uLWVsZW1lbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICdmdWxsd2lkdGggZmxleC0xIGlubGluZS1lZGl0ICAnOiBzdHlsZXM/LmZ1bGxXaWR0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICdub2Z1bGx3aWR0aCBmbGV4LTEgaW5saW5lLWVkaXQgJzogIXN0eWxlcz8uZnVsbFdpZHRoXHJcbiAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFza2luZ1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXIgYW5pbWF0aW9uIFwiIFtzdHlsZS5hbmltYXRpb25EdXJhdGlvbl09XCJhbmltYXRpb25EdXJhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmFuaW1hdGlvbkRpcmVjdGlvbl09XCJhbmltYXRpb25EaXJlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyLXRyYWNrMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0ljb24gJiYgIWNvbnRlbnQ/LmRpc3BsYXk/LnNob3dUZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydsb2dvdHlwZS1ib3hlZCc6IHN0eWxlcz8ubG9nb1R5cGUgPT09ICdCb3hlZCcgLCAnbG9nb3R5cGUtYmFzaWMnIDogc3R5bGVzPy5sb2dvVHlwZSA9PT0gJ0Jhc2ljJywgJ2dhcC0wJzogc3R5bGVzPy5yZW1vdmVHYXBzfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVzMlwiIFtzaW1wb0Nvcm5lcl09XCJzdHlsZXM/LmNvcm5lcnNcIiBbaWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydsb2dvdHlwZS1ib3hlZCc6IHN0eWxlcz8ubG9nb1R5cGUgPT09ICdCb3hlZCcgLCAnbG9nb3R5cGUtYmFzaWMnIDogc3R5bGVzPy5sb2dvVHlwZSA9PT0gJ0Jhc2ljJywgJ2p1c3RpZnktY29udGVudC1zdGFydCc6IHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2xlZnQnLCAnanVzdGlmeS1jb250ZW50LWNlbnRlcic6IHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2NlbnRlcicsICdqdXN0aWZ5LWNvbnRlbnQtZW5kJzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAncmlnaHQnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5saXN0SXRlbT8uZGF0YTtsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJpdGVtPy5pY29uPy51cmxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0/Lmljb24/LnVybD8uaW5jbHVkZXMoJy5wbmcnKSAmJiAhaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihzdHlsZXM/LmNvbnRhaW5lckhlaWdodCA/PyAxKSAvIChpc01vYmlsZSA/IDIgOiAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIihzdHlsZXM/LmNvbnRhaW5lcldpZHRoID8/IDEpIC8gKGlzTW9iaWxlID8gMiA6IDEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0/Lmljb24/LmFsdFRleHRcIiBbYXBwSW1hZ2VFZGl0b3JdPVwiZWRpdCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cIml0ZW0/Lmljb25cIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZGF0YT8uaWQrKGl0ZW0/Lmljb24/LmlkIHx8ICcnKVwiIFtzaG93SWNvbl09XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGl0ZW0/Lmljb24/LnVybD8uaW5jbHVkZXMoJy5wbmcnKSB8fCBpdGVtPy5pY29uPy51cmw/LmluY2x1ZGVzKCcuc3ZnJykpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihzdHlsZXM/LmNvbnRhaW5lckhlaWdodCA/PyAxKSAvIChpc01vYmlsZSA/IDIgOiAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCIoc3R5bGVzPy5jb250YWluZXJXaWR0aCA/PyAxKSAvIChpc01vYmlsZSA/IDIgOiAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibG9nby1pbWcgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiaXRlbT8uaWNvbj8uc2hvd0JhY2tncm91bmQgPyBpdGVtPy5pY29uPy5iYWNrZ3JvdW5kQ29sb3IgOiAndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcEltYWdlRWRpdG9yXT1cImVkaXQgfHwgZmFsc2VcIiBbaWNvbkRhdGFdPVwiaXRlbT8uaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbc2hvd0ljb25dPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0ljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBbaWNvbklkXT1cImRhdGE/LmlkICsgKGl0ZW0/Lmljb24/LmlkID8/ICcnIClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpbXBvSWNvbkRpcmVjdGl2ZV09XCJpdGVtPy5pY29uXCIgY2xhc3M9XCJ3LTc1IGgtMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53LTEwMF09XCIhaXRlbT8uaWNvbj8uc2hvd0JhY2tncm91bmRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyLXRyYWNrMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8uZGlzcGxheT8uc2hvd1RleHQgJiYgIWNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydnYXAtMCc6IHN0eWxlcz8ucmVtb3ZlR2Fwc31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlc1wiIFtzaW1wb0Nvcm5lcl09XCJzdHlsZXM/LmNvcm5lcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0ZXh0dHlwZS1ib3hlZCc6IHN0eWxlcz8ubG9nb1R5cGUgPT09ICdCb3hlZCcgLCAnbG9nb3R5cGUtYmFzaWMnIDogc3R5bGVzPy5sb2dvVHlwZSA9PT0gJ0Jhc2ljJywgJ2p1c3RpZnktY29udGVudC1zdGFydCc6IHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2xlZnQnLCAnanVzdGlmeS1jb250ZW50LWNlbnRlcic6IHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2NlbnRlcicsICdqdXN0aWZ5LWNvbnRlbnQtZW5kJzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAncmlnaHQnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5saXN0SXRlbT8uZGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cIml0ZW0uaW5wdXRUZXh0WzBdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXItdHJhY2syIGQtZmxleCB3LWZ1bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJY29uICYmIGNvbnRlbnQ/LmRpc3BsYXk/LnNob3dUZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydnYXAtMCc6IHN0eWxlcz8ucmVtb3ZlR2Fwc31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlcyBkLWZsZXhcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGVzPy5jb3JuZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndGV4dHR5cGUtYm94ZWQnOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQm94ZWQnICwgJ2xvZ290eXBlLWJhc2ljJyA6IHN0eWxlcz8ubG9nb1R5cGUgPT09ICdCYXNpYycsICAnYWxpZ24taXRlbXMtc3RhcnQnOiBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdsZWZ0JywgJ2FsaWduLWl0ZW1zLWNlbnRlcic6IHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2NlbnRlcicsICdhbGlnbi1pdGVtcy1lbmQnOiBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdyaWdodCcgLCAnZmxleC1yb3cnIDogc3R5bGVzPy5sb2dvUG9zaXRpb24gPT0gJ2xlZnQnICwgJ2ZsZXgtcm93LXJldmVyc2UnIDogc3R5bGVzPy5sb2dvUG9zaXRpb24gPT0gJ3JpZ2h0JywgJ2ZsZXgtY29sdW1uJyA6IHN0eWxlcz8ubG9nb1Bvc2l0aW9uID09ICd0b3AnICwgJ2ZsZXgtY29sdW1uLXJldmVyc2UnIDogc3R5bGVzPy5sb2dvUG9zaXRpb24gPT0gJ2JvdHRvbSd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJpdGVtPy5pY29uPy51cmxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0/Lmljb24/LnVybD8uaW5jbHVkZXMoJy5wbmcnKSAmJiAhaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihzdHlsZXM/LmNvbnRhaW5lckhlaWdodCA/PyAxKSAvIChpc01vYmlsZSA/IDIgOiAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIihzdHlsZXM/LmNvbnRhaW5lcldpZHRoID8/IDEpIC8gKGlzTW9iaWxlID8gMiA6IDEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0/Lmljb24/LmFsdFRleHRcIiBbYXBwSW1hZ2VFZGl0b3JdPVwiZWRpdCB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cIml0ZW0/Lmljb25cIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZGF0YT8uaWQrKGl0ZW0/Lmljb24/LmlkIHx8ICcnKVwiIFtzaG93SWNvbl09XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGl0ZW0/Lmljb24/LnVybD8uaW5jbHVkZXMoJy5wbmcnKSB8fCBpdGVtPy5pY29uPy51cmw/LmluY2x1ZGVzKCcuc3ZnJykpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihzdHlsZXM/LmNvbnRhaW5lckhlaWdodCA/PyAxKSAvIChpc01vYmlsZSA/IDIgOiAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCIoc3R5bGVzPy5jb250YWluZXJXaWR0aCA/PyAxKSAvIChpc01vYmlsZSA/IDIgOiAxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibG9nby1pbWcgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiaXRlbT8uaWNvbj8uc2hvd0JhY2tncm91bmQgPyBpdGVtPy5pY29uPy5iYWNrZ3JvdW5kQ29sb3IgOiAndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcEltYWdlRWRpdG9yXT1cImVkaXQgfHwgZmFsc2VcIiBbaWNvbkRhdGFdPVwiaXRlbT8uaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbc2hvd0ljb25dPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0ljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBbaWNvbklkXT1cImRhdGE/LmlkICsgKGl0ZW0/Lmljb24/LmlkID8/ICcnIClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpbXBvSWNvbkRpcmVjdGl2ZV09XCJpdGVtPy5pY29uXCIgY2xhc3M9XCJ3LTc1IGgtMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53LTEwMF09XCIhaXRlbT8uaWNvbj8uc2hvd0JhY2tncm91bmRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIGNsYXNzPVwibXQtMlwiIFsodmFsdWUpXT1cIml0ZW0uaW5wdXRUZXh0WzBdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0eWxlcz8uZGV2aWRlcj8uZGlzcGxheVwiPlxyXG4gICAgICAgICAgICA8c2ltcG8tc3ZnLWRpdmlkZXIgW2RpdmlkZXJUeXBlXT1cInN0eWxlcz8uZGV2aWRlcj8uZGV2aWRlclR5cGVcIlxyXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cIm5leHRDb21wb25lbnRDb2xvcj8uY29sb3JcIj48L3NpbXBvLXN2Zy1kaXZpZGVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgICAgICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dEZWxldGVcIiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGRlbGV0ZX1cIj5cclxuICAgICAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nby1zaG93Y2FzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2xvZ28tc2hvd2Nhc2UvbG9nby1zaG93Y2FzZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2xvZ28tc2hvd2Nhc2UvbG9nby1zaG93Y2FzZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRWxGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDN0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUl6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7O0FBUWxGLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxXQUFXO0lBa0JwRCxZQUNVLGFBQTRCO1FBRXBDLEtBQUssRUFBRSxDQUFDO1FBRkEsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFQdEMsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFDNUIsdUJBQWtCLEdBQVcsRUFBRSxDQUFDO1FBQ2hDLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBNkQ1QixnQkFBVyxHQUFXLEdBQUcsQ0FBQztRQXJEeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFHRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDakUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDM0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUM7UUFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDM0IsQ0FBQztJQUdELElBQUksWUFBWTtRQUNkLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFpQixDQUFDO0lBQ25ELENBQUM7SUFDRCxJQUFJLGlCQUFpQjtRQUNuQixRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDL0IsS0FBSyxJQUFJO2dCQUNQLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQTtZQUN2QixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFBO1lBQ3pCLEtBQUssSUFBSTtnQkFDUCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUE7WUFDdkIsS0FBSyxJQUFJO2dCQUNQLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQTtRQUM3QixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFBO0lBQ3pCLENBQUM7SUFDRCxJQUFJLGtCQUFrQjtRQUNwQixRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDbkMsS0FBSyxPQUFPO2dCQUNWLE9BQU8sU0FBUyxDQUFBO1lBQ2xCLEtBQUssTUFBTTtnQkFDVCxPQUFPLFFBQVEsQ0FBQTtRQUVuQixDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFBO0lBQzNCLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBeUIsQ0FBQztJQUNuRSxDQUFDO0lBUUQsYUFBYSxDQUFDLEtBQWM7UUFDMUIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFDRCxXQUFXO1FBRVQsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLEdBQUc7WUFDMUIsT0FBTTtRQUNSLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzsrR0ExRlUscUJBQXFCO21HQUFyQixxQkFBcUIseVRDMUNsQywrczVCQThVTSxpeUVEeFNNLG9CQUFvQixvS0FBRSxtQkFBbUIscUpBQW9CLG1CQUFtQiw0SUFBRSxvQkFBb0IsbVdBQUUsWUFBWSw2VkFBRSxpQkFBaUIsK0JBQUUsa0JBQWtCLHlGQUFFLG1CQUFtQiwwR0FBRSxtQkFBbUIsbUZBQUUsZUFBZSxtRkFBd0csZUFBZSxtRkFBRSw4QkFBOEIsdUdBQThCLGNBQWMsZ0ZBQTJCLGdCQUFnQixxRkFBRSxnQ0FBZ0MscUhBQW9DLDBCQUEwQiwyR0FBMkIsb0JBQW9CLDJJQUFHLHNCQUFzQjs7NEZBSTNtQixxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFDLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLDhCQUE4QixFQUFFLDBCQUEwQixFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxnQ0FBZ0MsRUFBRSxnQ0FBZ0MsRUFBRSwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSxvQkFBb0IsRUFBRyxzQkFBc0IsQ0FBQztrRkFLOW1CLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkF1RU4sYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEhvc3RMaXN0ZW5lciwgT25Jbml0LCBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbk1vZGVsLCBCYWNrZ3JvdW5kTW9kZWwsIExheU91dE1vZGVsLCBQb3NpdGlvbkxheW91dE1vZGFsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcbmltcG9ydCB7IFNpbXBvRWxlbWVudHNNb2R1bGUgfSBmcm9tICcuLi8uLi9lbGVtZW50cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IE1hdEdyaWRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZ3JpZC1saXN0JztcbmltcG9ydCB7IFNpbXBvQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvc2ltcG8tYnV0dG9uL3NpbXBvLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmFja2dyb3VuZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9iYWNrZ3JvdW5kLWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtZml0LWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCYW5uZXJDb250ZW50Rml0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2Jhbm5lci1jb250ZW50LWZpdC1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQm9yZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JvcmRlci1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbHVtbkRpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb2x1bW4tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb250YWluZXJGaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29udGFpbmVyLWZpci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgc2ltcG9Db25ldGVuQWxpZ25tZW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbnRlbnQtYWxpZ25tZW50LWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb3JuZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29ybmVyLWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTaW1wb0Zvb3RlckxheW91dERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9mb290ZXItbGF5b3V0LWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJbWFnZURpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9pbWFnZS1kaXJlY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IE92ZXJsYXlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvb3ZlcmxheS1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9zaXRpb25MYXlvdXREaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvcG9zaXRpb24tbGF5b3V0LWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGV4dEJhY2tncm91bmREaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvdGV4dC1iYWNrZ3JvdW5kLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT2JqZWN0UG9zaXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaW1hZ2UtcG9zaXRpb24uZGlyZWN0aXZlJztcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi9CYXNlU2VjdGlvbic7XG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdyeGpzL2ludGVybmFsL3NjaGVkdWxlci9BY3Rpb24nO1xuaW1wb3J0IHsgTG9nb1Nob3djYXNlQ29udGVudE1vZGVsLCBMb2dvU2hvd2Nhc2VTZWN0aW9uLCBMb2dvU2hvd2Nhc2VTdHlsZXNNb2RlbCB9IGZyb20gJy4vbG9nby1zaG93Y2FzZS5tb2RhbCc7XG5pbXBvcnQgeyBsb2dvRGlyZWN0aW9uLCBsb2dvU3BlZWQgfSBmcm9tICcuLi8uLi9zdHlsZXMvaW5kZXgnO1xuaW1wb3J0IHsgc2hvd0Nhc2VUeXBlIH0gZnJvbSAnLi4vLi4vc3R5bGVzL2luZGV4JztcbmltcG9ydCB7IFNhbml0aXplSHRtbFBpcGUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zYW5pdGl6ZUh0bWwnO1xuaW1wb3J0IHsgVGV4dEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbWFnZUVkaXRvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9pbWFnZS1lZGl0b3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNwYWNpbmdIb3Jpem9udGFsRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL3NwYWNpbmctaG9yaXpvbnRhbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWNvbkRpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9pY29uLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltcG8tbG9nby1zaG93Y2FzZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtTaW1wb0J1dHRvbkNvbXBvbmVudCwgU2ltcG9FbGVtZW50c01vZHVsZSwgU2FuaXRpemVIdG1sUGlwZSwgVGV4dEVkaXRvckNvbXBvbmVudCwgU2ltcG9Db21wb25lbnRNb2R1bGUsIENvbW1vbk1vZHVsZSwgTWF0R3JpZExpc3RNb2R1bGUsIEFuaW1hdGlvbkRpcmVjdGl2ZSwgQmFja2dyb3VuZERpcmVjdGl2ZSwgQ29udGVudEZpdERpcmVjdGl2ZSwgQm9yZGVyRGlyZWN0aXZlLCBCYW5uZXJDb250ZW50Rml0RGlyZWN0aXZlLCBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsIENvbHVtbkRpcmVjdGl2ZURpcmVjdGl2ZSwgQ29udGFpbmVyRml0RGlyZWN0aXZlLCBDb3JuZXJEaXJlY3RpdmUsIHNpbXBvQ29uZXRlbkFsaWdubWVudERpcmVjdGl2ZSwgU2ltcG9Gb290ZXJMYXlvdXREaXJlY3RpdmUsIEhvdmVyRGlyZWN0aXZlLCBJbWFnZURpcmVjdGl2ZURpcmVjdGl2ZSwgT3ZlcmxheURpcmVjdGl2ZSwgUG9zaXRpb25MYXlvdXREaXJlY3RpdmVEaXJlY3RpdmUsIFRleHRCYWNrZ3JvdW5kRGlyZWN0aXZlRGlyZWN0aXZlLCBTcGFjaW5nSG9yaXpvbnRhbERpcmVjdGl2ZSwgT2JqZWN0UG9zaXRpb25EaXJlY3RpdmUsIEltYWdlRWRpdG9yRGlyZWN0aXZlICwgSWNvbkRpcmVjdGl2ZURpcmVjdGl2ZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2dvLXNob3djYXNlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2xvZ28tc2hvd2Nhc2UuY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIExvZ29TaG93Y2FzZUNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZGF0YT86IExvZ29TaG93Y2FzZVNlY3Rpb247XG4gIEBJbnB1dCgpIGluZGV4PzogbnVtYmVyO1xuICBASW5wdXQoKSBlZGl0PzogYm9vbGVhbjtcbiAgQElucHV0KCkgZGVsZXRlPzogYm9vbGVhbjtcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3M/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG5leHRDb21wb25lbnRDb2xvcj86IEJhY2tncm91bmRNb2RlbDtcblxuICBpZCAhOiBzdHJpbmc7XG4gIGFjdGlvbiE6IEFjdGlvbk1vZGVsO1xuICBjb250ZW50PzogTG9nb1Nob3djYXNlQ29udGVudE1vZGVsO1xuICBzdHlsZXM/OiBMb2dvU2hvd2Nhc2VTdHlsZXNNb2RlbDtcbiAgbG9nb1NwZWVkQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBsb2dvRGlyZWN0aW9uQ2xhc3M6IHN0cmluZyA9ICcnO1xuICBpc0Z1bGxXaWR0aDogYm9vbGVhbiA9IHRydWU7XG5cblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZ2V0U2NyZWVuU2l6ZSgpO1xuICB9XG5cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRhdGE/LmNvbnRlbnQ7XG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLmRhdGE/LnN0eWxlcztcbiAgICB0aGlzLmRlbGV0ZVNlbGVjdGVkID0gdGhpcy5kZWxldGU7XG4gICAgdGhpcy5sb2dvU3BlZWRDbGFzcyA9IHRoaXMuc3R5bGVzPy5sb2dvU3BlZWQgfHwgbG9nb1NwZWVkLk5vcm1hbDtcbiAgICB0aGlzLmxvZ29EaXJlY3Rpb25DbGFzcyA9IHRoaXMuc3R5bGVzPy5sb2dvRGlyZWN0aW9uIHx8IGxvZ29EaXJlY3Rpb24uTGVmdDtcbiAgICB0aGlzLmlzRnVsbFdpZHRoID0gdGhpcy5zdHlsZXM/LmZ1bGxXaWR0aCB8fCB0cnVlO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuY29udGVudClcbiAgfVxuXG5cbiAgZ2V0IHN0eWxlc0xheW91dCgpIHtcbiAgICByZXR1cm4geyAuLi50aGlzLnN0eWxlcz8ubGF5b3V0IH0gYXMgTGF5T3V0TW9kZWw7XG4gIH1cbiAgZ2V0IGFuaW1hdGlvbkR1cmF0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5zdHlsZXM/LmxvZ29TcGVlZCkge1xuICAgICAgY2FzZSAnNHMnOlxuICAgICAgICByZXR1cm4gbG9nb1NwZWVkLlNsb3dcbiAgICAgIGNhc2UgJzNzJzpcbiAgICAgICAgcmV0dXJuIGxvZ29TcGVlZC5Ob3JtYWxcbiAgICAgIGNhc2UgJzJzJzpcbiAgICAgICAgcmV0dXJuIGxvZ29TcGVlZC5GYXN0XG4gICAgICBjYXNlICcxcyc6XG4gICAgICAgIHJldHVybiBsb2dvU3BlZWQuVmVyeUZhc3RcbiAgICB9XG4gICAgcmV0dXJuIGxvZ29TcGVlZC5Ob3JtYWxcbiAgfVxuICBnZXQgYW5pbWF0aW9uRGlyZWN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5zdHlsZXM/LmxvZ29EaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgJ1JpZ2h0JzpcbiAgICAgICAgcmV0dXJuICdyZXZlcnNlJ1xuICAgICAgY2FzZSAnTGVmdCc6XG4gICAgICAgIHJldHVybiAnbm9ybWFsJ1xuXG4gICAgfVxuICAgIHJldHVybiBsb2dvRGlyZWN0aW9uLkxlZnRcbiAgfVxuICBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NTtcbiAgfVxuXG4gIGdldCBnZXRQb3NpdGlvbkxheW91dCgpIHtcbiAgICByZXR1cm4geyAuLi50aGlzLnN0eWxlcz8ucG9zaXRpb25MYXlvdXQgfSBhcyBQb3NpdGlvbkxheW91dE1vZGFsO1xuICB9XG5cblxuXG5cblxuICBzY3JlZW5XaWR0aDogbnVtYmVyID0gNDc1O1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgZ2V0U2NyZWVuU2l6ZShldmVudD86IG51bWJlcikge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIH1cbiAgfVxuICBlZGl0U2VjdGlvbigpIHtcblxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzUpXG4gICAgICByZXR1cm5cbiAgICB0aGlzLl9ldmVudFNlcnZpY2UudG9nZ2xlRWRpdG9yRXZlbnQuZW1pdChmYWxzZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuZWRpdFNlY3Rpb24uZW1pdCh7IGRhdGE6IHRoaXMuZGF0YSB9KTtcbiAgICB9LCAxMDApO1xuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJzdHlsZXM/LnNob3dDYXNlVHlwZT09PSdHcmlkJ1wiPlxuICAgIDxkaXYgW2lkXT1cImRhdGE/LmlkXCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIiBjbGFzcz1cInRvdGFsLWNvbnRhaW5lclwiXG4gICAgICAgIFthdHRyLnN0eWxlXT1cImN1c3RvbUNsYXNzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJweS0zIHctMTAwIFwiIFtzaW1wb0JhY2tncm91bmRdPVwic3R5bGVzPy5iYWNrZ3JvdW5kXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInN0eWxlcz8uZnVsbFdpZHRoID09PSB0cnVlID8gJ3B4LTAnIDogJydcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9BbmltYXRpb25dPVwic3R5bGVzPy5hbmltYXRpb25cIlxuICAgICAgICAgICAgI21haW5Db250YWluZXIgW3NpbXBvT3ZlcmxheV09XCJzdHlsZXM/LmJhY2tncm91bmRcIiBbc2ltcG9Cb3JkZXJdPVwic3R5bGVzPy5ib3JkZXJcIlxuICAgICAgICAgICAgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBnLTUgZ3JpZHRleHRcIiBbaWRdPVwiZGF0YT8uaWRcIiBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIlxuICAgICAgICAgICAgICAgIFtzaW1wb1Bvc2l0aW9uTGF5b3V0RGlyZWN0aXZlXT1cInN0eWxlcz8ucG9zaXRpb25MYXlvdXRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwic3R5bGVzPy5wb3NpdGlvbkxheW91dD8udmFsdWUgPT09ICdsZWZ0JyB8fCBzdHlsZXM/LnBvc2l0aW9uTGF5b3V0Py52YWx1ZSA9PT0gJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWxpZ24taXRlbXMtc3RyZXRjaCc6IHN0eWxlcz8ucG9zaXRpb25MYXlvdXQ/LnZhbHVlID09PSAnbGVmdCcgfHwgc3R5bGVzPy5wb3NpdGlvbkxheW91dD8udmFsdWUgPT09ICdyaWdodCd9XCI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgZ3JpZGltZyB3LWZ1bGwgbWItMjAgY29udGVudC1zaWRlXCIgW2lkXT1cImRhdGE/LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW3NpbXBvQ29udGVudEFsaWdubWVudF09XCJzdHlsZXM/LmNvbnRlbnRBbGlnbm1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5pbnB1dFRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0IHx8IGl0ZW0udmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwiaXRlbS52YWx1ZVwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGE/LmFjdGlvbiAmJiBkYXRhPy5hY3Rpb24/LmRpc3BsYXlcIiBjbGFzcz1cImJ1dHRvbi1kaXNwbGF5IG10LTIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBidXR0b24gb2YgZGF0YT8uYWN0aW9uPy5idXR0b25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idXR0b24tZWxlbWVudCBbYnV0dG9uQ29udGVudF09XCJidXR0b24uY29udGVudFwiIFtidXR0b25TdHlsZV09XCJidXR0b24uc3R5bGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvbklkXT1cImJ1dHRvbi5pZFwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbZWRpdF09XCJlZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmFja2dyb3VuZEluZm9dPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kXCI+PC9hcHAtYnV0dG9uLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC03IGQtZmxleCBmbGV4LXdyYXAgZmxleC0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyIGZsZXggb3ZlcmZsb3ctaGlkZGVuIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci10cmFja1wiICpuZ0lmPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0ljb24gJiYgIWNvbnRlbnQ/LmRpc3BsYXk/LnNob3dUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2xvZ290eXBlLWJveGVkJzogc3R5bGVzPy5sb2dvVHlwZSA9PT0gJ0JveGVkJyAsICdsb2dvdHlwZS1iYXNpYycgOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQmFzaWMnLCAnZ2FwLTAnOiBzdHlsZXM/LnJlbW92ZUdhcHN9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlc1wiIFtzaW1wb0Nvcm5lcl09XCJzdHlsZXM/LmNvcm5lcnNcIiBbaWRdPVwiZGF0YT8uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2xvZ290eXBlLWJveGVkJzogc3R5bGVzPy5sb2dvVHlwZSA9PT0gJ0JveGVkJyAsICdsb2dvdHlwZS1iYXNpYycgOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQmFzaWMnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhO2xldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiaXRlbT8uaWNvbj8udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0/Lmljb24/LnVybD8uaW5jbHVkZXMoJy5wbmcnKSAmJiAhaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKHN0eWxlcz8uY29udGFpbmVySGVpZ2h0ID8/IDEpIC8gKGlzTW9iaWxlID8gMiA6IDEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCIoc3R5bGVzPy5jb250YWluZXJXaWR0aCA/PyAxKSAvIChpc01vYmlsZSA/IDIgOiAxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0/Lmljb24/LmFsdFRleHRcIiBbYXBwSW1hZ2VFZGl0b3JdPVwiZWRpdCB8fCBmYWxzZVwiIFtpY29uRGF0YV09XCJpdGVtPy5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbY2xhc3NdPVwiZGF0YT8uaWQrKGl0ZW0/Lmljb24/LmlkIHx8ICcnKVwiIFtzaG93SWNvbl09XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihpdGVtPy5pY29uPy51cmw/LmluY2x1ZGVzKCcucG5nJykgfHwgaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKHN0eWxlcz8uY29udGFpbmVySGVpZ2h0ID8/IDEpIC8gKGlzTW9iaWxlID8gMiA6IDEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiKHN0eWxlcz8uY29udGFpbmVyV2lkdGggPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibG9nby1pbWcgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJpdGVtPy5pY29uPy5zaG93QmFja2dyb3VuZCA/IGl0ZW0/Lmljb24/LmJhY2tncm91bmRDb2xvciA6ICd0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBJbWFnZUVkaXRvcl09XCJlZGl0IHx8IGZhbHNlXCIgW2ljb25EYXRhXT1cIml0ZW0/Lmljb25cIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0ljb25dPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0ljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiIFtpY29uSWRdPVwiZGF0YT8uaWQgKyAoaXRlbT8uaWNvbj8uaWQgPz8gJycgKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW1wb0ljb25EaXJlY3RpdmVdPVwiaXRlbT8uaWNvblwiIGNsYXNzPVwidy03NSBoLTEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53LTEwMF09XCIhaXRlbT8uaWNvbj8uc2hvd0JhY2tncm91bmRcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci10cmFjayB3LWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJY29uICYmIGNvbnRlbnQ/LmRpc3BsYXk/LnNob3dUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2dhcC0wJzogc3R5bGVzPy5yZW1vdmVHYXBzfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXNcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGVzPy5jb3JuZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudD8ubGlzdEl0ZW0/LmRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RleHR0eXBlLWJveGVkJzogc3R5bGVzPy5sb2dvVHlwZSA9PT0gJ0JveGVkJyAsICdsb2dvdHlwZS1iYXNpYycgOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQmFzaWMnfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwiaXRlbS5pbnB1dFRleHRbMF0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyLXRyYWNrIHctZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvbiAmJiBjb250ZW50Py5kaXNwbGF5Py5zaG93VGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydnYXAtMCc6IHN0eWxlcz8ucmVtb3ZlR2Fwc31cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVzIGQtZmxleFwiIFtzaW1wb0Nvcm5lcl09XCJzdHlsZXM/LmNvcm5lcnNcIiBbaWRdPVwiZGF0YT8uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5saXN0SXRlbT8uZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndGV4dHR5cGUtYm94ZWQnOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQm94ZWQnICwgJ2xvZ290eXBlLWJhc2ljJyA6IHN0eWxlcz8ubG9nb1R5cGUgPT09ICdCYXNpYycsJ2ZsZXgtcm93JyA6IHN0eWxlcz8ubG9nb1Bvc2l0aW9uID09ICdsZWZ0JyAsICdmbGV4LXJvdy1yZXZlcnNlJyA6IHN0eWxlcz8ubG9nb1Bvc2l0aW9uID09ICdyaWdodCcsICdmbGV4LWNvbHVtbicgOiBzdHlsZXM/LmxvZ29Qb3NpdGlvbiA9PSAndG9wJyAsICdmbGV4LWNvbHVtbi1yZXZlcnNlJyA6IHN0eWxlcz8ubG9nb1Bvc2l0aW9uID09ICdib3R0b20nfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJpdGVtPy5pY29uPy51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnBuZycpICYmICFpdGVtPy5pY29uPy51cmw/LmluY2x1ZGVzKCcuc3ZnJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCIoc3R5bGVzPy5jb250YWluZXJIZWlnaHQgPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIihzdHlsZXM/LmNvbnRhaW5lcldpZHRoID8/IDEpIC8gKGlzTW9iaWxlID8gMiA6IDEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbT8uaWNvbj8uYWx0VGV4dFwiIFthcHBJbWFnZUVkaXRvcl09XCJlZGl0IHx8IGZhbHNlXCIgW2ljb25EYXRhXT1cIml0ZW0/Lmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtjbGFzc109XCJkYXRhPy5pZCsoaXRlbT8uaWNvbj8uaWQgfHwgJycpXCIgW3Nob3dJY29uXT1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGl0ZW0/Lmljb24/LnVybD8uaW5jbHVkZXMoJy5wbmcnKSB8fCBpdGVtPy5pY29uPy51cmw/LmluY2x1ZGVzKCcuc3ZnJykpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCIoc3R5bGVzPy5jb250YWluZXJIZWlnaHQgPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCIoc3R5bGVzPy5jb250YWluZXJXaWR0aCA/PyAxKSAvIChpc01vYmlsZSA/IDIgOiAxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsb2dvLWltZyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIml0ZW0/Lmljb24/LnNob3dCYWNrZ3JvdW5kID8gaXRlbT8uaWNvbj8uYmFja2dyb3VuZENvbG9yIDogJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcEltYWdlRWRpdG9yXT1cImVkaXQgfHwgZmFsc2VcIiBbaWNvbkRhdGFdPVwiaXRlbT8uaWNvblwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SWNvbl09XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cImRhdGE/LmlkXCIgW2ljb25JZF09XCJkYXRhPy5pZCArIChpdGVtPy5pY29uPy5pZCA/PyAnJyApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpbXBvSWNvbkRpcmVjdGl2ZV09XCJpdGVtPy5pY29uXCIgY2xhc3M9XCJ3LTc1IGgtMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnctMTAwXT1cIiFpdGVtPy5pY29uPy5zaG93QmFja2dyb3VuZFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJpdGVtLmlucHV0VGV4dFswXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbHVtbiByb3cgZy0yXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvTGF5b3V0XT1cInN0eWxlcz8ubGF5b3V0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInN0eWxlcz8ucG9zaXRpb25MYXlvdXQ/LnZhbHVlID09PSAnYm90dG9tJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC01IG1iLTIwIGNvbnRlbnQtc2lkZVwiIFtpZF09XCJkYXRhPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWxpZ24taXRlbXMtc3RyZXRjaCc6c3R5bGVzPy5sYXlvdXQ/LmFsaWduPT09J2xlZnQnIHx8IHN0eWxlcz8ubGF5b3V0Py5hbGlnbj09PSdjZW50ZXInIHx8IHN0eWxlcz8ubGF5b3V0Py5hbGlnbj09PSdyaWdodCd9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudD8uaW5wdXRUZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdCB8fCBpdGVtLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cIml0ZW0udmFsdWVcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkYXRhPy5hY3Rpb24gJiYgZGF0YT8uYWN0aW9uPy5kaXNwbGF5XCIgY2xhc3M9XCJidXR0b24tZGlzcGxheSBtdC0yMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGRhdGE/LmFjdGlvbj8uYnV0dG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYnV0dG9uLWVsZW1lbnQgW2J1dHRvbkNvbnRlbnRdPVwiYnV0dG9uLmNvbnRlbnRcIiBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uLnN0eWxlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25JZF09XCJidXR0b24uaWRcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCIgW2VkaXRdPVwiZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JhY2tncm91bmRJbmZvXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZFwiPjwvYXBwLWJ1dHRvbi1lbGVtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIHctZnVsbCBnYXAtMiBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciB3LWZ1bGwgZ2FwLTIganVzdGlmeS1jZW50ZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXIgZmxleCBvdmVyZmxvdy1oaWRkZW4gdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVyLXRyYWNrIHctZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvbiAmJiAhY29udGVudD8uZGlzcGxheT8uc2hvd1RleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ2FwLTAnOiBzdHlsZXM/LnJlbW92ZUdhcHN9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlc1wiIFtzaW1wb0Nvcm5lcl09XCJzdHlsZXM/LmNvcm5lcnNcIiBbaWRdPVwiZGF0YT8uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2xvZ290eXBlLWJveGVkJzogc3R5bGVzPy5sb2dvVHlwZSA9PT0gJ0JveGVkJyAsICdsb2dvdHlwZS1iYXNpYycgOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQmFzaWMnLCAnanVzdGlmeS1jb250ZW50LXN0YXJ0Jzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnbGVmdCcsICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnY2VudGVyJywgJ2p1c3RpZnktY29udGVudC1lbmQnOiBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdyaWdodCd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudD8ubGlzdEl0ZW0/LmRhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiaXRlbT8uaWNvbj8udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0/Lmljb24/LnVybD8uaW5jbHVkZXMoJy5wbmcnKSAmJiAhaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKHN0eWxlcz8uY29udGFpbmVySGVpZ2h0ID8/IDEpIC8gKGlzTW9iaWxlID8gMiA6IDEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCIoc3R5bGVzPy5jb250YWluZXJXaWR0aCA/PyAxKSAvIChpc01vYmlsZSA/IDIgOiAxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0/Lmljb24/LmFsdFRleHRcIiBbYXBwSW1hZ2VFZGl0b3JdPVwiZWRpdCB8fCBmYWxzZVwiIFtpY29uRGF0YV09XCJpdGVtPy5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbY2xhc3NdPVwiZGF0YT8uaWQrKGl0ZW0/Lmljb24/LmlkIHx8ICcnKVwiIFtzaG93SWNvbl09XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihpdGVtPy5pY29uPy51cmw/LmluY2x1ZGVzKCcucG5nJykgfHwgaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKHN0eWxlcz8uY29udGFpbmVySGVpZ2h0ID8/IDEpIC8gKGlzTW9iaWxlID8gMiA6IDEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiKHN0eWxlcz8uY29udGFpbmVyV2lkdGggPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibG9nby1pbWcgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJpdGVtPy5pY29uPy5zaG93QmFja2dyb3VuZCA/IGl0ZW0/Lmljb24/LmJhY2tncm91bmRDb2xvciA6ICd0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBJbWFnZUVkaXRvcl09XCJlZGl0IHx8IGZhbHNlXCIgW2ljb25EYXRhXT1cIml0ZW0/Lmljb25cIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0ljb25dPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0ljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiIFtpY29uSWRdPVwiZGF0YT8uaWQgKyAoaXRlbT8uaWNvbj8uaWQgPz8gJycgKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW1wb0ljb25EaXJlY3RpdmVdPVwiaXRlbT8uaWNvblwiIGNsYXNzPVwidy03NSBoLTEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53LTEwMF09XCIhaXRlbT8uaWNvbj8uc2hvd0JhY2tncm91bmRcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci10cmFjayB3LWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJY29uICYmIGNvbnRlbnQ/LmRpc3BsYXk/LnNob3dUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2dhcC0wJzogc3R5bGVzPy5yZW1vdmVHYXBzfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXNcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGVzPy5jb3JuZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0ZXh0dHlwZS1ib3hlZCc6IHN0eWxlcz8ubG9nb1R5cGUgPT09ICdCb3hlZCcgLCAnbG9nb3R5cGUtYmFzaWMnIDogc3R5bGVzPy5sb2dvVHlwZSA9PT0gJ0Jhc2ljJywgJ2p1c3RpZnktY29udGVudC1zdGFydCc6IHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2xlZnQnLCAnanVzdGlmeS1jb250ZW50LWNlbnRlcic6IHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2NlbnRlcicsICdqdXN0aWZ5LWNvbnRlbnQtZW5kJzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAncmlnaHQnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJpdGVtLmlucHV0VGV4dFswXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXItdHJhY2sgdy1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJY29uICYmIGNvbnRlbnQ/LmRpc3BsYXk/LnNob3dUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2dhcC0wJzogc3R5bGVzPy5yZW1vdmVHYXBzfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIFtzaW1wb0Nvcm5lcl09XCJzdHlsZXM/LmNvcm5lcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5saXN0SXRlbT8uZGF0YVwiIFtpZF09XCJkYXRhPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndGV4dHR5cGUtYm94ZWQnOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQm94ZWQnICwgJ2xvZ290eXBlLWJhc2ljJyA6IHN0eWxlcz8ubG9nb1R5cGUgPT09ICdCYXNpYycsICdmbGV4LXJvdycgOiBzdHlsZXM/LmxvZ29Qb3NpdGlvbiA9PSAnbGVmdCcgLCAnZmxleC1yb3ctcmV2ZXJzZScgOiBzdHlsZXM/LmxvZ29Qb3NpdGlvbiA9PSAncmlnaHQnLCAnZmxleC1jb2x1bW4nIDogc3R5bGVzPy5sb2dvUG9zaXRpb24gPT0gJ3RvcCcgLCAnZmxleC1jb2x1bW4tcmV2ZXJzZScgOiBzdHlsZXM/LmxvZ29Qb3NpdGlvbiA9PSAnYm90dG9tJ31cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBsb2FkaW5nPVwibGF6eVwiIFtzcmNdPVwiaXRlbT8uaWNvbj8udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0/Lmljb24/LnVybD8uaW5jbHVkZXMoJy5wbmcnKSAmJiAhaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKHN0eWxlcz8uY29udGFpbmVySGVpZ2h0ID8/IDEpIC8gKGlzTW9iaWxlID8gMiA6IDEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCIoc3R5bGVzPy5jb250YWluZXJXaWR0aCA/PyAxKSAvIChpc01vYmlsZSA/IDIgOiAxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0/Lmljb24/LmFsdFRleHRcIiBbYXBwSW1hZ2VFZGl0b3JdPVwiZWRpdCB8fCBmYWxzZVwiIFtpY29uRGF0YV09XCJpdGVtPy5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbY2xhc3NdPVwiZGF0YT8uaWQrKGl0ZW0/Lmljb24/LmlkIHx8ICcnKVwiIFtzaG93SWNvbl09XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihpdGVtPy5pY29uPy51cmw/LmluY2x1ZGVzKCcucG5nJykgfHwgaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiKHN0eWxlcz8uY29udGFpbmVySGVpZ2h0ID8/IDEpIC8gKGlzTW9iaWxlID8gMiA6IDEpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiKHN0eWxlcz8uY29udGFpbmVyV2lkdGggPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibG9nby1pbWcgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJpdGVtPy5pY29uPy5zaG93QmFja2dyb3VuZCA/IGl0ZW0/Lmljb24/LmJhY2tncm91bmRDb2xvciA6ICd0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBJbWFnZUVkaXRvcl09XCJlZGl0IHx8IGZhbHNlXCIgW2ljb25EYXRhXT1cIml0ZW0/Lmljb25cIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0ljb25dPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0ljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiIFtpY29uSWRdPVwiZGF0YT8uaWQgKyAoaXRlbT8uaWNvbj8uaWQgPz8gJycgKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW1wb0ljb25EaXJlY3RpdmVdPVwiaXRlbT8uaWNvblwiIGNsYXNzPVwidy03NSBoLTEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy53LTEwMF09XCIhaXRlbT8uaWNvbj8uc2hvd0JhY2tncm91bmRcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIGNsYXNzPVwibXQtMlwiIFsodmFsdWUpXT1cIml0ZW0uaW5wdXRUZXh0WzBdLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHlsZXM/LmRldmlkZXI/LmRpc3BsYXlcIj5cbiAgICAgICAgICAgIDxzaW1wby1zdmctZGl2aWRlciBbZGl2aWRlclR5cGVdPVwic3R5bGVzPy5kZXZpZGVyPy5kZXZpZGVyVHlwZVwiXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cIm5leHRDb21wb25lbnRDb2xvcj8uY29sb3JcIj48L3NpbXBvLXN2Zy1kaXZpZGVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGVkaXR9XCIgKm5nSWY9XCJzaG93RWRpdG9yc1wiPlxuICAgICAgICAgICAgPHNpbXBvLWhvdmVyLWVsZW1lbnRzIFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIiBbZWRpdE9wdGlvbnNdPVwiZWRpdFwiPjwvc2ltcG8taG92ZXItZWxlbWVudHM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxuICAgICAgICAgICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwic3R5bGVzPy5zaG93Q2FzZVR5cGU9PT0nQ2Fyb3VzYWwnXCI+XG4gICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBzaW1wb0hvdmVyIChob3ZlcmluZyk9XCJzaG93RWRpdFRhYnMoJGV2ZW50KVwiIGNsYXNzPVwidG90YWwtY29udGFpbmVyXCI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwXCIgW2lkXT1cImRhdGE/LmlkXCIgI21haW5Db250YWluZXIgW3NpbXBvT3ZlcmxheV09XCJzdHlsZXM/LmJhY2tncm91bmRcIlxuICAgICAgICAgICAgW3NpbXBvQm9yZGVyXT1cInN0eWxlcz8uYm9yZGVyXCIgW3NwYWNpbmdIb3Jpem9udGFsXT1cInN0eWxlc0xheW91dFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJzdHlsZXM/LmZ1bGxXaWR0aCA9PT0gdHJ1ZSA/ICdweC0wJyA6ICcnXCIgW3NpbXBvQmFja2dyb3VuZF09XCJzdHlsZXM/LmJhY2tncm91bmRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbHVtbiByb3cgZy0yXCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQW5pbWF0aW9uXT1cInN0eWxlcz8uYW5pbWF0aW9uXCJcbiAgICAgICAgICAgICAgICBbc2ltcG9MYXlvdXRdPVwic3R5bGVzPy5sYXlvdXRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbnNlYyBjb250ZW50LXNpZGVcIiBbaWRdPVwiZGF0YT8uaWRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FsaWduLWl0ZW1zLXN0cmV0Y2gnOnN0eWxlcz8ubGF5b3V0Py5hbGlnbj09PSdsZWZ0JyB8fCBzdHlsZXM/LmxheW91dD8uYWxpZ249PT0nY2VudGVyJyB8fCBzdHlsZXM/LmxheW91dD8uYWxpZ249PT0ncmlnaHQnfVwiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudD8uaW5wdXRUZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdCB8fCBpdGVtLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cIml0ZW0udmFsdWVcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkYXRhPy5hY3Rpb24gJiYgZGF0YT8uYWN0aW9uPy5kaXNwbGF5XCIgY2xhc3M9XCJnYXAtMiBkLW1kLWZsZXggbXQtMTVcIiBbbmdDbGFzc109XCJbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2xlZnQnID8gJ2p1c3RpZnktY29udGVudC1tZC1zdGFydCcgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnY2VudGVyJyA/ICdqdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyJyA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdyaWdodCcgPyAnanVzdGlmeS1jb250ZW50LW1kLWVuZCcgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgIF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBkYXRhPy5hY3Rpb24/LmJ1dHRvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ1dHRvbi1lbGVtZW50IFtidXR0b25Db250ZW50XT1cImJ1dHRvbi5jb250ZW50XCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbi5zdHlsZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uSWRdPVwiYnV0dG9uLmlkXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtlZGl0XT1cImVkaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiYWNrZ3JvdW5kSW5mb109XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmRcIj48L2FwcC1idXR0b24tZWxlbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAnZnVsbHdpZHRoIGZsZXgtMSBpbmxpbmUtZWRpdCAgJzogc3R5bGVzPy5mdWxsV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgJ25vZnVsbHdpZHRoIGZsZXgtMSBpbmxpbmUtZWRpdCAnOiAhc3R5bGVzPy5mdWxsV2lkdGhcbiAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hc2tpbmdcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXIgYW5pbWF0aW9uIFwiIFtzdHlsZS5hbmltYXRpb25EdXJhdGlvbl09XCJhbmltYXRpb25EdXJhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5hbmltYXRpb25EaXJlY3Rpb25dPVwiYW5pbWF0aW9uRGlyZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXItdHJhY2syXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0ljb24gJiYgIWNvbnRlbnQ/LmRpc3BsYXk/LnNob3dUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbG9nb3R5cGUtYm94ZWQnOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQm94ZWQnICwgJ2xvZ290eXBlLWJhc2ljJyA6IHN0eWxlcz8ubG9nb1R5cGUgPT09ICdCYXNpYycsICdnYXAtMCc6IHN0eWxlcz8ucmVtb3ZlR2Fwc31cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXMyXCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlcz8uY29ybmVyc1wiIFtpZF09XCJkYXRhPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydsb2dvdHlwZS1ib3hlZCc6IHN0eWxlcz8ubG9nb1R5cGUgPT09ICdCb3hlZCcgLCAnbG9nb3R5cGUtYmFzaWMnIDogc3R5bGVzPy5sb2dvVHlwZSA9PT0gJ0Jhc2ljJywgJ2p1c3RpZnktY29udGVudC1zdGFydCc6IHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2xlZnQnLCAnanVzdGlmeS1jb250ZW50LWNlbnRlcic6IHN0eWxlcz8ubGF5b3V0Py5hbGlnbiA9PT0gJ2NlbnRlcicsICdqdXN0aWZ5LWNvbnRlbnQtZW5kJzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAncmlnaHQnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudD8ubGlzdEl0ZW0/LmRhdGE7bGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIml0ZW0/Lmljb24/LnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0/Lmljb24/LnVybD8uaW5jbHVkZXMoJy5wbmcnKSAmJiAhaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCIoc3R5bGVzPy5jb250YWluZXJIZWlnaHQgPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiKHN0eWxlcz8uY29udGFpbmVyV2lkdGggPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0/Lmljb24/LmFsdFRleHRcIiBbYXBwSW1hZ2VFZGl0b3JdPVwiZWRpdCB8fCBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpdGVtPy5pY29uXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJkYXRhPy5pZCsoaXRlbT8uaWNvbj8uaWQgfHwgJycpXCIgW3Nob3dJY29uXT1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihpdGVtPy5pY29uPy51cmw/LmluY2x1ZGVzKCcucG5nJykgfHwgaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihzdHlsZXM/LmNvbnRhaW5lckhlaWdodCA/PyAxKSAvIChpc01vYmlsZSA/IDIgOiAxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiKHN0eWxlcz8uY29udGFpbmVyV2lkdGggPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsb2dvLWltZyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiaXRlbT8uaWNvbj8uc2hvd0JhY2tncm91bmQgPyBpdGVtPy5pY29uPy5iYWNrZ3JvdW5kQ29sb3IgOiAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBJbWFnZUVkaXRvcl09XCJlZGl0IHx8IGZhbHNlXCIgW2ljb25EYXRhXT1cIml0ZW0/Lmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtzaG93SWNvbl09XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBbaWNvbklkXT1cImRhdGE/LmlkICsgKGl0ZW0/Lmljb24/LmlkID8/ICcnIClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW1wb0ljb25EaXJlY3RpdmVdPVwiaXRlbT8uaWNvblwiIGNsYXNzPVwidy03NSBoLTEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnctMTAwXT1cIiFpdGVtPy5pY29uPy5zaG93QmFja2dyb3VuZFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci10cmFjazJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5Py5zaG93VGV4dCAmJiAhY29udGVudD8uZGlzcGxheT8uc2hvd0ljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydnYXAtMCc6IHN0eWxlcz8ucmVtb3ZlR2Fwc31cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbGlkZXNcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGVzPy5jb3JuZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RleHR0eXBlLWJveGVkJzogc3R5bGVzPy5sb2dvVHlwZSA9PT0gJ0JveGVkJyAsICdsb2dvdHlwZS1iYXNpYycgOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQmFzaWMnLCAnanVzdGlmeS1jb250ZW50LXN0YXJ0Jzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnbGVmdCcsICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnY2VudGVyJywgJ2p1c3RpZnktY29udGVudC1lbmQnOiBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdyaWdodCd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5saXN0SXRlbT8uZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJpdGVtLmlucHV0VGV4dFswXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlci10cmFjazIgZC1mbGV4IHctZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJY29uICYmIGNvbnRlbnQ/LmRpc3BsYXk/LnNob3dUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ2FwLTAnOiBzdHlsZXM/LnJlbW92ZUdhcHN9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xpZGVzIGQtZmxleFwiIFtzaW1wb0Nvcm5lcl09XCJzdHlsZXM/LmNvcm5lcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhXCIgW2lkXT1cImRhdGE/LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RleHR0eXBlLWJveGVkJzogc3R5bGVzPy5sb2dvVHlwZSA9PT0gJ0JveGVkJyAsICdsb2dvdHlwZS1iYXNpYycgOiBzdHlsZXM/LmxvZ29UeXBlID09PSAnQmFzaWMnLCAgJ2FsaWduLWl0ZW1zLXN0YXJ0Jzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAnbGVmdCcsICdhbGlnbi1pdGVtcy1jZW50ZXInOiBzdHlsZXM/LmxheW91dD8uYWxpZ24gPT09ICdjZW50ZXInLCAnYWxpZ24taXRlbXMtZW5kJzogc3R5bGVzPy5sYXlvdXQ/LmFsaWduID09PSAncmlnaHQnICwgJ2ZsZXgtcm93JyA6IHN0eWxlcz8ubG9nb1Bvc2l0aW9uID09ICdsZWZ0JyAsICdmbGV4LXJvdy1yZXZlcnNlJyA6IHN0eWxlcz8ubG9nb1Bvc2l0aW9uID09ICdyaWdodCcsICdmbGV4LWNvbHVtbicgOiBzdHlsZXM/LmxvZ29Qb3NpdGlvbiA9PSAndG9wJyAsICdmbGV4LWNvbHVtbi1yZXZlcnNlJyA6IHN0eWxlcz8ubG9nb1Bvc2l0aW9uID09ICdib3R0b20nfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIml0ZW0/Lmljb24/LnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0/Lmljb24/LnVybD8uaW5jbHVkZXMoJy5wbmcnKSAmJiAhaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCIoc3R5bGVzPy5jb250YWluZXJIZWlnaHQgPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiKHN0eWxlcz8uY29udGFpbmVyV2lkdGggPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0/Lmljb24/LmFsdFRleHRcIiBbYXBwSW1hZ2VFZGl0b3JdPVwiZWRpdCB8fCBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpdGVtPy5pY29uXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJkYXRhPy5pZCsoaXRlbT8uaWNvbj8uaWQgfHwgJycpXCIgW3Nob3dJY29uXT1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihpdGVtPy5pY29uPy51cmw/LmluY2x1ZGVzKCcucG5nJykgfHwgaXRlbT8uaWNvbj8udXJsPy5pbmNsdWRlcygnLnN2ZycpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJkYXRhPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIihzdHlsZXM/LmNvbnRhaW5lckhlaWdodCA/PyAxKSAvIChpc01vYmlsZSA/IDIgOiAxKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiKHN0eWxlcz8uY29udGFpbmVyV2lkdGggPz8gMSkgLyAoaXNNb2JpbGUgPyAyIDogMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsb2dvLWltZyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiaXRlbT8uaWNvbj8uc2hvd0JhY2tncm91bmQgPyBpdGVtPy5pY29uPy5iYWNrZ3JvdW5kQ29sb3IgOiAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBJbWFnZUVkaXRvcl09XCJlZGl0IHx8IGZhbHNlXCIgW2ljb25EYXRhXT1cIml0ZW0/Lmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtzaG93SWNvbl09XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiZGF0YT8uaWRcIiBbaWNvbklkXT1cImRhdGE/LmlkICsgKGl0ZW0/Lmljb24/LmlkID8/ICcnIClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW1wb0ljb25EaXJlY3RpdmVdPVwiaXRlbT8uaWNvblwiIGNsYXNzPVwidy03NSBoLTEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnctMTAwXT1cIiFpdGVtPy5pY29uPy5zaG93QmFja2dyb3VuZFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgY2xhc3M9XCJtdC0yXCIgWyh2YWx1ZSldPVwiaXRlbS5pbnB1dFRleHRbMF0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3R5bGVzPy5kZXZpZGVyPy5kaXNwbGF5XCI+XG4gICAgICAgICAgICA8c2ltcG8tc3ZnLWRpdmlkZXIgW2RpdmlkZXJUeXBlXT1cInN0eWxlcz8uZGV2aWRlcj8uZGV2aWRlclR5cGVcIlxuICAgICAgICAgICAgICAgIFtjb2xvcl09XCJuZXh0Q29tcG9uZW50Q29sb3I/LmNvbG9yXCI+PC9zaW1wby1zdmctZGl2aWRlcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cbiAgICAgICAgICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dEZWxldGVcIiBbbmdDbGFzc109XCJ7J2hvdmVyX2VmZmVjdCc6IGRlbGV0ZX1cIj5cbiAgICAgICAgICAgIDxzaW1wby1kZWxldGUtaG92ZXItZWxlbWVudCBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCI+PC9zaW1wby1kZWxldGUtaG92ZXItZWxlbWVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=