simpo-component-library 3.6.929 → 3.6.931

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 (134) hide show
  1. package/esm2022/lib/directive/button-editor.directive.mjs +1 -1
  2. package/esm2022/lib/directive/image-directive.directive.mjs +1 -1
  3. package/esm2022/lib/directive/image-editor.directive.mjs +1 -1
  4. package/esm2022/lib/directive/image-position.directive.mjs +1 -1
  5. package/esm2022/lib/directive/merge-header.directive.mjs +1 -1
  6. package/esm2022/lib/directive/spacing-around.directive.mjs +1 -1
  7. package/esm2022/lib/directive/video-directive.directive.mjs +1 -1
  8. package/esm2022/lib/ecommerce/sections/address/address.component.mjs +3 -3
  9. package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +17 -13
  10. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +22 -14
  11. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.model.mjs +1 -1
  12. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.component.mjs +3 -3
  13. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.model.mjs +1 -1
  14. package/esm2022/lib/ecommerce/sections/cart/cart.modal.mjs +1 -1
  15. package/esm2022/lib/ecommerce/sections/categories-with-image-background-columns/categories-with-image-background-columns.component.mjs +3 -3
  16. package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +3 -3
  17. package/esm2022/lib/ecommerce/sections/category-product/category-product.model.mjs +1 -1
  18. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +1 -1
  19. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.modal.mjs +1 -1
  20. package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +1 -1
  21. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +2 -2
  22. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.modal.mjs +1 -1
  23. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +10 -7
  24. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.modal.mjs +1 -1
  25. package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +16 -15
  26. package/esm2022/lib/ecommerce/sections/refer-earn/refer-earn.component.mjs +3 -3
  27. package/esm2022/lib/ecommerce/sections/refer-earn/refer-earn.modal.mjs +1 -1
  28. package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +1 -1
  29. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.mjs +3 -3
  30. package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +3 -3
  31. package/esm2022/lib/ecommerce/styles/OrderedItems.modal.mjs +1 -1
  32. package/esm2022/lib/elements/add-section/add-section.component.mjs +3 -3
  33. package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +1 -1
  34. package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +1 -1
  35. package/esm2022/lib/elements/editor-service.service.mjs +1 -1
  36. package/esm2022/lib/elements/link-editor/link-editor.component.mjs +3 -3
  37. package/esm2022/lib/elements/media-selector/media-selector.component.mjs +3 -3
  38. package/esm2022/lib/elements/pricing-s1/pricing-s1.component.mjs +3 -3
  39. package/esm2022/lib/elements/schedule-video-call/schedule-video-call.component.mjs +3 -3
  40. package/esm2022/lib/elements/text-editor/text-editor.component.mjs +9 -9
  41. package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +1 -1
  42. package/esm2022/lib/pipes/gender.pipe.mjs +1 -1
  43. package/esm2022/lib/sections/BaseSection.mjs +1 -1
  44. package/esm2022/lib/sections/appointment-form/appointment-booking/appointment-booking/appointment-booking.component.mjs +3 -3
  45. package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +3 -3
  46. package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +3 -3
  47. package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +3 -3
  48. package/esm2022/lib/sections/blog-list/blog-list.component.mjs +3 -3
  49. package/esm2022/lib/sections/brand-story-section/brand-story-section.component.mjs +3 -3
  50. package/esm2022/lib/sections/brand-story-section/brand-story-section.modal.mjs +1 -1
  51. package/esm2022/lib/sections/button-grid-section/button-grid-section.component.mjs +3 -3
  52. package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +3 -3
  53. package/esm2022/lib/sections/condensed-and-gradient/condensed-and-gradient.component.mjs +3 -3
  54. package/esm2022/lib/sections/countdown-banner/countdown-banner.component.model.mjs +1 -1
  55. package/esm2022/lib/sections/faq-columns-cards/faq-columns-cards.component.mjs +3 -3
  56. package/esm2022/lib/sections/faq-columns-cards/faq-columns-cards.modal.mjs +1 -1
  57. package/esm2022/lib/sections/faq-section/faq-section.component.mjs +3 -3
  58. package/esm2022/lib/sections/feature-experience-section/feature-experience-section.component.mjs +3 -3
  59. package/esm2022/lib/sections/feature-experience-section/feature-experience-section.modal.mjs +1 -1
  60. package/esm2022/lib/sections/features-section/features-section.component.mjs +3 -3
  61. package/esm2022/lib/sections/footer/footer.modal.mjs +1 -1
  62. package/esm2022/lib/sections/four-features-centered-image/four-features-centered-image.component.mjs +3 -3
  63. package/esm2022/lib/sections/four-features-centered-image/four-features-centered-image.modal.mjs +1 -1
  64. package/esm2022/lib/sections/header-text/header-text.component.mjs +3 -3
  65. package/esm2022/lib/sections/image-background/image-background/image-background.component.mjs +3 -3
  66. package/esm2022/lib/sections/image-background/image-background/image-background.component.model.mjs +1 -1
  67. package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +3 -3
  68. package/esm2022/lib/sections/image-grid-hotspot/image-grid-hotspot.component.mjs +3 -3
  69. package/esm2022/lib/sections/image-grid-hotspot/image-grid-hotspot.model.mjs +1 -1
  70. package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +3 -3
  71. package/esm2022/lib/sections/image-grid-section/image-grid-section.model.mjs +1 -1
  72. package/esm2022/lib/sections/image-section/image-section.component.mjs +3 -3
  73. package/esm2022/lib/sections/location-section/location-section.component.mjs +3 -3
  74. package/esm2022/lib/sections/new-services/new-services.component.mjs +3 -3
  75. package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +3 -3
  76. package/esm2022/lib/sections/news-letter-component/news-letter-component.component.mjs +3 -3
  77. package/esm2022/lib/sections/overlapping-image/overlapping-image.component.mjs +3 -3
  78. package/esm2022/lib/sections/overlapping-image/overlapping-image.component.modal.mjs +1 -1
  79. package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +3 -3
  80. package/esm2022/lib/sections/process-modern/process-modern.component.mjs +3 -3
  81. package/esm2022/lib/sections/process-section/process-section.component.mjs +3 -3
  82. package/esm2022/lib/sections/product-info-section/product-info-section.component.mjs +3 -3
  83. package/esm2022/lib/sections/product-info-section/product-info-section.component.modal.mjs +1 -1
  84. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +3 -3
  85. package/esm2022/lib/sections/scheme-detail/scheme-detail.component.mjs +3 -3
  86. package/esm2022/lib/sections/service-section/service-section.component.mjs +3 -3
  87. package/esm2022/lib/sections/service-section/service-section.model.mjs +1 -1
  88. package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +3 -3
  89. package/esm2022/lib/sections/team-member-section/team-member-section.model.mjs +1 -1
  90. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +3 -3
  91. package/esm2022/lib/sections/testimonial-masonry/testimonial-masonry.component.mjs +3 -3
  92. package/esm2022/lib/sections/testimonial-masonry/testimonial-masonry.model.mjs +1 -1
  93. package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +3 -3
  94. package/esm2022/lib/sections/testimonial-slider/testimonial-slider.component.mjs +3 -3
  95. package/esm2022/lib/sections/testimonial-slider/testimonial-slider.model.mjs +1 -1
  96. package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +3 -3
  97. package/esm2022/lib/sections/video-carousel-section/video-carousel-section.component.mjs +3 -3
  98. package/esm2022/lib/sections/video-carousel-section/video-carousel.model.mjs +1 -1
  99. package/esm2022/lib/sections/video-grid-section/video-grid-section.component.mjs +2 -2
  100. package/esm2022/lib/sections/video-grid-section/video-grid-section.model.mjs +1 -1
  101. package/esm2022/lib/sections/video-showcase/video-showcase.component.mjs +4 -4
  102. package/esm2022/lib/sections/view-blog/view-blog.component.mjs +3 -3
  103. package/esm2022/lib/services/analytics.service.mjs +54 -6
  104. package/esm2022/lib/services/cart.service.mjs +28 -35
  105. package/esm2022/lib/services/sanitizeHtml.mjs +1 -1
  106. package/esm2022/lib/services/storage.service.mjs +15 -1
  107. package/esm2022/lib/styles/gradient-extension.mjs +1 -1
  108. package/esm2022/lib/styles/style.model.mjs +1 -1
  109. package/esm2022/lib/styles/text-size.extension.mjs +1 -1
  110. package/esm2022/lib/styles/types.mjs +1 -1
  111. package/esm2022/public-api.mjs +1 -1
  112. package/fesm2022/simpo-component-library.mjs +432 -362
  113. package/fesm2022/simpo-component-library.mjs.map +1 -1
  114. package/lib/components/input-fields/input-fields.component.d.ts +1 -1
  115. package/lib/ecommerce/sections/authenticate-user/authenticate-user.component.d.ts +4 -2
  116. package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +5 -3
  117. package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +1 -1
  118. package/lib/ecommerce/sections/product-list/product-list.component.d.ts +3 -1
  119. package/lib/ecommerce/sections/schemes/schemes.component.d.ts +1 -1
  120. package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
  121. package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
  122. package/lib/sections/contact-us/contact-us.component.d.ts +1 -1
  123. package/lib/sections/faq-columns-cards/faq-columns-cards.component.d.ts +1 -1
  124. package/lib/sections/faq-section/faq-section.component.d.ts +1 -1
  125. package/lib/sections/image-section/image-section.component.d.ts +2 -2
  126. package/lib/sections/logo-showcase/logo-showcase.component.d.ts +2 -2
  127. package/lib/sections/new-testimonials/new-testimonials.component.d.ts +1 -1
  128. package/lib/sections/pricing-section/pricing-section.component.d.ts +2 -2
  129. package/lib/services/analytics.service.d.ts +13 -0
  130. package/lib/services/cart.service.d.ts +5 -7
  131. package/lib/services/storage.service.d.ts +6 -0
  132. package/package.json +1 -1
  133. package/simpo-component-library-3.6.931.tgz +0 -0
  134. package/simpo-component-library-3.6.929.tgz +0 -0
@@ -187,11 +187,11 @@ export class MediaSelectorComponent {
187
187
  });
188
188
  }
189
189
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MediaSelectorComponent, deps: [{ token: i1.ImageUplaodService }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i3.MatSnackBar }, { token: i4.ElementServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
190
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MediaSelectorComponent, isStandalone: true, selector: "simpo-media-selector", viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: "<section class=\"h-100 d-flex flex-column main_section\">\r\n <div class=\"header d-flex justify-content-between align-items-center\">\r\n <div class=\"heading\">Upload Image</div>\r\n <mat-icon (click)=\"_dialogRef.close()\"\r\n class=\"d-flex align-items-center justify-content-center f-18 cp\">close</mat-icon>\r\n </div>\r\n <div class=\"body_container d-flex flex-column\">\r\n <div class=\"tabs d-flex align-items-center justify-content-between\">\r\n <div *ngFor=\"let tab of tabs\" [ngClass]=\"{'selectedTab': activeTab === tab}\" (click)=\"activeTab = tab\">{{tab}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"inner_part flex-1 h-100\">\r\n <ng-container *ngIf=\"activeTab === 'Unsplash'\">\r\n <ng-container *ngTemplateOutlet=\"unsplashImagesTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeTab === 'Upload'\">\r\n <ng-container *ngTemplateOutlet=\"uploadImageTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeTab === 'Library'\">\r\n <ng-container *ngTemplateOutlet=\"imageLibraryTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <div class=\"uploadButton d-flex\" *ngIf=\"this.selectedImage.size > 0\">\r\n <button (click)=\"uploadImage()\" [disabled]=\"buttonLoader\">\r\n <span *ngIf=\"buttonLoader\"><i class=\"fas fa-circle-notch fa-spin\"></i>&nbsp;Loading</span>\r\n <span *ngIf=\"!buttonLoader\">Upload Image</span></button>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<ng-template #unsplashImagesTemplate>\r\n\r\n <div class=\"input-container d-flex align-items-center\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/314661c1741844234442Vector%20%281%29.png\"\r\n alt=\"search-bar-icon\">\r\n <input type=\"text\" placeholder=\"Search images\" [formControl]=\"searchControl\">\r\n </div>\r\n <cdk-virtual-scroll-viewport [itemSize]=\"imageSize\" [minBufferPx]=\"800\" [maxBufferPx]=\"1600\" class=\"scroll-container\">\r\n <div class=\"row image-container\">\r\n <div class=\"col-md-3 col-6\" *cdkVirtualFor=\"let image of unsplashImages\">\r\n <img [lazyLoad]=\"image.urls.thumb\" [errorImage]=\"'assets/error.jpg'\" (click)=\"selectUnsplashImage(image)\"\r\n [ngClass]=\"{'selectedImage': selectedImage.has(image.id)}\" alt=\"Image\" class=\"cp\" />\r\n </div>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n\r\n <p *ngIf=\"isLoading\">Loading more results...</p>\r\n\r\n</ng-template>\r\n\r\n<ng-template #uploadImageTemplate>\r\n <div>\r\n <div class=\"image-upload-container\">\r\n <div class=\"upload-img-container d-flex align-items-center justify-content-center\">\r\n <img lazy\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/547500c1744698830343upload-one%20%281%29.png\"\r\n alt=\"upload-image\" class=\"upload-img\">\r\n </div>\r\n <div class=\"text-container text-center\">\r\n <div class=\"top-text\">Choose a file or drag and drop it here</div>\r\n <div class=\"middle-text\">JPEG, PNG formats up to 50MB</div>\r\n <div class=\"upload-btn d-flex align-items-center justify-content-center\">\r\n <div class=\"uploads cp\" (click)=\"fileInput.click()\">\r\n Upload\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <input type=\"file\" style=\"display: none\" (change)=\"uploadImageFromSystem($event)\" [multiple]=\"multiple\"\r\n accept=\"image/png, image/jpeg, image/jpg, image/gif , video/mp4\" #fileInput />\r\n\r\n <div class=\"row image-container mt-3 h-30-overflow\">\r\n <ng-container *ngFor=\"let image of selectedImage | keyvalue\">\r\n <div class=\"col-md-4 systemImage\" *ngIf=\"image.value.file\">\r\n <img [src]=\"image.value.assets[0].url\" alt=\"Image\"\r\n *ngIf=\"!image.value.assets[0].url?.includes('data:video')\" />\r\n <video [src]=\"image.value.assets[0].url\" class=\"w-100 h-100\"\r\n *ngIf=\"image.value.assets[0].url?.includes('data:video')\" muted loop></video>\r\n <mat-icon (click)=\"deleteSystemImage(image.key)\">delete</mat-icon>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #imageLibraryTemplate>\r\n <div class=\"row image-container mt-3 h-75-overflow\">\r\n <ng-container *ngIf=\"imageLibrary.length > 0; else emptyScreen\">\r\n <ng-container *ngFor=\"let image of imageLibrary\">\r\n <div class=\"col-md-4 col-6\">\r\n <img [src]=\"image.assets[0].url\" alt=\"Image\" (click)=\"selectFromImageLibrary(image)\"\r\n [ngClass]=\"{'selectedImage': selectedImage.has(image.uniqueId)}\"\r\n *ngIf=\"!image.assets[0].url?.includes('.mp4')\" />\r\n <video [src]=\"image.assets[0].url\" class=\"w-100 h-100\" (click)=\"selectFromImageLibrary(image)\"\r\n [ngClass]=\"{'selectedImage': selectedImage.has(image.uniqueId)}\"\r\n *ngIf=\"image.assets[0].url?.includes('.mp4')\" muted loop></video>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-template #emptyScreen>\r\n <div class=\"empty-container d-flex justify-content-center align-items-center w-100 flex-column\">\r\n <div class=\"empty-img-container d-flex justify-content-center align-items-center\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/935737c1743411798188image%20%287%29.png\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"empty-main-text\">\r\n Uh-oh!\r\n </div>\r\n <div class=\"sub-text-1\">\r\n No images here\r\n </div>\r\n <div class=\"sub-text-2\">\r\n I looked left, right\u2026 even turned around! Still nothing\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ng-template>", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}section{overflow:hidden}img{width:100%;height:150px}.scroll-container{height:90%;width:100%;overflow-y:scroll}.selectedImage{position:relative;border-radius:10px;overflow:hidden;border:3px solid hsl(227,52%,36%)}.uploadButton{position:absolute;bottom:0;padding:10px;background:#fff;width:100%;justify-content:end;box-shadow:0 0 4px #00000040}.uploadButton button{background:var(--primary-bg-color);color:#fff;font-weight:600;border:unset;font-size:15px!important;padding:8px;border-radius:8px;width:15%!important}.systemImage{position:relative}.systemImage mat-icon{display:none}.systemImage:hover mat-icon{display:inline;position:absolute;right:15px;top:5px;color:red;cursor:pointer}.f-18{font-size:18px}.header{padding:10px;box-shadow:0 0 4px #00000040;flex-shrink:0}.header .heading{font-size:15px;font-weight:600;line-height:24px}.header mat-icon{color:#2d264b}.tabs{padding:20px;flex-shrink:0}.tabs div{width:22%;cursor:pointer;text-align:center;padding:8px}.selectedTab{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-weight:500;color:#fff;box-shadow:0 0 4px #00000040;border-radius:10px;font-weight:600;position:relative}.selectedTab:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.input-container{padding:6px 10px;gap:10px;margin:0 20px 20px;box-shadow:0 0 4px #00000040;border-radius:13px}.input-container input{width:90%;border:unset;appearance:unset;outline:unset}.input-container img{width:20px;height:20px}.image-container{margin:0 20px 20px}.image-container div{margin-bottom:20px}.image-container div img{border-radius:13px}.image-upload-container{margin:0 40px;border-radius:17px;padding:15px;border:3px dashed rgba(44,44,44,.6)}.upload-img{width:12%;height:10%}.cp{cursor:pointer}.middle-text{font-size:15px;color:#686868}.top-text{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600}.uploads{width:20%;padding:8px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600;position:relative;margin-top:15px}.uploads:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.h-30-overflow{height:calc(30vh + -0px);overflow-y:scroll}.h-75-overflow{height:calc(75vh + -0px);overflow-y:scroll}.empty-main-text{font-weight:900;font-size:42px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent}.sub-text-1{font-size:19px;font-weight:600;color:#101010e5}.sub-text-2{font-size:16px;font-weight:600;color:#101010e5}@media screen and (max-width : 475px){.tabs div{width:30%!important}.uploadButton button{width:35%!important}.uploads{width:30%!important}.sub-text-2{text-align:center!important}img{height:150px}}.body_container{flex:1;height:100%}\n"], dependencies: [{ 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: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i5.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: LazyLoadImageModule }, { kind: "directive", type: i7.LazyLoadImageDirective, selector: "[lazyLoad]", inputs: ["lazyLoad", "defaultImage", "errorImage", "scrollTarget", "customObservable", "offset", "useSrcset", "decode", "debug"], outputs: ["onStateChange"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i8.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i8.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
190
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MediaSelectorComponent, isStandalone: true, selector: "simpo-media-selector", viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: "<section class=\"h-100 d-flex flex-column main_section\">\n <div class=\"header d-flex justify-content-between align-items-center\">\n <div class=\"heading\">Upload Image</div>\n <mat-icon (click)=\"_dialogRef.close()\"\n class=\"d-flex align-items-center justify-content-center f-18 cp\">close</mat-icon>\n </div>\n <div class=\"body_container d-flex flex-column\">\n <div class=\"tabs d-flex align-items-center justify-content-between\">\n <div *ngFor=\"let tab of tabs\" [ngClass]=\"{'selectedTab': activeTab === tab}\" (click)=\"activeTab = tab\">{{tab}}\n </div>\n </div>\n\n <div class=\"inner_part flex-1 h-100\">\n <ng-container *ngIf=\"activeTab === 'Unsplash'\">\n <ng-container *ngTemplateOutlet=\"unsplashImagesTemplate\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"activeTab === 'Upload'\">\n <ng-container *ngTemplateOutlet=\"uploadImageTemplate\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"activeTab === 'Library'\">\n <ng-container *ngTemplateOutlet=\"imageLibraryTemplate\"></ng-container>\n </ng-container>\n\n <div class=\"uploadButton d-flex\" *ngIf=\"this.selectedImage.size > 0\">\n <button (click)=\"uploadImage()\" [disabled]=\"buttonLoader\">\n <span *ngIf=\"buttonLoader\"><i class=\"fas fa-circle-notch fa-spin\"></i>&nbsp;Loading</span>\n <span *ngIf=\"!buttonLoader\">Upload Image</span></button>\n </div>\n </div>\n </div>\n</section>\n\n<ng-template #unsplashImagesTemplate>\n\n <div class=\"input-container d-flex align-items-center\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/314661c1741844234442Vector%20%281%29.png\"\n alt=\"search-bar-icon\">\n <input type=\"text\" placeholder=\"Search images\" [formControl]=\"searchControl\">\n </div>\n <cdk-virtual-scroll-viewport [itemSize]=\"imageSize\" [minBufferPx]=\"800\" [maxBufferPx]=\"1600\" class=\"scroll-container\">\n <div class=\"row image-container\">\n <div class=\"col-md-3 col-6\" *cdkVirtualFor=\"let image of unsplashImages\">\n <img [lazyLoad]=\"image.urls.thumb\" [errorImage]=\"'assets/error.jpg'\" (click)=\"selectUnsplashImage(image)\"\n [ngClass]=\"{'selectedImage': selectedImage.has(image.id)}\" alt=\"Image\" class=\"cp\" />\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n\n <p *ngIf=\"isLoading\">Loading more results...</p>\n\n</ng-template>\n\n<ng-template #uploadImageTemplate>\n <div>\n <div class=\"image-upload-container\">\n <div class=\"upload-img-container d-flex align-items-center justify-content-center\">\n <img lazy\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/547500c1744698830343upload-one%20%281%29.png\"\n alt=\"upload-image\" class=\"upload-img\">\n </div>\n <div class=\"text-container text-center\">\n <div class=\"top-text\">Choose a file or drag and drop it here</div>\n <div class=\"middle-text\">JPEG, PNG formats up to 50MB</div>\n <div class=\"upload-btn d-flex align-items-center justify-content-center\">\n <div class=\"uploads cp\" (click)=\"fileInput.click()\">\n Upload\n </div>\n </div>\n </div>\n </div>\n\n <input type=\"file\" style=\"display: none\" (change)=\"uploadImageFromSystem($event)\" [multiple]=\"multiple\"\n accept=\"image/png, image/jpeg, image/jpg, image/gif , video/mp4\" #fileInput />\n\n <div class=\"row image-container mt-3 h-30-overflow\">\n <ng-container *ngFor=\"let image of selectedImage | keyvalue\">\n <div class=\"col-md-4 systemImage\" *ngIf=\"image.value.file\">\n <img [src]=\"image.value.assets[0].url\" alt=\"Image\"\n *ngIf=\"!image.value.assets[0].url?.includes('data:video')\" />\n <video [src]=\"image.value.assets[0].url\" class=\"w-100 h-100\"\n *ngIf=\"image.value.assets[0].url?.includes('data:video')\" muted loop></video>\n <mat-icon (click)=\"deleteSystemImage(image.key)\">delete</mat-icon>\n </div>\n </ng-container>\n </div>\n\n </div>\n</ng-template>\n\n<ng-template #imageLibraryTemplate>\n <div class=\"row image-container mt-3 h-75-overflow\">\n <ng-container *ngIf=\"imageLibrary.length > 0; else emptyScreen\">\n <ng-container *ngFor=\"let image of imageLibrary\">\n <div class=\"col-md-4 col-6\">\n <img [src]=\"image.assets[0].url\" alt=\"Image\" (click)=\"selectFromImageLibrary(image)\"\n [ngClass]=\"{'selectedImage': selectedImage.has(image.uniqueId)}\"\n *ngIf=\"!image.assets[0].url?.includes('.mp4')\" />\n <video [src]=\"image.assets[0].url\" class=\"w-100 h-100\" (click)=\"selectFromImageLibrary(image)\"\n [ngClass]=\"{'selectedImage': selectedImage.has(image.uniqueId)}\"\n *ngIf=\"image.assets[0].url?.includes('.mp4')\" muted loop></video>\n </div>\n </ng-container>\n </ng-container>\n </div>\n <ng-template #emptyScreen>\n <div class=\"empty-container d-flex justify-content-center align-items-center w-100 flex-column\">\n <div class=\"empty-img-container d-flex justify-content-center align-items-center\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/935737c1743411798188image%20%287%29.png\"\n alt=\"\">\n </div>\n <div class=\"empty-main-text\">\n Uh-oh!\n </div>\n <div class=\"sub-text-1\">\n No images here\n </div>\n <div class=\"sub-text-2\">\n I looked left, right\u2026 even turned around! Still nothing\n </div>\n </div>\n </ng-template>\n</ng-template>", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}section{overflow:hidden}img{width:100%;height:150px}.scroll-container{height:90%;width:100%;overflow-y:scroll}.selectedImage{position:relative;border-radius:10px;overflow:hidden;border:3px solid hsl(227,52%,36%)}.uploadButton{position:absolute;bottom:0;padding:10px;background:#fff;width:100%;justify-content:end;box-shadow:0 0 4px #00000040}.uploadButton button{background:var(--primary-bg-color);color:#fff;font-weight:600;border:unset;font-size:15px!important;padding:8px;border-radius:8px;width:15%!important}.systemImage{position:relative}.systemImage mat-icon{display:none}.systemImage:hover mat-icon{display:inline;position:absolute;right:15px;top:5px;color:red;cursor:pointer}.f-18{font-size:18px}.header{padding:10px;box-shadow:0 0 4px #00000040;flex-shrink:0}.header .heading{font-size:15px;font-weight:600;line-height:24px}.header mat-icon{color:#2d264b}.tabs{padding:20px;flex-shrink:0}.tabs div{width:22%;cursor:pointer;text-align:center;padding:8px}.selectedTab{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-weight:500;color:#fff;box-shadow:0 0 4px #00000040;border-radius:10px;font-weight:600;position:relative}.selectedTab:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.input-container{padding:6px 10px;gap:10px;margin:0 20px 20px;box-shadow:0 0 4px #00000040;border-radius:13px}.input-container input{width:90%;border:unset;appearance:unset;outline:unset}.input-container img{width:20px;height:20px}.image-container{margin:0 20px 20px}.image-container div{margin-bottom:20px}.image-container div img{border-radius:13px}.image-upload-container{margin:0 40px;border-radius:17px;padding:15px;border:3px dashed rgba(44,44,44,.6)}.upload-img{width:12%;height:10%}.cp{cursor:pointer}.middle-text{font-size:15px;color:#686868}.top-text{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600}.uploads{width:20%;padding:8px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600;position:relative;margin-top:15px}.uploads:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.h-30-overflow{height:calc(30vh + -0px);overflow-y:scroll}.h-75-overflow{height:calc(75vh + -0px);overflow-y:scroll}.empty-main-text{font-weight:900;font-size:42px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent}.sub-text-1{font-size:19px;font-weight:600;color:#101010e5}.sub-text-2{font-size:16px;font-weight:600;color:#101010e5}@media screen and (max-width : 475px){.tabs div{width:30%!important}.uploadButton button{width:35%!important}.uploads{width:30%!important}.sub-text-2{text-align:center!important}img{height:150px}}.body_container{flex:1;height:100%}\n"], dependencies: [{ 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: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i5.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: LazyLoadImageModule }, { kind: "directive", type: i7.LazyLoadImageDirective, selector: "[lazyLoad]", inputs: ["lazyLoad", "defaultImage", "errorImage", "scrollTarget", "customObservable", "offset", "useSrcset", "decode", "debug"], outputs: ["onStateChange"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i8.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i8.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
191
191
  }
192
192
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MediaSelectorComponent, decorators: [{
193
193
  type: Component,
194
- args: [{ selector: 'simpo-media-selector', standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule, CdkVirtualScrollViewport, LazyLoadImageModule, ScrollingModule, MatIconModule], template: "<section class=\"h-100 d-flex flex-column main_section\">\r\n <div class=\"header d-flex justify-content-between align-items-center\">\r\n <div class=\"heading\">Upload Image</div>\r\n <mat-icon (click)=\"_dialogRef.close()\"\r\n class=\"d-flex align-items-center justify-content-center f-18 cp\">close</mat-icon>\r\n </div>\r\n <div class=\"body_container d-flex flex-column\">\r\n <div class=\"tabs d-flex align-items-center justify-content-between\">\r\n <div *ngFor=\"let tab of tabs\" [ngClass]=\"{'selectedTab': activeTab === tab}\" (click)=\"activeTab = tab\">{{tab}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"inner_part flex-1 h-100\">\r\n <ng-container *ngIf=\"activeTab === 'Unsplash'\">\r\n <ng-container *ngTemplateOutlet=\"unsplashImagesTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeTab === 'Upload'\">\r\n <ng-container *ngTemplateOutlet=\"uploadImageTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeTab === 'Library'\">\r\n <ng-container *ngTemplateOutlet=\"imageLibraryTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <div class=\"uploadButton d-flex\" *ngIf=\"this.selectedImage.size > 0\">\r\n <button (click)=\"uploadImage()\" [disabled]=\"buttonLoader\">\r\n <span *ngIf=\"buttonLoader\"><i class=\"fas fa-circle-notch fa-spin\"></i>&nbsp;Loading</span>\r\n <span *ngIf=\"!buttonLoader\">Upload Image</span></button>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<ng-template #unsplashImagesTemplate>\r\n\r\n <div class=\"input-container d-flex align-items-center\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/314661c1741844234442Vector%20%281%29.png\"\r\n alt=\"search-bar-icon\">\r\n <input type=\"text\" placeholder=\"Search images\" [formControl]=\"searchControl\">\r\n </div>\r\n <cdk-virtual-scroll-viewport [itemSize]=\"imageSize\" [minBufferPx]=\"800\" [maxBufferPx]=\"1600\" class=\"scroll-container\">\r\n <div class=\"row image-container\">\r\n <div class=\"col-md-3 col-6\" *cdkVirtualFor=\"let image of unsplashImages\">\r\n <img [lazyLoad]=\"image.urls.thumb\" [errorImage]=\"'assets/error.jpg'\" (click)=\"selectUnsplashImage(image)\"\r\n [ngClass]=\"{'selectedImage': selectedImage.has(image.id)}\" alt=\"Image\" class=\"cp\" />\r\n </div>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n\r\n <p *ngIf=\"isLoading\">Loading more results...</p>\r\n\r\n</ng-template>\r\n\r\n<ng-template #uploadImageTemplate>\r\n <div>\r\n <div class=\"image-upload-container\">\r\n <div class=\"upload-img-container d-flex align-items-center justify-content-center\">\r\n <img lazy\r\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/547500c1744698830343upload-one%20%281%29.png\"\r\n alt=\"upload-image\" class=\"upload-img\">\r\n </div>\r\n <div class=\"text-container text-center\">\r\n <div class=\"top-text\">Choose a file or drag and drop it here</div>\r\n <div class=\"middle-text\">JPEG, PNG formats up to 50MB</div>\r\n <div class=\"upload-btn d-flex align-items-center justify-content-center\">\r\n <div class=\"uploads cp\" (click)=\"fileInput.click()\">\r\n Upload\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <input type=\"file\" style=\"display: none\" (change)=\"uploadImageFromSystem($event)\" [multiple]=\"multiple\"\r\n accept=\"image/png, image/jpeg, image/jpg, image/gif , video/mp4\" #fileInput />\r\n\r\n <div class=\"row image-container mt-3 h-30-overflow\">\r\n <ng-container *ngFor=\"let image of selectedImage | keyvalue\">\r\n <div class=\"col-md-4 systemImage\" *ngIf=\"image.value.file\">\r\n <img [src]=\"image.value.assets[0].url\" alt=\"Image\"\r\n *ngIf=\"!image.value.assets[0].url?.includes('data:video')\" />\r\n <video [src]=\"image.value.assets[0].url\" class=\"w-100 h-100\"\r\n *ngIf=\"image.value.assets[0].url?.includes('data:video')\" muted loop></video>\r\n <mat-icon (click)=\"deleteSystemImage(image.key)\">delete</mat-icon>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #imageLibraryTemplate>\r\n <div class=\"row image-container mt-3 h-75-overflow\">\r\n <ng-container *ngIf=\"imageLibrary.length > 0; else emptyScreen\">\r\n <ng-container *ngFor=\"let image of imageLibrary\">\r\n <div class=\"col-md-4 col-6\">\r\n <img [src]=\"image.assets[0].url\" alt=\"Image\" (click)=\"selectFromImageLibrary(image)\"\r\n [ngClass]=\"{'selectedImage': selectedImage.has(image.uniqueId)}\"\r\n *ngIf=\"!image.assets[0].url?.includes('.mp4')\" />\r\n <video [src]=\"image.assets[0].url\" class=\"w-100 h-100\" (click)=\"selectFromImageLibrary(image)\"\r\n [ngClass]=\"{'selectedImage': selectedImage.has(image.uniqueId)}\"\r\n *ngIf=\"image.assets[0].url?.includes('.mp4')\" muted loop></video>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-template #emptyScreen>\r\n <div class=\"empty-container d-flex justify-content-center align-items-center w-100 flex-column\">\r\n <div class=\"empty-img-container d-flex justify-content-center align-items-center\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/935737c1743411798188image%20%287%29.png\"\r\n alt=\"\">\r\n </div>\r\n <div class=\"empty-main-text\">\r\n Uh-oh!\r\n </div>\r\n <div class=\"sub-text-1\">\r\n No images here\r\n </div>\r\n <div class=\"sub-text-2\">\r\n I looked left, right\u2026 even turned around! Still nothing\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ng-template>", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}section{overflow:hidden}img{width:100%;height:150px}.scroll-container{height:90%;width:100%;overflow-y:scroll}.selectedImage{position:relative;border-radius:10px;overflow:hidden;border:3px solid hsl(227,52%,36%)}.uploadButton{position:absolute;bottom:0;padding:10px;background:#fff;width:100%;justify-content:end;box-shadow:0 0 4px #00000040}.uploadButton button{background:var(--primary-bg-color);color:#fff;font-weight:600;border:unset;font-size:15px!important;padding:8px;border-radius:8px;width:15%!important}.systemImage{position:relative}.systemImage mat-icon{display:none}.systemImage:hover mat-icon{display:inline;position:absolute;right:15px;top:5px;color:red;cursor:pointer}.f-18{font-size:18px}.header{padding:10px;box-shadow:0 0 4px #00000040;flex-shrink:0}.header .heading{font-size:15px;font-weight:600;line-height:24px}.header mat-icon{color:#2d264b}.tabs{padding:20px;flex-shrink:0}.tabs div{width:22%;cursor:pointer;text-align:center;padding:8px}.selectedTab{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-weight:500;color:#fff;box-shadow:0 0 4px #00000040;border-radius:10px;font-weight:600;position:relative}.selectedTab:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.input-container{padding:6px 10px;gap:10px;margin:0 20px 20px;box-shadow:0 0 4px #00000040;border-radius:13px}.input-container input{width:90%;border:unset;appearance:unset;outline:unset}.input-container img{width:20px;height:20px}.image-container{margin:0 20px 20px}.image-container div{margin-bottom:20px}.image-container div img{border-radius:13px}.image-upload-container{margin:0 40px;border-radius:17px;padding:15px;border:3px dashed rgba(44,44,44,.6)}.upload-img{width:12%;height:10%}.cp{cursor:pointer}.middle-text{font-size:15px;color:#686868}.top-text{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600}.uploads{width:20%;padding:8px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600;position:relative;margin-top:15px}.uploads:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.h-30-overflow{height:calc(30vh + -0px);overflow-y:scroll}.h-75-overflow{height:calc(75vh + -0px);overflow-y:scroll}.empty-main-text{font-weight:900;font-size:42px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent}.sub-text-1{font-size:19px;font-weight:600;color:#101010e5}.sub-text-2{font-size:16px;font-weight:600;color:#101010e5}@media screen and (max-width : 475px){.tabs div{width:30%!important}.uploadButton button{width:35%!important}.uploads{width:30%!important}.sub-text-2{text-align:center!important}img{height:150px}}.body_container{flex:1;height:100%}\n"] }]
194
+ args: [{ selector: 'simpo-media-selector', standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule, CdkVirtualScrollViewport, LazyLoadImageModule, ScrollingModule, MatIconModule], template: "<section class=\"h-100 d-flex flex-column main_section\">\n <div class=\"header d-flex justify-content-between align-items-center\">\n <div class=\"heading\">Upload Image</div>\n <mat-icon (click)=\"_dialogRef.close()\"\n class=\"d-flex align-items-center justify-content-center f-18 cp\">close</mat-icon>\n </div>\n <div class=\"body_container d-flex flex-column\">\n <div class=\"tabs d-flex align-items-center justify-content-between\">\n <div *ngFor=\"let tab of tabs\" [ngClass]=\"{'selectedTab': activeTab === tab}\" (click)=\"activeTab = tab\">{{tab}}\n </div>\n </div>\n\n <div class=\"inner_part flex-1 h-100\">\n <ng-container *ngIf=\"activeTab === 'Unsplash'\">\n <ng-container *ngTemplateOutlet=\"unsplashImagesTemplate\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"activeTab === 'Upload'\">\n <ng-container *ngTemplateOutlet=\"uploadImageTemplate\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"activeTab === 'Library'\">\n <ng-container *ngTemplateOutlet=\"imageLibraryTemplate\"></ng-container>\n </ng-container>\n\n <div class=\"uploadButton d-flex\" *ngIf=\"this.selectedImage.size > 0\">\n <button (click)=\"uploadImage()\" [disabled]=\"buttonLoader\">\n <span *ngIf=\"buttonLoader\"><i class=\"fas fa-circle-notch fa-spin\"></i>&nbsp;Loading</span>\n <span *ngIf=\"!buttonLoader\">Upload Image</span></button>\n </div>\n </div>\n </div>\n</section>\n\n<ng-template #unsplashImagesTemplate>\n\n <div class=\"input-container d-flex align-items-center\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/314661c1741844234442Vector%20%281%29.png\"\n alt=\"search-bar-icon\">\n <input type=\"text\" placeholder=\"Search images\" [formControl]=\"searchControl\">\n </div>\n <cdk-virtual-scroll-viewport [itemSize]=\"imageSize\" [minBufferPx]=\"800\" [maxBufferPx]=\"1600\" class=\"scroll-container\">\n <div class=\"row image-container\">\n <div class=\"col-md-3 col-6\" *cdkVirtualFor=\"let image of unsplashImages\">\n <img [lazyLoad]=\"image.urls.thumb\" [errorImage]=\"'assets/error.jpg'\" (click)=\"selectUnsplashImage(image)\"\n [ngClass]=\"{'selectedImage': selectedImage.has(image.id)}\" alt=\"Image\" class=\"cp\" />\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n\n <p *ngIf=\"isLoading\">Loading more results...</p>\n\n</ng-template>\n\n<ng-template #uploadImageTemplate>\n <div>\n <div class=\"image-upload-container\">\n <div class=\"upload-img-container d-flex align-items-center justify-content-center\">\n <img lazy\n src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/547500c1744698830343upload-one%20%281%29.png\"\n alt=\"upload-image\" class=\"upload-img\">\n </div>\n <div class=\"text-container text-center\">\n <div class=\"top-text\">Choose a file or drag and drop it here</div>\n <div class=\"middle-text\">JPEG, PNG formats up to 50MB</div>\n <div class=\"upload-btn d-flex align-items-center justify-content-center\">\n <div class=\"uploads cp\" (click)=\"fileInput.click()\">\n Upload\n </div>\n </div>\n </div>\n </div>\n\n <input type=\"file\" style=\"display: none\" (change)=\"uploadImageFromSystem($event)\" [multiple]=\"multiple\"\n accept=\"image/png, image/jpeg, image/jpg, image/gif , video/mp4\" #fileInput />\n\n <div class=\"row image-container mt-3 h-30-overflow\">\n <ng-container *ngFor=\"let image of selectedImage | keyvalue\">\n <div class=\"col-md-4 systemImage\" *ngIf=\"image.value.file\">\n <img [src]=\"image.value.assets[0].url\" alt=\"Image\"\n *ngIf=\"!image.value.assets[0].url?.includes('data:video')\" />\n <video [src]=\"image.value.assets[0].url\" class=\"w-100 h-100\"\n *ngIf=\"image.value.assets[0].url?.includes('data:video')\" muted loop></video>\n <mat-icon (click)=\"deleteSystemImage(image.key)\">delete</mat-icon>\n </div>\n </ng-container>\n </div>\n\n </div>\n</ng-template>\n\n<ng-template #imageLibraryTemplate>\n <div class=\"row image-container mt-3 h-75-overflow\">\n <ng-container *ngIf=\"imageLibrary.length > 0; else emptyScreen\">\n <ng-container *ngFor=\"let image of imageLibrary\">\n <div class=\"col-md-4 col-6\">\n <img [src]=\"image.assets[0].url\" alt=\"Image\" (click)=\"selectFromImageLibrary(image)\"\n [ngClass]=\"{'selectedImage': selectedImage.has(image.uniqueId)}\"\n *ngIf=\"!image.assets[0].url?.includes('.mp4')\" />\n <video [src]=\"image.assets[0].url\" class=\"w-100 h-100\" (click)=\"selectFromImageLibrary(image)\"\n [ngClass]=\"{'selectedImage': selectedImage.has(image.uniqueId)}\"\n *ngIf=\"image.assets[0].url?.includes('.mp4')\" muted loop></video>\n </div>\n </ng-container>\n </ng-container>\n </div>\n <ng-template #emptyScreen>\n <div class=\"empty-container d-flex justify-content-center align-items-center w-100 flex-column\">\n <div class=\"empty-img-container d-flex justify-content-center align-items-center\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/935737c1743411798188image%20%287%29.png\"\n alt=\"\">\n </div>\n <div class=\"empty-main-text\">\n Uh-oh!\n </div>\n <div class=\"sub-text-1\">\n No images here\n </div>\n <div class=\"sub-text-2\">\n I looked left, right\u2026 even turned around! Still nothing\n </div>\n </div>\n </ng-template>\n</ng-template>", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}section{overflow:hidden}img{width:100%;height:150px}.scroll-container{height:90%;width:100%;overflow-y:scroll}.selectedImage{position:relative;border-radius:10px;overflow:hidden;border:3px solid hsl(227,52%,36%)}.uploadButton{position:absolute;bottom:0;padding:10px;background:#fff;width:100%;justify-content:end;box-shadow:0 0 4px #00000040}.uploadButton button{background:var(--primary-bg-color);color:#fff;font-weight:600;border:unset;font-size:15px!important;padding:8px;border-radius:8px;width:15%!important}.systemImage{position:relative}.systemImage mat-icon{display:none}.systemImage:hover mat-icon{display:inline;position:absolute;right:15px;top:5px;color:red;cursor:pointer}.f-18{font-size:18px}.header{padding:10px;box-shadow:0 0 4px #00000040;flex-shrink:0}.header .heading{font-size:15px;font-weight:600;line-height:24px}.header mat-icon{color:#2d264b}.tabs{padding:20px;flex-shrink:0}.tabs div{width:22%;cursor:pointer;text-align:center;padding:8px}.selectedTab{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-weight:500;color:#fff;box-shadow:0 0 4px #00000040;border-radius:10px;font-weight:600;position:relative}.selectedTab:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.input-container{padding:6px 10px;gap:10px;margin:0 20px 20px;box-shadow:0 0 4px #00000040;border-radius:13px}.input-container input{width:90%;border:unset;appearance:unset;outline:unset}.input-container img{width:20px;height:20px}.image-container{margin:0 20px 20px}.image-container div{margin-bottom:20px}.image-container div img{border-radius:13px}.image-upload-container{margin:0 40px;border-radius:17px;padding:15px;border:3px dashed rgba(44,44,44,.6)}.upload-img{width:12%;height:10%}.cp{cursor:pointer}.middle-text{font-size:15px;color:#686868}.top-text{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600}.uploads{width:20%;padding:8px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600;position:relative;margin-top:15px}.uploads:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.h-30-overflow{height:calc(30vh + -0px);overflow-y:scroll}.h-75-overflow{height:calc(75vh + -0px);overflow-y:scroll}.empty-main-text{font-weight:900;font-size:42px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent}.sub-text-1{font-size:19px;font-weight:600;color:#101010e5}.sub-text-2{font-size:16px;font-weight:600;color:#101010e5}@media screen and (max-width : 475px){.tabs div{width:30%!important}.uploadButton button{width:35%!important}.uploads{width:30%!important}.sub-text-2{text-align:center!important}img{height:150px}}.body_container{flex:1;height:100%}\n"] }]
195
195
  }], ctorParameters: () => [{ type: i1.ImageUplaodService }, { type: i2.MatDialogRef }, { type: undefined, decorators: [{
196
196
  type: Inject,
197
197
  args: [MAT_DIALOG_DATA]
@@ -199,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
199
199
  type: ViewChild,
200
200
  args: [CdkVirtualScrollViewport]
201
201
  }] } });
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy9tZWRpYS1zZWxlY3Rvci9tZWRpYS1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL21lZGlhLXNlbGVjdG9yL21lZGlhLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFXdkQsTUFBTSxPQUFPLHNCQUFzQjtJQWVqQyxZQUFvQixrQkFBc0MsRUFDaEQsVUFBZ0QsRUFDdkIsVUFBZSxFQUN4QyxRQUFxQixFQUNyQixhQUFxQztRQUozQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ2hELGVBQVUsR0FBVixVQUFVLENBQXNDO1FBQ3ZCLGVBQVUsR0FB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ZUFBZTttR0FqQmQsc0JBQXNCLDBIQUN0Qix3QkFBd0IsZ0RDckJyQyxxMkxBMkhjLHdzR0QzR0YsWUFBWSwrakJBQUUsV0FBVyxzWkFBRSxtQkFBbUIsa05BQUUsd0JBQXdCLGdKQUFFLG1CQUFtQiw0UUFBRSxlQUFlLCtZQUFFLGFBQWE7OzRGQUk1SCxzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQzs7MEJBcUJySSxNQUFNOzJCQUFDLGVBQWU7dUdBaEJZLFFBQVE7c0JBQTVDLFNBQVM7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbWFnZVVwbGFvZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbWFnZS11cGxvYWQtc2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMYXp5TG9hZEltYWdlTW9kdWxlIH0gZnJvbSAnbmctbGF6eWxvYWQtaW1hZ2UnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRWxlbWVudFNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vZWRpdG9yLXNlcnZpY2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLW1lZGlhLXNlbGVjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgTGF6eUxvYWRJbWFnZU1vZHVsZSwgU2Nyb2xsaW5nTW9kdWxlLCBNYXRJY29uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21lZGlhLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL21lZGlhLXNlbGVjdG9yLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIE1lZGlhU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQpIHZpZXdwb3J0ITogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gIHRhYnM6IHN0cmluZ1tdID0gWydVbnNwbGFzaCcsICdVcGxvYWQnLCAnTGlicmFyeSddO1xuICBhY3RpdmVUYWI6IHN0cmluZyA9ICdVbnNwbGFzaCc7XG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICBwYWdlTm86IG51bWJlciA9IDE7XG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICB1bnNwbGFzaEltYWdlczogYW55W10gPSBbXTtcbiAgaW1hZ2VMaWJyYXJ5OiBhbnlbXSA9IFtdO1xuICBpbWFnZVNpemUgPSA1MDtcbiAgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRJbWFnZTogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+O1xuICBidXR0b25Mb2FkZXI6IGJvb2xlYW49IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW1hZ2VVcGxvYWRTZXJ2aWNlOiBJbWFnZVVwbGFvZFNlcnZpY2UsXG4gICAgcHVibGljICBfZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8TWVkaWFTZWxlY3RvckNvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgZGlhbG9nRGF0YTogYW55LFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgZWRpdG9yU2VydmljZSA6IEVsZW1lbnRTZXJ2aWNlU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubXVsdGlwbGUgPSB0aGlzLmRpYWxvZ0RhdGE/Lm11bHRpcGxlID8/IHRydWU7XG4gICAgdGhpcy5zZWFyY2hVbnNwbGFzaEltYWdlcygpO1xuICAgIHRoaXMuZ2V0SW1hZ2VMaWJyYXJ5KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5zZXR1cEluZmluaXRlU2Nyb2xsKCk7XG4gIH1cblxuICBnZXRJbWFnZUxpYnJhcnkoKSB7XG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmdldEltYWdlTGlicmFyeSgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaW1hZ2VMaWJyYXJ5ID0gcmVzPy5kYXRhPy5jb250ZW50IHx8IFtdO1xuICAgIH0pXG4gIH1cblxuICAvKiog4pyFIFNlYXJjaCBBUEkgd2l0aCBkZWJvdW5jZSB0byByZWR1Y2UgdW5uZWNlc3NhcnkgY2FsbHMgKi9cbiAgc2VhcmNoVW5zcGxhc2hJbWFnZXMoKSB7XG4gICAgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCgnJyksIC8vIExvYWQgaW1hZ2VzIGluaXRpYWxseVxuICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSwgLy8gV2FpdCA1MDBtcyBhZnRlciB0eXBpbmcgc3RvcHNcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgLy8gT25seSBjYWxsIEFQSSBpZiB2YWx1ZSBjaGFuZ2VzXG4gICAgICAgIHN3aXRjaE1hcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgdGhpcy5wYWdlTm8gPSAxO1xuICAgICAgICAgIHJldHVybiB0aGlzLmltYWdlVXBsb2FkU2VydmljZS5zZWFyY2hQaG90b3NJblVuc3BsYXNoKHZhbHVlIHx8ICdUZWNobm9sb2d5JywgdGhpcy5wYWdlTm8pO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0czogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudW5zcGxhc2hJbWFnZXMgPSByZXN1bHRzLnJlc3VsdHM7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKiDinIUgSW5maW5pdGUgU2Nyb2xsICovXG4gIHNldHVwSW5maW5pdGVTY3JvbGwoKSB7XG4gICAgdGhpcy52aWV3cG9ydC5lbGVtZW50U2Nyb2xsZWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLCAvLyDinIUgV2FpdCAyMDBtcyBiZWZvcmUgY2hlY2tpbmdcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSAvLyDinIUgT25seSB0cmlnZ2VyIGlmIHZhbHVlIGNoYW5nZXNcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBlbmQgPSB0aGlzLnZpZXdwb3J0Lm1lYXN1cmVTY3JvbGxPZmZzZXQoJ2JvdHRvbScpO1xuXG4gICAgICAgIGlmIChlbmQgPCAzMDAgJiYgIXRoaXMuaXNMb2FkaW5nKSB7IC8vIOKchSBUcmlnZ2VyIG9ubHkgd2hlbiBjbG9zZSB0byB0aGUgYm90dG9tXG4gICAgICAgICAgdGhpcy5sb2FkTW9yZUltYWdlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKiDinIUgTG9hZCBNb3JlIEltYWdlcyAqL1xuICBsb2FkTW9yZUltYWdlcygpIHtcbiAgICBpZiAodGhpcy5pc0xvYWRpbmcpIHJldHVybjsgLy8g4pyFIFByZXZlbnQgbXVsdGlwbGUgcmVxdWVzdHNcblxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnBhZ2VObysrO1xuXG4gICAgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2Uuc2VhcmNoUGhvdG9zSW5VbnNwbGFzaCh0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUgfHwgJ1RlY2hub2xvZ3knLCB0aGlzLnBhZ2VObylcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdHM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnVuc3BsYXNoSW1hZ2VzID0gWy4uLnRoaXMudW5zcGxhc2hJbWFnZXMsIC4uLnJlc3VsdHMucmVzdWx0c107XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7IC8vIOKchSBFbnN1cmUgaXQncyByZXNldCBldmVuIG9uIGZhaWx1cmVcbiAgICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0VW5zcGxhc2hJbWFnZShpbWFnZTogYW55KSB7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKVxuICAgICAgdGhpcy5zZWxlY3RlZEltYWdlID0gbmV3IE1hcDxhbnksIGFueT47XG5cbiAgICBsZXQgdXBsb2FkSW1hZ2U6IGFueSA9IHtcbiAgICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyksXG4gICAgICB1bmlxdWVJZDogaW1hZ2UuaWQsXG4gICAgICBhc3NldHM6IFt7XG4gICAgICAgIHVybDogaW1hZ2UudXJscy5yYXcsXG4gICAgICAgIHdpZHRoOiBpbWFnZS53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBpbWFnZS5oZWlnaHRcbiAgICAgIH1dLFxuICAgICAgYXV0aG9yOiB7XG4gICAgICAgIGlkOiBpbWFnZS51c2VyLmlkLFxuICAgICAgICB1c2VyTmFtZTogaW1hZ2UudXNlci51c2VybmFtZSxcbiAgICAgICAgbmFtZTogaW1hZ2UudXNlci5uYW1lLFxuICAgICAgICB0d2l0dGVyVXNlck5hbWU6IGltYWdlLnVzZXIudHdpdHRlcl91c2VybmFtZSxcbiAgICAgICAgcG9ydEZvbGlvVXJsOiBpbWFnZS51c2VyLnBvcnRmb2xpb191cmwsXG4gICAgICAgIGluc3RhZ3JhbVVzZXJOYW1lOiBpbWFnZS51c2VyLmluc3RhZ3JhbV91c2VybmFtZSxcbiAgICAgIH0sXG4gICAgICBtZWRpYTogXCJVTlNQTEFTSFwiLFxuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkSW1hZ2UuaGFzKGltYWdlLmlkKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEltYWdlLmRlbGV0ZShpbWFnZS5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZS5zZXQoaW1hZ2UuaWQsIHVwbG9hZEltYWdlKTtcbiAgICB9XG4gIH1cblxuICB1cGxvYWRJbWFnZUZyb21TeXN0ZW0oZXZlbnQ6IGFueSkge1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSlcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZSA9IG5ldyBNYXA8YW55LCBhbnk+O1xuXG4gICAgbGV0IGZpbGVzID0gZXZlbnQudGFyZ2V0LmZpbGVzO1xuICAgIGNvbnN0IG1heGltdW1GaWxlU2l6ZSA9IDQgKiAxMDI0ICogMTAyNDsgLy8gTWF4IGlzIDRtYlxuXG4gICAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xuICAgICAgaWYgKG1heGltdW1GaWxlU2l6ZSA8IGZpbGUuc2l6ZSkge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ01heGltdW0gZmlsZSBzaXplIGxpbWl0IGlzIDRNQicsICdjbG9zZScsIHsgZHVyYXRpb246IDE1MDAgfSlcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIGNvbnN0IGltYWdlOiBhbnkgPSB7XG4gICAgICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyksXG4gICAgICAgIHVuaXF1ZUlkOiBmaWxlLm5hbWUgKyAnXycgKyBmaWxlLnNpemUsXG4gICAgICAgIGJsdXJIYXNoOiBudWxsLFxuICAgICAgICBhc3NldHM6IFt7XG4gICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgIGJsdXJoYXNoOiAnJyxcbiAgICAgICAgICB1cmw6ICcnLFxuICAgICAgICB9XSxcbiAgICAgICAgYXV0aG9yOiBudWxsLFxuICAgICAgICBtZWRpYTogJ0RFVklDRScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBmaWxlLm5hbWUsXG4gICAgICAgIGFsdERlc2NyaXB0aW9uOiBmaWxlLm5hbWUsXG4gICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICB9O1xuXG4gICAgICByZWFkZXIub25sb2FkID0gKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgaW1hZ2UuYXNzZXRzWzBdLnVybCA9IHJlc3BvbnNlLnRhcmdldC5yZXN1bHQ7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG5cbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZEltYWdlLmhhcyhpbWFnZS51bmlxdWVJZCkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEltYWdlLnNldChpbWFnZS51bmlxdWVJZCwgaW1hZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZVN5c3RlbUltYWdlKGltYWdlSWQ6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWRJbWFnZS5kZWxldGUoaW1hZ2VJZCk7XG4gIH1cblxuICBzZWxlY3RGcm9tSW1hZ2VMaWJyYXJ5KGltYWdlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpXG4gICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBuZXcgTWFwPGFueSwgYW55PjtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkSW1hZ2UuaGFzKGltYWdlLnVuaXF1ZUlkKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEltYWdlLmRlbGV0ZShpbWFnZS51bmlxdWVJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZS5zZXQoaW1hZ2UudW5pcXVlSWQsIGltYWdlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGxvYWRJbWFnZSgpIHtcbiAgICB0aGlzLmJ1dHRvbkxvYWRlciA9dHJ1ZTtcbiAgICBsZXQgcmVxdWVzdDogYW55W10gPSBbXTtcblxuICAgIGZvcihsZXQgaW1hZ2Ugb2YgdGhpcy5zZWxlY3RlZEltYWdlLnZhbHVlcygpKSB7XG4gICAgICBpZiAoaW1hZ2UuZmlsZSkge1xuICAgICAgICBjb25zdCBmaWxlVXJsOiBhbnkgPVxuICAgICAgICAgIGF3YWl0IHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGVJbkFXUyhcbiAgICAgICAgICAgIGltYWdlLmZpbGUsXG4gICAgICAgICAgICAnbGlicmFyeS1tZWRpYSdcbiAgICAgICAgICApO1xuICAgICAgICBpbWFnZS5hc3NldHNbMF0udXJsID0gZmlsZVVybDtcbiAgICAgIH1cbiAgICAgIHJlcXVlc3QucHVzaChpbWFnZSk7XG4gICAgfVxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5zYXZlSW1hZ2VzVG9CdXNpbmVzc0xpYnJhcnkoe2RhdGE6IHJlcXVlc3R9KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2UocmVxdWVzdCk7XG4gICAgICAgIHRoaXMuYnV0dG9uTG9hZGVyPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmJ1dHRvbkxvYWRlcj1mYWxzZTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cImgtMTAwIGQtZmxleCBmbGV4LWNvbHVtbiBtYWluX3NlY3Rpb25cIj5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCI+VXBsb2FkIEltYWdlPC9kaXY+XHJcbiAgICA8bWF0LWljb24gKGNsaWNrKT1cIl9kaWFsb2dSZWYuY2xvc2UoKVwiXHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGYtMTggY3BcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImJvZHlfY29udGFpbmVyIGQtZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInRhYnMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFic1wiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRUYWInOiBhY3RpdmVUYWIgPT09IHRhYn1cIiAoY2xpY2spPVwiYWN0aXZlVGFiID0gdGFiXCI+e3t0YWJ9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJpbm5lcl9wYXJ0IGZsZXgtMSBoLTEwMFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnVW5zcGxhc2gnXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVuc3BsYXNoSW1hZ2VzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnVXBsb2FkJ1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1cGxvYWRJbWFnZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ0xpYnJhcnknXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImltYWdlTGlicmFyeVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZEJ1dHRvbiBkLWZsZXhcIiAqbmdJZj1cInRoaXMuc2VsZWN0ZWRJbWFnZS5zaXplID4gMFwiPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInVwbG9hZEltYWdlKClcIiBbZGlzYWJsZWRdPVwiYnV0dG9uTG9hZGVyXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImJ1dHRvbkxvYWRlclwiPjxpIGNsYXNzPVwiZmFzIGZhLWNpcmNsZS1ub3RjaCBmYS1zcGluXCI+PC9pPiZuYnNwO0xvYWRpbmc8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFidXR0b25Mb2FkZXJcIj5VcGxvYWQgSW1hZ2U8L3NwYW4+PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdW5zcGxhc2hJbWFnZXNUZW1wbGF0ZT5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8aW1nIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvMzE0NjYxYzE3NDE4NDQyMzQ0NDJWZWN0b3IlMjAlMjgxJTI5LnBuZ1wiXHJcbiAgICAgIGFsdD1cInNlYXJjaC1iYXItaWNvblwiPlxyXG4gICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggaW1hZ2VzXCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIj5cclxuICA8L2Rpdj5cclxuICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IFtpdGVtU2l6ZV09XCJpbWFnZVNpemVcIiBbbWluQnVmZmVyUHhdPVwiODAwXCIgW21heEJ1ZmZlclB4XT1cIjE2MDBcIiBjbGFzcz1cInNjcm9sbC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgaW1hZ2UtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBjb2wtNlwiICpjZGtWaXJ0dWFsRm9yPVwibGV0IGltYWdlIG9mIHVuc3BsYXNoSW1hZ2VzXCI+XHJcbiAgICAgICAgPGltZyBbbGF6eUxvYWRdPVwiaW1hZ2UudXJscy50aHVtYlwiIFtlcnJvckltYWdlXT1cIidhc3NldHMvZXJyb3IuanBnJ1wiIChjbGljayk9XCJzZWxlY3RVbnNwbGFzaEltYWdlKGltYWdlKVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J3NlbGVjdGVkSW1hZ2UnOiBzZWxlY3RlZEltYWdlLmhhcyhpbWFnZS5pZCl9XCIgYWx0PVwiSW1hZ2VcIiBjbGFzcz1cImNwXCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuXHJcbiAgPHAgKm5nSWY9XCJpc0xvYWRpbmdcIj5Mb2FkaW5nIG1vcmUgcmVzdWx0cy4uLjwvcD5cclxuXHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3VwbG9hZEltYWdlVGVtcGxhdGU+XHJcbiAgPGRpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbWFnZS11cGxvYWQtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaW1nLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICA8aW1nIGxhenlcclxuICAgICAgICAgIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvNTQ3NTAwYzE3NDQ2OTg4MzAzNDN1cGxvYWQtb25lJTIwJTI4MSUyOS5wbmdcIlxyXG4gICAgICAgICAgYWx0PVwidXBsb2FkLWltYWdlXCIgY2xhc3M9XCJ1cGxvYWQtaW1nXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jb250YWluZXIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLXRleHRcIj5DaG9vc2UgYSBmaWxlIG9yIGRyYWcgYW5kIGRyb3AgaXQgaGVyZTwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWRkbGUtdGV4dFwiPkpQRUcsIFBORyBmb3JtYXRzIHVwIHRvIDUwTUI8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWJ0biBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRzIGNwXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XHJcbiAgICAgICAgICAgIFVwbG9hZFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgKGNoYW5nZSk9XCJ1cGxvYWRJbWFnZUZyb21TeXN0ZW0oJGV2ZW50KVwiIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXHJcbiAgICAgIGFjY2VwdD1cImltYWdlL3BuZywgaW1hZ2UvanBlZywgaW1hZ2UvanBnLCBpbWFnZS9naWYgLCB2aWRlby9tcDRcIiAjZmlsZUlucHV0IC8+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBpbWFnZS1jb250YWluZXIgbXQtMyBoLTMwLW92ZXJmbG93XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltYWdlIG9mIHNlbGVjdGVkSW1hZ2UgfCBrZXl2YWx1ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBzeXN0ZW1JbWFnZVwiICpuZ0lmPVwiaW1hZ2UudmFsdWUuZmlsZVwiPlxyXG4gICAgICAgICAgPGltZyBbc3JjXT1cImltYWdlLnZhbHVlLmFzc2V0c1swXS51cmxcIiBhbHQ9XCJJbWFnZVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWltYWdlLnZhbHVlLmFzc2V0c1swXS51cmw/LmluY2x1ZGVzKCdkYXRhOnZpZGVvJylcIiAvPlxyXG4gICAgICAgICAgPHZpZGVvIFtzcmNdPVwiaW1hZ2UudmFsdWUuYXNzZXRzWzBdLnVybFwiIGNsYXNzPVwidy0xMDAgaC0xMDBcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImltYWdlLnZhbHVlLmFzc2V0c1swXS51cmw/LmluY2x1ZGVzKCdkYXRhOnZpZGVvJylcIiBtdXRlZCBsb29wPjwvdmlkZW8+XHJcbiAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cImRlbGV0ZVN5c3RlbUltYWdlKGltYWdlLmtleSlcIj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaW1hZ2VMaWJyYXJ5VGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cInJvdyBpbWFnZS1jb250YWluZXIgbXQtMyBoLTc1LW92ZXJmbG93XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW1hZ2VMaWJyYXJ5Lmxlbmd0aCA+IDA7IGVsc2UgZW1wdHlTY3JlZW5cIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1hZ2Ugb2YgaW1hZ2VMaWJyYXJ5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC02XCI+XHJcbiAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2UuYXNzZXRzWzBdLnVybFwiIGFsdD1cIkltYWdlXCIgKGNsaWNrKT1cInNlbGVjdEZyb21JbWFnZUxpYnJhcnkoaW1hZ2UpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydzZWxlY3RlZEltYWdlJzogc2VsZWN0ZWRJbWFnZS5oYXMoaW1hZ2UudW5pcXVlSWQpfVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWltYWdlLmFzc2V0c1swXS51cmw/LmluY2x1ZGVzKCcubXA0JylcIiAvPlxyXG4gICAgICAgICAgPHZpZGVvIFtzcmNdPVwiaW1hZ2UuYXNzZXRzWzBdLnVybFwiIGNsYXNzPVwidy0xMDAgaC0xMDBcIiAoY2xpY2spPVwic2VsZWN0RnJvbUltYWdlTGlicmFyeShpbWFnZSlcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J3NlbGVjdGVkSW1hZ2UnOiBzZWxlY3RlZEltYWdlLmhhcyhpbWFnZS51bmlxdWVJZCl9XCJcclxuICAgICAgICAgICAgKm5nSWY9XCJpbWFnZS5hc3NldHNbMF0udXJsPy5pbmNsdWRlcygnLm1wNCcpXCIgbXV0ZWQgbG9vcD48L3ZpZGVvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxuZy10ZW1wbGF0ZSAjZW1wdHlTY3JlZW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZW1wdHktY29udGFpbmVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktaW1nLWNvbnRhaW5lciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvOTM1NzM3YzE3NDM0MTE3OTgxODhpbWFnZSUyMCUyODclMjkucG5nXCJcclxuICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LW1haW4tdGV4dFwiPlxyXG4gICAgICAgIFVoLW9oIVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0LTFcIj5cclxuICAgICAgICBObyBpbWFnZXMgaGVyZVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0LTJcIj5cclxuICAgICAgICBJIGxvb2tlZCBsZWZ0LCByaWdodOKApiBldmVuIHR1cm5lZCBhcm91bmQhIFN0aWxsIG5vdGhpbmdcclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy9tZWRpYS1zZWxlY3Rvci9tZWRpYS1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL21lZGlhLXNlbGVjdG9yL21lZGlhLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFXdkQsTUFBTSxPQUFPLHNCQUFzQjtJQWVqQyxZQUFvQixrQkFBc0MsRUFDaEQsVUFBZ0QsRUFDdkIsVUFBZSxFQUN4QyxRQUFxQixFQUNyQixhQUFxQztRQUozQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ2hELGVBQVUsR0FBVixVQUFVLENBQXNDO1FBQ3ZCLGVBQVUsR0FB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ZUFBZTttR0FqQmQsc0JBQXNCLDBIQUN0Qix3QkFBd0IsZ0RDckJyQywrbUxBMkhjLHdzR0QzR0YsWUFBWSwrakJBQUUsV0FBVyxzWkFBRSxtQkFBbUIsa05BQUUsd0JBQXdCLGdKQUFFLG1CQUFtQiw0UUFBRSxlQUFlLCtZQUFFLGFBQWE7OzRGQUk1SCxzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQzs7MEJBcUJySSxNQUFNOzJCQUFDLGVBQWU7dUdBaEJZLFFBQVE7c0JBQTVDLFNBQVM7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbWFnZVVwbGFvZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbWFnZS11cGxvYWQtc2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMYXp5TG9hZEltYWdlTW9kdWxlIH0gZnJvbSAnbmctbGF6eWxvYWQtaW1hZ2UnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRWxlbWVudFNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vZWRpdG9yLXNlcnZpY2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLW1lZGlhLXNlbGVjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgTGF6eUxvYWRJbWFnZU1vZHVsZSwgU2Nyb2xsaW5nTW9kdWxlLCBNYXRJY29uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21lZGlhLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL21lZGlhLXNlbGVjdG9yLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIE1lZGlhU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQpIHZpZXdwb3J0ITogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gIHRhYnM6IHN0cmluZ1tdID0gWydVbnNwbGFzaCcsICdVcGxvYWQnLCAnTGlicmFyeSddO1xuICBhY3RpdmVUYWI6IHN0cmluZyA9ICdVbnNwbGFzaCc7XG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICBwYWdlTm86IG51bWJlciA9IDE7XG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICB1bnNwbGFzaEltYWdlczogYW55W10gPSBbXTtcbiAgaW1hZ2VMaWJyYXJ5OiBhbnlbXSA9IFtdO1xuICBpbWFnZVNpemUgPSA1MDtcbiAgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRJbWFnZTogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+O1xuICBidXR0b25Mb2FkZXI6IGJvb2xlYW49IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW1hZ2VVcGxvYWRTZXJ2aWNlOiBJbWFnZVVwbGFvZFNlcnZpY2UsXG4gICAgcHVibGljICBfZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8TWVkaWFTZWxlY3RvckNvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgZGlhbG9nRGF0YTogYW55LFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgZWRpdG9yU2VydmljZSA6IEVsZW1lbnRTZXJ2aWNlU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubXVsdGlwbGUgPSB0aGlzLmRpYWxvZ0RhdGE/Lm11bHRpcGxlID8/IHRydWU7XG4gICAgdGhpcy5zZWFyY2hVbnNwbGFzaEltYWdlcygpO1xuICAgIHRoaXMuZ2V0SW1hZ2VMaWJyYXJ5KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5zZXR1cEluZmluaXRlU2Nyb2xsKCk7XG4gIH1cblxuICBnZXRJbWFnZUxpYnJhcnkoKSB7XG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmdldEltYWdlTGlicmFyeSgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaW1hZ2VMaWJyYXJ5ID0gcmVzPy5kYXRhPy5jb250ZW50IHx8IFtdO1xuICAgIH0pXG4gIH1cblxuICAvKiog4pyFIFNlYXJjaCBBUEkgd2l0aCBkZWJvdW5jZSB0byByZWR1Y2UgdW5uZWNlc3NhcnkgY2FsbHMgKi9cbiAgc2VhcmNoVW5zcGxhc2hJbWFnZXMoKSB7XG4gICAgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCgnJyksIC8vIExvYWQgaW1hZ2VzIGluaXRpYWxseVxuICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSwgLy8gV2FpdCA1MDBtcyBhZnRlciB0eXBpbmcgc3RvcHNcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgLy8gT25seSBjYWxsIEFQSSBpZiB2YWx1ZSBjaGFuZ2VzXG4gICAgICAgIHN3aXRjaE1hcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgdGhpcy5wYWdlTm8gPSAxO1xuICAgICAgICAgIHJldHVybiB0aGlzLmltYWdlVXBsb2FkU2VydmljZS5zZWFyY2hQaG90b3NJblVuc3BsYXNoKHZhbHVlIHx8ICdUZWNobm9sb2d5JywgdGhpcy5wYWdlTm8pO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0czogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudW5zcGxhc2hJbWFnZXMgPSByZXN1bHRzLnJlc3VsdHM7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKiDinIUgSW5maW5pdGUgU2Nyb2xsICovXG4gIHNldHVwSW5maW5pdGVTY3JvbGwoKSB7XG4gICAgdGhpcy52aWV3cG9ydC5lbGVtZW50U2Nyb2xsZWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLCAvLyDinIUgV2FpdCAyMDBtcyBiZWZvcmUgY2hlY2tpbmdcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSAvLyDinIUgT25seSB0cmlnZ2VyIGlmIHZhbHVlIGNoYW5nZXNcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBlbmQgPSB0aGlzLnZpZXdwb3J0Lm1lYXN1cmVTY3JvbGxPZmZzZXQoJ2JvdHRvbScpO1xuXG4gICAgICAgIGlmIChlbmQgPCAzMDAgJiYgIXRoaXMuaXNMb2FkaW5nKSB7IC8vIOKchSBUcmlnZ2VyIG9ubHkgd2hlbiBjbG9zZSB0byB0aGUgYm90dG9tXG4gICAgICAgICAgdGhpcy5sb2FkTW9yZUltYWdlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKiDinIUgTG9hZCBNb3JlIEltYWdlcyAqL1xuICBsb2FkTW9yZUltYWdlcygpIHtcbiAgICBpZiAodGhpcy5pc0xvYWRpbmcpIHJldHVybjsgLy8g4pyFIFByZXZlbnQgbXVsdGlwbGUgcmVxdWVzdHNcblxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnBhZ2VObysrO1xuXG4gICAgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2Uuc2VhcmNoUGhvdG9zSW5VbnNwbGFzaCh0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUgfHwgJ1RlY2hub2xvZ3knLCB0aGlzLnBhZ2VObylcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdHM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnVuc3BsYXNoSW1hZ2VzID0gWy4uLnRoaXMudW5zcGxhc2hJbWFnZXMsIC4uLnJlc3VsdHMucmVzdWx0c107XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7IC8vIOKchSBFbnN1cmUgaXQncyByZXNldCBldmVuIG9uIGZhaWx1cmVcbiAgICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0VW5zcGxhc2hJbWFnZShpbWFnZTogYW55KSB7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKVxuICAgICAgdGhpcy5zZWxlY3RlZEltYWdlID0gbmV3IE1hcDxhbnksIGFueT47XG5cbiAgICBsZXQgdXBsb2FkSW1hZ2U6IGFueSA9IHtcbiAgICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyksXG4gICAgICB1bmlxdWVJZDogaW1hZ2UuaWQsXG4gICAgICBhc3NldHM6IFt7XG4gICAgICAgIHVybDogaW1hZ2UudXJscy5yYXcsXG4gICAgICAgIHdpZHRoOiBpbWFnZS53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBpbWFnZS5oZWlnaHRcbiAgICAgIH1dLFxuICAgICAgYXV0aG9yOiB7XG4gICAgICAgIGlkOiBpbWFnZS51c2VyLmlkLFxuICAgICAgICB1c2VyTmFtZTogaW1hZ2UudXNlci51c2VybmFtZSxcbiAgICAgICAgbmFtZTogaW1hZ2UudXNlci5uYW1lLFxuICAgICAgICB0d2l0dGVyVXNlck5hbWU6IGltYWdlLnVzZXIudHdpdHRlcl91c2VybmFtZSxcbiAgICAgICAgcG9ydEZvbGlvVXJsOiBpbWFnZS51c2VyLnBvcnRmb2xpb191cmwsXG4gICAgICAgIGluc3RhZ3JhbVVzZXJOYW1lOiBpbWFnZS51c2VyLmluc3RhZ3JhbV91c2VybmFtZSxcbiAgICAgIH0sXG4gICAgICBtZWRpYTogXCJVTlNQTEFTSFwiLFxuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkSW1hZ2UuaGFzKGltYWdlLmlkKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEltYWdlLmRlbGV0ZShpbWFnZS5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZS5zZXQoaW1hZ2UuaWQsIHVwbG9hZEltYWdlKTtcbiAgICB9XG4gIH1cblxuICB1cGxvYWRJbWFnZUZyb21TeXN0ZW0oZXZlbnQ6IGFueSkge1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSlcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZSA9IG5ldyBNYXA8YW55LCBhbnk+O1xuXG4gICAgbGV0IGZpbGVzID0gZXZlbnQudGFyZ2V0LmZpbGVzO1xuICAgIGNvbnN0IG1heGltdW1GaWxlU2l6ZSA9IDQgKiAxMDI0ICogMTAyNDsgLy8gTWF4IGlzIDRtYlxuXG4gICAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xuICAgICAgaWYgKG1heGltdW1GaWxlU2l6ZSA8IGZpbGUuc2l6ZSkge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ01heGltdW0gZmlsZSBzaXplIGxpbWl0IGlzIDRNQicsICdjbG9zZScsIHsgZHVyYXRpb246IDE1MDAgfSlcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIGNvbnN0IGltYWdlOiBhbnkgPSB7XG4gICAgICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyksXG4gICAgICAgIHVuaXF1ZUlkOiBmaWxlLm5hbWUgKyAnXycgKyBmaWxlLnNpemUsXG4gICAgICAgIGJsdXJIYXNoOiBudWxsLFxuICAgICAgICBhc3NldHM6IFt7XG4gICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgIGJsdXJoYXNoOiAnJyxcbiAgICAgICAgICB1cmw6ICcnLFxuICAgICAgICB9XSxcbiAgICAgICAgYXV0aG9yOiBudWxsLFxuICAgICAgICBtZWRpYTogJ0RFVklDRScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBmaWxlLm5hbWUsXG4gICAgICAgIGFsdERlc2NyaXB0aW9uOiBmaWxlLm5hbWUsXG4gICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICB9O1xuXG4gICAgICByZWFkZXIub25sb2FkID0gKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgaW1hZ2UuYXNzZXRzWzBdLnVybCA9IHJlc3BvbnNlLnRhcmdldC5yZXN1bHQ7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG5cbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZEltYWdlLmhhcyhpbWFnZS51bmlxdWVJZCkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEltYWdlLnNldChpbWFnZS51bmlxdWVJZCwgaW1hZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZVN5c3RlbUltYWdlKGltYWdlSWQ6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWRJbWFnZS5kZWxldGUoaW1hZ2VJZCk7XG4gIH1cblxuICBzZWxlY3RGcm9tSW1hZ2VMaWJyYXJ5KGltYWdlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpXG4gICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBuZXcgTWFwPGFueSwgYW55PjtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkSW1hZ2UuaGFzKGltYWdlLnVuaXF1ZUlkKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEltYWdlLmRlbGV0ZShpbWFnZS51bmlxdWVJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZS5zZXQoaW1hZ2UudW5pcXVlSWQsIGltYWdlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGxvYWRJbWFnZSgpIHtcbiAgICB0aGlzLmJ1dHRvbkxvYWRlciA9dHJ1ZTtcbiAgICBsZXQgcmVxdWVzdDogYW55W10gPSBbXTtcblxuICAgIGZvcihsZXQgaW1hZ2Ugb2YgdGhpcy5zZWxlY3RlZEltYWdlLnZhbHVlcygpKSB7XG4gICAgICBpZiAoaW1hZ2UuZmlsZSkge1xuICAgICAgICBjb25zdCBmaWxlVXJsOiBhbnkgPVxuICAgICAgICAgIGF3YWl0IHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGVJbkFXUyhcbiAgICAgICAgICAgIGltYWdlLmZpbGUsXG4gICAgICAgICAgICAnbGlicmFyeS1tZWRpYSdcbiAgICAgICAgICApO1xuICAgICAgICBpbWFnZS5hc3NldHNbMF0udXJsID0gZmlsZVVybDtcbiAgICAgIH1cbiAgICAgIHJlcXVlc3QucHVzaChpbWFnZSk7XG4gICAgfVxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5zYXZlSW1hZ2VzVG9CdXNpbmVzc0xpYnJhcnkoe2RhdGE6IHJlcXVlc3R9KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2UocmVxdWVzdCk7XG4gICAgICAgIHRoaXMuYnV0dG9uTG9hZGVyPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmJ1dHRvbkxvYWRlcj1mYWxzZTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cImgtMTAwIGQtZmxleCBmbGV4LWNvbHVtbiBtYWluX3NlY3Rpb25cIj5cbiAgPGRpdiBjbGFzcz1cImhlYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5VcGxvYWQgSW1hZ2U8L2Rpdj5cbiAgICA8bWF0LWljb24gKGNsaWNrKT1cIl9kaWFsb2dSZWYuY2xvc2UoKVwiXG4gICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmLTE4IGNwXCI+Y2xvc2U8L21hdC1pY29uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImJvZHlfY29udGFpbmVyIGQtZmxleCBmbGV4LWNvbHVtblwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJzIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRhYic6IGFjdGl2ZVRhYiA9PT0gdGFifVwiIChjbGljayk9XCJhY3RpdmVUYWIgPSB0YWJcIj57e3RhYn19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJpbm5lcl9wYXJ0IGZsZXgtMSBoLTEwMFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ1Vuc3BsYXNoJ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidW5zcGxhc2hJbWFnZXNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICdVcGxvYWQnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1cGxvYWRJbWFnZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ0xpYnJhcnknXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbWFnZUxpYnJhcnlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRCdXR0b24gZC1mbGV4XCIgKm5nSWY9XCJ0aGlzLnNlbGVjdGVkSW1hZ2Uuc2l6ZSA+IDBcIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidXBsb2FkSW1hZ2UoKVwiIFtkaXNhYmxlZF09XCJidXR0b25Mb2FkZXJcIj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImJ1dHRvbkxvYWRlclwiPjxpIGNsYXNzPVwiZmFzIGZhLWNpcmNsZS1ub3RjaCBmYS1zcGluXCI+PC9pPiZuYnNwO0xvYWRpbmc8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhYnV0dG9uTG9hZGVyXCI+VXBsb2FkIEltYWdlPC9zcGFuPjwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuXG48bmctdGVtcGxhdGUgI3Vuc3BsYXNoSW1hZ2VzVGVtcGxhdGU+XG5cbiAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzMxNDY2MWMxNzQxODQ0MjM0NDQyVmVjdG9yJTIwJTI4MSUyOS5wbmdcIlxuICAgICAgYWx0PVwic2VhcmNoLWJhci1pY29uXCI+XG4gICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2ggaW1hZ2VzXCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIj5cbiAgPC9kaXY+XG4gIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgW2l0ZW1TaXplXT1cImltYWdlU2l6ZVwiIFttaW5CdWZmZXJQeF09XCI4MDBcIiBbbWF4QnVmZmVyUHhdPVwiMTYwMFwiIGNsYXNzPVwic2Nyb2xsLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgaW1hZ2UtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgY29sLTZcIiAqY2RrVmlydHVhbEZvcj1cImxldCBpbWFnZSBvZiB1bnNwbGFzaEltYWdlc1wiPlxuICAgICAgICA8aW1nIFtsYXp5TG9hZF09XCJpbWFnZS51cmxzLnRodW1iXCIgW2Vycm9ySW1hZ2VdPVwiJ2Fzc2V0cy9lcnJvci5qcGcnXCIgKGNsaWNrKT1cInNlbGVjdFVuc3BsYXNoSW1hZ2UoaW1hZ2UpXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J3NlbGVjdGVkSW1hZ2UnOiBzZWxlY3RlZEltYWdlLmhhcyhpbWFnZS5pZCl9XCIgYWx0PVwiSW1hZ2VcIiBjbGFzcz1cImNwXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cblxuICA8cCAqbmdJZj1cImlzTG9hZGluZ1wiPkxvYWRpbmcgbW9yZSByZXN1bHRzLi4uPC9wPlxuXG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3VwbG9hZEltYWdlVGVtcGxhdGU+XG4gIDxkaXY+XG4gICAgPGRpdiBjbGFzcz1cImltYWdlLXVwbG9hZC1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaW1nLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgPGltZyBsYXp5XG4gICAgICAgICAgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy81NDc1MDBjMTc0NDY5ODgzMDM0M3VwbG9hZC1vbmUlMjAlMjgxJTI5LnBuZ1wiXG4gICAgICAgICAgYWx0PVwidXBsb2FkLWltYWdlXCIgY2xhc3M9XCJ1cGxvYWQtaW1nXCI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNvbnRhaW5lciB0ZXh0LWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLXRleHRcIj5DaG9vc2UgYSBmaWxlIG9yIGRyYWcgYW5kIGRyb3AgaXQgaGVyZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlkZGxlLXRleHRcIj5KUEVHLCBQTkcgZm9ybWF0cyB1cCB0byA1ME1CPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtYnRuIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRzIGNwXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XG4gICAgICAgICAgICBVcGxvYWRcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIChjaGFuZ2UpPVwidXBsb2FkSW1hZ2VGcm9tU3lzdGVtKCRldmVudClcIiBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgYWNjZXB0PVwiaW1hZ2UvcG5nLCBpbWFnZS9qcGVnLCBpbWFnZS9qcGcsIGltYWdlL2dpZiAsIHZpZGVvL21wNFwiICNmaWxlSW5wdXQgLz5cblxuICAgIDxkaXYgY2xhc3M9XCJyb3cgaW1hZ2UtY29udGFpbmVyIG10LTMgaC0zMC1vdmVyZmxvd1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1hZ2Ugb2Ygc2VsZWN0ZWRJbWFnZSB8IGtleXZhbHVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBzeXN0ZW1JbWFnZVwiICpuZ0lmPVwiaW1hZ2UudmFsdWUuZmlsZVwiPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZS52YWx1ZS5hc3NldHNbMF0udXJsXCIgYWx0PVwiSW1hZ2VcIlxuICAgICAgICAgICAgKm5nSWY9XCIhaW1hZ2UudmFsdWUuYXNzZXRzWzBdLnVybD8uaW5jbHVkZXMoJ2RhdGE6dmlkZW8nKVwiIC8+XG4gICAgICAgICAgPHZpZGVvIFtzcmNdPVwiaW1hZ2UudmFsdWUuYXNzZXRzWzBdLnVybFwiIGNsYXNzPVwidy0xMDAgaC0xMDBcIlxuICAgICAgICAgICAgKm5nSWY9XCJpbWFnZS52YWx1ZS5hc3NldHNbMF0udXJsPy5pbmNsdWRlcygnZGF0YTp2aWRlbycpXCIgbXV0ZWQgbG9vcD48L3ZpZGVvPlxuICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiZGVsZXRlU3lzdGVtSW1hZ2UoaW1hZ2Uua2V5KVwiPmRlbGV0ZTwvbWF0LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ltYWdlTGlicmFyeVRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwicm93IGltYWdlLWNvbnRhaW5lciBtdC0zIGgtNzUtb3ZlcmZsb3dcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW1hZ2VMaWJyYXJ5Lmxlbmd0aCA+IDA7IGVsc2UgZW1wdHlTY3JlZW5cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltYWdlIG9mIGltYWdlTGlicmFyeVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgY29sLTZcIj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2UuYXNzZXRzWzBdLnVybFwiIGFsdD1cIkltYWdlXCIgKGNsaWNrKT1cInNlbGVjdEZyb21JbWFnZUxpYnJhcnkoaW1hZ2UpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRJbWFnZSc6IHNlbGVjdGVkSW1hZ2UuaGFzKGltYWdlLnVuaXF1ZUlkKX1cIlxuICAgICAgICAgICAgKm5nSWY9XCIhaW1hZ2UuYXNzZXRzWzBdLnVybD8uaW5jbHVkZXMoJy5tcDQnKVwiIC8+XG4gICAgICAgICAgPHZpZGVvIFtzcmNdPVwiaW1hZ2UuYXNzZXRzWzBdLnVybFwiIGNsYXNzPVwidy0xMDAgaC0xMDBcIiAoY2xpY2spPVwic2VsZWN0RnJvbUltYWdlTGlicmFyeShpbWFnZSlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydzZWxlY3RlZEltYWdlJzogc2VsZWN0ZWRJbWFnZS5oYXMoaW1hZ2UudW5pcXVlSWQpfVwiXG4gICAgICAgICAgICAqbmdJZj1cImltYWdlLmFzc2V0c1swXS51cmw/LmluY2x1ZGVzKCcubXA0JylcIiBtdXRlZCBsb29wPjwvdmlkZW8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI2VtcHR5U2NyZWVuPlxuICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1jb250YWluZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwIGZsZXgtY29sdW1uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktaW1nLWNvbnRhaW5lciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzkzNTczN2MxNzQzNDExNzk4MTg4aW1hZ2UlMjAlMjg3JTI5LnBuZ1wiXG4gICAgICAgICAgYWx0PVwiXCI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1tYWluLXRleHRcIj5cbiAgICAgICAgVWgtb2ghXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dC0xXCI+XG4gICAgICAgIE5vIGltYWdlcyBoZXJlXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dC0yXCI+XG4gICAgICAgIEkgbG9va2VkIGxlZnQsIHJpZ2h04oCmIGV2ZW4gdHVybmVkIGFyb3VuZCEgU3RpbGwgbm90aGluZ1xuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -58,7 +58,7 @@ export class PricingS1Component extends BaseSection {
58
58
  }
59
59
  }
60
60
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PricingS1Component, deps: [{ token: i1.EventsService }], target: i0.ɵɵFactoryTarget.Component }); }
61
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PricingS1Component, isStandalone: true, selector: "simpo-pricing-s1", inputs: { data: "data", edit: "edit" }, usesInheritance: true, ngImport: i0, template: "<section class=\"d-flex justify-content-center\">\r\n <div class=\"pricing-options row w-100\">\r\n <div\r\n [id]=\"data?.id\" [simpoCorner]=\"style?.corners\"\r\n [simpoTranslateOnhover]=\"content?.display?.showHoverEffect\" *ngFor=\"let options of content?.listItem?.data; let i = index\"\r\n [attr.class]=\"getClass() + ' position-relative individual-options mb-2'\"\r\n [ngClass]=\"{'highlighted-option': options?.highlight?.highlighted === true}\"\r\n [ngStyle]=\"{'border': options?.highlight?.highlighted ? '3px solid ' + data?.styles?.background?.accentColor : ''}\">\r\n <div class=\"popular-tag\" [simpoCorner]=\"style?.corners\"\r\n [ngStyle]=\"{'background-color': data?.styles?.background?.accentColor}\"\r\n *ngIf=\"options?.highlight?.highlighted === true\">\r\n <simpo-text-editor [(value)]=\"options.highlight.label\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [itemIndex]=\"i\"></simpo-text-editor>\r\n </div>\r\n <div>\r\n <img loading=\"lazy\" class=\"logo-img\" *ngIf=\"content?.display?.showImage === true\" [id]=\"data?.id\"\r\n [simpoObjectPosition]=\"options.image.position\" [simpoCorner]=\"style?.corners\" [src]=\"options.image.url \"\r\n alt=\"\" loading=\"lazy\" [appImageEditor]=\"edit || false\" [imageData]=\"options?.image\" [sectionId]=\"data?.id\" [itemIndex]=\"i\"\r\n [class]=\"data?.id+(options?.image?.id || '')\">\r\n <div class=\"heading-small\">\r\n <simpo-text-editor [(value)]=\"options.inputText[0].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"0\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[0]?.isRTE\"></simpo-text-editor>\r\n </div>\r\n <div class=\"heading-large price\">\r\n <simpo-text-editor [(value)]=\"options.inputText[2].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"2\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[2]?.isRTE\"></simpo-text-editor>\r\n </div>\r\n <div class=\"body-desc description\" *ngIf=\"content?.display?.showContent === true\">\r\n <simpo-text-editor [(value)]=\"options.inputText[1].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"1\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[1]?.isRTE\"></simpo-text-editor>\r\n </div>\r\n <div class=\"body-desc mb-3\">\r\n <simpo-text-editor [(value)]=\"options.inputText[3].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"3\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[3]?.isRTE\"></simpo-text-editor>\r\n </div>\r\n <div class=\"body-desc content-options\" *ngIf=\"content?.display?.showIncludeditems\">\r\n <div class=\"d-flex gap-15\" *ngFor=\"let content of options.additionalData; let j = index\">\r\n <div class=\"d-flex align-items-center\">\r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#EEF0FC\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M17.0965 7.39004L9.9365 14.3L8.0365 12.27C7.6865 11.94 7.1365 11.92 6.7365 12.2C6.3465 12.49 6.2365 13 6.4765 13.41L8.7265 17.07C8.9465 17.41 9.3265 17.62 9.7565 17.62C10.1665 17.62 10.5565 17.41 10.7765 17.07C11.1365 16.6 18.0065 8.41004 18.0065 8.41004C18.9065 7.49004 17.8165 6.68004 17.0965 7.38004V7.39004Z\"\r\n fill=\"#4C63D9\" />\r\n </svg> -->\r\n </div>\r\n <simpo-text-editor [(value)]=\"content.content\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"btn mt-4 p-0 border-0 mb-3\" *ngIf=\"content?.display?.showButton === true\">\r\n <!-- <button class=\"button\" simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [buttonStyle]=\"button?.styles\" [color]=\"data?.styles?.background?.accentColor\" [backgroundInfo]=\"style?.background\">{{options?.button?.label}}</button> -->\r\n <button class=\"custom-btn d-flex gap-1\" [buttonData]=\"options?.button\" [buttonStyle]=\"button?.styles\"\r\n simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [sectionId]=\"data?.id\"\r\n [color]=\"data?.styles?.background?.accentColor\" [backgroundInfo]=\"data?.styles?.background\"\r\n [appButtonEditor]=\"edit ?? false\" [buttonId]=\"getButtonId()\" [itemIndex]=\"i\" (click)=\"redirectTo(options?.button)\"\r\n [class.flex-row-reverse]=\"options?.button?.icon?.iconPosition === 'left'\">\r\n <div>{{options?.button?.label}}</div>\r\n <div class=\"btn-icon\" *ngIf=\"options?.button?.showIcon\" [ngStyle]=\"{\r\n 'background': button?.styles?.type == 'Text' ? button?.styles?.background : button?.styles?.textColor,\r\n 'mask-image': 'url(' + options?.button?.icon?.url + ')',\r\n 'mask-repeat': 'no-repeat',\r\n 'mask-size': 'cover',\r\n 'width': '25px',\r\n 'height': '25px',\r\n }\"></div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</section>", styles: [".pricing-options{justify-content:center;gap:15px}.individual-options{border:1px solid #80808057}.highlighted-option{box-shadow:0 0 10px #0000004d}.logo-img{width:85px;height:85px;margin-top:1rem}.img_icon{width:25px;height:25px}.button{font-size:17px!important;padding:.75rem 0}.custom-btn{padding:6px;font-size:16px!important;font-weight:600}.popular-tag{position:absolute;top:0;right:-2px;padding:1px 20px 3px;border-top-left-radius:0!important;border-bottom-right-radius:0!important}@media only screen and (max-width: 475px){.pricing-options{flex-direction:column}.popular-tag{max-width:60%}.individual-options{width:100%;margin-top:1rem;margin-bottom:1rem;padding:2rem}.col-4{width:100%!important}}.col-4{width:30%!important}\n"], dependencies: [{ kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "isRTE", "sectionId", "label", "type", "inputTextIndex", "itemIndex"], outputs: ["valueChange"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "directive", type: CornerDirective, selector: "[simpoCorner]", inputs: ["simpoCorner"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: ImageEditorDirective, selector: "[appImageEditor]", inputs: ["appImageEditor", "imageData", "sectionId", "showIcon", "iconData", "itemIndex"] }, { kind: "directive", type: ObjectPositionDirective, selector: "[simpoObjectPosition]", inputs: ["simpoObjectPosition"] }, { kind: "directive", type: ButtonEditorDirective, selector: "button[appButtonEditor]", inputs: ["appButtonEditor", "buttonData", "buttonStyle", "backgroundInfo", "sectionId", "buttonId", "itemIndex"] }, { kind: "directive", type: TranslateOnhoverDirective, selector: "[simpoTranslateOnhover]", inputs: ["simpoTranslateOnhover"] }] }); }
61
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PricingS1Component, isStandalone: true, selector: "simpo-pricing-s1", inputs: { data: "data", edit: "edit" }, usesInheritance: true, ngImport: i0, template: "<section class=\"d-flex justify-content-center\">\n <div class=\"pricing-options row w-100\">\n <div\n [id]=\"data?.id\" [simpoCorner]=\"style?.corners\"\n [simpoTranslateOnhover]=\"content?.display?.showHoverEffect\" *ngFor=\"let options of content?.listItem?.data; let i = index\"\n [attr.class]=\"getClass() + ' position-relative individual-options mb-2'\"\n [ngClass]=\"{'highlighted-option': options?.highlight?.highlighted === true}\"\n [ngStyle]=\"{'border': options?.highlight?.highlighted ? '3px solid ' + data?.styles?.background?.accentColor : ''}\">\n <div class=\"popular-tag\" [simpoCorner]=\"style?.corners\"\n [ngStyle]=\"{'background-color': data?.styles?.background?.accentColor}\"\n *ngIf=\"options?.highlight?.highlighted === true\">\n <simpo-text-editor [(value)]=\"options.highlight.label\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [itemIndex]=\"i\"></simpo-text-editor>\n </div>\n <div>\n <img loading=\"lazy\" class=\"logo-img\" *ngIf=\"content?.display?.showImage === true\" [id]=\"data?.id\"\n [simpoObjectPosition]=\"options.image.position\" [simpoCorner]=\"style?.corners\" [src]=\"options.image.url \"\n alt=\"\" loading=\"lazy\" [appImageEditor]=\"edit || false\" [imageData]=\"options?.image\" [sectionId]=\"data?.id\" [itemIndex]=\"i\"\n [class]=\"data?.id+(options?.image?.id || '')\">\n <div class=\"heading-small\">\n <simpo-text-editor [(value)]=\"options.inputText[0].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"0\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[0]?.isRTE\"></simpo-text-editor>\n </div>\n <div class=\"heading-large price\">\n <simpo-text-editor [(value)]=\"options.inputText[2].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"2\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[2]?.isRTE\"></simpo-text-editor>\n </div>\n <div class=\"body-desc description\" *ngIf=\"content?.display?.showContent === true\">\n <simpo-text-editor [(value)]=\"options.inputText[1].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"1\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[1]?.isRTE\"></simpo-text-editor>\n </div>\n <div class=\"body-desc mb-3\">\n <simpo-text-editor [(value)]=\"options.inputText[3].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"3\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[3]?.isRTE\"></simpo-text-editor>\n </div>\n <div class=\"body-desc content-options\" *ngIf=\"content?.display?.showIncludeditems\">\n <div class=\"d-flex gap-15\" *ngFor=\"let content of options.additionalData; let j = index\">\n <div class=\"d-flex align-items-center\">\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#EEF0FC\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M17.0965 7.39004L9.9365 14.3L8.0365 12.27C7.6865 11.94 7.1365 11.92 6.7365 12.2C6.3465 12.49 6.2365 13 6.4765 13.41L8.7265 17.07C8.9465 17.41 9.3265 17.62 9.7565 17.62C10.1665 17.62 10.5565 17.41 10.7765 17.07C11.1365 16.6 18.0065 8.41004 18.0065 8.41004C18.9065 7.49004 17.8165 6.68004 17.0965 7.38004V7.39004Z\"\n fill=\"#4C63D9\" />\n </svg> -->\n </div>\n <simpo-text-editor [(value)]=\"content.content\" [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n </div>\n </div>\n <div class=\"btn mt-4 p-0 border-0 mb-3\" *ngIf=\"content?.display?.showButton === true\">\n <!-- <button class=\"button\" simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [buttonStyle]=\"button?.styles\" [color]=\"data?.styles?.background?.accentColor\" [backgroundInfo]=\"style?.background\">{{options?.button?.label}}</button> -->\n <button class=\"custom-btn d-flex gap-1\" [buttonData]=\"options?.button\" [buttonStyle]=\"button?.styles\"\n simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [sectionId]=\"data?.id\"\n [color]=\"data?.styles?.background?.accentColor\" [backgroundInfo]=\"data?.styles?.background\"\n [appButtonEditor]=\"edit ?? false\" [buttonId]=\"getButtonId()\" [itemIndex]=\"i\" (click)=\"redirectTo(options?.button)\"\n [class.flex-row-reverse]=\"options?.button?.icon?.iconPosition === 'left'\">\n <div>{{options?.button?.label}}</div>\n <div class=\"btn-icon\" *ngIf=\"options?.button?.showIcon\" [ngStyle]=\"{\n 'background': button?.styles?.type == 'Text' ? button?.styles?.background : button?.styles?.textColor,\n 'mask-image': 'url(' + options?.button?.icon?.url + ')',\n 'mask-repeat': 'no-repeat',\n 'mask-size': 'cover',\n 'width': '25px',\n 'height': '25px',\n }\"></div>\n </button>\n </div>\n </div>\n </div>\n</section>", styles: [".pricing-options{justify-content:center;gap:15px}.individual-options{border:1px solid #80808057}.highlighted-option{box-shadow:0 0 10px #0000004d}.logo-img{width:85px;height:85px;margin-top:1rem}.img_icon{width:25px;height:25px}.button{font-size:17px!important;padding:.75rem 0}.custom-btn{padding:6px;font-size:16px!important;font-weight:600}.popular-tag{position:absolute;top:0;right:-2px;padding:1px 20px 3px;border-top-left-radius:0!important;border-bottom-right-radius:0!important}@media only screen and (max-width: 475px){.pricing-options{flex-direction:column}.popular-tag{max-width:60%}.individual-options{width:100%;margin-top:1rem;margin-bottom:1rem;padding:2rem}.col-4{width:100%!important}}.col-4{width:30%!important}\n"], dependencies: [{ kind: "component", type: TextEditorComponent, selector: "simpo-text-editor", inputs: ["value", "editable", "isRTE", "sectionId", "label", "type", "inputTextIndex", "itemIndex"], outputs: ["valueChange"] }, { kind: "directive", type: ButtonDirectiveDirective, selector: "[simpoButtonDirective]", inputs: ["buttonStyle", "color", "scrollValue", "backgroundInfo"] }, { kind: "directive", type: CornerDirective, selector: "[simpoCorner]", inputs: ["simpoCorner"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: ImageEditorDirective, selector: "[appImageEditor]", inputs: ["appImageEditor", "imageData", "sectionId", "showIcon", "iconData", "itemIndex"] }, { kind: "directive", type: ObjectPositionDirective, selector: "[simpoObjectPosition]", inputs: ["simpoObjectPosition"] }, { kind: "directive", type: ButtonEditorDirective, selector: "button[appButtonEditor]", inputs: ["appButtonEditor", "buttonData", "buttonStyle", "backgroundInfo", "sectionId", "buttonId", "itemIndex"] }, { kind: "directive", type: TranslateOnhoverDirective, selector: "[simpoTranslateOnhover]", inputs: ["simpoTranslateOnhover"] }] }); }
62
62
  }
63
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PricingS1Component, decorators: [{
64
64
  type: Component,
@@ -74,10 +74,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
74
74
  SimpoButtonComponent,
75
75
  ButtonEditorDirective,
76
76
  TranslateOnhoverDirective
77
- ], template: "<section class=\"d-flex justify-content-center\">\r\n <div class=\"pricing-options row w-100\">\r\n <div\r\n [id]=\"data?.id\" [simpoCorner]=\"style?.corners\"\r\n [simpoTranslateOnhover]=\"content?.display?.showHoverEffect\" *ngFor=\"let options of content?.listItem?.data; let i = index\"\r\n [attr.class]=\"getClass() + ' position-relative individual-options mb-2'\"\r\n [ngClass]=\"{'highlighted-option': options?.highlight?.highlighted === true}\"\r\n [ngStyle]=\"{'border': options?.highlight?.highlighted ? '3px solid ' + data?.styles?.background?.accentColor : ''}\">\r\n <div class=\"popular-tag\" [simpoCorner]=\"style?.corners\"\r\n [ngStyle]=\"{'background-color': data?.styles?.background?.accentColor}\"\r\n *ngIf=\"options?.highlight?.highlighted === true\">\r\n <simpo-text-editor [(value)]=\"options.highlight.label\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [itemIndex]=\"i\"></simpo-text-editor>\r\n </div>\r\n <div>\r\n <img loading=\"lazy\" class=\"logo-img\" *ngIf=\"content?.display?.showImage === true\" [id]=\"data?.id\"\r\n [simpoObjectPosition]=\"options.image.position\" [simpoCorner]=\"style?.corners\" [src]=\"options.image.url \"\r\n alt=\"\" loading=\"lazy\" [appImageEditor]=\"edit || false\" [imageData]=\"options?.image\" [sectionId]=\"data?.id\" [itemIndex]=\"i\"\r\n [class]=\"data?.id+(options?.image?.id || '')\">\r\n <div class=\"heading-small\">\r\n <simpo-text-editor [(value)]=\"options.inputText[0].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"0\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[0]?.isRTE\"></simpo-text-editor>\r\n </div>\r\n <div class=\"heading-large price\">\r\n <simpo-text-editor [(value)]=\"options.inputText[2].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"2\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[2]?.isRTE\"></simpo-text-editor>\r\n </div>\r\n <div class=\"body-desc description\" *ngIf=\"content?.display?.showContent === true\">\r\n <simpo-text-editor [(value)]=\"options.inputText[1].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"1\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[1]?.isRTE\"></simpo-text-editor>\r\n </div>\r\n <div class=\"body-desc mb-3\">\r\n <simpo-text-editor [(value)]=\"options.inputText[3].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"3\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[3]?.isRTE\"></simpo-text-editor>\r\n </div>\r\n <div class=\"body-desc content-options\" *ngIf=\"content?.display?.showIncludeditems\">\r\n <div class=\"d-flex gap-15\" *ngFor=\"let content of options.additionalData; let j = index\">\r\n <div class=\"d-flex align-items-center\">\r\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#EEF0FC\" />\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M17.0965 7.39004L9.9365 14.3L8.0365 12.27C7.6865 11.94 7.1365 11.92 6.7365 12.2C6.3465 12.49 6.2365 13 6.4765 13.41L8.7265 17.07C8.9465 17.41 9.3265 17.62 9.7565 17.62C10.1665 17.62 10.5565 17.41 10.7765 17.07C11.1365 16.6 18.0065 8.41004 18.0065 8.41004C18.9065 7.49004 17.8165 6.68004 17.0965 7.38004V7.39004Z\"\r\n fill=\"#4C63D9\" />\r\n </svg> -->\r\n </div>\r\n <simpo-text-editor [(value)]=\"content.content\" [editable]=\"edit || false\"></simpo-text-editor>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"btn mt-4 p-0 border-0 mb-3\" *ngIf=\"content?.display?.showButton === true\">\r\n <!-- <button class=\"button\" simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [buttonStyle]=\"button?.styles\" [color]=\"data?.styles?.background?.accentColor\" [backgroundInfo]=\"style?.background\">{{options?.button?.label}}</button> -->\r\n <button class=\"custom-btn d-flex gap-1\" [buttonData]=\"options?.button\" [buttonStyle]=\"button?.styles\"\r\n simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [sectionId]=\"data?.id\"\r\n [color]=\"data?.styles?.background?.accentColor\" [backgroundInfo]=\"data?.styles?.background\"\r\n [appButtonEditor]=\"edit ?? false\" [buttonId]=\"getButtonId()\" [itemIndex]=\"i\" (click)=\"redirectTo(options?.button)\"\r\n [class.flex-row-reverse]=\"options?.button?.icon?.iconPosition === 'left'\">\r\n <div>{{options?.button?.label}}</div>\r\n <div class=\"btn-icon\" *ngIf=\"options?.button?.showIcon\" [ngStyle]=\"{\r\n 'background': button?.styles?.type == 'Text' ? button?.styles?.background : button?.styles?.textColor,\r\n 'mask-image': 'url(' + options?.button?.icon?.url + ')',\r\n 'mask-repeat': 'no-repeat',\r\n 'mask-size': 'cover',\r\n 'width': '25px',\r\n 'height': '25px',\r\n }\"></div>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</section>", styles: [".pricing-options{justify-content:center;gap:15px}.individual-options{border:1px solid #80808057}.highlighted-option{box-shadow:0 0 10px #0000004d}.logo-img{width:85px;height:85px;margin-top:1rem}.img_icon{width:25px;height:25px}.button{font-size:17px!important;padding:.75rem 0}.custom-btn{padding:6px;font-size:16px!important;font-weight:600}.popular-tag{position:absolute;top:0;right:-2px;padding:1px 20px 3px;border-top-left-radius:0!important;border-bottom-right-radius:0!important}@media only screen and (max-width: 475px){.pricing-options{flex-direction:column}.popular-tag{max-width:60%}.individual-options{width:100%;margin-top:1rem;margin-bottom:1rem;padding:2rem}.col-4{width:100%!important}}.col-4{width:30%!important}\n"] }]
77
+ ], template: "<section class=\"d-flex justify-content-center\">\n <div class=\"pricing-options row w-100\">\n <div\n [id]=\"data?.id\" [simpoCorner]=\"style?.corners\"\n [simpoTranslateOnhover]=\"content?.display?.showHoverEffect\" *ngFor=\"let options of content?.listItem?.data; let i = index\"\n [attr.class]=\"getClass() + ' position-relative individual-options mb-2'\"\n [ngClass]=\"{'highlighted-option': options?.highlight?.highlighted === true}\"\n [ngStyle]=\"{'border': options?.highlight?.highlighted ? '3px solid ' + data?.styles?.background?.accentColor : ''}\">\n <div class=\"popular-tag\" [simpoCorner]=\"style?.corners\"\n [ngStyle]=\"{'background-color': data?.styles?.background?.accentColor}\"\n *ngIf=\"options?.highlight?.highlighted === true\">\n <simpo-text-editor [(value)]=\"options.highlight.label\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [itemIndex]=\"i\"></simpo-text-editor>\n </div>\n <div>\n <img loading=\"lazy\" class=\"logo-img\" *ngIf=\"content?.display?.showImage === true\" [id]=\"data?.id\"\n [simpoObjectPosition]=\"options.image.position\" [simpoCorner]=\"style?.corners\" [src]=\"options.image.url \"\n alt=\"\" loading=\"lazy\" [appImageEditor]=\"edit || false\" [imageData]=\"options?.image\" [sectionId]=\"data?.id\" [itemIndex]=\"i\"\n [class]=\"data?.id+(options?.image?.id || '')\">\n <div class=\"heading-small\">\n <simpo-text-editor [(value)]=\"options.inputText[0].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"0\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[0]?.isRTE\"></simpo-text-editor>\n </div>\n <div class=\"heading-large price\">\n <simpo-text-editor [(value)]=\"options.inputText[2].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"2\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[2]?.isRTE\"></simpo-text-editor>\n </div>\n <div class=\"body-desc description\" *ngIf=\"content?.display?.showContent === true\">\n <simpo-text-editor [(value)]=\"options.inputText[1].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"1\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[1]?.isRTE\"></simpo-text-editor>\n </div>\n <div class=\"body-desc mb-3\">\n <simpo-text-editor [(value)]=\"options.inputText[3].value\" [editable]=\"edit || false\" [sectionId]=\"data?.id\" [inputTextIndex]=\"3\" [itemIndex]=\"i\" [isRTE]=\"options.inputText[3]?.isRTE\"></simpo-text-editor>\n </div>\n <div class=\"body-desc content-options\" *ngIf=\"content?.display?.showIncludeditems\">\n <div class=\"d-flex gap-15\" *ngFor=\"let content of options.additionalData; let j = index\">\n <div class=\"d-flex align-items-center\">\n <!-- <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <rect width=\"24\" height=\"24\" rx=\"12\" fill=\"#EEF0FC\" />\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M17.0965 7.39004L9.9365 14.3L8.0365 12.27C7.6865 11.94 7.1365 11.92 6.7365 12.2C6.3465 12.49 6.2365 13 6.4765 13.41L8.7265 17.07C8.9465 17.41 9.3265 17.62 9.7565 17.62C10.1665 17.62 10.5565 17.41 10.7765 17.07C11.1365 16.6 18.0065 8.41004 18.0065 8.41004C18.9065 7.49004 17.8165 6.68004 17.0965 7.38004V7.39004Z\"\n fill=\"#4C63D9\" />\n </svg> -->\n </div>\n <simpo-text-editor [(value)]=\"content.content\" [editable]=\"edit || false\"></simpo-text-editor>\n </div>\n </div>\n </div>\n <div class=\"btn mt-4 p-0 border-0 mb-3\" *ngIf=\"content?.display?.showButton === true\">\n <!-- <button class=\"button\" simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [buttonStyle]=\"button?.styles\" [color]=\"data?.styles?.background?.accentColor\" [backgroundInfo]=\"style?.background\">{{options?.button?.label}}</button> -->\n <button class=\"custom-btn d-flex gap-1\" [buttonData]=\"options?.button\" [buttonStyle]=\"button?.styles\"\n simpoButtonDirective [id]=\"data?.id+(button?.id || '')\" [sectionId]=\"data?.id\"\n [color]=\"data?.styles?.background?.accentColor\" [backgroundInfo]=\"data?.styles?.background\"\n [appButtonEditor]=\"edit ?? false\" [buttonId]=\"getButtonId()\" [itemIndex]=\"i\" (click)=\"redirectTo(options?.button)\"\n [class.flex-row-reverse]=\"options?.button?.icon?.iconPosition === 'left'\">\n <div>{{options?.button?.label}}</div>\n <div class=\"btn-icon\" *ngIf=\"options?.button?.showIcon\" [ngStyle]=\"{\n 'background': button?.styles?.type == 'Text' ? button?.styles?.background : button?.styles?.textColor,\n 'mask-image': 'url(' + options?.button?.icon?.url + ')',\n 'mask-repeat': 'no-repeat',\n 'mask-size': 'cover',\n 'width': '25px',\n 'height': '25px',\n }\"></div>\n </button>\n </div>\n </div>\n </div>\n</section>", styles: [".pricing-options{justify-content:center;gap:15px}.individual-options{border:1px solid #80808057}.highlighted-option{box-shadow:0 0 10px #0000004d}.logo-img{width:85px;height:85px;margin-top:1rem}.img_icon{width:25px;height:25px}.button{font-size:17px!important;padding:.75rem 0}.custom-btn{padding:6px;font-size:16px!important;font-weight:600}.popular-tag{position:absolute;top:0;right:-2px;padding:1px 20px 3px;border-top-left-radius:0!important;border-bottom-right-radius:0!important}@media only screen and (max-width: 475px){.pricing-options{flex-direction:column}.popular-tag{max-width:60%}.individual-options{width:100%;margin-top:1rem;margin-bottom:1rem;padding:2rem}.col-4{width:100%!important}}.col-4{width:30%!important}\n"] }]
78
78
  }], ctorParameters: () => [{ type: i1.EventsService }], propDecorators: { data: [{
79
79
  type: Input
80
80
  }], edit: [{
81
81
  type: Input
82
82
  }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2luZy1zMS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3ByaWNpbmctczEvcHJpY2luZy1zMS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3ByaWNpbmctczEvcHJpY2luZy1zMS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLFdBQVcsTUFBTSw0QkFBNEIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQXNCeEYsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQVc7SUFPakQsWUFBb0IsYUFBNEI7UUFDOUMsS0FBSyxFQUFFLENBQUM7UUFEVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUVoRCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVztRQUVULElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHO1lBQzFCLE9BQU07UUFDUixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFDRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDOUIsQ0FBQztJQUNELFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWM7WUFDeEMsT0FBTztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUNELFFBQVE7UUFFTixJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxFQUFFLENBQUM7WUFDN0IsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQzsrR0FoRFUsa0JBQWtCO21HQUFsQixrQkFBa0IsMklDckMvQiw4cktBZ0VVLHF4QkQzQ04sbUJBQW1CLDZMQUNuQix3QkFBd0Isc0lBRXhCLGVBQWUsa0ZBQ2YsWUFBWSxtYkFDWixvQkFBb0Isd0pBRXBCLHVCQUF1QixtR0FFdkIscUJBQXFCLHNMQUNyQix5QkFBeUI7OzRGQU1oQixrQkFBa0I7a0JBcEI5QixTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ1AsbUJBQW1CO3dCQUNuQix3QkFBd0I7d0JBQ3hCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQix5QkFBeUI7cUJBRTFCO2tGQUtRLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi8uLi9zZWN0aW9ucy9CYXNlU2VjdGlvbic7XHJcbmltcG9ydCB7IFByaWNpbmdTZWN0aW9uQ29udGVudE1vZGFsLCBQcmljaW5nU2VjdGlvbk1vZGFsLCBQcmljaW5nU2VjdGlvblN0eWxlc01vZGVsIH0gZnJvbSAnLi4vLi4vc2VjdGlvbnMvcHJpY2luZy1zZWN0aW9uL3ByaWNpbmctc2VjdGlvbi5tb2RhbCc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcclxuaW1wb3J0IHsgVGV4dEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9idXR0b24tZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvbG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvcm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb3JuZXItZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW1hZ2VEaXJlY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaW1hZ2UtZGlyZWN0aXZlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE9iamVjdFBvc2l0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2ltYWdlLXBvc2l0aW9uLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEltYWdlRWRpdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2ltYWdlLWVkaXRvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBTaW1wb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL3NpbXBvLWJ1dHRvbi9zaW1wby1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnV0dG9uRWRpdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1lZGl0b3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlT25ob3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS90cmFuc2xhdGUtb25ob3Zlci5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1wcmljaW5nLXMxJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIFRleHRFZGl0b3JDb21wb25lbnQsXHJcbiAgICBCdXR0b25EaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBDb2xvckRpcmVjdGl2ZSxcclxuICAgIENvcm5lckRpcmVjdGl2ZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEltYWdlRWRpdG9yRGlyZWN0aXZlLFxyXG4gICAgSW1hZ2VEaXJlY3RpdmVEaXJlY3RpdmUsXHJcbiAgICBPYmplY3RQb3NpdGlvbkRpcmVjdGl2ZSxcclxuICAgIFNpbXBvQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgQnV0dG9uRWRpdG9yRGlyZWN0aXZlLFxyXG4gICAgVHJhbnNsYXRlT25ob3ZlckRpcmVjdGl2ZVxyXG5cclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmljaW5nLXMxLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vcHJpY2luZy1zMS5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJpY2luZ1MxQ29tcG9uZW50IGV4dGVuZHMgQmFzZVNlY3Rpb24ge1xyXG4gIEBJbnB1dCgpIGRhdGE/OiBQcmljaW5nU2VjdGlvbk1vZGFsO1xyXG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuO1xyXG4gIGNvbnRlbnQ/OiBQcmljaW5nU2VjdGlvbkNvbnRlbnRNb2RhbDtcclxuICBzdHlsZT86IFByaWNpbmdTZWN0aW9uU3R5bGVzTW9kZWw7XHJcbiAgYnV0dG9uPzogQnV0dG9uTW9kZWw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2V2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jb250ZW50ID0gdGhpcy5kYXRhPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdHlsZSA9IHRoaXMuZGF0YT8uc3R5bGVzO1xyXG4gICAgdGhpcy5idXR0b24gPSB0aGlzLmRhdGE/LmFjdGlvbi5idXR0b25zWzBdO1xyXG4gIH1cclxuXHJcbiAgZWRpdFNlY3Rpb24oKSB7XHJcblxyXG4gICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NSlcclxuICAgICAgcmV0dXJuXHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UudG9nZ2xlRWRpdG9yRXZlbnQuZW1pdChmYWxzZSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmVkaXRTZWN0aW9uLmVtaXQoeyBkYXRhOiB0aGlzLmRhdGEgfSk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuICBnZXRCdXR0b25JZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmJ1dHRvbj8uaWQgPz8gXCJcIlxyXG4gIH1cclxuICByZWRpcmVjdFRvKGRhdGE6IGFueSkge1xyXG4gICAgaWYgKCFkYXRhPy5wYWdlSWQgJiYgIWRhdGE/LnJlZGlyZWN0aW9uVXJsKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UuYnV0dG9uUmVkaXJlY3Rpb24uZW1pdCh7IGRhdGE6IGRhdGEgfSk7XHJcbiAgfVxyXG4gIGdldENsYXNzKCkge1xyXG5cclxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzUpIHtcclxuICAgICAgcmV0dXJuICdjb2wtMTInO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29udGVudD8ubGlzdEl0ZW0/LmRhdGE/Lmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICByZXR1cm4gJ2NvbC0xMic7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29udGVudD8ubGlzdEl0ZW0/LmRhdGE/Lmxlbmd0aCA9PT0gMikge1xyXG4gICAgICByZXR1cm4gJ2NvbC01JztcclxuICAgIH0gZWxzZSBpZiAodGhpcy5jb250ZW50Py5saXN0SXRlbT8uZGF0YT8ubGVuZ3RoID09PSAzKSB7XHJcbiAgICAgIHJldHVybiAnY29sLTQnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdjb2wtNCc7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwicHJpY2luZy1vcHRpb25zIHJvdyB3LTEwMFwiPlxyXG4gICAgPGRpdlxyXG4gICAgICAgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlPy5jb3JuZXJzXCJcclxuICAgICAgW3NpbXBvVHJhbnNsYXRlT25ob3Zlcl09XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SG92ZXJFZmZlY3RcIiAqbmdGb3I9XCJsZXQgb3B0aW9ucyBvZiBjb250ZW50Py5saXN0SXRlbT8uZGF0YTsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgIFthdHRyLmNsYXNzXT1cImdldENsYXNzKCkgKyAnIHBvc2l0aW9uLXJlbGF0aXZlIGluZGl2aWR1YWwtb3B0aW9ucyBtYi0yJ1wiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsnaGlnaGxpZ2h0ZWQtb3B0aW9uJzogb3B0aW9ucz8uaGlnaGxpZ2h0Py5oaWdobGlnaHRlZCA9PT0gdHJ1ZX1cIlxyXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlcic6IG9wdGlvbnM/LmhpZ2hsaWdodD8uaGlnaGxpZ2h0ZWQgID8gJzNweCBzb2xpZCAnICsgZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvciA6ICcnfVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicG9wdWxhci10YWdcIiBbc2ltcG9Db3JuZXJdPVwic3R5bGU/LmNvcm5lcnNcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IGRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3J9XCJcclxuICAgICAgICAqbmdJZj1cIm9wdGlvbnM/LmhpZ2hsaWdodD8uaGlnaGxpZ2h0ZWQgPT09IHRydWVcIj5cclxuICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwib3B0aW9ucy5oaWdobGlnaHQubGFiZWxcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbaXRlbUluZGV4XT1cImlcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgY2xhc3M9XCJsb2dvLWltZ1wiICpuZ0lmPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0ltYWdlID09PSB0cnVlXCIgW2lkXT1cImRhdGE/LmlkXCJcclxuICAgICAgICAgIFtzaW1wb09iamVjdFBvc2l0aW9uXT1cIm9wdGlvbnMuaW1hZ2UucG9zaXRpb25cIiBbc2ltcG9Db3JuZXJdPVwic3R5bGU/LmNvcm5lcnNcIiBbc3JjXT1cIm9wdGlvbnMuaW1hZ2UudXJsIFwiXHJcbiAgICAgICAgICBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiIFthcHBJbWFnZUVkaXRvcl09XCJlZGl0IHx8IGZhbHNlXCIgW2ltYWdlRGF0YV09XCJvcHRpb25zPy5pbWFnZVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbaXRlbUluZGV4XT1cImlcIlxyXG4gICAgICAgICAgW2NsYXNzXT1cImRhdGE/LmlkKyhvcHRpb25zPy5pbWFnZT8uaWQgfHwgJycpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctc21hbGxcIj5cclxuICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJvcHRpb25zLmlucHV0VGV4dFswXS52YWx1ZVwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtpbnB1dFRleHRJbmRleF09XCIwXCIgW2l0ZW1JbmRleF09XCJpXCIgW2lzUlRFXT1cIm9wdGlvbnMuaW5wdXRUZXh0WzBdPy5pc1JURVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbGFyZ2UgcHJpY2VcIj5cclxuICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJvcHRpb25zLmlucHV0VGV4dFsyXS52YWx1ZVwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtpbnB1dFRleHRJbmRleF09XCIyXCIgW2l0ZW1JbmRleF09XCJpXCIgW2lzUlRFXT1cIm9wdGlvbnMuaW5wdXRUZXh0WzJdPy5pc1JURVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktZGVzYyBkZXNjcmlwdGlvblwiICpuZ0lmPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0NvbnRlbnQgPT09IHRydWVcIj5cclxuICAgICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJvcHRpb25zLmlucHV0VGV4dFsxXS52YWx1ZVwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtpbnB1dFRleHRJbmRleF09XCIxXCIgW2l0ZW1JbmRleF09XCJpXCIgW2lzUlRFXT1cIm9wdGlvbnMuaW5wdXRUZXh0WzFdPy5pc1JURVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktZGVzYyBtYi0zXCI+XHJcbiAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwib3B0aW9ucy5pbnB1dFRleHRbM10udmFsdWVcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbaW5wdXRUZXh0SW5kZXhdPVwiM1wiIFtpdGVtSW5kZXhdPVwiaVwiIFtpc1JURV09XCJvcHRpb25zLmlucHV0VGV4dFszXT8uaXNSVEVcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib2R5LWRlc2MgY29udGVudC1vcHRpb25zXCIgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SW5jbHVkZWRpdGVtc1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMTVcIiAqbmdGb3I9XCJsZXQgY29udGVudCBvZiBvcHRpb25zLmFkZGl0aW9uYWxEYXRhOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPCEtLSA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHJ4PVwiMTJcIiBmaWxsPVwiI0VFRjBGQ1wiIC8+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXHJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuMDk2NSA3LjM5MDA0TDkuOTM2NSAxNC4zTDguMDM2NSAxMi4yN0M3LjY4NjUgMTEuOTQgNy4xMzY1IDExLjkyIDYuNzM2NSAxMi4yQzYuMzQ2NSAxMi40OSA2LjIzNjUgMTMgNi40NzY1IDEzLjQxTDguNzI2NSAxNy4wN0M4Ljk0NjUgMTcuNDEgOS4zMjY1IDE3LjYyIDkuNzU2NSAxNy42MkMxMC4xNjY1IDE3LjYyIDEwLjU1NjUgMTcuNDEgMTAuNzc2NSAxNy4wN0MxMS4xMzY1IDE2LjYgMTguMDA2NSA4LjQxMDA0IDE4LjAwNjUgOC40MTAwNEMxOC45MDY1IDcuNDkwMDQgMTcuODE2NSA2LjY4MDA0IDE3LjA5NjUgNy4zODAwNFY3LjM5MDA0WlwiXHJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNEM2M0Q5XCIgLz5cclxuICAgICAgICAgICAgICA8L3N2Zz4gLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwiY29udGVudC5jb250ZW50XCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYnRuIG10LTQgcC0wIGJvcmRlci0wIG1iLTNcIiAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXk/LnNob3dCdXR0b24gPT09IHRydWVcIj5cclxuICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrKGJ1dHRvbj8uaWQgfHwgJycpXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCIgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiBbYmFja2dyb3VuZEluZm9dPVwic3R5bGU/LmJhY2tncm91bmRcIj57e29wdGlvbnM/LmJ1dHRvbj8ubGFiZWx9fTwvYnV0dG9uPiAtLT5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY3VzdG9tLWJ0biBkLWZsZXggZ2FwLTFcIiBbYnV0dG9uRGF0YV09XCJvcHRpb25zPy5idXR0b25cIiBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uPy5zdHlsZXNcIlxyXG4gICAgICAgICAgc2ltcG9CdXR0b25EaXJlY3RpdmUgW2lkXT1cImRhdGE/LmlkKyhidXR0b24/LmlkIHx8ICcnKVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIlxyXG4gICAgICAgICAgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiBbYmFja2dyb3VuZEluZm9dPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kXCJcclxuICAgICAgICAgIFthcHBCdXR0b25FZGl0b3JdPVwiZWRpdCA/PyBmYWxzZVwiIFtidXR0b25JZF09XCJnZXRCdXR0b25JZCgpXCIgW2l0ZW1JbmRleF09XCJpXCIgKGNsaWNrKT1cInJlZGlyZWN0VG8ob3B0aW9ucz8uYnV0dG9uKVwiXHJcbiAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJvcHRpb25zPy5idXR0b24/Lmljb24/Lmljb25Qb3NpdGlvbiA9PT0gJ2xlZnQnXCI+XHJcbiAgICAgICAgICA8ZGl2Pnt7b3B0aW9ucz8uYnV0dG9uPy5sYWJlbH19PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWljb25cIiAqbmdJZj1cIm9wdGlvbnM/LmJ1dHRvbj8uc2hvd0ljb25cIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICdiYWNrZ3JvdW5kJzogIGJ1dHRvbj8uc3R5bGVzPy50eXBlID09ICdUZXh0JyA/IGJ1dHRvbj8uc3R5bGVzPy5iYWNrZ3JvdW5kIDogYnV0dG9uPy5zdHlsZXM/LnRleHRDb2xvcixcclxuICAgICAgICAgICAgJ21hc2staW1hZ2UnOiAndXJsKCcgKyBvcHRpb25zPy5idXR0b24/Lmljb24/LnVybCArICcpJyxcclxuICAgICAgICAgICAgJ21hc2stcmVwZWF0JzogJ25vLXJlcGVhdCcsXHJcbiAgICAgICAgICAgICdtYXNrLXNpemUnOiAnY292ZXInLFxyXG4gICAgICAgICAgICAnd2lkdGgnOiAnMjVweCcsXHJcbiAgICAgICAgICAgICdoZWlnaHQnOiAnMjVweCcsXHJcbiAgICAgICAgICB9XCI+PC9kaXY+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj4iXX0=
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2luZy1zMS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3ByaWNpbmctczEvcHJpY2luZy1zMS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL3ByaWNpbmctczEvcHJpY2luZy1zMS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLFdBQVcsTUFBTSw0QkFBNEIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQXNCeEYsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQVc7SUFPakQsWUFBb0IsYUFBNEI7UUFDOUMsS0FBSyxFQUFFLENBQUM7UUFEVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUVoRCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVztRQUVULElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHO1lBQzFCLE9BQU07UUFDUixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFDRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDOUIsQ0FBQztJQUNELFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWM7WUFDeEMsT0FBTztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUNELFFBQVE7UUFFTixJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxFQUFFLENBQUM7WUFDN0IsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQzsrR0FoRFUsa0JBQWtCO21HQUFsQixrQkFBa0IsMklDckMvQiw4aktBZ0VVLHF4QkQzQ04sbUJBQW1CLDZMQUNuQix3QkFBd0Isc0lBRXhCLGVBQWUsa0ZBQ2YsWUFBWSxtYkFDWixvQkFBb0Isd0pBRXBCLHVCQUF1QixtR0FFdkIscUJBQXFCLHNMQUNyQix5QkFBeUI7OzRGQU1oQixrQkFBa0I7a0JBcEI5QixTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1A7d0JBQ1AsbUJBQW1CO3dCQUNuQix3QkFBd0I7d0JBQ3hCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQix5QkFBeUI7cUJBRTFCO2tGQUtRLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgQmFzZVNlY3Rpb24gZnJvbSAnLi4vLi4vc2VjdGlvbnMvQmFzZVNlY3Rpb24nO1xuaW1wb3J0IHsgUHJpY2luZ1NlY3Rpb25Db250ZW50TW9kYWwsIFByaWNpbmdTZWN0aW9uTW9kYWwsIFByaWNpbmdTZWN0aW9uU3R5bGVzTW9kZWwgfSBmcm9tICcuLi8uLi9zZWN0aW9ucy9wcmljaW5nLXNlY3Rpb24vcHJpY2luZy1zZWN0aW9uLm1vZGFsJztcbmltcG9ydCB7IEJ1dHRvbk1vZGVsIH0gZnJvbSAnLi4vLi4vc3R5bGVzL3N0eWxlLm1vZGVsJztcbmltcG9ydCB7IFRleHRFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2J1dHRvbi1kaXJlY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2NvbG9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb3JuZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29ybmVyLWRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IEltYWdlRGlyZWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2ltYWdlLWRpcmVjdGl2ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT2JqZWN0UG9zaXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaW1hZ2UtcG9zaXRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEltYWdlRWRpdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2ltYWdlLWVkaXRvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2ltcG9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9zaW1wby1idXR0b24vc2ltcG8tYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25FZGl0b3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYnV0dG9uLWVkaXRvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlT25ob3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS90cmFuc2xhdGUtb25ob3Zlci5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzaW1wby1wcmljaW5nLXMxJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFRleHRFZGl0b3JDb21wb25lbnQsXG4gICAgQnV0dG9uRGlyZWN0aXZlRGlyZWN0aXZlLFxuICAgIENvbG9yRGlyZWN0aXZlLFxuICAgIENvcm5lckRpcmVjdGl2ZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW1hZ2VFZGl0b3JEaXJlY3RpdmUsXG4gICAgSW1hZ2VEaXJlY3RpdmVEaXJlY3RpdmUsXG4gICAgT2JqZWN0UG9zaXRpb25EaXJlY3RpdmUsXG4gICAgU2ltcG9CdXR0b25Db21wb25lbnQsXG4gICAgQnV0dG9uRWRpdG9yRGlyZWN0aXZlLFxuICAgIFRyYW5zbGF0ZU9uaG92ZXJEaXJlY3RpdmVcblxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJpY2luZy1zMS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wcmljaW5nLXMxLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIFByaWNpbmdTMUNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIHtcbiAgQElucHV0KCkgZGF0YT86IFByaWNpbmdTZWN0aW9uTW9kYWw7XG4gIEBJbnB1dCgpIGVkaXQ/OiBib29sZWFuO1xuICBjb250ZW50PzogUHJpY2luZ1NlY3Rpb25Db250ZW50TW9kYWw7XG4gIHN0eWxlPzogUHJpY2luZ1NlY3Rpb25TdHlsZXNNb2RlbDtcbiAgYnV0dG9uPzogQnV0dG9uTW9kZWw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29udGVudCA9IHRoaXMuZGF0YT8uY29udGVudDtcbiAgICB0aGlzLnN0eWxlID0gdGhpcy5kYXRhPy5zdHlsZXM7XG4gICAgdGhpcy5idXR0b24gPSB0aGlzLmRhdGE/LmFjdGlvbi5idXR0b25zWzBdO1xuICB9XG5cbiAgZWRpdFNlY3Rpb24oKSB7XG5cbiAgICBpZiAod2luZG93LmlubmVyV2lkdGggPD0gNDc1KVxuICAgICAgcmV0dXJuXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnRvZ2dsZUVkaXRvckV2ZW50LmVtaXQoZmFsc2UpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fZXZlbnRTZXJ2aWNlLmVkaXRTZWN0aW9uLmVtaXQoeyBkYXRhOiB0aGlzLmRhdGEgfSk7XG4gICAgfSwgMTAwKTtcbiAgfVxuICBnZXRCdXR0b25JZCgpIHtcbiAgICByZXR1cm4gdGhpcy5idXR0b24/LmlkID8/IFwiXCJcbiAgfVxuICByZWRpcmVjdFRvKGRhdGE6IGFueSkge1xuICAgIGlmICghZGF0YT8ucGFnZUlkICYmICFkYXRhPy5yZWRpcmVjdGlvblVybClcbiAgICAgIHJldHVybjtcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UuYnV0dG9uUmVkaXJlY3Rpb24uZW1pdCh7IGRhdGE6IGRhdGEgfSk7XG4gIH1cbiAgZ2V0Q2xhc3MoKSB7XG5cbiAgICBpZiAod2luZG93LmlubmVyV2lkdGggPD0gNDc1KSB7XG4gICAgICByZXR1cm4gJ2NvbC0xMic7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhPy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiAnY29sLTEyJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29udGVudD8ubGlzdEl0ZW0/LmRhdGE/Lmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0dXJuICdjb2wtNSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRlbnQ/Lmxpc3RJdGVtPy5kYXRhPy5sZW5ndGggPT09IDMpIHtcbiAgICAgIHJldHVybiAnY29sLTQnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2NvbC00JztcbiAgICB9XG4gIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgPGRpdiBjbGFzcz1cInByaWNpbmctb3B0aW9ucyByb3cgdy0xMDBcIj5cbiAgICA8ZGl2XG4gICAgICAgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQ29ybmVyXT1cInN0eWxlPy5jb3JuZXJzXCJcbiAgICAgIFtzaW1wb1RyYW5zbGF0ZU9uaG92ZXJdPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0hvdmVyRWZmZWN0XCIgKm5nRm9yPVwibGV0IG9wdGlvbnMgb2YgY29udGVudD8ubGlzdEl0ZW0/LmRhdGE7IGxldCBpID0gaW5kZXhcIlxuICAgICAgW2F0dHIuY2xhc3NdPVwiZ2V0Q2xhc3MoKSArICcgcG9zaXRpb24tcmVsYXRpdmUgaW5kaXZpZHVhbC1vcHRpb25zIG1iLTInXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsnaGlnaGxpZ2h0ZWQtb3B0aW9uJzogb3B0aW9ucz8uaGlnaGxpZ2h0Py5oaWdobGlnaHRlZCA9PT0gdHJ1ZX1cIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXInOiBvcHRpb25zPy5oaWdobGlnaHQ/LmhpZ2hsaWdodGVkICA/ICczcHggc29saWQgJyArIGRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3IgOiAnJ31cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwb3B1bGFyLXRhZ1wiIFtzaW1wb0Nvcm5lcl09XCJzdHlsZT8uY29ybmVyc1wiXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IGRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3J9XCJcbiAgICAgICAgKm5nSWY9XCJvcHRpb25zPy5oaWdobGlnaHQ/LmhpZ2hsaWdodGVkID09PSB0cnVlXCI+XG4gICAgICAgIDxzaW1wby10ZXh0LWVkaXRvciBbKHZhbHVlKV09XCJvcHRpb25zLmhpZ2hsaWdodC5sYWJlbFwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiIFtpdGVtSW5kZXhdPVwiaVwiPjwvc2ltcG8tdGV4dC1lZGl0b3I+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBjbGFzcz1cImxvZ28taW1nXCIgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SW1hZ2UgPT09IHRydWVcIiBbaWRdPVwiZGF0YT8uaWRcIlxuICAgICAgICAgIFtzaW1wb09iamVjdFBvc2l0aW9uXT1cIm9wdGlvbnMuaW1hZ2UucG9zaXRpb25cIiBbc2ltcG9Db3JuZXJdPVwic3R5bGU/LmNvcm5lcnNcIiBbc3JjXT1cIm9wdGlvbnMuaW1hZ2UudXJsIFwiXG4gICAgICAgICAgYWx0PVwiXCIgbG9hZGluZz1cImxhenlcIiBbYXBwSW1hZ2VFZGl0b3JdPVwiZWRpdCB8fCBmYWxzZVwiIFtpbWFnZURhdGFdPVwib3B0aW9ucz8uaW1hZ2VcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCIgW2l0ZW1JbmRleF09XCJpXCJcbiAgICAgICAgICBbY2xhc3NdPVwiZGF0YT8uaWQrKG9wdGlvbnM/LmltYWdlPy5pZCB8fCAnJylcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctc21hbGxcIj5cbiAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwib3B0aW9ucy5pbnB1dFRleHRbMF0udmFsdWVcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbaW5wdXRUZXh0SW5kZXhdPVwiMFwiIFtpdGVtSW5kZXhdPVwiaVwiIFtpc1JURV09XCJvcHRpb25zLmlucHV0VGV4dFswXT8uaXNSVEVcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbGFyZ2UgcHJpY2VcIj5cbiAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwib3B0aW9ucy5pbnB1dFRleHRbMl0udmFsdWVcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbaW5wdXRUZXh0SW5kZXhdPVwiMlwiIFtpdGVtSW5kZXhdPVwiaVwiIFtpc1JURV09XCJvcHRpb25zLmlucHV0VGV4dFsyXT8uaXNSVEVcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktZGVzYyBkZXNjcmlwdGlvblwiICpuZ0lmPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0NvbnRlbnQgPT09IHRydWVcIj5cbiAgICAgICAgICA8c2ltcG8tdGV4dC1lZGl0b3IgWyh2YWx1ZSldPVwib3B0aW9ucy5pbnB1dFRleHRbMV0udmFsdWVcIiBbZWRpdGFibGVdPVwiZWRpdCB8fCBmYWxzZVwiIFtzZWN0aW9uSWRdPVwiZGF0YT8uaWRcIiBbaW5wdXRUZXh0SW5kZXhdPVwiMVwiIFtpdGVtSW5kZXhdPVwiaVwiIFtpc1JURV09XCJvcHRpb25zLmlucHV0VGV4dFsxXT8uaXNSVEVcIj48L3NpbXBvLXRleHQtZWRpdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktZGVzYyBtYi0zXCI+XG4gICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cIm9wdGlvbnMuaW5wdXRUZXh0WzNdLnZhbHVlXCIgW2VkaXRhYmxlXT1cImVkaXQgfHwgZmFsc2VcIiBbc2VjdGlvbklkXT1cImRhdGE/LmlkXCIgW2lucHV0VGV4dEluZGV4XT1cIjNcIiBbaXRlbUluZGV4XT1cImlcIiBbaXNSVEVdPVwib3B0aW9ucy5pbnB1dFRleHRbM10/LmlzUlRFXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJib2R5LWRlc2MgY29udGVudC1vcHRpb25zXCIgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5Py5zaG93SW5jbHVkZWRpdGVtc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTE1XCIgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2Ygb3B0aW9ucy5hZGRpdGlvbmFsRGF0YTsgbGV0IGogPSBpbmRleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPCEtLSA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiByeD1cIjEyXCIgZmlsbD1cIiNFRUYwRkNcIiAvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuMDk2NSA3LjM5MDA0TDkuOTM2NSAxNC4zTDguMDM2NSAxMi4yN0M3LjY4NjUgMTEuOTQgNy4xMzY1IDExLjkyIDYuNzM2NSAxMi4yQzYuMzQ2NSAxMi40OSA2LjIzNjUgMTMgNi40NzY1IDEzLjQxTDguNzI2NSAxNy4wN0M4Ljk0NjUgMTcuNDEgOS4zMjY1IDE3LjYyIDkuNzU2NSAxNy42MkMxMC4xNjY1IDE3LjYyIDEwLjU1NjUgMTcuNDEgMTAuNzc2NSAxNy4wN0MxMS4xMzY1IDE2LjYgMTguMDA2NSA4LjQxMDA0IDE4LjAwNjUgOC40MTAwNEMxOC45MDY1IDcuNDkwMDQgMTcuODE2NSA2LjY4MDA0IDE3LjA5NjUgNy4zODAwNFY3LjM5MDA0WlwiXG4gICAgICAgICAgICAgICAgICBmaWxsPVwiIzRDNjNEOVwiIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNpbXBvLXRleHQtZWRpdG9yIFsodmFsdWUpXT1cImNvbnRlbnQuY29udGVudFwiIFtlZGl0YWJsZV09XCJlZGl0IHx8IGZhbHNlXCI+PC9zaW1wby10ZXh0LWVkaXRvcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJidG4gbXQtNCBwLTAgYm9yZGVyLTAgbWItM1wiICpuZ0lmPVwiY29udGVudD8uZGlzcGxheT8uc2hvd0J1dHRvbiA9PT0gdHJ1ZVwiPlxuICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJidXR0b25cIiBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrKGJ1dHRvbj8uaWQgfHwgJycpXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCIgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiBbYmFja2dyb3VuZEluZm9dPVwic3R5bGU/LmJhY2tncm91bmRcIj57e29wdGlvbnM/LmJ1dHRvbj8ubGFiZWx9fTwvYnV0dG9uPiAtLT5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImN1c3RvbS1idG4gZC1mbGV4IGdhcC0xXCIgW2J1dHRvbkRhdGFdPVwib3B0aW9ucz8uYnV0dG9uXCIgW2J1dHRvblN0eWxlXT1cImJ1dHRvbj8uc3R5bGVzXCJcbiAgICAgICAgICBzaW1wb0J1dHRvbkRpcmVjdGl2ZSBbaWRdPVwiZGF0YT8uaWQrKGJ1dHRvbj8uaWQgfHwgJycpXCIgW3NlY3Rpb25JZF09XCJkYXRhPy5pZFwiXG4gICAgICAgICAgW2NvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiBbYmFja2dyb3VuZEluZm9dPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kXCJcbiAgICAgICAgICBbYXBwQnV0dG9uRWRpdG9yXT1cImVkaXQgPz8gZmFsc2VcIiBbYnV0dG9uSWRdPVwiZ2V0QnV0dG9uSWQoKVwiIFtpdGVtSW5kZXhdPVwiaVwiIChjbGljayk9XCJyZWRpcmVjdFRvKG9wdGlvbnM/LmJ1dHRvbilcIlxuICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cIm9wdGlvbnM/LmJ1dHRvbj8uaWNvbj8uaWNvblBvc2l0aW9uID09PSAnbGVmdCdcIj5cbiAgICAgICAgICA8ZGl2Pnt7b3B0aW9ucz8uYnV0dG9uPy5sYWJlbH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1pY29uXCIgKm5nSWY9XCJvcHRpb25zPy5idXR0b24/LnNob3dJY29uXCIgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgJ2JhY2tncm91bmQnOiAgYnV0dG9uPy5zdHlsZXM/LnR5cGUgPT0gJ1RleHQnID8gYnV0dG9uPy5zdHlsZXM/LmJhY2tncm91bmQgOiBidXR0b24/LnN0eWxlcz8udGV4dENvbG9yLFxuICAgICAgICAgICAgJ21hc2staW1hZ2UnOiAndXJsKCcgKyBvcHRpb25zPy5idXR0b24/Lmljb24/LnVybCArICcpJyxcbiAgICAgICAgICAgICdtYXNrLXJlcGVhdCc6ICduby1yZXBlYXQnLFxuICAgICAgICAgICAgJ21hc2stc2l6ZSc6ICdjb3ZlcicsXG4gICAgICAgICAgICAnd2lkdGgnOiAnMjVweCcsXG4gICAgICAgICAgICAnaGVpZ2h0JzogJzI1cHgnLFxuICAgICAgICAgIH1cIj48L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3NlY3Rpb24+Il19