ctt-babylon 0.26.25 → 0.26.27

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 (21) hide show
  1. package/esm2022/lib/components/core/babylon-booking-banner/babylon-booking-banner.component.mjs +2 -2
  2. package/esm2022/lib/components/core/babylon-global-badge/babylon-global-badge.component.mjs +3 -3
  3. package/esm2022/lib/components/core/babylon-list-img/babylon-list-img.component.mjs +8 -5
  4. package/esm2022/lib/components/core/babylon-offer-popup-v4/babylon-offer-popup-v4.component.mjs +3 -3
  5. package/esm2022/lib/components/core/babylon-sli-c3-svg-vid-cta/babylon-sli-c3-svg-vid-cta.component.mjs +9 -3
  6. package/esm2022/lib/components/core/babylon-sli-c3-txt-img-cta/babylon-sli-c3-txt-img-cta.component.mjs +2 -2
  7. package/esm2022/lib/components/external/core/c4-me-txt-svg-cta/c4-me-txt-svg-cta.component.mjs +13 -13
  8. package/esm2022/lib/components/external/core/lis-c3-fil-img-tx/lis-c3-fil-img-tx.component.mjs +53 -35
  9. package/esm2022/lib/components/external/core/modulo-menu-home/modulo-menu-home.component.mjs +10 -10
  10. package/esm2022/lib/components/external/core/top-c2-img-txt/top-c2-img-txt.component.mjs +3 -3
  11. package/esm2022/lib/directives/babylon-galleries/babylon-light-gallery.directive.mjs +5 -3
  12. package/esm2022/lib/directives/sliders/slick-init.directive.mjs +35 -19
  13. package/esm2022/lib/directives/sliders/swiper-init.directive.mjs +3 -3
  14. package/fesm2022/ctt-babylon.mjs +2 -2
  15. package/fesm2022/ctt-babylon.mjs.map +1 -1
  16. package/lib/components/core/babylon-list-img/babylon-list-img.component.d.ts +1 -0
  17. package/lib/components/core/babylon-sli-c3-svg-vid-cta/babylon-sli-c3-svg-vid-cta.component.d.ts +4 -2
  18. package/lib/components/external/core/lis-c3-fil-img-tx/lis-c3-fil-img-tx.component.d.ts +1 -1
  19. package/lib/directives/sliders/slick-init.directive.d.ts +2 -1
  20. package/lib/directives/sliders/swiper-init.directive.d.ts +1 -1
  21. package/package.json +1 -1
@@ -195,7 +195,7 @@ export class TopC2ImgTxtComponent {
195
195
  this.imageErrors.add(key);
196
196
  }
197
197
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TopC2ImgTxtComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
198
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TopC2ImgTxtComponent, isStandalone: true, selector: "top-c2-img-txt", inputs: { identifier: "identifier", multimedia: "multimedia", buttons: "buttons", content: "content", reverse: "reverse", imageOrder: "imageOrder", texts: "texts", tags: "tags" }, usesOnChanges: true, ngImport: i0, template: "@if (firstImage || secondImage) {\n <section\n class=\"mdl-topc2imgtext\"\n [class.reverse]=\"reverseLayout\"\n [attr.id]=\"identifier || ''\"\n >\n <div class=\"mdl-container\">\n <div class=\"m-columleft\">\n <div class=\"m-content\">\n @if (titleContent) {\n <lib-babylon-dynamic-heading\n [tag]=\"titleTag\"\n cssClass=\"m-titulo\"\n [content]=\"titleContent\"\n ></lib-babylon-dynamic-heading>\n }\n @if (subtitleContent) {\n <lib-babylon-dynamic-heading\n [tag]=\"subtitleTag\"\n cssClass=\"m-subtitulo\"\n [content]=\"subtitleContent\"\n ></lib-babylon-dynamic-heading>\n }\n <div class=\"m-image\" *ngIf=\"firstImage\">\n @if (\n hasImageSrc(firstImage) && !hasImageError('first')\n ) {\n <img\n [src]=\"\n firstImage?.img?.src ||\n 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n \"\n [alt]=\"\n firstImage?.img?.alt ??\n firstImage?.alt ??\n ''\n \"\n loading=\"lazy\"\n (error)=\"onImageError('first')\"\n />\n @if (firstImage | aiBadges; as badges) {\n @if (badges.length > 0) {\n <lib-babylon-ai-badge\n [badges]=\"badges\"\n position=\"bottom-right\"\n bottom=\"300px\"\n right=\"100px\"\n ></lib-babylon-ai-badge>\n }\n }\n } @else {\n <div\n class=\"m-image-placeholder\"\n aria-hidden=\"true\"\n ></div>\n }\n </div>\n @if (firstImage?.description || texts?.description) {\n <div\n class=\"m-texto\"\n [innerHTML]=\"\n firstImage?.description || texts?.description\n \"\n ></div>\n }\n @if (ctaButton; as btn) {\n <a\n class=\"m-buttonD\"\n [href]=\"btn?.url\"\n [linkType]=\"btn?.linkType\"\n [attr.target]=\"btn?.target || '_self'\"\n [attr.rel]=\"\n (btn?.target || '_self') === '_blank'\n ? 'noopener noreferrer'\n : null\n \"\n [attr.aria-label]=\"btn?.label\"\n >\n {{ btn?.label }}\n </a>\n }\n </div>\n </div>\n <div class=\"m-columright\" *ngIf=\"secondImage\">\n <div class=\"m-image\">\n @if (hasImageSrc(secondImage) && !hasImageError('second')) {\n <img\n [src]=\"\n secondImage?.img?.src ||\n 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n \"\n [alt]=\"\n secondImage?.img?.alt ?? secondImage?.alt ?? ''\n \"\n loading=\"lazy\"\n (error)=\"onImageError('second')\"\n />\n @if (secondImage | aiBadges; as badges) {\n @if (badges.length > 0) {\n <lib-babylon-ai-badge\n [badges]=\"badges\"\n position=\"top-right\"\n [additionalClasses]=\"'top--100'\"\n ></lib-babylon-ai-badge>\n }\n }\n } @else {\n <div\n class=\"m-image-placeholder\"\n aria-hidden=\"true\"\n ></div>\n }\n </div>\n </div>\n </div>\n </section>\n}\n", styles: ["@charset \"UTF-8\";html{font-size:62.5%}html body{font:14px \"\"}@media (min-width: 1921px) and (max-height: 600px){html{font-size:55.5%}}body,section{font-family:new-atten,sans-serif;font-size:1.6rem;font-weight:400;line-height:2.8rem}section .mdl-container{width:100%;max-width:178rem;margin:0 auto}.readmoreinit{line-height:1.6!important}@media screen and (max-width: 1200px){.readmoreinit{line-height:1.6!important}}@media screen and (max-width: 600px){.readmoreinit{line-height:1.6!important}}.read-more{display:flex;flex-direction:column;font-family:CoreSansG,sans-serif;font-size:1.5rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.4;letter-spacing:normal;color:#e6411e;text-decoration:underline;cursor:pointer;margin-top:2rem}.read-more .less{display:none}.w100{font-weight:100}.w300{font-weight:300}.w400{font-weight:400}.w500{font-weight:medium}.w600{font-weight:600}.w700{font-weight:700}.w900{font-weight:900}.italic{font-style:italic}.row{display:flex;flex-direction:row}.col{display:flex;flex-direction:column}body{cursor:default;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{color:inherit;border:0;margin:0;padding:0}a{text-size-adjust:none;-webkit-text-size-adjust:none;text-decoration:none;cursor:pointer}ul{list-style-position:outside}li{padding-left:3rem;list-style:none;position:relative}li:before{content:\"\\25cf\";position:absolute;top:0;left:0}button,mark{background:none}button,label{cursor:pointer}:focus{outline:none!important}::-moz-focus-inner{border:0}summary::-webkit-details-marker{display:none}button,input[type=submit],input[type=text]{-webkit-appearance:none}h1,h2,h3,h4,h5,h6{text-transform:none}p{width:100%}img{width:auto;height:auto;object-fit:contain}@-webkit-keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}.fancybox__backdrop{background-color:#00000087!important}.fancybox__content{padding:0!important}.fancybox__content>.carousel__button.is-close{color:#b6b8bb!important}.fancybox__counter{display:none!important}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-background-clip:text;-webkit-text-fill-color:#ffffff;transition:background-color 5000s ease-in-out 0s;box-shadow:inset 0 0 20px 20px #23232329}.mdl-topc2imgtext{padding-left:0!important;padding-right:0!important}.mdl-topc2imgtext.reverse .mdl-container{flex-direction:row-reverse}.mdl-topc2imgtext.reverse .mdl-container .m-columright .m-image{width:100%!important}.mdl-topc2imgtext .mdl-container{display:flex;height:145vh;max-width:none}.mdl-topc2imgtext .mdl-container .m-columleft{width:50%;position:relative}.mdl-topc2imgtext .mdl-container .m-columleft .m-content{width:100%;max-width:51.7rem;padding:0 2rem;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;text-align:center;position:absolute;left:50%;bottom:5rem;transform:translate(-50%)}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-titulo{font-family:CoreSansG,sans-serif;font-size:3.4rem;font-style:normal;font-weight:300;line-height:4rem}@media (max-width: 600px){.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-titulo{font-size:2.6rem;line-height:3.2rem}}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-titulo{color:#393637;max-width:40rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-subtitulo{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:100%;text-transform:uppercase;margin-top:3rem;color:#393637cb}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-image{aspect-ratio:385/471;width:100%;max-width:38.5rem;overflow:hidden;border-radius:25rem 25rem 0 0;margin-top:5rem;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-image img{width:100%;height:100%;object-fit:cover}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-image .m-image-placeholder{width:100%;height:100%;min-height:24rem;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-texto{font-family:new-atten,sans-serif;font-size:1.6rem;font-weight:400;line-height:2.8rem;margin-top:5rem;color:#393637cb;max-width:38.5rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:100%;text-transform:uppercase;border-radius:8rem;border:1px solid #393637;padding:2rem 5rem;transition:.5s;min-width:26rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD span{color:#393637}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD:hover{background-color:#fcdd3f;transition:.5s;border:0}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD{margin-top:3.5rem}.mdl-topc2imgtext .mdl-container .m-columright{width:50%;height:100%;position:relative}.mdl-topc2imgtext .mdl-container .m-columright .m-image{width:100%;height:100vh;position:sticky;top:0;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}.mdl-topc2imgtext .mdl-container .m-columright .m-image img{width:100%;height:100%;object-fit:cover}.mdl-topc2imgtext .mdl-container .m-columright .m-image .m-image-placeholder{width:100%;height:100%;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}@media (max-width: 1200px){.mdl-topc2imgtext .mdl-container{flex-direction:column-reverse!important;height:auto}.mdl-topc2imgtext .mdl-container .m-columleft{width:100%;height:auto;margin-top:16rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content{position:relative}.mdl-topc2imgtext .mdl-container .m-columright{width:100%}.mdl-topc2imgtext .mdl-container .m-columright .m-image{width:100%;height:70vh;position:relative}}@media (max-width: 850px){.mdl-topc2imgtext .mdl-container .m-columright .m-image{height:50vh}}@media (max-width: 600px){.mdl-topc2imgtext .mdl-container .m-columright .m-image{height:40vh}}body{overflow-x:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: BabylonLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick", "clickPopup", "disablePointerNone"], outputs: ["anchorClicked"] }, { kind: "component", type: BabylonDynamicHeadingComponent, selector: "lib-babylon-dynamic-heading", inputs: ["useInnerHtml", "tag", "wrapper", "cssClass", "content", "color"] }, { kind: "component", type: BabylonAiBadgeComponent, selector: "lib-babylon-ai-badge", inputs: ["badges", "position", "additionalClasses", "top", "bottom", "left", "right"] }, { kind: "pipe", type: AiBadgesPipe, name: "aiBadges" }], encapsulation: i0.ViewEncapsulation.None }); }
198
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TopC2ImgTxtComponent, isStandalone: true, selector: "top-c2-img-txt", inputs: { identifier: "identifier", multimedia: "multimedia", buttons: "buttons", content: "content", reverse: "reverse", imageOrder: "imageOrder", texts: "texts", tags: "tags" }, usesOnChanges: true, ngImport: i0, template: "@if (firstImage || secondImage) {\n <section\n class=\"mdl-topc2imgtext\"\n [class.reverse]=\"reverseLayout\"\n [attr.id]=\"identifier || ''\"\n >\n <div class=\"mdl-container\">\n <div class=\"m-columleft\">\n <div class=\"m-content\">\n @if (titleContent) {\n <lib-babylon-dynamic-heading\n [tag]=\"titleTag\"\n cssClass=\"m-titulo\"\n [content]=\"titleContent\"\n ></lib-babylon-dynamic-heading>\n }\n @if (subtitleContent) {\n <lib-babylon-dynamic-heading\n [tag]=\"subtitleTag\"\n cssClass=\"m-subtitulo\"\n [content]=\"subtitleContent\"\n ></lib-babylon-dynamic-heading>\n }\n <div class=\"m-image\" *ngIf=\"firstImage\">\n @if (\n hasImageSrc(firstImage) && !hasImageError('first')\n ) {\n <img\n [src]=\"\n firstImage?.img?.src ||\n 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n \"\n [alt]=\"\n firstImage?.img?.alt ??\n firstImage?.alt ??\n ''\n \"\n loading=\"lazy\"\n (error)=\"onImageError('first')\"\n />\n @if (firstImage | aiBadges; as badges) {\n @if (badges.length > 0) {\n <lib-babylon-ai-badge\n [badges]=\"badges\"\n position=\"bottom-right\"\n bottom=\"250px\"\n right=\"100px\"\n ></lib-babylon-ai-badge>\n }\n }\n } @else {\n <div\n class=\"m-image-placeholder\"\n aria-hidden=\"true\"\n ></div>\n }\n </div>\n @if (firstImage?.description || texts?.description) {\n <div\n class=\"m-texto\"\n [innerHTML]=\"\n firstImage?.description || texts?.description\n \"\n ></div>\n }\n @if (ctaButton; as btn) {\n <a\n class=\"m-buttonD\"\n [href]=\"btn?.url\"\n [linkType]=\"btn?.linkType\"\n [attr.target]=\"btn?.target || '_self'\"\n [attr.rel]=\"\n (btn?.target || '_self') === '_blank'\n ? 'noopener noreferrer'\n : null\n \"\n [attr.aria-label]=\"btn?.label\"\n >\n {{ btn?.label }}\n </a>\n }\n </div>\n </div>\n <div class=\"m-columright\" *ngIf=\"secondImage\">\n <div class=\"m-image\">\n @if (hasImageSrc(secondImage) && !hasImageError('second')) {\n <img\n [src]=\"\n secondImage?.img?.src ||\n 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n \"\n [alt]=\"\n secondImage?.img?.alt ?? secondImage?.alt ?? ''\n \"\n loading=\"lazy\"\n (error)=\"onImageError('second')\"\n />\n @if (secondImage | aiBadges; as badges) {\n @if (badges.length > 0) {\n <lib-babylon-ai-badge\n [badges]=\"badges\"\n position=\"top-right\"\n [additionalClasses]=\"'top--100'\"\n ></lib-babylon-ai-badge>\n }\n }\n } @else {\n <div\n class=\"m-image-placeholder\"\n aria-hidden=\"true\"\n ></div>\n }\n </div>\n </div>\n </div>\n </section>\n}\n", styles: ["@charset \"UTF-8\";html{font-size:62.5%}html body{font:14px \"\"}@media (min-width: 1921px) and (max-height: 600px){html{font-size:55.5%}}body,section{font-family:new-atten,sans-serif;font-size:1.6rem;font-weight:400;line-height:2.8rem}section .mdl-container{width:100%;max-width:178rem;margin:0 auto}.readmoreinit{line-height:1.6!important}@media screen and (max-width: 1200px){.readmoreinit{line-height:1.6!important}}@media screen and (max-width: 600px){.readmoreinit{line-height:1.6!important}}.read-more{display:flex;flex-direction:column;font-family:CoreSansG,sans-serif;font-size:1.5rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.4;letter-spacing:normal;color:#e6411e;text-decoration:underline;cursor:pointer;margin-top:2rem}.read-more .less{display:none}.w100{font-weight:100}.w300{font-weight:300}.w400{font-weight:400}.w500{font-weight:medium}.w600{font-weight:600}.w700{font-weight:700}.w900{font-weight:900}.italic{font-style:italic}.row{display:flex;flex-direction:row}.col{display:flex;flex-direction:column}body{cursor:default;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{color:inherit;border:0;margin:0;padding:0}a{text-size-adjust:none;-webkit-text-size-adjust:none;text-decoration:none;cursor:pointer}ul{list-style-position:outside}li{padding-left:3rem;list-style:none;position:relative}li:before{content:\"\\25cf\";position:absolute;top:0;left:0}button,mark{background:none}button,label{cursor:pointer}:focus{outline:none!important}::-moz-focus-inner{border:0}summary::-webkit-details-marker{display:none}button,input[type=submit],input[type=text]{-webkit-appearance:none}h1,h2,h3,h4,h5,h6{text-transform:none}p{width:100%}img{width:auto;height:auto;object-fit:contain}@-webkit-keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}.fancybox__backdrop{background-color:#00000087!important}.fancybox__content{padding:0!important}.fancybox__content>.carousel__button.is-close{color:#b6b8bb!important}.fancybox__counter{display:none!important}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-background-clip:text;-webkit-text-fill-color:#ffffff;transition:background-color 5000s ease-in-out 0s;box-shadow:inset 0 0 20px 20px #23232329}.mdl-topc2imgtext{padding-left:0!important;padding-right:0!important}.mdl-topc2imgtext.reverse .mdl-container{flex-direction:row-reverse}.mdl-topc2imgtext.reverse .mdl-container .m-columright .m-image{width:100%!important}.mdl-topc2imgtext .mdl-container{display:flex;height:145vh;max-width:none}.mdl-topc2imgtext .mdl-container .m-columleft{width:50%;position:relative}.mdl-topc2imgtext .mdl-container .m-columleft .m-content{width:100%;max-width:51.7rem;padding:0 2rem;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;text-align:center;position:absolute;left:50%;bottom:5rem;transform:translate(-50%)}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-titulo{font-family:CoreSansG,sans-serif;font-size:3.4rem;font-style:normal;font-weight:300;line-height:4rem}@media (max-width: 600px){.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-titulo{font-size:2.6rem;line-height:3.2rem}}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-titulo{color:#393637;max-width:40rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-subtitulo{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:100%;text-transform:uppercase;margin-top:3rem;color:#393637cb}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-image{aspect-ratio:385/471;width:100%;max-width:38.5rem;overflow:hidden;border-radius:25rem 25rem 0 0;margin-top:5rem;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-image img{width:100%;height:100%;object-fit:cover}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-image .m-image-placeholder{width:100%;height:100%;min-height:24rem;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-texto{font-family:new-atten,sans-serif;font-size:1.6rem;font-weight:400;line-height:2.8rem;margin-top:5rem;color:#393637cb;max-width:38.5rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:100%;text-transform:uppercase;border-radius:8rem;border:1px solid #393637;padding:2rem 5rem;transition:.5s;min-width:26rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD span{color:#393637}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD:hover{background-color:#fcdd3f;transition:.5s;border:0}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD{margin-top:3.5rem}.mdl-topc2imgtext .mdl-container .m-columright{width:50%;height:100%;position:relative}.mdl-topc2imgtext .mdl-container .m-columright .m-image{width:100%;height:100vh;position:sticky;top:0;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}.mdl-topc2imgtext .mdl-container .m-columright .m-image img{width:100%;height:100%;object-fit:cover}.mdl-topc2imgtext .mdl-container .m-columright .m-image .m-image-placeholder{width:100%;height:100%;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}@media (max-width: 1200px){.mdl-topc2imgtext .mdl-container{flex-direction:column-reverse!important;height:auto}.mdl-topc2imgtext .mdl-container .m-columleft{width:100%;height:auto;margin-top:16rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content{position:relative}.mdl-topc2imgtext .mdl-container .m-columright{width:100%}.mdl-topc2imgtext .mdl-container .m-columright .m-image{width:100%;height:70vh;position:relative}}@media (max-width: 850px){.mdl-topc2imgtext .mdl-container .m-columright .m-image{height:50vh}}@media (max-width: 600px){.mdl-topc2imgtext .mdl-container .m-columright .m-image{height:40vh}}body{overflow-x:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: BabylonLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick", "clickPopup", "disablePointerNone"], outputs: ["anchorClicked"] }, { kind: "component", type: BabylonDynamicHeadingComponent, selector: "lib-babylon-dynamic-heading", inputs: ["useInnerHtml", "tag", "wrapper", "cssClass", "content", "color"] }, { kind: "component", type: BabylonAiBadgeComponent, selector: "lib-babylon-ai-badge", inputs: ["badges", "position", "additionalClasses", "top", "bottom", "left", "right"] }, { kind: "pipe", type: AiBadgesPipe, name: "aiBadges" }], encapsulation: i0.ViewEncapsulation.None }); }
199
199
  }
200
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TopC2ImgTxtComponent, decorators: [{
201
201
  type: Component,
@@ -205,7 +205,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
205
205
  BabylonDynamicHeadingComponent,
206
206
  BabylonAiBadgeComponent,
207
207
  AiBadgesPipe,
208
- ], encapsulation: ViewEncapsulation.None, template: "@if (firstImage || secondImage) {\n <section\n class=\"mdl-topc2imgtext\"\n [class.reverse]=\"reverseLayout\"\n [attr.id]=\"identifier || ''\"\n >\n <div class=\"mdl-container\">\n <div class=\"m-columleft\">\n <div class=\"m-content\">\n @if (titleContent) {\n <lib-babylon-dynamic-heading\n [tag]=\"titleTag\"\n cssClass=\"m-titulo\"\n [content]=\"titleContent\"\n ></lib-babylon-dynamic-heading>\n }\n @if (subtitleContent) {\n <lib-babylon-dynamic-heading\n [tag]=\"subtitleTag\"\n cssClass=\"m-subtitulo\"\n [content]=\"subtitleContent\"\n ></lib-babylon-dynamic-heading>\n }\n <div class=\"m-image\" *ngIf=\"firstImage\">\n @if (\n hasImageSrc(firstImage) && !hasImageError('first')\n ) {\n <img\n [src]=\"\n firstImage?.img?.src ||\n 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n \"\n [alt]=\"\n firstImage?.img?.alt ??\n firstImage?.alt ??\n ''\n \"\n loading=\"lazy\"\n (error)=\"onImageError('first')\"\n />\n @if (firstImage | aiBadges; as badges) {\n @if (badges.length > 0) {\n <lib-babylon-ai-badge\n [badges]=\"badges\"\n position=\"bottom-right\"\n bottom=\"300px\"\n right=\"100px\"\n ></lib-babylon-ai-badge>\n }\n }\n } @else {\n <div\n class=\"m-image-placeholder\"\n aria-hidden=\"true\"\n ></div>\n }\n </div>\n @if (firstImage?.description || texts?.description) {\n <div\n class=\"m-texto\"\n [innerHTML]=\"\n firstImage?.description || texts?.description\n \"\n ></div>\n }\n @if (ctaButton; as btn) {\n <a\n class=\"m-buttonD\"\n [href]=\"btn?.url\"\n [linkType]=\"btn?.linkType\"\n [attr.target]=\"btn?.target || '_self'\"\n [attr.rel]=\"\n (btn?.target || '_self') === '_blank'\n ? 'noopener noreferrer'\n : null\n \"\n [attr.aria-label]=\"btn?.label\"\n >\n {{ btn?.label }}\n </a>\n }\n </div>\n </div>\n <div class=\"m-columright\" *ngIf=\"secondImage\">\n <div class=\"m-image\">\n @if (hasImageSrc(secondImage) && !hasImageError('second')) {\n <img\n [src]=\"\n secondImage?.img?.src ||\n 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n \"\n [alt]=\"\n secondImage?.img?.alt ?? secondImage?.alt ?? ''\n \"\n loading=\"lazy\"\n (error)=\"onImageError('second')\"\n />\n @if (secondImage | aiBadges; as badges) {\n @if (badges.length > 0) {\n <lib-babylon-ai-badge\n [badges]=\"badges\"\n position=\"top-right\"\n [additionalClasses]=\"'top--100'\"\n ></lib-babylon-ai-badge>\n }\n }\n } @else {\n <div\n class=\"m-image-placeholder\"\n aria-hidden=\"true\"\n ></div>\n }\n </div>\n </div>\n </div>\n </section>\n}\n", styles: ["@charset \"UTF-8\";html{font-size:62.5%}html body{font:14px \"\"}@media (min-width: 1921px) and (max-height: 600px){html{font-size:55.5%}}body,section{font-family:new-atten,sans-serif;font-size:1.6rem;font-weight:400;line-height:2.8rem}section .mdl-container{width:100%;max-width:178rem;margin:0 auto}.readmoreinit{line-height:1.6!important}@media screen and (max-width: 1200px){.readmoreinit{line-height:1.6!important}}@media screen and (max-width: 600px){.readmoreinit{line-height:1.6!important}}.read-more{display:flex;flex-direction:column;font-family:CoreSansG,sans-serif;font-size:1.5rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.4;letter-spacing:normal;color:#e6411e;text-decoration:underline;cursor:pointer;margin-top:2rem}.read-more .less{display:none}.w100{font-weight:100}.w300{font-weight:300}.w400{font-weight:400}.w500{font-weight:medium}.w600{font-weight:600}.w700{font-weight:700}.w900{font-weight:900}.italic{font-style:italic}.row{display:flex;flex-direction:row}.col{display:flex;flex-direction:column}body{cursor:default;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{color:inherit;border:0;margin:0;padding:0}a{text-size-adjust:none;-webkit-text-size-adjust:none;text-decoration:none;cursor:pointer}ul{list-style-position:outside}li{padding-left:3rem;list-style:none;position:relative}li:before{content:\"\\25cf\";position:absolute;top:0;left:0}button,mark{background:none}button,label{cursor:pointer}:focus{outline:none!important}::-moz-focus-inner{border:0}summary::-webkit-details-marker{display:none}button,input[type=submit],input[type=text]{-webkit-appearance:none}h1,h2,h3,h4,h5,h6{text-transform:none}p{width:100%}img{width:auto;height:auto;object-fit:contain}@-webkit-keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}.fancybox__backdrop{background-color:#00000087!important}.fancybox__content{padding:0!important}.fancybox__content>.carousel__button.is-close{color:#b6b8bb!important}.fancybox__counter{display:none!important}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-background-clip:text;-webkit-text-fill-color:#ffffff;transition:background-color 5000s ease-in-out 0s;box-shadow:inset 0 0 20px 20px #23232329}.mdl-topc2imgtext{padding-left:0!important;padding-right:0!important}.mdl-topc2imgtext.reverse .mdl-container{flex-direction:row-reverse}.mdl-topc2imgtext.reverse .mdl-container .m-columright .m-image{width:100%!important}.mdl-topc2imgtext .mdl-container{display:flex;height:145vh;max-width:none}.mdl-topc2imgtext .mdl-container .m-columleft{width:50%;position:relative}.mdl-topc2imgtext .mdl-container .m-columleft .m-content{width:100%;max-width:51.7rem;padding:0 2rem;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;text-align:center;position:absolute;left:50%;bottom:5rem;transform:translate(-50%)}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-titulo{font-family:CoreSansG,sans-serif;font-size:3.4rem;font-style:normal;font-weight:300;line-height:4rem}@media (max-width: 600px){.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-titulo{font-size:2.6rem;line-height:3.2rem}}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-titulo{color:#393637;max-width:40rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-subtitulo{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:100%;text-transform:uppercase;margin-top:3rem;color:#393637cb}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-image{aspect-ratio:385/471;width:100%;max-width:38.5rem;overflow:hidden;border-radius:25rem 25rem 0 0;margin-top:5rem;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-image img{width:100%;height:100%;object-fit:cover}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-image .m-image-placeholder{width:100%;height:100%;min-height:24rem;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-texto{font-family:new-atten,sans-serif;font-size:1.6rem;font-weight:400;line-height:2.8rem;margin-top:5rem;color:#393637cb;max-width:38.5rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:100%;text-transform:uppercase;border-radius:8rem;border:1px solid #393637;padding:2rem 5rem;transition:.5s;min-width:26rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD span{color:#393637}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD:hover{background-color:#fcdd3f;transition:.5s;border:0}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD{margin-top:3.5rem}.mdl-topc2imgtext .mdl-container .m-columright{width:50%;height:100%;position:relative}.mdl-topc2imgtext .mdl-container .m-columright .m-image{width:100%;height:100vh;position:sticky;top:0;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}.mdl-topc2imgtext .mdl-container .m-columright .m-image img{width:100%;height:100%;object-fit:cover}.mdl-topc2imgtext .mdl-container .m-columright .m-image .m-image-placeholder{width:100%;height:100%;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}@media (max-width: 1200px){.mdl-topc2imgtext .mdl-container{flex-direction:column-reverse!important;height:auto}.mdl-topc2imgtext .mdl-container .m-columleft{width:100%;height:auto;margin-top:16rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content{position:relative}.mdl-topc2imgtext .mdl-container .m-columright{width:100%}.mdl-topc2imgtext .mdl-container .m-columright .m-image{width:100%;height:70vh;position:relative}}@media (max-width: 850px){.mdl-topc2imgtext .mdl-container .m-columright .m-image{height:50vh}}@media (max-width: 600px){.mdl-topc2imgtext .mdl-container .m-columright .m-image{height:40vh}}body{overflow-x:unset!important}\n"] }]
208
+ ], encapsulation: ViewEncapsulation.None, template: "@if (firstImage || secondImage) {\n <section\n class=\"mdl-topc2imgtext\"\n [class.reverse]=\"reverseLayout\"\n [attr.id]=\"identifier || ''\"\n >\n <div class=\"mdl-container\">\n <div class=\"m-columleft\">\n <div class=\"m-content\">\n @if (titleContent) {\n <lib-babylon-dynamic-heading\n [tag]=\"titleTag\"\n cssClass=\"m-titulo\"\n [content]=\"titleContent\"\n ></lib-babylon-dynamic-heading>\n }\n @if (subtitleContent) {\n <lib-babylon-dynamic-heading\n [tag]=\"subtitleTag\"\n cssClass=\"m-subtitulo\"\n [content]=\"subtitleContent\"\n ></lib-babylon-dynamic-heading>\n }\n <div class=\"m-image\" *ngIf=\"firstImage\">\n @if (\n hasImageSrc(firstImage) && !hasImageError('first')\n ) {\n <img\n [src]=\"\n firstImage?.img?.src ||\n 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n \"\n [alt]=\"\n firstImage?.img?.alt ??\n firstImage?.alt ??\n ''\n \"\n loading=\"lazy\"\n (error)=\"onImageError('first')\"\n />\n @if (firstImage | aiBadges; as badges) {\n @if (badges.length > 0) {\n <lib-babylon-ai-badge\n [badges]=\"badges\"\n position=\"bottom-right\"\n bottom=\"250px\"\n right=\"100px\"\n ></lib-babylon-ai-badge>\n }\n }\n } @else {\n <div\n class=\"m-image-placeholder\"\n aria-hidden=\"true\"\n ></div>\n }\n </div>\n @if (firstImage?.description || texts?.description) {\n <div\n class=\"m-texto\"\n [innerHTML]=\"\n firstImage?.description || texts?.description\n \"\n ></div>\n }\n @if (ctaButton; as btn) {\n <a\n class=\"m-buttonD\"\n [href]=\"btn?.url\"\n [linkType]=\"btn?.linkType\"\n [attr.target]=\"btn?.target || '_self'\"\n [attr.rel]=\"\n (btn?.target || '_self') === '_blank'\n ? 'noopener noreferrer'\n : null\n \"\n [attr.aria-label]=\"btn?.label\"\n >\n {{ btn?.label }}\n </a>\n }\n </div>\n </div>\n <div class=\"m-columright\" *ngIf=\"secondImage\">\n <div class=\"m-image\">\n @if (hasImageSrc(secondImage) && !hasImageError('second')) {\n <img\n [src]=\"\n secondImage?.img?.src ||\n 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n \"\n [alt]=\"\n secondImage?.img?.alt ?? secondImage?.alt ?? ''\n \"\n loading=\"lazy\"\n (error)=\"onImageError('second')\"\n />\n @if (secondImage | aiBadges; as badges) {\n @if (badges.length > 0) {\n <lib-babylon-ai-badge\n [badges]=\"badges\"\n position=\"top-right\"\n [additionalClasses]=\"'top--100'\"\n ></lib-babylon-ai-badge>\n }\n }\n } @else {\n <div\n class=\"m-image-placeholder\"\n aria-hidden=\"true\"\n ></div>\n }\n </div>\n </div>\n </div>\n </section>\n}\n", styles: ["@charset \"UTF-8\";html{font-size:62.5%}html body{font:14px \"\"}@media (min-width: 1921px) and (max-height: 600px){html{font-size:55.5%}}body,section{font-family:new-atten,sans-serif;font-size:1.6rem;font-weight:400;line-height:2.8rem}section .mdl-container{width:100%;max-width:178rem;margin:0 auto}.readmoreinit{line-height:1.6!important}@media screen and (max-width: 1200px){.readmoreinit{line-height:1.6!important}}@media screen and (max-width: 600px){.readmoreinit{line-height:1.6!important}}.read-more{display:flex;flex-direction:column;font-family:CoreSansG,sans-serif;font-size:1.5rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.4;letter-spacing:normal;color:#e6411e;text-decoration:underline;cursor:pointer;margin-top:2rem}.read-more .less{display:none}.w100{font-weight:100}.w300{font-weight:300}.w400{font-weight:400}.w500{font-weight:medium}.w600{font-weight:600}.w700{font-weight:700}.w900{font-weight:900}.italic{font-style:italic}.row{display:flex;flex-direction:row}.col{display:flex;flex-direction:column}body{cursor:default;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{color:inherit;border:0;margin:0;padding:0}a{text-size-adjust:none;-webkit-text-size-adjust:none;text-decoration:none;cursor:pointer}ul{list-style-position:outside}li{padding-left:3rem;list-style:none;position:relative}li:before{content:\"\\25cf\";position:absolute;top:0;left:0}button,mark{background:none}button,label{cursor:pointer}:focus{outline:none!important}::-moz-focus-inner{border:0}summary::-webkit-details-marker{display:none}button,input[type=submit],input[type=text]{-webkit-appearance:none}h1,h2,h3,h4,h5,h6{text-transform:none}p{width:100%}img{width:auto;height:auto;object-fit:contain}@-webkit-keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes swingV{15%{-webkit-transform:translateY(.5rem);transform:translateY(.5rem)}30%{-webkit-transform:translateY(-.5rem);transform:translateY(-.5rem)}50%{-webkit-transform:translateY(.3rem);transform:translateY(.3rem)}65%{-webkit-transform:translateY(-.3rem);transform:translateY(-.3rem)}80%{-webkit-transform:translateY(.2rem);transform:translateY(.2rem)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes swingH{15%{-webkit-transform:translateX(.5rem);transform:translate(.5rem)}30%{-webkit-transform:translateX(-.5rem);transform:translate(-.5rem)}50%{-webkit-transform:translateX(.3rem);transform:translate(.3rem)}65%{-webkit-transform:translateX(-.3rem);transform:translate(-.3rem)}80%{-webkit-transform:translateX(.2rem);transform:translate(.2rem)}to{-webkit-transform:translateX(0);transform:translate(0)}}.fancybox__backdrop{background-color:#00000087!important}.fancybox__content{padding:0!important}.fancybox__content>.carousel__button.is-close{color:#b6b8bb!important}.fancybox__counter{display:none!important}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-background-clip:text;-webkit-text-fill-color:#ffffff;transition:background-color 5000s ease-in-out 0s;box-shadow:inset 0 0 20px 20px #23232329}.mdl-topc2imgtext{padding-left:0!important;padding-right:0!important}.mdl-topc2imgtext.reverse .mdl-container{flex-direction:row-reverse}.mdl-topc2imgtext.reverse .mdl-container .m-columright .m-image{width:100%!important}.mdl-topc2imgtext .mdl-container{display:flex;height:145vh;max-width:none}.mdl-topc2imgtext .mdl-container .m-columleft{width:50%;position:relative}.mdl-topc2imgtext .mdl-container .m-columleft .m-content{width:100%;max-width:51.7rem;padding:0 2rem;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;text-align:center;position:absolute;left:50%;bottom:5rem;transform:translate(-50%)}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-titulo{font-family:CoreSansG,sans-serif;font-size:3.4rem;font-style:normal;font-weight:300;line-height:4rem}@media (max-width: 600px){.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-titulo{font-size:2.6rem;line-height:3.2rem}}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-titulo{color:#393637;max-width:40rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-subtitulo{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:100%;text-transform:uppercase;margin-top:3rem;color:#393637cb}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-image{aspect-ratio:385/471;width:100%;max-width:38.5rem;overflow:hidden;border-radius:25rem 25rem 0 0;margin-top:5rem;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-image img{width:100%;height:100%;object-fit:cover}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-image .m-image-placeholder{width:100%;height:100%;min-height:24rem;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-texto{font-family:new-atten,sans-serif;font-size:1.6rem;font-weight:400;line-height:2.8rem;margin-top:5rem;color:#393637cb;max-width:38.5rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD{font-family:new-atten,sans-serif;font-size:1.4rem;font-weight:500;letter-spacing:.2rem;line-height:100%;text-transform:uppercase;border-radius:8rem;border:1px solid #393637;padding:2rem 5rem;transition:.5s;min-width:26rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD span{color:#393637}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD:hover{background-color:#fcdd3f;transition:.5s;border:0}.mdl-topc2imgtext .mdl-container .m-columleft .m-content .m-buttonD{margin-top:3.5rem}.mdl-topc2imgtext .mdl-container .m-columright{width:50%;height:100%;position:relative}.mdl-topc2imgtext .mdl-container .m-columright .m-image{width:100%;height:100vh;position:sticky;top:0;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}.mdl-topc2imgtext .mdl-container .m-columright .m-image img{width:100%;height:100%;object-fit:cover}.mdl-topc2imgtext .mdl-container .m-columright .m-image .m-image-placeholder{width:100%;height:100%;background:linear-gradient(135deg,#f2efe9,#e9e4dc)}@media (max-width: 1200px){.mdl-topc2imgtext .mdl-container{flex-direction:column-reverse!important;height:auto}.mdl-topc2imgtext .mdl-container .m-columleft{width:100%;height:auto;margin-top:16rem}.mdl-topc2imgtext .mdl-container .m-columleft .m-content{position:relative}.mdl-topc2imgtext .mdl-container .m-columright{width:100%}.mdl-topc2imgtext .mdl-container .m-columright .m-image{width:100%;height:70vh;position:relative}}@media (max-width: 850px){.mdl-topc2imgtext .mdl-container .m-columright .m-image{height:50vh}}@media (max-width: 600px){.mdl-topc2imgtext .mdl-container .m-columright .m-image{height:40vh}}body{overflow-x:unset!important}\n"] }]
209
209
  }], propDecorators: { identifier: [{
210
210
  type: Input
211
211
  }], multimedia: [{
@@ -223,4 +223,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
223
223
  }], tags: [{
224
224
  type: Input
225
225
  }] } });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLWMyLWltZy10eHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZXJuYWwvY29yZS90b3AtYzItaW1nLXR4dC90b3AtYzItaW1nLXR4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL3RvcC1jMi1pbWctdHh0L3RvcC1jMi1pbWctdHh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQVNoRyxPQUFPLEVBQ0gsNEJBQTRCLEVBQzVCLGdCQUFnQixHQUNuQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFnQmhFLE1BQU0sT0FBTyxvQkFBb0I7SUFkakM7UUFlYSxlQUFVLEdBQVksRUFBRSxDQUFDO1FBRTNCLG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBYTlCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFNUixnQkFBVyxHQUFHLElBQUks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QjtRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQXBQUSxvQkFBb0I7bUdBQXBCLG9CQUFvQixtUkNwQ2pDLDh2S0FxSEEsOCtPRDNGUSxZQUFZLG1JQUNaLHdCQUF3QixtS0FDeEIsOEJBQThCLG9KQUM5Qix1QkFBdUIsbUpBQ3ZCLFlBQVk7OzRGQU1QLG9CQUFvQjtrQkFkaEMsU0FBUzsrQkFDSSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWix3QkFBd0I7d0JBQ3hCLDhCQUE4Qjt3QkFDOUIsdUJBQXVCO3dCQUN2QixZQUFZO3FCQUNmLGlCQUdjLGlCQUFpQixDQUFDLElBQUk7OEJBRzVCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0YsVUFBVTtzQkFEYixLQUFLO2dCQVNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFieWxvbkxpbmtUeXBlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGlyZWN0aXZlcy9saW5rLXR5cGUvbGluay10eXBlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICAgIEJhYnlsb25CdXR0b25JLFxuICAgIEJhYnlsb25JbWFnZUksXG4gICAgQmFieWxvbk11bHRpbWVkaWFJLFxuICAgIEJhYnlsb25Sb29tRGV0YWlsSSxcbiAgICBCYWJ5bG9uVGFnc0ksXG4gICAgQmFieWxvblRleHRJbmZvSSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICAgIGdldEltYWdlc0J5VGFnRnJvbU11bHRpbWVkaWEsXG4gICAgZ2V0T3JkZXJlZEltYWdlcyxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvbXV0aW1lZGlhLnV0aWxzJztcbmltcG9ydCB7IEhlYWRpbmdUYWdVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2hlYWRpbmctdGFnLnV0aWxzJztcbmltcG9ydCB7IEJhYnlsb25EeW5hbWljSGVhZGluZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBUb3BDMkltZ1R4dENvbnRlbnQgfSBmcm9tICcuL3RvcC1jMi1pbWctdHh0LmludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0QWlCYWRnZVRleHQgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9haS1iYWRnZS51dGlscyc7XG5pbXBvcnQgeyBCYWJ5bG9uQWlCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvYmFieWxvbi1haS1iYWRnZS9iYWJ5bG9uLWFpLWJhZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBaUJhZGdlc1BpcGUgfSBmcm9tICcuLi8uLi8uLi8uLi9waXBlcy9haS1iYWRnZXMucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9wLWMyLWltZy10eHQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZSxcbiAgICAgICAgQmFieWxvbkR5bmFtaWNIZWFkaW5nQ29tcG9uZW50LFxuICAgICAgICBCYWJ5bG9uQWlCYWRnZUNvbXBvbmVudCxcbiAgICAgICAgQWlCYWRnZXNQaXBlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RvcC1jMi1pbWctdHh0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vdG9wLWMyLWltZy10eHQuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFRvcEMySW1nVHh0Q29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBpZGVudGlmaWVyPzogc3RyaW5nID0gJyc7XG4gICAgcHJpdmF0ZSBfbXVsdGltZWRpYT86IEJhYnlsb25NdWx0aW1lZGlhSSB8IEJhYnlsb25Sb29tRGV0YWlsSTtcbiAgICBwdWJsaWMgZ2V0QWlCYWRnZVRleHQgPSBnZXRBaUJhZGdlVGV4dDtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IG11bHRpbWVkaWEodmFsdWU6IEJhYnlsb25NdWx0aW1lZGlhSSB8IEJhYnlsb25Sb29tRGV0YWlsSSB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9tdWx0aW1lZGlhID0gdmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlTm9ybWFsaXplZE11bHRpbWVkaWEoKTtcbiAgICB9XG5cbiAgICBnZXQgbXVsdGltZWRpYSgpOiBCYWJ5bG9uTXVsdGltZWRpYUkgfCBCYWJ5bG9uUm9vbURldGFpbEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fbXVsdGltZWRpYTtcbiAgICB9XG4gICAgQElucHV0KCkgYnV0dG9ucz86IEJhYnlsb25CdXR0b25JW107XG4gICAgQElucHV0KCkgY29udGVudD86IFRvcEMySW1nVHh0Q29udGVudDtcbiAgICBASW5wdXQoKSByZXZlcnNlID0gZmFsc2U7XG4gICAgQElucHV0KCkgaW1hZ2VPcmRlcj86IG51bWJlciB8IHN0cmluZztcbiAgICBASW5wdXQoKSB0ZXh0cz86IEJhYnlsb25UZXh0SW5mb0k7XG4gICAgQElucHV0KCkgdGFncz86IEJhYnlsb25UYWdzSTtcblxuICAgIHByaXZhdGUgX25vcm1hbGl6ZWRNdWx0aW1lZGlhPzogQmFieWxvbk11bHRpbWVkaWFJIHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW1hZ2VFcnJvcnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIHByaXZhdGUgdXBkYXRlTm9ybWFsaXplZE11bHRpbWVkaWEoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG11bHRpbWVkaWEgPSB0aGlzLl9tdWx0aW1lZGlhO1xuICAgICAgICBpZiAoIW11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIHRoaXMuX25vcm1hbGl6ZWRNdWx0aW1lZGlhID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFRBRyA9ICdUb3BDMkltZ1R4dCc7XG4gICAgICAgIGlmICh0aGlzLmlzUm9vbURldGFpbChtdWx0aW1lZGlhKSkge1xuICAgICAgICAgICAgbGV0IGltYWdlbmVzID0gKG11bHRpbWVkaWEubXVsdGltZWRpYT8uaW1hZ2VuZXMgPz9cbiAgICAgICAgICAgICAgICBtdWx0aW1lZGlhLmltYWdlcyA/P1xuICAgICAgICAgICAgICAgIFtdKSBhcyBCYWJ5bG9uSW1hZ2VJW107XG4gICAgICAgICAgICBpbWFnZW5lcyA9IGdldEltYWdlc0J5VGFnRnJvbU11bHRpbWVkaWEoeyBpbWFnZW5lcyB9LCBUQUcpO1xuICAgICAgICAgICAgY29uc3QgW2ZpcnN0LCAuLi5yZXN0XSA9IGltYWdlbmVzO1xuICAgICAgICAgICAgY29uc3QgY29udGVudEltYWdlOiBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkID0gZmlyc3RcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5maXJzdCxcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZmlyc3QudGl0bGUgfHwgbXVsdGltZWRpYS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QuZGVzY3JpcHRpb24gfHwgbXVsdGltZWRpYS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLnRleHRzID0gbXVsdGltZWRpYS50ZXh0cztcbiAgICAgICAgICAgIHRoaXMuX25vcm1hbGl6ZWRNdWx0aW1lZGlhID0ge1xuICAgICAgICAgICAgICAgIGltYWdlbmVzOiBjb250ZW50SW1hZ2UgPyBbY29udGVudEltYWdlLCAuLi5yZXN0XSA6IGltYWdlbmVzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBTaSBubyBlcyBSb29tRGV0YWlsLCBOTyBmaWx0cmFtb3MgcG9yIHRhZywgc29sbyBkZXZvbHZlbW9zIGxhcyBpbcOhZ2VuZXMgdGFsIGN1YWxcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgJ2ltYWdlbmVzJyBpbiBtdWx0aW1lZGlhICYmXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KChtdWx0aW1lZGlhIGFzIGFueSkuaW1hZ2VuZXMpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fbm9ybWFsaXplZE11bHRpbWVkaWEgPSB7XG4gICAgICAgICAgICAgICAgLi4ubXVsdGltZWRpYSxcbiAgICAgICAgICAgICAgICBpbWFnZW5lczogKG11bHRpbWVkaWEgYXMgYW55KS5pbWFnZW5lcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbm9ybWFsaXplZE11bHRpbWVkaWEgPSBtdWx0aW1lZGlhO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1snbXVsdGltZWRpYSddKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5vcm1hbGl6ZWRNdWx0aW1lZGlhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgcmV2ZXJzZUxheW91dCgpOiBib29sZWFuIHtcbiAgICAgICAgLy8gVXNhciBlbCBtaXNtbyBwYXIgZGUgaW3DoWdlbmVzIHF1ZSBzZSBtdWVzdHJhbiAoY29uc2VjdXRpdmFzKVxuICAgICAgICBjb25zdCBbZmlyc3QsIHNlY29uZF0gPSB0aGlzLmdldENvbnNlY3V0aXZlSW1hZ2VzKCk7XG4gICAgICAgIGlmICghdGhpcy5oYXNUZXh0KGZpcnN0KSAmJiB0aGlzLmhhc1RleHQoc2Vjb25kKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudD8ucmV2ZXJzZSA/PyB0aGlzLnJldmVyc2U7XG4gICAgfVxuXG4gICAgZ2V0IGNvbnRlbnRJbWFnZSgpOiBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgaW1hZ2VzID0gdGhpcy5ub3JtYWxpemVkTXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gW107XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5nZXRJbWFnZUJ5T3JkZXIoMSwgaW1hZ2VzKTtcbiAgICAgICAgY29uc3Qgc2Vjb25kID0gdGhpcy5nZXRJbWFnZUJ5T3JkZXIoMiwgaW1hZ2VzKTtcbiAgICAgICAgaWYgKHRoaXMuaGFzVGV4dChmaXJzdCkpIHJldHVybiBmaXJzdDtcbiAgICAgICAgaWYgKHRoaXMuaGFzVGV4dChzZWNvbmQpKSByZXR1cm4gc2Vjb25kO1xuICAgICAgICByZXR1cm4gZmlyc3QgPz8gc2Vjb25kO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SW1hZ2VCeU9yZGVyKFxuICAgICAgICBvcmRlcjogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICBpbWFnZXM6IEJhYnlsb25JbWFnZUlbXVxuICAgICk6IEJhYnlsb25JbWFnZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAob3JkZXIgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGltYWdlc1swXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW1hZ2VzLmZpbmQoKGltZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW1nT3JkZXIgPSAoaW1nIGFzIGFueSkub3JkZXI7XG4gICAgICAgICAgICByZXR1cm4gaW1nT3JkZXIgIT0gbnVsbCAmJiBpbWdPcmRlci50b1N0cmluZygpID09PSBvcmRlci50b1N0cmluZygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXZ1ZWx2ZSBsYXMgaW3DoWdlbmVzIGZpbHRyYWRhcyBwb3IgdGFnIHkgb3JkZW5hZGFzIHBvciBvcmRlciBhc2NlbmRlbnRlLlxuICAgICAqIFNlIHVzYSBjb21vIGJhc2UgcGFyYSBtb3N0cmFyIGltw6FnZW5lcyBlbiBlbCBIVE1MLCBhc2VndXJhbmRvIHF1ZSBzaWVtcHJlIGVzdMOpbiBlbiBlbCBvcmRlbiBjb3JyZWN0by5cbiAgICAgKi9cbiAgICBnZXQgb3JkZXJlZEltYWdlcygpOiBCYWJ5bG9uSW1hZ2VJW10ge1xuICAgICAgICByZXR1cm4gZ2V0T3JkZXJlZEltYWdlcyh0aGlzLm5vcm1hbGl6ZWRNdWx0aW1lZGlhPy5pbWFnZW5lcyA/PyBbXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV2dWVsdmUgbGEgaW1hZ2VuIHByaW5jaXBhbCAoaXpxdWllcmRhIGVuIGxheW91dCBub3JtYWwsIGRlcmVjaGEgc2kgcmV2ZXJzZUxheW91dD10cnVlKS5cbiAgICAgKiBFbCBIVE1MIHNpZW1wcmUgdXNhIGZpcnN0SW1hZ2UgcGFyYSBsYSBjb2x1bW5hIGRlIGNvbnRlbmlkby90ZXh0by5cbiAgICAgKi9cbiAgICAvKipcbiAgICAgKiBFbmN1ZW50cmEgZWwgcGFyIGRlIGltw6FnZW5lcyBjb25zZWN1dGl2YXMgbcOhcyBiYWpvIChwb3IgZWplbXBsbywgMS0yLCAyLTMsIGV0Yy4pXG4gICAgICogU2kgbm8gaGF5IHBhcmVzIGNvbnNlY3V0aXZvcywgdXNhIGxvcyBkb3MgcHJpbWVyb3Mgb3JkZW5hZG9zLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q29uc2VjdXRpdmVJbWFnZXMoKTogW1xuICAgICAgICBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkLFxuICAgICAgICBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkLFxuICAgIF0ge1xuICAgICAgICBjb25zdCBpbWFnZXMgPSB0aGlzLm9yZGVyZWRJbWFnZXM7XG4gICAgICAgIGlmIChpbWFnZXMubGVuZ3RoIDwgMikgcmV0dXJuIFtpbWFnZXNbMF0sIHVuZGVmaW5lZF07XG4gICAgICAgIC8vIHNlYXJjaCB0aGUgbG93ZXN0IGNvbnNlY3V0aXZlIHBhaXIgKDEtMiwgMi0zLCBldGMuKVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGltYWdlcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG9yZGVyQSA9IGltYWdlc1tpXT8ub3JkZXI7XG4gICAgICAgICAgICBjb25zdCBvcmRlckIgPSBpbWFnZXNbaSArIDFdPy5vcmRlcjtcbiAgICAgICAgICAgIGNvbnN0IG51bUEgPVxuICAgICAgICAgICAgICAgIHR5cGVvZiBvcmRlckEgPT09ICdudW1iZXInXG4gICAgICAgICAgICAgICAgICAgID8gb3JkZXJBXG4gICAgICAgICAgICAgICAgICAgIDogb3JkZXJBICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KG9yZGVyQSBhcyBhbnksIDEwKVxuICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3QgbnVtQiA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIG9yZGVyQiA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICAgICAgPyBvcmRlckJcbiAgICAgICAgICAgICAgICAgICAgOiBvcmRlckIgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQob3JkZXJCIGFzIGFueSwgMTApXG4gICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdHlwZW9mIG51bUEgPT09ICdudW1iZXInICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIG51bUIgPT09ICdudW1iZXInICYmXG4gICAgICAgICAgICAgICAgbnVtQiAtIG51bUEgPT09IDFcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbaW1hZ2VzW2ldLCBpbWFnZXNbaSArIDFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBTaSBubyBoYXkgcGFyZXMgY29uc2VjdXRpdm9zLCB1c2FyIGxvcyBkb3MgcHJpbWVyb3NcbiAgICAgICAgcmV0dXJuIFtpbWFnZXNbMF0sIGltYWdlc1sxXV07XG4gICAgfVxuXG4gICAgZ2V0IGZpcnN0SW1hZ2UoKTogQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IFtpbWdBLCBpbWdCXSA9IHRoaXMuZ2V0Q29uc2VjdXRpdmVJbWFnZXMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZUxheW91dCA/IGltZ0IgOiBpbWdBO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldnVlbHZlIGxhIGltYWdlbiBzZWN1bmRhcmlhIChkZXJlY2hhIGVuIGxheW91dCBub3JtYWwsIGl6cXVpZXJkYSBzaSByZXZlcnNlTGF5b3V0PXRydWUpLlxuICAgICAqIEVsIEhUTUwgc2llbXByZSB1c2Egc2Vjb25kSW1hZ2UgcGFyYSBsYSBjb2x1bW5hIGRlIGltYWdlbiBzZWN1bmRhcmlhLlxuICAgICAqL1xuICAgIGdldCBzZWNvbmRJbWFnZSgpOiBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgW2ltZ0EsIGltZ0JdID0gdGhpcy5nZXRDb25zZWN1dGl2ZUltYWdlcygpO1xuICAgICAgICByZXR1cm4gdGhpcy5yZXZlcnNlTGF5b3V0ID8gaW1nQSA6IGltZ0I7XG4gICAgfVxuXG4gICAgZ2V0IG1lZGlhSW1hZ2UoKTogQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5ub3JtYWxpemVkTXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXTtcbiAgICAgICAgY29uc3Qgc2Vjb25kID0gdGhpcy5ub3JtYWxpemVkTXVsdGltZWRpYT8uaW1hZ2VuZXM/LlsxXTtcblxuICAgICAgICBpZiAodGhpcy5jb250ZW50SW1hZ2UgPT09IGZpcnN0KSByZXR1cm4gc2Vjb25kID8/IGZpcnN0O1xuICAgICAgICBpZiAodGhpcy5jb250ZW50SW1hZ2UgPT09IHNlY29uZCkgcmV0dXJuIGZpcnN0ID8/IHNlY29uZDtcblxuICAgICAgICByZXR1cm4gc2Vjb25kID8/IGZpcnN0O1xuICAgIH1cblxuICAgIGdldCBjdGFCdXR0b24oKTogQmFieWxvbkJ1dHRvbkkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50SW1hZ2U/LmJ1dHRvbnM/LlswXSA/PyB0aGlzLmJ1dHRvbnM/LlswXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1RleHQoaW1hZ2U/OiBCYWJ5bG9uSW1hZ2VJKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIShcbiAgICAgICAgICAgIGltYWdlPy50aXRsZT8udHJpbSgpIHx8XG4gICAgICAgICAgICBpbWFnZT8uc3VidGl0bGU/LnRyaW0oKSB8fFxuICAgICAgICAgICAgaW1hZ2U/LmRlc2NyaXB0aW9uPy50cmltKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUm9vbURldGFpbChcbiAgICAgICAgdmFsdWU6IEJhYnlsb25NdWx0aW1lZGlhSSB8IEJhYnlsb25Sb29tRGV0YWlsSVxuICAgICk6IHZhbHVlIGlzIEJhYnlsb25Sb29tRGV0YWlsSSB7XG4gICAgICAgIHJldHVybiAnaW1hZ2VzJyBpbiB2YWx1ZSB8fCAndGV4dHMnIGluIHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBub3JtYWxpemVkTXVsdGltZWRpYSgpOiBCYWJ5bG9uTXVsdGltZWRpYUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9ybWFsaXplZE11bHRpbWVkaWE7XG4gICAgfVxuXG4gICAgZ2V0IHRpdGxlQ29udGVudCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5maXJzdEltYWdlPy50aXRsZSB8fFxuICAgICAgICAgICAgSGVhZGluZ1RhZ1V0aWxzLmdldEhlYWRpbmdDb250ZW50KFxuICAgICAgICAgICAgICAgIHRoaXMudGV4dHMsXG4gICAgICAgICAgICAgICAgJ3RpdGxlJyxcbiAgICAgICAgICAgICAgICB0aGlzLnRleHRzPy50aXRsZSB8fCB0aGlzLnRleHRzPy5uYW1lXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHN1YnRpdGxlQ29udGVudCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5maXJzdEltYWdlPy5zdWJ0aXRsZSB8fFxuICAgICAgICAgICAgSGVhZGluZ1RhZ1V0aWxzLmdldEhlYWRpbmdDb250ZW50KFxuICAgICAgICAgICAgICAgIHRoaXMudGV4dHMsXG4gICAgICAgICAgICAgICAgJ3N1YnRpdGxlJyxcbiAgICAgICAgICAgICAgICB0aGlzLnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCB0aXRsZVRhZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy50YWdzPy50aXRsZSB8fFxuICAgICAgICAgICAgSGVhZGluZ1RhZ1V0aWxzLmdldEhlYWRpbmdUYWcodGhpcy50ZXh0cywgJ3RpdGxlJywgJ3AnKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBzdWJ0aXRsZVRhZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy50YWdzPy5zdWJ0aXRsZSB8fFxuICAgICAgICAgICAgSGVhZGluZ1RhZ1V0aWxzLmdldEhlYWRpbmdUYWcodGhpcy50ZXh0cywgJ3N1YnRpdGxlJywgJ3AnKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGhhc0ltYWdlU3JjKGltYWdlPzogQmFieWxvbkltYWdlSSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISFpbWFnZT8uaW1nPy5zcmM/LnRyaW0oKTtcbiAgICB9XG5cbiAgICBoYXNJbWFnZUVycm9yKGtleTogJ2ZpcnN0JyB8ICdzZWNvbmQnKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmltYWdlRXJyb3JzLmhhcyhrZXkpO1xuICAgIH1cblxuICAgIG9uSW1hZ2VFcnJvcihrZXk6ICdmaXJzdCcgfCAnc2Vjb25kJyk6IHZvaWQge1xuICAgICAgICB0aGlzLmltYWdlRXJyb3JzLmFkZChrZXkpO1xuICAgIH1cbn1cbiIsIkBpZiAoZmlyc3RJbWFnZSB8fCBzZWNvbmRJbWFnZSkge1xuICAgIDxzZWN0aW9uXG4gICAgICAgIGNsYXNzPVwibWRsLXRvcGMyaW1ndGV4dFwiXG4gICAgICAgIFtjbGFzcy5yZXZlcnNlXT1cInJldmVyc2VMYXlvdXRcIlxuICAgICAgICBbYXR0ci5pZF09XCJpZGVudGlmaWVyIHx8ICcnXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb2x1bWxlZnRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAodGl0bGVDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWJhYnlsb24tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhZ109XCJ0aXRsZVRhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M9XCJtLXRpdHVsb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwidGl0bGVDb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2xpYi1iYWJ5bG9uLWR5bmFtaWMtaGVhZGluZz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKHN1YnRpdGxlQ29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLWR5bmFtaWMtaGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWddPVwic3VidGl0bGVUYWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzPVwibS1zdWJ0aXR1bG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cInN1YnRpdGxlQ29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9saWItYmFieWxvbi1keW5hbWljLWhlYWRpbmc+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0taW1hZ2VcIiAqbmdJZj1cImZpcnN0SW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzSW1hZ2VTcmMoZmlyc3RJbWFnZSkgJiYgIWhhc0ltYWdlRXJyb3IoJ2ZpcnN0JylcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0SW1hZ2U/LmltZz8uc3JjIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQUFBQVAvLy95SDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUJSQUE3J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RJbWFnZT8uaW1nPy5hbHQgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0SW1hZ2U/LmFsdCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwib25JbWFnZUVycm9yKCdmaXJzdCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmlyc3RJbWFnZSB8IGFpQmFkZ2VzOyBhcyBiYWRnZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChiYWRnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLWFpLWJhZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JhZGdlc109XCJiYWRnZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b209XCIzMDBweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ9XCIxMDBweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9saWItYmFieWxvbi1haS1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWltYWdlLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGZpcnN0SW1hZ2U/LmRlc2NyaXB0aW9uIHx8IHRleHRzPy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS10ZXh0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RJbWFnZT8uZGVzY3JpcHRpb24gfHwgdGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGN0YUJ1dHRvbjsgYXMgYnRuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1idXR0b25EXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidG4/LnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImJ0bj8ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhcmdldF09XCJidG4/LnRhcmdldCB8fCAnX3NlbGYnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG4/LnRhcmdldCB8fCAnX3NlbGYnKSA9PT0gJ19ibGFuaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ25vb3BlbmVyIG5vcmVmZXJyZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnRuPy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYnRuPy5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWNvbHVtcmlnaHRcIiAqbmdJZj1cInNlY29uZEltYWdlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0taW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChoYXNJbWFnZVNyYyhzZWNvbmRJbWFnZSkgJiYgIWhhc0ltYWdlRXJyb3IoJ3NlY29uZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kSW1hZ2U/LmltZz8uc3JjIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRJbWFnZT8uaW1nPy5hbHQgPz8gc2Vjb25kSW1hZ2U/LmFsdCA/PyAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJvbkltYWdlRXJyb3IoJ3NlY29uZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNlY29uZEltYWdlIHwgYWlCYWRnZXM7IGFzIGJhZGdlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYmFkZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLWFpLWJhZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmFkZ2VzXT1cImJhZGdlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj1cInRvcC1yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWRkaXRpb25hbENsYXNzZXNdPVwiJ3RvcC0tMTAwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2xpYi1iYWJ5bG9uLWFpLWJhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWltYWdlLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxufVxuIl19
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLWMyLWltZy10eHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZXJuYWwvY29yZS90b3AtYzItaW1nLXR4dC90b3AtYzItaW1nLXR4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL3RvcC1jMi1pbWctdHh0L3RvcC1jMi1pbWctdHh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQVNoRyxPQUFPLEVBQ0gsNEJBQTRCLEVBQzVCLGdCQUFnQixHQUNuQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFnQmhFLE1BQU0sT0FBTyxvQkFBb0I7SUFkakM7UUFlYSxlQUFVLEdBQVksRUFBRSxDQUFDO1FBRTNCLG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBYTlCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFNUixnQkFBVyxHQUFHLElBQUks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QjtRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQXBQUSxvQkFBb0I7bUdBQXBCLG9CQUFvQixtUkNwQ2pDLDh2S0FxSEEsOCtPRDNGUSxZQUFZLG1JQUNaLHdCQUF3QixtS0FDeEIsOEJBQThCLG9KQUM5Qix1QkFBdUIsbUpBQ3ZCLFlBQVk7OzRGQU1QLG9CQUFvQjtrQkFkaEMsU0FBUzsrQkFDSSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWix3QkFBd0I7d0JBQ3hCLDhCQUE4Qjt3QkFDOUIsdUJBQXVCO3dCQUN2QixZQUFZO3FCQUNmLGlCQUdjLGlCQUFpQixDQUFDLElBQUk7OEJBRzVCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0YsVUFBVTtzQkFEYixLQUFLO2dCQVNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFieWxvbkxpbmtUeXBlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGlyZWN0aXZlcy9saW5rLXR5cGUvbGluay10eXBlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICAgIEJhYnlsb25CdXR0b25JLFxuICAgIEJhYnlsb25JbWFnZUksXG4gICAgQmFieWxvbk11bHRpbWVkaWFJLFxuICAgIEJhYnlsb25Sb29tRGV0YWlsSSxcbiAgICBCYWJ5bG9uVGFnc0ksXG4gICAgQmFieWxvblRleHRJbmZvSSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICAgIGdldEltYWdlc0J5VGFnRnJvbU11bHRpbWVkaWEsXG4gICAgZ2V0T3JkZXJlZEltYWdlcyxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvbXV0aW1lZGlhLnV0aWxzJztcbmltcG9ydCB7IEhlYWRpbmdUYWdVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL2hlYWRpbmctdGFnLnV0aWxzJztcbmltcG9ydCB7IEJhYnlsb25EeW5hbWljSGVhZGluZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBUb3BDMkltZ1R4dENvbnRlbnQgfSBmcm9tICcuL3RvcC1jMi1pbWctdHh0LmludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0QWlCYWRnZVRleHQgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9haS1iYWRnZS51dGlscyc7XG5pbXBvcnQgeyBCYWJ5bG9uQWlCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvYmFieWxvbi1haS1iYWRnZS9iYWJ5bG9uLWFpLWJhZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBaUJhZGdlc1BpcGUgfSBmcm9tICcuLi8uLi8uLi8uLi9waXBlcy9haS1iYWRnZXMucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndG9wLWMyLWltZy10eHQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZSxcbiAgICAgICAgQmFieWxvbkR5bmFtaWNIZWFkaW5nQ29tcG9uZW50LFxuICAgICAgICBCYWJ5bG9uQWlCYWRnZUNvbXBvbmVudCxcbiAgICAgICAgQWlCYWRnZXNQaXBlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RvcC1jMi1pbWctdHh0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vdG9wLWMyLWltZy10eHQuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFRvcEMySW1nVHh0Q29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBpZGVudGlmaWVyPzogc3RyaW5nID0gJyc7XG4gICAgcHJpdmF0ZSBfbXVsdGltZWRpYT86IEJhYnlsb25NdWx0aW1lZGlhSSB8IEJhYnlsb25Sb29tRGV0YWlsSTtcbiAgICBwdWJsaWMgZ2V0QWlCYWRnZVRleHQgPSBnZXRBaUJhZGdlVGV4dDtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IG11bHRpbWVkaWEodmFsdWU6IEJhYnlsb25NdWx0aW1lZGlhSSB8IEJhYnlsb25Sb29tRGV0YWlsSSB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9tdWx0aW1lZGlhID0gdmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlTm9ybWFsaXplZE11bHRpbWVkaWEoKTtcbiAgICB9XG5cbiAgICBnZXQgbXVsdGltZWRpYSgpOiBCYWJ5bG9uTXVsdGltZWRpYUkgfCBCYWJ5bG9uUm9vbURldGFpbEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fbXVsdGltZWRpYTtcbiAgICB9XG4gICAgQElucHV0KCkgYnV0dG9ucz86IEJhYnlsb25CdXR0b25JW107XG4gICAgQElucHV0KCkgY29udGVudD86IFRvcEMySW1nVHh0Q29udGVudDtcbiAgICBASW5wdXQoKSByZXZlcnNlID0gZmFsc2U7XG4gICAgQElucHV0KCkgaW1hZ2VPcmRlcj86IG51bWJlciB8IHN0cmluZztcbiAgICBASW5wdXQoKSB0ZXh0cz86IEJhYnlsb25UZXh0SW5mb0k7XG4gICAgQElucHV0KCkgdGFncz86IEJhYnlsb25UYWdzSTtcblxuICAgIHByaXZhdGUgX25vcm1hbGl6ZWRNdWx0aW1lZGlhPzogQmFieWxvbk11bHRpbWVkaWFJIHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW1hZ2VFcnJvcnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIHByaXZhdGUgdXBkYXRlTm9ybWFsaXplZE11bHRpbWVkaWEoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG11bHRpbWVkaWEgPSB0aGlzLl9tdWx0aW1lZGlhO1xuICAgICAgICBpZiAoIW11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgIHRoaXMuX25vcm1hbGl6ZWRNdWx0aW1lZGlhID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFRBRyA9ICdUb3BDMkltZ1R4dCc7XG4gICAgICAgIGlmICh0aGlzLmlzUm9vbURldGFpbChtdWx0aW1lZGlhKSkge1xuICAgICAgICAgICAgbGV0IGltYWdlbmVzID0gKG11bHRpbWVkaWEubXVsdGltZWRpYT8uaW1hZ2VuZXMgPz9cbiAgICAgICAgICAgICAgICBtdWx0aW1lZGlhLmltYWdlcyA/P1xuICAgICAgICAgICAgICAgIFtdKSBhcyBCYWJ5bG9uSW1hZ2VJW107XG4gICAgICAgICAgICBpbWFnZW5lcyA9IGdldEltYWdlc0J5VGFnRnJvbU11bHRpbWVkaWEoeyBpbWFnZW5lcyB9LCBUQUcpO1xuICAgICAgICAgICAgY29uc3QgW2ZpcnN0LCAuLi5yZXN0XSA9IGltYWdlbmVzO1xuICAgICAgICAgICAgY29uc3QgY29udGVudEltYWdlOiBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkID0gZmlyc3RcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5maXJzdCxcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZmlyc3QudGl0bGUgfHwgbXVsdGltZWRpYS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QuZGVzY3JpcHRpb24gfHwgbXVsdGltZWRpYS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLnRleHRzID0gbXVsdGltZWRpYS50ZXh0cztcbiAgICAgICAgICAgIHRoaXMuX25vcm1hbGl6ZWRNdWx0aW1lZGlhID0ge1xuICAgICAgICAgICAgICAgIGltYWdlbmVzOiBjb250ZW50SW1hZ2UgPyBbY29udGVudEltYWdlLCAuLi5yZXN0XSA6IGltYWdlbmVzLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBTaSBubyBlcyBSb29tRGV0YWlsLCBOTyBmaWx0cmFtb3MgcG9yIHRhZywgc29sbyBkZXZvbHZlbW9zIGxhcyBpbcOhZ2VuZXMgdGFsIGN1YWxcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgJ2ltYWdlbmVzJyBpbiBtdWx0aW1lZGlhICYmXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KChtdWx0aW1lZGlhIGFzIGFueSkuaW1hZ2VuZXMpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fbm9ybWFsaXplZE11bHRpbWVkaWEgPSB7XG4gICAgICAgICAgICAgICAgLi4ubXVsdGltZWRpYSxcbiAgICAgICAgICAgICAgICBpbWFnZW5lczogKG11bHRpbWVkaWEgYXMgYW55KS5pbWFnZW5lcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbm9ybWFsaXplZE11bHRpbWVkaWEgPSBtdWx0aW1lZGlhO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1snbXVsdGltZWRpYSddKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5vcm1hbGl6ZWRNdWx0aW1lZGlhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgcmV2ZXJzZUxheW91dCgpOiBib29sZWFuIHtcbiAgICAgICAgLy8gVXNhciBlbCBtaXNtbyBwYXIgZGUgaW3DoWdlbmVzIHF1ZSBzZSBtdWVzdHJhbiAoY29uc2VjdXRpdmFzKVxuICAgICAgICBjb25zdCBbZmlyc3QsIHNlY29uZF0gPSB0aGlzLmdldENvbnNlY3V0aXZlSW1hZ2VzKCk7XG4gICAgICAgIGlmICghdGhpcy5oYXNUZXh0KGZpcnN0KSAmJiB0aGlzLmhhc1RleHQoc2Vjb25kKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudD8ucmV2ZXJzZSA/PyB0aGlzLnJldmVyc2U7XG4gICAgfVxuXG4gICAgZ2V0IGNvbnRlbnRJbWFnZSgpOiBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgaW1hZ2VzID0gdGhpcy5ub3JtYWxpemVkTXVsdGltZWRpYT8uaW1hZ2VuZXMgPz8gW107XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5nZXRJbWFnZUJ5T3JkZXIoMSwgaW1hZ2VzKTtcbiAgICAgICAgY29uc3Qgc2Vjb25kID0gdGhpcy5nZXRJbWFnZUJ5T3JkZXIoMiwgaW1hZ2VzKTtcbiAgICAgICAgaWYgKHRoaXMuaGFzVGV4dChmaXJzdCkpIHJldHVybiBmaXJzdDtcbiAgICAgICAgaWYgKHRoaXMuaGFzVGV4dChzZWNvbmQpKSByZXR1cm4gc2Vjb25kO1xuICAgICAgICByZXR1cm4gZmlyc3QgPz8gc2Vjb25kO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SW1hZ2VCeU9yZGVyKFxuICAgICAgICBvcmRlcjogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICBpbWFnZXM6IEJhYnlsb25JbWFnZUlbXVxuICAgICk6IEJhYnlsb25JbWFnZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAob3JkZXIgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGltYWdlc1swXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW1hZ2VzLmZpbmQoKGltZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW1nT3JkZXIgPSAoaW1nIGFzIGFueSkub3JkZXI7XG4gICAgICAgICAgICByZXR1cm4gaW1nT3JkZXIgIT0gbnVsbCAmJiBpbWdPcmRlci50b1N0cmluZygpID09PSBvcmRlci50b1N0cmluZygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXZ1ZWx2ZSBsYXMgaW3DoWdlbmVzIGZpbHRyYWRhcyBwb3IgdGFnIHkgb3JkZW5hZGFzIHBvciBvcmRlciBhc2NlbmRlbnRlLlxuICAgICAqIFNlIHVzYSBjb21vIGJhc2UgcGFyYSBtb3N0cmFyIGltw6FnZW5lcyBlbiBlbCBIVE1MLCBhc2VndXJhbmRvIHF1ZSBzaWVtcHJlIGVzdMOpbiBlbiBlbCBvcmRlbiBjb3JyZWN0by5cbiAgICAgKi9cbiAgICBnZXQgb3JkZXJlZEltYWdlcygpOiBCYWJ5bG9uSW1hZ2VJW10ge1xuICAgICAgICByZXR1cm4gZ2V0T3JkZXJlZEltYWdlcyh0aGlzLm5vcm1hbGl6ZWRNdWx0aW1lZGlhPy5pbWFnZW5lcyA/PyBbXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV2dWVsdmUgbGEgaW1hZ2VuIHByaW5jaXBhbCAoaXpxdWllcmRhIGVuIGxheW91dCBub3JtYWwsIGRlcmVjaGEgc2kgcmV2ZXJzZUxheW91dD10cnVlKS5cbiAgICAgKiBFbCBIVE1MIHNpZW1wcmUgdXNhIGZpcnN0SW1hZ2UgcGFyYSBsYSBjb2x1bW5hIGRlIGNvbnRlbmlkby90ZXh0by5cbiAgICAgKi9cbiAgICAvKipcbiAgICAgKiBFbmN1ZW50cmEgZWwgcGFyIGRlIGltw6FnZW5lcyBjb25zZWN1dGl2YXMgbcOhcyBiYWpvIChwb3IgZWplbXBsbywgMS0yLCAyLTMsIGV0Yy4pXG4gICAgICogU2kgbm8gaGF5IHBhcmVzIGNvbnNlY3V0aXZvcywgdXNhIGxvcyBkb3MgcHJpbWVyb3Mgb3JkZW5hZG9zLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q29uc2VjdXRpdmVJbWFnZXMoKTogW1xuICAgICAgICBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkLFxuICAgICAgICBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkLFxuICAgIF0ge1xuICAgICAgICBjb25zdCBpbWFnZXMgPSB0aGlzLm9yZGVyZWRJbWFnZXM7XG4gICAgICAgIGlmIChpbWFnZXMubGVuZ3RoIDwgMikgcmV0dXJuIFtpbWFnZXNbMF0sIHVuZGVmaW5lZF07XG4gICAgICAgIC8vIHNlYXJjaCB0aGUgbG93ZXN0IGNvbnNlY3V0aXZlIHBhaXIgKDEtMiwgMi0zLCBldGMuKVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGltYWdlcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG9yZGVyQSA9IGltYWdlc1tpXT8ub3JkZXI7XG4gICAgICAgICAgICBjb25zdCBvcmRlckIgPSBpbWFnZXNbaSArIDFdPy5vcmRlcjtcbiAgICAgICAgICAgIGNvbnN0IG51bUEgPVxuICAgICAgICAgICAgICAgIHR5cGVvZiBvcmRlckEgPT09ICdudW1iZXInXG4gICAgICAgICAgICAgICAgICAgID8gb3JkZXJBXG4gICAgICAgICAgICAgICAgICAgIDogb3JkZXJBICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KG9yZGVyQSBhcyBhbnksIDEwKVxuICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3QgbnVtQiA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIG9yZGVyQiA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICAgICAgPyBvcmRlckJcbiAgICAgICAgICAgICAgICAgICAgOiBvcmRlckIgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQob3JkZXJCIGFzIGFueSwgMTApXG4gICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdHlwZW9mIG51bUEgPT09ICdudW1iZXInICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIG51bUIgPT09ICdudW1iZXInICYmXG4gICAgICAgICAgICAgICAgbnVtQiAtIG51bUEgPT09IDFcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbaW1hZ2VzW2ldLCBpbWFnZXNbaSArIDFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBTaSBubyBoYXkgcGFyZXMgY29uc2VjdXRpdm9zLCB1c2FyIGxvcyBkb3MgcHJpbWVyb3NcbiAgICAgICAgcmV0dXJuIFtpbWFnZXNbMF0sIGltYWdlc1sxXV07XG4gICAgfVxuXG4gICAgZ2V0IGZpcnN0SW1hZ2UoKTogQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IFtpbWdBLCBpbWdCXSA9IHRoaXMuZ2V0Q29uc2VjdXRpdmVJbWFnZXMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZUxheW91dCA/IGltZ0IgOiBpbWdBO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldnVlbHZlIGxhIGltYWdlbiBzZWN1bmRhcmlhIChkZXJlY2hhIGVuIGxheW91dCBub3JtYWwsIGl6cXVpZXJkYSBzaSByZXZlcnNlTGF5b3V0PXRydWUpLlxuICAgICAqIEVsIEhUTUwgc2llbXByZSB1c2Egc2Vjb25kSW1hZ2UgcGFyYSBsYSBjb2x1bW5hIGRlIGltYWdlbiBzZWN1bmRhcmlhLlxuICAgICAqL1xuICAgIGdldCBzZWNvbmRJbWFnZSgpOiBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgW2ltZ0EsIGltZ0JdID0gdGhpcy5nZXRDb25zZWN1dGl2ZUltYWdlcygpO1xuICAgICAgICByZXR1cm4gdGhpcy5yZXZlcnNlTGF5b3V0ID8gaW1nQSA6IGltZ0I7XG4gICAgfVxuXG4gICAgZ2V0IG1lZGlhSW1hZ2UoKTogQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5ub3JtYWxpemVkTXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXTtcbiAgICAgICAgY29uc3Qgc2Vjb25kID0gdGhpcy5ub3JtYWxpemVkTXVsdGltZWRpYT8uaW1hZ2VuZXM/LlsxXTtcblxuICAgICAgICBpZiAodGhpcy5jb250ZW50SW1hZ2UgPT09IGZpcnN0KSByZXR1cm4gc2Vjb25kID8/IGZpcnN0O1xuICAgICAgICBpZiAodGhpcy5jb250ZW50SW1hZ2UgPT09IHNlY29uZCkgcmV0dXJuIGZpcnN0ID8/IHNlY29uZDtcblxuICAgICAgICByZXR1cm4gc2Vjb25kID8/IGZpcnN0O1xuICAgIH1cblxuICAgIGdldCBjdGFCdXR0b24oKTogQmFieWxvbkJ1dHRvbkkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50SW1hZ2U/LmJ1dHRvbnM/LlswXSA/PyB0aGlzLmJ1dHRvbnM/LlswXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1RleHQoaW1hZ2U/OiBCYWJ5bG9uSW1hZ2VJKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIShcbiAgICAgICAgICAgIGltYWdlPy50aXRsZT8udHJpbSgpIHx8XG4gICAgICAgICAgICBpbWFnZT8uc3VidGl0bGU/LnRyaW0oKSB8fFxuICAgICAgICAgICAgaW1hZ2U/LmRlc2NyaXB0aW9uPy50cmltKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUm9vbURldGFpbChcbiAgICAgICAgdmFsdWU6IEJhYnlsb25NdWx0aW1lZGlhSSB8IEJhYnlsb25Sb29tRGV0YWlsSVxuICAgICk6IHZhbHVlIGlzIEJhYnlsb25Sb29tRGV0YWlsSSB7XG4gICAgICAgIHJldHVybiAnaW1hZ2VzJyBpbiB2YWx1ZSB8fCAndGV4dHMnIGluIHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBub3JtYWxpemVkTXVsdGltZWRpYSgpOiBCYWJ5bG9uTXVsdGltZWRpYUkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9ybWFsaXplZE11bHRpbWVkaWE7XG4gICAgfVxuXG4gICAgZ2V0IHRpdGxlQ29udGVudCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5maXJzdEltYWdlPy50aXRsZSB8fFxuICAgICAgICAgICAgSGVhZGluZ1RhZ1V0aWxzLmdldEhlYWRpbmdDb250ZW50KFxuICAgICAgICAgICAgICAgIHRoaXMudGV4dHMsXG4gICAgICAgICAgICAgICAgJ3RpdGxlJyxcbiAgICAgICAgICAgICAgICB0aGlzLnRleHRzPy50aXRsZSB8fCB0aGlzLnRleHRzPy5uYW1lXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHN1YnRpdGxlQ29udGVudCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5maXJzdEltYWdlPy5zdWJ0aXRsZSB8fFxuICAgICAgICAgICAgSGVhZGluZ1RhZ1V0aWxzLmdldEhlYWRpbmdDb250ZW50KFxuICAgICAgICAgICAgICAgIHRoaXMudGV4dHMsXG4gICAgICAgICAgICAgICAgJ3N1YnRpdGxlJyxcbiAgICAgICAgICAgICAgICB0aGlzLnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCB0aXRsZVRhZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy50YWdzPy50aXRsZSB8fFxuICAgICAgICAgICAgSGVhZGluZ1RhZ1V0aWxzLmdldEhlYWRpbmdUYWcodGhpcy50ZXh0cywgJ3RpdGxlJywgJ3AnKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBzdWJ0aXRsZVRhZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy50YWdzPy5zdWJ0aXRsZSB8fFxuICAgICAgICAgICAgSGVhZGluZ1RhZ1V0aWxzLmdldEhlYWRpbmdUYWcodGhpcy50ZXh0cywgJ3N1YnRpdGxlJywgJ3AnKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGhhc0ltYWdlU3JjKGltYWdlPzogQmFieWxvbkltYWdlSSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISFpbWFnZT8uaW1nPy5zcmM/LnRyaW0oKTtcbiAgICB9XG5cbiAgICBoYXNJbWFnZUVycm9yKGtleTogJ2ZpcnN0JyB8ICdzZWNvbmQnKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmltYWdlRXJyb3JzLmhhcyhrZXkpO1xuICAgIH1cblxuICAgIG9uSW1hZ2VFcnJvcihrZXk6ICdmaXJzdCcgfCAnc2Vjb25kJyk6IHZvaWQge1xuICAgICAgICB0aGlzLmltYWdlRXJyb3JzLmFkZChrZXkpO1xuICAgIH1cbn1cbiIsIkBpZiAoZmlyc3RJbWFnZSB8fCBzZWNvbmRJbWFnZSkge1xuICAgIDxzZWN0aW9uXG4gICAgICAgIGNsYXNzPVwibWRsLXRvcGMyaW1ndGV4dFwiXG4gICAgICAgIFtjbGFzcy5yZXZlcnNlXT1cInJldmVyc2VMYXlvdXRcIlxuICAgICAgICBbYXR0ci5pZF09XCJpZGVudGlmaWVyIHx8ICcnXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZGwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb2x1bWxlZnRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAodGl0bGVDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWJhYnlsb24tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhZ109XCJ0aXRsZVRhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M9XCJtLXRpdHVsb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwidGl0bGVDb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2xpYi1iYWJ5bG9uLWR5bmFtaWMtaGVhZGluZz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKHN1YnRpdGxlQ29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLWR5bmFtaWMtaGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWddPVwic3VidGl0bGVUYWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzPVwibS1zdWJ0aXR1bG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cInN1YnRpdGxlQ29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9saWItYmFieWxvbi1keW5hbWljLWhlYWRpbmc+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0taW1hZ2VcIiAqbmdJZj1cImZpcnN0SW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzSW1hZ2VTcmMoZmlyc3RJbWFnZSkgJiYgIWhhc0ltYWdlRXJyb3IoJ2ZpcnN0JylcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0SW1hZ2U/LmltZz8uc3JjIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQUFBQVAvLy95SDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUJSQUE3J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RJbWFnZT8uaW1nPy5hbHQgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0SW1hZ2U/LmFsdCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwib25JbWFnZUVycm9yKCdmaXJzdCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZmlyc3RJbWFnZSB8IGFpQmFkZ2VzOyBhcyBiYWRnZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChiYWRnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLWFpLWJhZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JhZGdlc109XCJiYWRnZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b209XCIyNTBweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ9XCIxMDBweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9saWItYmFieWxvbi1haS1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWltYWdlLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGZpcnN0SW1hZ2U/LmRlc2NyaXB0aW9uIHx8IHRleHRzPy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS10ZXh0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RJbWFnZT8uZGVzY3JpcHRpb24gfHwgdGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGN0YUJ1dHRvbjsgYXMgYnRuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1idXR0b25EXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidG4/LnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImJ0bj8ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRhcmdldF09XCJidG4/LnRhcmdldCB8fCAnX3NlbGYnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5yZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG4/LnRhcmdldCB8fCAnX3NlbGYnKSA9PT0gJ19ibGFuaydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ25vb3BlbmVyIG5vcmVmZXJyZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnRuPy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYnRuPy5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWNvbHVtcmlnaHRcIiAqbmdJZj1cInNlY29uZEltYWdlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0taW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChoYXNJbWFnZVNyYyhzZWNvbmRJbWFnZSkgJiYgIWhhc0ltYWdlRXJyb3IoJ3NlY29uZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kSW1hZ2U/LmltZz8uc3JjIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRJbWFnZT8uaW1nPy5hbHQgPz8gc2Vjb25kSW1hZ2U/LmFsdCA/PyAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJvbkltYWdlRXJyb3IoJ3NlY29uZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNlY29uZEltYWdlIHwgYWlCYWRnZXM7IGFzIGJhZGdlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYmFkZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLWFpLWJhZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmFkZ2VzXT1cImJhZGdlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj1cInRvcC1yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWRkaXRpb25hbENsYXNzZXNdPVwiJ3RvcC0tMTAwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2xpYi1iYWJ5bG9uLWFpLWJhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWltYWdlLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxufVxuIl19
@@ -161,8 +161,10 @@ export class BabylonLightGalleryDirective {
161
161
  if (!outer?.length) {
162
162
  return;
163
163
  }
164
- outer.find('.lg-thumb-item--video').removeClass('lg-thumb-item--video');
165
- outer.find('.lg-item--video').removeClass('lg-item--video');
164
+ outer
165
+ .find('.lg-thumb-item--video')
166
+ ?.removeClass('lg-thumb-item--video');
167
+ outer.find('.lg-item--video')?.removeClass('lg-item--video');
166
168
  gallery.find('.cs_lightbox_item').each((index, item) => {
167
169
  const url = item.getAttribute('href') ||
168
170
  item.getAttribute('data-src') ||
@@ -294,4 +296,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
294
296
  standalone: true,
295
297
  }]
296
298
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1saWdodC1nYWxsZXJ5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2JhYnlsb24tZ2FsbGVyaWVzL2JhYnlsb24tbGlnaHQtZ2FsbGVyeS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUVILFNBQVMsRUFFVCxNQUFNLEVBRU4sV0FBVyxHQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBTXBDLE1BQU0sT0FBTyw0QkFBNEI7SUFjckMsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFYMUIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFHbkIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLGlDQUFpQyxDQUFDO1FBQ2pELHVCQUFrQixHQUMvQixvREFBb0QsQ0FBQztRQUN4QyxzQkFBaUIsR0FDOUIsc0RBQXNELENBQUM7SUFFdEIsQ0FBQztJQUV0QyxlQUFlO1FBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNyQyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUMvQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDckMsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFdEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDbEM7UUFFRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU8sU0FBUztRQUNiLE1BQU0sQ0FBQyxHQUFHLE1BQWEsQ0FBQztRQUN4QixPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU8sU0FBUztRQUNiLE9BQU8sT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssVUFBVSxDQUFDO0lBQ2xELENBQUM7SUFFTyxlQUFlO1FBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxPQUFPLE9BQU8sTUFBTSxFQUFFLEVBQUUsRUFBRSxZQUFZLEtBQUssVUFBVSxDQUFDO0lBQzFELENBQUM7SUFFTyw2QkFBNkI7UUFDakMsSUFDSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkMsSUFBSSxDQUFDLFNBQVM7WUFDZCxJQUFJLENBQUMsbUJBQW1CLEVBQzFCO1lBQ0UsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUVoQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2pFLElBQUksQ0FDRCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7YUFDbkM7WUFFRCxPQUFPLFFBQVEsQ0FBQztnQkFDWixLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztnQkFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7YUFDM0MsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLEVBQ3pDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUNMO2FBQ0EsU0FBUyxDQUFDO1lBQ1AsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDYixPQUFPLENBQUMsS0FBSyxDQUFDLDRCQUE0QixFQUFFLEtBQUssQ0FBQztTQUN6RCxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN2RCxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNoQixPQUFPO2FBQ1Y7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFO2dCQUN6QixJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztnQkFDckMsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUNoRSxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTlDLE9BQU87YUFDRixHQUFHLENBQUMsc0JBQXNCLENBQUM7YUFDM0IsRUFBRSxDQUNDLHFKQUFxSixFQUNySixHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQ2hELENBQUM7UUFFTixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU87YUFDekIsWUFBWSxDQUFDO1lBQ1YsUUFBUSxFQUFFLG1CQUFtQjtZQUM3QixTQUFTLEVBQUUsSUFBSTtZQUNmLFlBQVksRUFBRSxZQUFZO1lBQzFCLG9CQUFvQixFQUFFLEtBQUs7WUFDM0Isa0JBQWtCLEVBQUUsS0FBSztZQUN6Qix3QkFBd0IsRUFBRSxLQUFLO1lBQy9CLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLEtBQUssRUFBRSxLQUFLO1lBQ1osVUFBVSxFQUFFLEtBQUs7WUFDakIsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsS0FBSztZQUNqQixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLGtCQUFrQixFQUFFLEtBQUs7WUFDekIsYUFBYSxFQUFFLE1BQU07WUFDckIsbUJBQW1CLEVBQUU7Z0JBQ2pCLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixJQUFJLEVBQUUsQ0FBQztnQkFDUCxXQUFXLEVBQUUsQ0FBQztnQkFDZCxHQUFHLEVBQUUsQ0FBQzthQUNUO1lBQ0QsUUFBUSxFQUFFLEtBQUs7U0FDbEIsQ0FBQzthQUNELElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU8sT0FBTztRQUNYLElBQ0ksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ25DLElBQUksQ0FBQyxTQUFTO1lBQ2QsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQ25CO1lBQ0UsT0FBTztTQUNWO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FDL0MsbUJBQW1CLENBQ3RCLENBQUMsTUFBTSxDQUFDO1FBRVQsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNYLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDekIsa0VBQWtFO1lBQ2xFLDhEQUE4RDtZQUM5RCxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztZQUNyQyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sY0FBYztRQUNsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3JDLE9BQU87U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ3ZFO1FBRUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVPLGNBQWM7UUFDbEIsSUFDSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkMsSUFBSSxDQUFDLFNBQVM7WUFDZCxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFDbkI7WUFDRSxPQUFPO1NBQ1Y7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDaEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUMsTUFBTSxLQUFLLEdBQ1AsSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRS9ELElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQ2hCLE9BQU87U0FDVjtRQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN4RSxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFNUQsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQWEsRUFBRSxJQUFTLEVBQUUsRUFBRTtZQUNoRSxNQUFNLEdBQUcsR0FDTCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztnQkFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7Z0JBQzdCLEVBQUUsQ0FBQztZQUVQLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN2QixPQUFPO2FBQ1Y7WUFFRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUvQyxLQUFLO2lCQUNBLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDdEIsRUFBRSxDQUFDLEtBQUssQ0FBQztpQkFDVCxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUN0QyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBVSxFQUFFLElBQWlCO1FBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUE0QixDQUFDO1FBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxFQUFFLEdBQUcsQ0FBQztRQUU5RCxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUcsRUFBRSxFQUFFO1lBQzdDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ25CLE9BQU87YUFDVjtZQUVELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUE0QixDQUFDO1lBRTdELElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ2YsT0FBTzthQUNWO1lBRUQsWUFBWSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQzFCLHlCQUF5QixFQUN6QixHQUFHLEtBQUssTUFBTSxNQUFNLEVBQUUsQ0FDekIsQ0FBQztZQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDO1lBQzFDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ3JCLENBQUMsRUFDRCxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUM1QyxDQUFDO1lBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDdEIsQ0FBQyxFQUNELE1BQU0sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQzdDLENBQUM7WUFDRixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLEVBQUUsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVoRSxZQUFZLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FDMUIsa0JBQWtCLEVBQ2xCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FDbkMsQ0FBQztZQUNGLFlBQVksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUMxQixtQkFBbUIsRUFDbkIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUNwQyxDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBRUYsU0FBUyxFQUFFLENBQUM7UUFFWixJQUFJLEtBQUssRUFBRSxZQUFZLElBQUksS0FBSyxFQUFFLGFBQWEsRUFBRTtZQUM3QyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDdEQ7UUFFRCxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksSUFBSSxNQUFNLEVBQUU7WUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFdkMsV0FBVyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FDdEIsU0FBUyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ25FLFdBQVcsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQVU7UUFDakMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRXJELE9BQU87YUFDRixJQUFJLENBQ0QsT0FBTyxFQUNQLHFHQUFxRyxDQUN4RzthQUNBLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVyQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBYyxFQUFFLE1BQXlCLEVBQUUsRUFBRTtZQUN2RCxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8scUJBQXFCLENBQUMsTUFBeUI7UUFDbkQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sT0FBTztTQUNWO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRTtZQUNuQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQztRQUVGLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLE1BQU0sRUFBRTtZQUNuRCxNQUFNLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ2hELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDOUQ7UUFFRCxJQUFJLFdBQVcsS0FBSyxHQUFHLEVBQUU7WUFDckIsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDM0M7YUFBTTtZQUNILFNBQVMsRUFBRSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsR0FBVztRQUNuQyxJQUFJO1lBQ0EsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ2xFLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpELEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUV0QyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM3QixvRUFBb0U7Z0JBQ3BFLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDbEMsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDNUM7WUFFRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN6QjtRQUFDLE1BQU07WUFDSixPQUFPLEdBQUcsQ0FBQztTQUNkO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE1BQXlCO1FBQy9DLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTdDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLE9BQU87U0FDVjtRQUVELE1BQU0sQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUM3Qiw2Q0FBNkMsRUFDN0MsR0FBRyxDQUNOLENBQUM7UUFDRixNQUFNLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FDN0Isa0RBQWtELEVBQ2xELEdBQUcsQ0FDTixDQUFDO0lBQ04sQ0FBQztJQUVPLFVBQVUsQ0FBQyxHQUFXO1FBQzFCLE9BQU8sNkdBQTZHLENBQUMsSUFBSSxDQUNySCxHQUFHLENBQ04sQ0FBQztJQUNOLENBQUM7SUFFTyxZQUFZLENBQUMsR0FBVztRQUM1QixPQUFPLG1EQUFtRCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8sY0FBYztRQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUU7WUFDekMsU0FBUyxFQUFFLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSTtTQUNoQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sd0JBQXdCO1FBQzVCLFFBQVE7YUFDSCxnQkFBZ0IsQ0FBQyxlQUFlLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDO2FBQzVELE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQzsrR0E3WVEsNEJBQTRCO21HQUE1Qiw0QkFBNEI7OzRGQUE1Qiw0QkFBNEI7a0JBSnhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgUExBVEZPUk1fSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmluYWxpemUsIGZvcmtKb2luLCBvZiwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tCYWJ5bG9uTGlnaHRHYWxsZXJ5XScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQmFieWxvbkxpZ2h0R2FsbGVyeURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBnYWxsZXJ5SW5zdGFuY2U6IGFueTtcbiAgICBwcml2YXRlIG9ic2VydmVyPzogTXV0YXRpb25PYnNlcnZlcjtcbiAgICBwcml2YXRlIGRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgbG9hZGluZ0RlcGVuZGVuY2llcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgaW5pdFRpbWVvdXQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBqcXVlcnlTY3JpcHQgPSAnYXNzZXRzL2JhYnlsb24vanMvanF1ZXJ5Lm1pbi5qcyc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsaWdodEdhbGxlcnlTY3JpcHQgPVxuICAgICAgICAnYXNzZXRzL2JhYnlsb24vbGlnaHRnYWxsZXJ5L2pzL2xpZ2h0Z2FsbGVyeS5taW4uanMnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlnaHRHYWxsZXJ5U3R5bGUgPVxuICAgICAgICAnYXNzZXRzL2JhYnlsb24vbGlnaHRnYWxsZXJ5L2Nzcy9saWdodGdhbGxlcnkubWluLmNzcyc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhhc0xpZ2h0R2FsbGVyeSgpKSB7XG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVJbml0TGlnaHRHYWxsZXJ5KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvYWREZXBlbmRlbmNpZXNBbmRJbml0aWFsaXplKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmluaXRUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5pbml0VGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRlc3Ryb3lHYWxsZXJ5KCk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEpRdWVyeSgpOiBhbnkge1xuICAgICAgICBjb25zdCB3ID0gd2luZG93IGFzIGFueTtcbiAgICAgICAgcmV0dXJuIHcualF1ZXJ5IHx8IHcuJDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc0pRdWVyeSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLmdldEpRdWVyeSgpID09PSAnZnVuY3Rpb24nO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzTGlnaHRHYWxsZXJ5KCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBqcXVlcnkgPSB0aGlzLmdldEpRdWVyeSgpO1xuICAgICAgICByZXR1cm4gdHlwZW9mIGpxdWVyeT8uZm4/LmxpZ2h0R2FsbGVyeSA9PT0gJ2Z1bmN0aW9uJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWREZXBlbmRlbmNpZXNBbmRJbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fFxuICAgICAgICAgICAgdGhpcy5kZXN0cm95ZWQgfHxcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ0RlcGVuZGVuY2llc1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9hZGluZ0RlcGVuZGVuY2llcyA9IHRydWU7XG5cbiAgICAgICAgKHRoaXMuaGFzSlF1ZXJ5KCkgPyBvZih2b2lkIDApIDogVXRpbHMubG9hZFNjcmlwdCQodGhpcy5qcXVlcnlTY3JpcHQpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0xpZ2h0R2FsbGVyeSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUxpZ2h0R2FsbGVyeVNjcmlwdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTY3JpcHQkKHRoaXMubGlnaHRHYWxsZXJ5U2NyaXB0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTdHlsZSQodGhpcy5saWdodEdhbGxlcnlTdHlsZSksXG4gICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmV4ZWN1dGVJbml0TGlnaHRHYWxsZXJ5KCkpLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nRGVwZW5kZW5jaWVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgbGlnaHRHYWxsZXJ5JywgZXJyb3IpLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleGVjdXRlSW5pdExpZ2h0R2FsbGVyeSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8IHRoaXMuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmluaXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5oYXNMaWdodEdhbGxlcnkoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZERlcGVuZGVuY2llc0FuZEluaXRpYWxpemUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaW5pdExpZ2h0R2FsbGVyeSgpO1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlQ2hhbmdlcygpO1xuICAgICAgICB9LCA3MCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TGlnaHRHYWxsZXJ5KCk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgIXRoaXMuaGFzTGlnaHRHYWxsZXJ5KCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGVzdHJveUdhbGxlcnkoKTtcblxuICAgICAgICBjb25zdCBqcXVlcnkgPSB0aGlzLmdldEpRdWVyeSgpO1xuICAgICAgICBjb25zdCBnYWxsZXJ5ID0ganF1ZXJ5KHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgZ2FsbGVyeVxuICAgICAgICAgICAgLm9mZignLmJhYnlsb25MaWdodEdhbGxlcnknKVxuICAgICAgICAgICAgLm9uKFxuICAgICAgICAgICAgICAgICdvbkFmdGVyT3Blbi5sZy5iYWJ5bG9uTGlnaHRHYWxsZXJ5IG9uQWZ0ZXJTbGlkZS5sZy5iYWJ5bG9uTGlnaHRHYWxsZXJ5IG9uQWZlckFwcGVuZFNsaWRlLmxnLmJhYnlsb25MaWdodEdhbGxlcnkgb25TbGlkZUNsaWNrLmxnLmJhYnlsb25MaWdodEdhbGxlcnknLFxuICAgICAgICAgICAgICAgICgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zeW5jVmlkZW9JdGVtcygpKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmdhbGxlcnlJbnN0YW5jZSA9IGdhbGxlcnlcbiAgICAgICAgICAgIC5saWdodEdhbGxlcnkoe1xuICAgICAgICAgICAgICAgIHNlbGVjdG9yOiAnLmNzX2xpZ2h0Ym94X2l0ZW0nLFxuICAgICAgICAgICAgICAgIHRodW1ibmFpbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBleFRodW1iSW1hZ2U6ICdkYXRhLXRodW1iJyxcbiAgICAgICAgICAgICAgICBsb2FkWW91dHViZVRodW1ibmFpbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgbG9hZFZpbWVvVGh1bWJuYWlsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsb2FkRGFpbHltb3Rpb25UaHVtYm5haWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgIG1vdXNld2hlZWw6IHRydWUsXG4gICAgICAgICAgICAgICAgc2hhcmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZ1bGxTY3JlZW46IGZhbHNlLFxuICAgICAgICAgICAgICAgIGF1dG9wbGF5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhY3R1YWxTaXplOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhdXRvcGxheUNvbnRyb2xzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhdXRvcGxheUZpcnN0VmlkZW86IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZpZGVvTWF4V2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB5b3V0dWJlUGxheWVyUGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGVzdGJyYW5kaW5nOiAxLFxuICAgICAgICAgICAgICAgICAgICBtdXRlOiAxLFxuICAgICAgICAgICAgICAgICAgICBwbGF5c2lubGluZTogMSxcbiAgICAgICAgICAgICAgICAgICAgcmVsOiAwLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZG93bmxvYWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5kYXRhKCdsaWdodEdhbGxlcnknKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZnJlc2goKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3llZCB8fFxuICAgICAgICAgICAgIXRoaXMuaGFzSlF1ZXJ5KClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBqcXVlcnkgPSB0aGlzLmdldEpRdWVyeSgpO1xuICAgICAgICBjb25zdCBoYXNJdGVtcyA9IGpxdWVyeSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpLmZpbmQoXG4gICAgICAgICAgICAnLmNzX2xpZ2h0Ym94X2l0ZW0nXG4gICAgICAgICkubGVuZ3RoO1xuXG4gICAgICAgIGlmICghaGFzSXRlbXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5oYXNMaWdodEdhbGxlcnkoKSkge1xuICAgICAgICAgICAgLy8gU2kgb3RybyBzY3JpcHQgc3VzdGl0dXllIGpRdWVyeSBkZXNwdWVzIGRlIGNhcmdhciBsaWdodEdhbGxlcnksXG4gICAgICAgICAgICAvLyBlbCBwbHVnaW4gZGVzYXBhcmVjZSBkZSAkLmZuIHkgaGF5IHF1ZSBlamVjdXRhcmxvIGRlIG51ZXZvLlxuICAgICAgICAgICAgdGhpcy5sb2FkRGVwZW5kZW5jaWVzQW5kSW5pdGlhbGl6ZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbml0TGlnaHRHYWxsZXJ5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95R2FsbGVyeSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNKUXVlcnkoKSkge1xuICAgICAgICAgICAgdGhpcy5nZXRKUXVlcnkoKSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpLm9mZignLmJhYnlsb25MaWdodEdhbGxlcnknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ2FsbGVyeUluc3RhbmNlPy5kZXN0cm95KHRydWUpO1xuICAgICAgICB0aGlzLmdhbGxlcnlJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jVmlkZW9JdGVtcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHxcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveWVkIHx8XG4gICAgICAgICAgICAhdGhpcy5oYXNKUXVlcnkoKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGpxdWVyeSA9IHRoaXMuZ2V0SlF1ZXJ5KCk7XG4gICAgICAgIGNvbnN0IGdhbGxlcnkgPSBqcXVlcnkodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgY29uc3Qgb3V0ZXIgPVxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5SW5zdGFuY2U/LiRvdXRlciA/PyBqcXVlcnkoJy5sZy1vdXRlcicpLmxhc3QoKTtcblxuICAgICAgICBpZiAoIW91dGVyPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dGVyLmZpbmQoJy5sZy10aHVtYi1pdGVtLS12aWRlbycpLnJlbW92ZUNsYXNzKCdsZy10aHVtYi1pdGVtLS12aWRlbycpO1xuICAgICAgICBvdXRlci5maW5kKCcubGctaXRlbS0tdmlkZW8nKS5yZW1vdmVDbGFzcygnbGctaXRlbS0tdmlkZW8nKTtcblxuICAgICAgICBnYWxsZXJ5LmZpbmQoJy5jc19saWdodGJveF9pdGVtJykuZWFjaCgoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPVxuICAgICAgICAgICAgICAgIGl0ZW0uZ2V0QXR0cmlidXRlKCdocmVmJykgfHxcbiAgICAgICAgICAgICAgICBpdGVtLmdldEF0dHJpYnV0ZSgnZGF0YS1zcmMnKSB8fFxuICAgICAgICAgICAgICAgICcnO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNWaWRlb1VybCh1cmwpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzbGlkZSA9IG91dGVyLmZpbmQoJy5sZy1pdGVtJykuZXEoaW5kZXgpO1xuXG4gICAgICAgICAgICBvdXRlclxuICAgICAgICAgICAgICAgIC5maW5kKCcubGctdGh1bWItaXRlbScpXG4gICAgICAgICAgICAgICAgLmVxKGluZGV4KVxuICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnbGctdGh1bWItaXRlbS0tdmlkZW8nKTtcbiAgICAgICAgICAgIHNsaWRlLmFkZENsYXNzKCdsZy1pdGVtLS12aWRlbycpO1xuICAgICAgICAgICAgdGhpcy5zZXRWaWRlb1NsaWRlU2l6ZShzbGlkZSwgaXRlbSk7XG4gICAgICAgICAgICB0aGlzLmFsbG93VmlkZW9BdXRvcGxheShzbGlkZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmlkZW9TbGlkZVNpemUoc2xpZGU6IGFueSwgaXRlbTogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW1hZ2UgPSBpdGVtLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpIGFzIEhUTUxJbWFnZUVsZW1lbnQgfCBudWxsO1xuICAgICAgICBjb25zdCBwb3N0ZXIgPSBpdGVtLmdldEF0dHJpYnV0ZSgnZGF0YS1wb3N0ZXInKSB8fCBpbWFnZT8uc3JjO1xuXG4gICAgICAgIGNvbnN0IGFwcGx5U2l6ZSA9ICh3aWR0aCA9IDExNDAsIGhlaWdodCA9IDY0MSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzbGlkZUVsZW1lbnQgPSBzbGlkZS5nZXQoMCkgYXMgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGlmICghc2xpZGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzbGlkZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgICAgICAgJy0tbGctdmlkZW8tYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICBgJHt3aWR0aH0gLyAke2hlaWdodH1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgaXNNb2JpbGUgPSB3aW5kb3cuaW5uZXJXaWR0aCA8PSA3Njc7XG4gICAgICAgICAgICBjb25zdCBtYXhXaWR0aCA9IE1hdGgubWF4KFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgd2luZG93LmlubmVyV2lkdGggLSAoaXNNb2JpbGUgPyAyMCA6IDE0MClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBtYXhIZWlnaHQgPSBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgIHdpbmRvdy5pbm5lckhlaWdodCAtIChpc01vYmlsZSA/IDgwIDogMTAwKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHNjYWxlID0gTWF0aC5taW4obWF4V2lkdGggLyB3aWR0aCwgbWF4SGVpZ2h0IC8gaGVpZ2h0LCAxKTtcblxuICAgICAgICAgICAgc2xpZGVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgICAgICctLWxnLXZpZGVvLXdpZHRoJyxcbiAgICAgICAgICAgICAgICBgJHtNYXRoLnJvdW5kKHdpZHRoICogc2NhbGUpfXB4YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHNsaWRlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAnLS1sZy12aWRlby1oZWlnaHQnLFxuICAgICAgICAgICAgICAgIGAke01hdGgucm91bmQoaGVpZ2h0ICogc2NhbGUpfXB4YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfTtcblxuICAgICAgICBhcHBseVNpemUoKTtcblxuICAgICAgICBpZiAoaW1hZ2U/Lm5hdHVyYWxXaWR0aCAmJiBpbWFnZT8ubmF0dXJhbEhlaWdodCkge1xuICAgICAgICAgICAgYXBwbHlTaXplKGltYWdlLm5hdHVyYWxXaWR0aCwgaW1hZ2UubmF0dXJhbEhlaWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWltYWdlPy5uYXR1cmFsV2lkdGggJiYgcG9zdGVyKSB7XG4gICAgICAgICAgICBjb25zdCBwb3N0ZXJJbWFnZSA9IG5ldyB3aW5kb3cuSW1hZ2UoKTtcblxuICAgICAgICAgICAgcG9zdGVySW1hZ2Uub25sb2FkID0gKCkgPT5cbiAgICAgICAgICAgICAgICBhcHBseVNpemUocG9zdGVySW1hZ2UubmF0dXJhbFdpZHRoLCBwb3N0ZXJJbWFnZS5uYXR1cmFsSGVpZ2h0KTtcbiAgICAgICAgICAgIHBvc3RlckltYWdlLnNyYyA9IHBvc3RlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYWxsb3dWaWRlb0F1dG9wbGF5KHNsaWRlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaWZyYW1lcyA9IHNsaWRlLmZpbmQoJ2lmcmFtZS5sZy12aWRlby1vYmplY3QnKTtcblxuICAgICAgICBpZnJhbWVzXG4gICAgICAgICAgICAuYXR0cihcbiAgICAgICAgICAgICAgICAnYWxsb3cnLFxuICAgICAgICAgICAgICAgICdhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgY2xpcGJvYXJkLXdyaXRlOyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlOyB3ZWItc2hhcmUnXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuYXR0cignYWxsb3dmdWxsc2NyZWVuJywgJ3RydWUnKTtcblxuICAgICAgICBpZnJhbWVzLmVhY2goKF9pbmRleDogbnVtYmVyLCBpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByZXBhcmVBdXRvcGxheUlmcmFtZShpZnJhbWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByZXBhcmVBdXRvcGxheUlmcmFtZShpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNyYyA9IGlmcmFtZS5nZXRBdHRyaWJ1dGUoJ3NyYycpO1xuXG4gICAgICAgIGlmICghc3JjKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhdXRvcGxheVNyYyA9IHRoaXMuZ2V0QXV0b3BsYXlWaWRlb1NyYyhzcmMpO1xuICAgICAgICBjb25zdCBwbGF5VmlkZW8gPSAoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucGxheUVtYmVkZGVkVmlkZW8oaWZyYW1lKSwgMTAwKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoaWZyYW1lLmRhdGFzZXRbJ2JhYnlsb25BdXRvcGxheVJlYWR5J10gIT09ICd0cnVlJykge1xuICAgICAgICAgICAgaWZyYW1lLmRhdGFzZXRbJ2JhYnlsb25BdXRvcGxheVJlYWR5J10gPSAndHJ1ZSc7XG4gICAgICAgICAgICBpZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHBsYXlWaWRlbywgeyBvbmNlOiB0cnVlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGF1dG9wbGF5U3JjICE9PSBzcmMpIHtcbiAgICAgICAgICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ3NyYycsIGF1dG9wbGF5U3JjKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBsYXlWaWRlbygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBdXRvcGxheVZpZGVvU3JjKHNyYzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRTcmMgPSBzcmMuc3RhcnRzV2l0aCgnLy8nKSA/IGBodHRwczoke3NyY31gIDogc3JjO1xuICAgICAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChub3JtYWxpemVkU3JjLCB3aW5kb3cubG9jYXRpb24uaHJlZik7XG5cbiAgICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdhdXRvcGxheScsICcxJyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzWW91dHViZVVybCh1cmwuaHJlZikpIHtcbiAgICAgICAgICAgICAgICAvLyBNdXRlZCBhdXRvcGxheSBpcyBhbGxvd2VkIGJ5IGJyb3dzZXJzIGFuZCBtYXRjaGVzIFNsaUMzU3ZnVmlkQ3RhLlxuICAgICAgICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdtdXRlJywgJzEnKTtcbiAgICAgICAgICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgncGxheXNpbmxpbmUnLCAnMScpO1xuICAgICAgICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdlbmFibGVqc2FwaScsICcxJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm4gc3JjO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwbGF5RW1iZWRkZWRWaWRlbyhpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNyYyA9IGlmcmFtZS5nZXRBdHRyaWJ1dGUoJ3NyYycpIHx8ICcnO1xuXG4gICAgICAgIGlmICghdGhpcy5pc1lvdXR1YmVVcmwoc3JjKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3c/LnBvc3RNZXNzYWdlKFxuICAgICAgICAgICAgJ3tcImV2ZW50XCI6XCJjb21tYW5kXCIsXCJmdW5jXCI6XCJtdXRlXCIsXCJhcmdzXCI6XCJcIn0nLFxuICAgICAgICAgICAgJyonXG4gICAgICAgICk7XG4gICAgICAgIGlmcmFtZS5jb250ZW50V2luZG93Py5wb3N0TWVzc2FnZShcbiAgICAgICAgICAgICd7XCJldmVudFwiOlwiY29tbWFuZFwiLFwiZnVuY1wiOlwicGxheVZpZGVvXCIsXCJhcmdzXCI6XCJcIn0nLFxuICAgICAgICAgICAgJyonXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ZpZGVvVXJsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAvKD86eW91dHViZVxcLmNvbXx5b3V0dVxcLmJlfHlvdXR1YmUtbm9jb29raWVcXC5jb218dmltZW9cXC5jb218ZGFpXFwubHl8ZGFpbHltb3Rpb25cXC5jb218dmtcXC5jb218dmtvbnRha3RlXFwucnUpL2kudGVzdChcbiAgICAgICAgICAgIHVybFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNZb3V0dWJlVXJsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAvKD86eW91dHViZVxcLmNvbXx5b3V0dVxcLmJlfHlvdXR1YmUtbm9jb29raWVcXC5jb20pL2kudGVzdCh1cmwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9ic2VydmVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4gdGhpcy5yZWZyZXNoKCkpO1xuICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUxpZ2h0R2FsbGVyeVNjcmlwdCgpOiB2b2lkIHtcbiAgICAgICAgZG9jdW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKGBzY3JpcHRbc3JjPVwiJHt0aGlzLmxpZ2h0R2FsbGVyeVNjcmlwdH1cIl1gKVxuICAgICAgICAgICAgLmZvckVhY2goKHNjcmlwdCkgPT4gc2NyaXB0LnJlbW92ZSgpKTtcbiAgICB9XG59XG4iXX0=
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1saWdodC1nYWxsZXJ5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2JhYnlsb24tZ2FsbGVyaWVzL2JhYnlsb24tbGlnaHQtZ2FsbGVyeS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUVILFNBQVMsRUFFVCxNQUFNLEVBRU4sV0FBVyxHQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBTXBDLE1BQU0sT0FBTyw0QkFBNEI7SUFjckMsWUFBb0IsRUFBYztRQUFkLE9BQUUsR0FBRixFQUFFLENBQVk7UUFYMUIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFHbkIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLGlDQUFpQyxDQUFDO1FBQ2pELHVCQUFrQixHQUMvQixvREFBb0QsQ0FBQztRQUN4QyxzQkFBaUIsR0FDOUIsc0RBQXNELENBQUM7SUFFdEIsQ0FBQztJQUV0QyxlQUFlO1FBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNyQyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUMvQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDckMsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFdEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDbEM7UUFFRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU8sU0FBUztRQUNiLE1BQU0sQ0FBQyxHQUFHLE1BQWEsQ0FBQztRQUN4QixPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU8sU0FBUztRQUNiLE9BQU8sT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssVUFBVSxDQUFDO0lBQ2xELENBQUM7SUFFTyxlQUFlO1FBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxPQUFPLE9BQU8sTUFBTSxFQUFFLEVBQUUsRUFBRSxZQUFZLEtBQUssVUFBVSxDQUFDO0lBQzFELENBQUM7SUFFTyw2QkFBNkI7UUFDakMsSUFDSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkMsSUFBSSxDQUFDLFNBQVM7WUFDZCxJQUFJLENBQUMsbUJBQW1CLEVBQzFCO1lBQ0UsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUVoQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2pFLElBQUksQ0FDRCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7YUFDbkM7WUFFRCxPQUFPLFFBQVEsQ0FBQztnQkFDWixLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztnQkFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7YUFDM0MsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLEVBQ3pDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUNMO2FBQ0EsU0FBUyxDQUFDO1lBQ1AsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDYixPQUFPLENBQUMsS0FBSyxDQUFDLDRCQUE0QixFQUFFLEtBQUssQ0FBQztTQUN6RCxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN2RCxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNoQixPQUFPO2FBQ1Y7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFO2dCQUN6QixJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztnQkFDckMsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUNoRSxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTlDLE9BQU87YUFDRixHQUFHLENBQUMsc0JBQXNCLENBQUM7YUFDM0IsRUFBRSxDQUNDLHFKQUFxSixFQUNySixHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQ2hELENBQUM7UUFFTixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU87YUFDekIsWUFBWSxDQUFDO1lBQ1YsUUFBUSxFQUFFLG1CQUFtQjtZQUM3QixTQUFTLEVBQUUsSUFBSTtZQUNmLFlBQVksRUFBRSxZQUFZO1lBQzFCLG9CQUFvQixFQUFFLEtBQUs7WUFDM0Isa0JBQWtCLEVBQUUsS0FBSztZQUN6Qix3QkFBd0IsRUFBRSxLQUFLO1lBQy9CLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLEtBQUssRUFBRSxLQUFLO1lBQ1osVUFBVSxFQUFFLEtBQUs7WUFDakIsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsS0FBSztZQUNqQixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLGtCQUFrQixFQUFFLEtBQUs7WUFDekIsYUFBYSxFQUFFLE1BQU07WUFDckIsbUJBQW1CLEVBQUU7Z0JBQ2pCLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixJQUFJLEVBQUUsQ0FBQztnQkFDUCxXQUFXLEVBQUUsQ0FBQztnQkFDZCxHQUFHLEVBQUUsQ0FBQzthQUNUO1lBQ0QsUUFBUSxFQUFFLEtBQUs7U0FDbEIsQ0FBQzthQUNELElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU8sT0FBTztRQUNYLElBQ0ksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ25DLElBQUksQ0FBQyxTQUFTO1lBQ2QsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQ25CO1lBQ0UsT0FBTztTQUNWO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FDL0MsbUJBQW1CLENBQ3RCLENBQUMsTUFBTSxDQUFDO1FBRVQsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNYLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDekIsa0VBQWtFO1lBQ2xFLDhEQUE4RDtZQUM5RCxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztZQUNyQyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sY0FBYztRQUNsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3JDLE9BQU87U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ3ZFO1FBRUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVPLGNBQWM7UUFDbEIsSUFDSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDbkMsSUFBSSxDQUFDLFNBQVM7WUFDZCxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFDbkI7WUFDRSxPQUFPO1NBQ1Y7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDaEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUMsTUFBTSxLQUFLLEdBQ1AsSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRS9ELElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQ2hCLE9BQU87U0FDVjtRQUVELEtBQUs7YUFDQSxJQUFJLENBQUMsdUJBQXVCLENBQUM7WUFDOUIsRUFBRSxXQUFXLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMxQyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFN0QsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQWEsRUFBRSxJQUFTLEVBQUUsRUFBRTtZQUNoRSxNQUFNLEdBQUcsR0FDTCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztnQkFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7Z0JBQzdCLEVBQUUsQ0FBQztZQUVQLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN2QixPQUFPO2FBQ1Y7WUFFRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUvQyxLQUFLO2lCQUNBLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDdEIsRUFBRSxDQUFDLEtBQUssQ0FBQztpQkFDVCxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUN0QyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBVSxFQUFFLElBQWlCO1FBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUE0QixDQUFDO1FBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxFQUFFLEdBQUcsQ0FBQztRQUU5RCxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLEdBQUcsRUFBRSxFQUFFO1lBQzdDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ25CLE9BQU87YUFDVjtZQUVELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUE0QixDQUFDO1lBRTdELElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ2YsT0FBTzthQUNWO1lBRUQsWUFBWSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQzFCLHlCQUF5QixFQUN6QixHQUFHLEtBQUssTUFBTSxNQUFNLEVBQUUsQ0FDekIsQ0FBQztZQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDO1lBQzFDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQ3JCLENBQUMsRUFDRCxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUM1QyxDQUFDO1lBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDdEIsQ0FBQyxFQUNELE1BQU0sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQzdDLENBQUM7WUFDRixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLEVBQUUsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVoRSxZQUFZLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FDMUIsa0JBQWtCLEVBQ2xCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FDbkMsQ0FBQztZQUNGLFlBQVksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUMxQixtQkFBbUIsRUFDbkIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUNwQyxDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBRUYsU0FBUyxFQUFFLENBQUM7UUFFWixJQUFJLEtBQUssRUFBRSxZQUFZLElBQUksS0FBSyxFQUFFLGFBQWEsRUFBRTtZQUM3QyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDdEQ7UUFFRCxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksSUFBSSxNQUFNLEVBQUU7WUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFdkMsV0FBVyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FDdEIsU0FBUyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ25FLFdBQVcsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQVU7UUFDakMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRXJELE9BQU87YUFDRixJQUFJLENBQ0QsT0FBTyxFQUNQLHFHQUFxRyxDQUN4RzthQUNBLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVyQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBYyxFQUFFLE1BQXlCLEVBQUUsRUFBRTtZQUN2RCxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8scUJBQXFCLENBQUMsTUFBeUI7UUFDbkQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sT0FBTztTQUNWO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRTtZQUNuQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQztRQUVGLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLE1BQU0sRUFBRTtZQUNuRCxNQUFNLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ2hELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDOUQ7UUFFRCxJQUFJLFdBQVcsS0FBSyxHQUFHLEVBQUU7WUFDckIsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDM0M7YUFBTTtZQUNILFNBQVMsRUFBRSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsR0FBVztRQUNuQyxJQUFJO1lBQ0EsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ2xFLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpELEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUV0QyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM3QixvRUFBb0U7Z0JBQ3BFLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDbEMsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDNUM7WUFFRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN6QjtRQUFDLE1BQU07WUFDSixPQUFPLEdBQUcsQ0FBQztTQUNkO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE1BQXlCO1FBQy9DLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTdDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLE9BQU87U0FDVjtRQUVELE1BQU0sQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUM3Qiw2Q0FBNkMsRUFDN0MsR0FBRyxDQUNOLENBQUM7UUFDRixNQUFNLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FDN0Isa0RBQWtELEVBQ2xELEdBQUcsQ0FDTixDQUFDO0lBQ04sQ0FBQztJQUVPLFVBQVUsQ0FBQyxHQUFXO1FBQzFCLE9BQU8sNkdBQTZHLENBQUMsSUFBSSxDQUNySCxHQUFHLENBQ04sQ0FBQztJQUNOLENBQUM7SUFFTyxZQUFZLENBQUMsR0FBVztRQUM1QixPQUFPLG1EQUFtRCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8sY0FBYztRQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUU7WUFDekMsU0FBUyxFQUFFLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSTtTQUNoQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sd0JBQXdCO1FBQzVCLFFBQVE7YUFDSCxnQkFBZ0IsQ0FBQyxlQUFlLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDO2FBQzVELE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQzsrR0EvWVEsNEJBQTRCO21HQUE1Qiw0QkFBNEI7OzRGQUE1Qiw0QkFBNEI7a0JBSnhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgUExBVEZPUk1fSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmluYWxpemUsIGZvcmtKb2luLCBvZiwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tCYWJ5bG9uTGlnaHRHYWxsZXJ5XScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQmFieWxvbkxpZ2h0R2FsbGVyeURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBnYWxsZXJ5SW5zdGFuY2U6IGFueTtcbiAgICBwcml2YXRlIG9ic2VydmVyPzogTXV0YXRpb25PYnNlcnZlcjtcbiAgICBwcml2YXRlIGRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgbG9hZGluZ0RlcGVuZGVuY2llcyA9IGZhbHNlO1xuICAgIHByaXZhdGUgaW5pdFRpbWVvdXQ/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBqcXVlcnlTY3JpcHQgPSAnYXNzZXRzL2JhYnlsb24vanMvanF1ZXJ5Lm1pbi5qcyc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsaWdodEdhbGxlcnlTY3JpcHQgPVxuICAgICAgICAnYXNzZXRzL2JhYnlsb24vbGlnaHRnYWxsZXJ5L2pzL2xpZ2h0Z2FsbGVyeS5taW4uanMnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlnaHRHYWxsZXJ5U3R5bGUgPVxuICAgICAgICAnYXNzZXRzL2JhYnlsb24vbGlnaHRnYWxsZXJ5L2Nzcy9saWdodGdhbGxlcnkubWluLmNzcyc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhhc0xpZ2h0R2FsbGVyeSgpKSB7XG4gICAgICAgICAgICB0aGlzLmV4ZWN1dGVJbml0TGlnaHRHYWxsZXJ5KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvYWREZXBlbmRlbmNpZXNBbmRJbml0aWFsaXplKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLmluaXRUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5pbml0VGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRlc3Ryb3lHYWxsZXJ5KCk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEpRdWVyeSgpOiBhbnkge1xuICAgICAgICBjb25zdCB3ID0gd2luZG93IGFzIGFueTtcbiAgICAgICAgcmV0dXJuIHcualF1ZXJ5IHx8IHcuJDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc0pRdWVyeSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLmdldEpRdWVyeSgpID09PSAnZnVuY3Rpb24nO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzTGlnaHRHYWxsZXJ5KCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBqcXVlcnkgPSB0aGlzLmdldEpRdWVyeSgpO1xuICAgICAgICByZXR1cm4gdHlwZW9mIGpxdWVyeT8uZm4/LmxpZ2h0R2FsbGVyeSA9PT0gJ2Z1bmN0aW9uJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWREZXBlbmRlbmNpZXNBbmRJbml0aWFsaXplKCk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fFxuICAgICAgICAgICAgdGhpcy5kZXN0cm95ZWQgfHxcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ0RlcGVuZGVuY2llc1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9hZGluZ0RlcGVuZGVuY2llcyA9IHRydWU7XG5cbiAgICAgICAgKHRoaXMuaGFzSlF1ZXJ5KCkgPyBvZih2b2lkIDApIDogVXRpbHMubG9hZFNjcmlwdCQodGhpcy5qcXVlcnlTY3JpcHQpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0xpZ2h0R2FsbGVyeSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUxpZ2h0R2FsbGVyeVNjcmlwdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTY3JpcHQkKHRoaXMubGlnaHRHYWxsZXJ5U2NyaXB0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmxvYWRTdHlsZSQodGhpcy5saWdodEdhbGxlcnlTdHlsZSksXG4gICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmV4ZWN1dGVJbml0TGlnaHRHYWxsZXJ5KCkpLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nRGVwZW5kZW5jaWVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgbGlnaHRHYWxsZXJ5JywgZXJyb3IpLFxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleGVjdXRlSW5pdExpZ2h0R2FsbGVyeSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8IHRoaXMuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmluaXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5oYXNMaWdodEdhbGxlcnkoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZERlcGVuZGVuY2llc0FuZEluaXRpYWxpemUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaW5pdExpZ2h0R2FsbGVyeSgpO1xuICAgICAgICAgICAgdGhpcy5vYnNlcnZlQ2hhbmdlcygpO1xuICAgICAgICB9LCA3MCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TGlnaHRHYWxsZXJ5KCk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgIXRoaXMuaGFzTGlnaHRHYWxsZXJ5KCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGVzdHJveUdhbGxlcnkoKTtcblxuICAgICAgICBjb25zdCBqcXVlcnkgPSB0aGlzLmdldEpRdWVyeSgpO1xuICAgICAgICBjb25zdCBnYWxsZXJ5ID0ganF1ZXJ5KHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgZ2FsbGVyeVxuICAgICAgICAgICAgLm9mZignLmJhYnlsb25MaWdodEdhbGxlcnknKVxuICAgICAgICAgICAgLm9uKFxuICAgICAgICAgICAgICAgICdvbkFmdGVyT3Blbi5sZy5iYWJ5bG9uTGlnaHRHYWxsZXJ5IG9uQWZ0ZXJTbGlkZS5sZy5iYWJ5bG9uTGlnaHRHYWxsZXJ5IG9uQWZlckFwcGVuZFNsaWRlLmxnLmJhYnlsb25MaWdodEdhbGxlcnkgb25TbGlkZUNsaWNrLmxnLmJhYnlsb25MaWdodEdhbGxlcnknLFxuICAgICAgICAgICAgICAgICgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zeW5jVmlkZW9JdGVtcygpKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmdhbGxlcnlJbnN0YW5jZSA9IGdhbGxlcnlcbiAgICAgICAgICAgIC5saWdodEdhbGxlcnkoe1xuICAgICAgICAgICAgICAgIHNlbGVjdG9yOiAnLmNzX2xpZ2h0Ym94X2l0ZW0nLFxuICAgICAgICAgICAgICAgIHRodW1ibmFpbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBleFRodW1iSW1hZ2U6ICdkYXRhLXRodW1iJyxcbiAgICAgICAgICAgICAgICBsb2FkWW91dHViZVRodW1ibmFpbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgbG9hZFZpbWVvVGh1bWJuYWlsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsb2FkRGFpbHltb3Rpb25UaHVtYm5haWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgIG1vdXNld2hlZWw6IHRydWUsXG4gICAgICAgICAgICAgICAgc2hhcmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZ1bGxTY3JlZW46IGZhbHNlLFxuICAgICAgICAgICAgICAgIGF1dG9wbGF5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhY3R1YWxTaXplOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhdXRvcGxheUNvbnRyb2xzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhdXRvcGxheUZpcnN0VmlkZW86IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZpZGVvTWF4V2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB5b3V0dWJlUGxheWVyUGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGVzdGJyYW5kaW5nOiAxLFxuICAgICAgICAgICAgICAgICAgICBtdXRlOiAxLFxuICAgICAgICAgICAgICAgICAgICBwbGF5c2lubGluZTogMSxcbiAgICAgICAgICAgICAgICAgICAgcmVsOiAwLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZG93bmxvYWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5kYXRhKCdsaWdodEdhbGxlcnknKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZnJlc2goKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3llZCB8fFxuICAgICAgICAgICAgIXRoaXMuaGFzSlF1ZXJ5KClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBqcXVlcnkgPSB0aGlzLmdldEpRdWVyeSgpO1xuICAgICAgICBjb25zdCBoYXNJdGVtcyA9IGpxdWVyeSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpLmZpbmQoXG4gICAgICAgICAgICAnLmNzX2xpZ2h0Ym94X2l0ZW0nXG4gICAgICAgICkubGVuZ3RoO1xuXG4gICAgICAgIGlmICghaGFzSXRlbXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5oYXNMaWdodEdhbGxlcnkoKSkge1xuICAgICAgICAgICAgLy8gU2kgb3RybyBzY3JpcHQgc3VzdGl0dXllIGpRdWVyeSBkZXNwdWVzIGRlIGNhcmdhciBsaWdodEdhbGxlcnksXG4gICAgICAgICAgICAvLyBlbCBwbHVnaW4gZGVzYXBhcmVjZSBkZSAkLmZuIHkgaGF5IHF1ZSBlamVjdXRhcmxvIGRlIG51ZXZvLlxuICAgICAgICAgICAgdGhpcy5sb2FkRGVwZW5kZW5jaWVzQW5kSW5pdGlhbGl6ZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbml0TGlnaHRHYWxsZXJ5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95R2FsbGVyeSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNKUXVlcnkoKSkge1xuICAgICAgICAgICAgdGhpcy5nZXRKUXVlcnkoKSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpLm9mZignLmJhYnlsb25MaWdodEdhbGxlcnknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ2FsbGVyeUluc3RhbmNlPy5kZXN0cm95KHRydWUpO1xuICAgICAgICB0aGlzLmdhbGxlcnlJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jVmlkZW9JdGVtcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHxcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveWVkIHx8XG4gICAgICAgICAgICAhdGhpcy5oYXNKUXVlcnkoKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGpxdWVyeSA9IHRoaXMuZ2V0SlF1ZXJ5KCk7XG4gICAgICAgIGNvbnN0IGdhbGxlcnkgPSBqcXVlcnkodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgY29uc3Qgb3V0ZXIgPVxuICAgICAgICAgICAgdGhpcy5nYWxsZXJ5SW5zdGFuY2U/LiRvdXRlciA/PyBqcXVlcnkoJy5sZy1vdXRlcicpLmxhc3QoKTtcblxuICAgICAgICBpZiAoIW91dGVyPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dGVyXG4gICAgICAgICAgICAuZmluZCgnLmxnLXRodW1iLWl0ZW0tLXZpZGVvJylcbiAgICAgICAgICAgID8ucmVtb3ZlQ2xhc3MoJ2xnLXRodW1iLWl0ZW0tLXZpZGVvJyk7XG4gICAgICAgIG91dGVyLmZpbmQoJy5sZy1pdGVtLS12aWRlbycpPy5yZW1vdmVDbGFzcygnbGctaXRlbS0tdmlkZW8nKTtcblxuICAgICAgICBnYWxsZXJ5LmZpbmQoJy5jc19saWdodGJveF9pdGVtJykuZWFjaCgoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPVxuICAgICAgICAgICAgICAgIGl0ZW0uZ2V0QXR0cmlidXRlKCdocmVmJykgfHxcbiAgICAgICAgICAgICAgICBpdGVtLmdldEF0dHJpYnV0ZSgnZGF0YS1zcmMnKSB8fFxuICAgICAgICAgICAgICAgICcnO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNWaWRlb1VybCh1cmwpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzbGlkZSA9IG91dGVyLmZpbmQoJy5sZy1pdGVtJykuZXEoaW5kZXgpO1xuXG4gICAgICAgICAgICBvdXRlclxuICAgICAgICAgICAgICAgIC5maW5kKCcubGctdGh1bWItaXRlbScpXG4gICAgICAgICAgICAgICAgLmVxKGluZGV4KVxuICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnbGctdGh1bWItaXRlbS0tdmlkZW8nKTtcbiAgICAgICAgICAgIHNsaWRlLmFkZENsYXNzKCdsZy1pdGVtLS12aWRlbycpO1xuICAgICAgICAgICAgdGhpcy5zZXRWaWRlb1NsaWRlU2l6ZShzbGlkZSwgaXRlbSk7XG4gICAgICAgICAgICB0aGlzLmFsbG93VmlkZW9BdXRvcGxheShzbGlkZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmlkZW9TbGlkZVNpemUoc2xpZGU6IGFueSwgaXRlbTogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW1hZ2UgPSBpdGVtLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpIGFzIEhUTUxJbWFnZUVsZW1lbnQgfCBudWxsO1xuICAgICAgICBjb25zdCBwb3N0ZXIgPSBpdGVtLmdldEF0dHJpYnV0ZSgnZGF0YS1wb3N0ZXInKSB8fCBpbWFnZT8uc3JjO1xuXG4gICAgICAgIGNvbnN0IGFwcGx5U2l6ZSA9ICh3aWR0aCA9IDExNDAsIGhlaWdodCA9IDY0MSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzbGlkZUVsZW1lbnQgPSBzbGlkZS5nZXQoMCkgYXMgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGlmICghc2xpZGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzbGlkZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgICAgICAgJy0tbGctdmlkZW8tYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICBgJHt3aWR0aH0gLyAke2hlaWdodH1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgaXNNb2JpbGUgPSB3aW5kb3cuaW5uZXJXaWR0aCA8PSA3Njc7XG4gICAgICAgICAgICBjb25zdCBtYXhXaWR0aCA9IE1hdGgubWF4KFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgd2luZG93LmlubmVyV2lkdGggLSAoaXNNb2JpbGUgPyAyMCA6IDE0MClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBtYXhIZWlnaHQgPSBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgIHdpbmRvdy5pbm5lckhlaWdodCAtIChpc01vYmlsZSA/IDgwIDogMTAwKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHNjYWxlID0gTWF0aC5taW4obWF4V2lkdGggLyB3aWR0aCwgbWF4SGVpZ2h0IC8gaGVpZ2h0LCAxKTtcblxuICAgICAgICAgICAgc2xpZGVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgICAgICctLWxnLXZpZGVvLXdpZHRoJyxcbiAgICAgICAgICAgICAgICBgJHtNYXRoLnJvdW5kKHdpZHRoICogc2NhbGUpfXB4YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHNsaWRlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAnLS1sZy12aWRlby1oZWlnaHQnLFxuICAgICAgICAgICAgICAgIGAke01hdGgucm91bmQoaGVpZ2h0ICogc2NhbGUpfXB4YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfTtcblxuICAgICAgICBhcHBseVNpemUoKTtcblxuICAgICAgICBpZiAoaW1hZ2U/Lm5hdHVyYWxXaWR0aCAmJiBpbWFnZT8ubmF0dXJhbEhlaWdodCkge1xuICAgICAgICAgICAgYXBwbHlTaXplKGltYWdlLm5hdHVyYWxXaWR0aCwgaW1hZ2UubmF0dXJhbEhlaWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWltYWdlPy5uYXR1cmFsV2lkdGggJiYgcG9zdGVyKSB7XG4gICAgICAgICAgICBjb25zdCBwb3N0ZXJJbWFnZSA9IG5ldyB3aW5kb3cuSW1hZ2UoKTtcblxuICAgICAgICAgICAgcG9zdGVySW1hZ2Uub25sb2FkID0gKCkgPT5cbiAgICAgICAgICAgICAgICBhcHBseVNpemUocG9zdGVySW1hZ2UubmF0dXJhbFdpZHRoLCBwb3N0ZXJJbWFnZS5uYXR1cmFsSGVpZ2h0KTtcbiAgICAgICAgICAgIHBvc3RlckltYWdlLnNyYyA9IHBvc3RlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYWxsb3dWaWRlb0F1dG9wbGF5KHNsaWRlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaWZyYW1lcyA9IHNsaWRlLmZpbmQoJ2lmcmFtZS5sZy12aWRlby1vYmplY3QnKTtcblxuICAgICAgICBpZnJhbWVzXG4gICAgICAgICAgICAuYXR0cihcbiAgICAgICAgICAgICAgICAnYWxsb3cnLFxuICAgICAgICAgICAgICAgICdhY2NlbGVyb21ldGVyOyBhdXRvcGxheTsgY2xpcGJvYXJkLXdyaXRlOyBlbmNyeXB0ZWQtbWVkaWE7IGd5cm9zY29wZTsgcGljdHVyZS1pbi1waWN0dXJlOyB3ZWItc2hhcmUnXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuYXR0cignYWxsb3dmdWxsc2NyZWVuJywgJ3RydWUnKTtcblxuICAgICAgICBpZnJhbWVzLmVhY2goKF9pbmRleDogbnVtYmVyLCBpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByZXBhcmVBdXRvcGxheUlmcmFtZShpZnJhbWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByZXBhcmVBdXRvcGxheUlmcmFtZShpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNyYyA9IGlmcmFtZS5nZXRBdHRyaWJ1dGUoJ3NyYycpO1xuXG4gICAgICAgIGlmICghc3JjKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhdXRvcGxheVNyYyA9IHRoaXMuZ2V0QXV0b3BsYXlWaWRlb1NyYyhzcmMpO1xuICAgICAgICBjb25zdCBwbGF5VmlkZW8gPSAoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucGxheUVtYmVkZGVkVmlkZW8oaWZyYW1lKSwgMTAwKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoaWZyYW1lLmRhdGFzZXRbJ2JhYnlsb25BdXRvcGxheVJlYWR5J10gIT09ICd0cnVlJykge1xuICAgICAgICAgICAgaWZyYW1lLmRhdGFzZXRbJ2JhYnlsb25BdXRvcGxheVJlYWR5J10gPSAndHJ1ZSc7XG4gICAgICAgICAgICBpZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHBsYXlWaWRlbywgeyBvbmNlOiB0cnVlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGF1dG9wbGF5U3JjICE9PSBzcmMpIHtcbiAgICAgICAgICAgIGlmcmFtZS5zZXRBdHRyaWJ1dGUoJ3NyYycsIGF1dG9wbGF5U3JjKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBsYXlWaWRlbygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBdXRvcGxheVZpZGVvU3JjKHNyYzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRTcmMgPSBzcmMuc3RhcnRzV2l0aCgnLy8nKSA/IGBodHRwczoke3NyY31gIDogc3JjO1xuICAgICAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChub3JtYWxpemVkU3JjLCB3aW5kb3cubG9jYXRpb24uaHJlZik7XG5cbiAgICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdhdXRvcGxheScsICcxJyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzWW91dHViZVVybCh1cmwuaHJlZikpIHtcbiAgICAgICAgICAgICAgICAvLyBNdXRlZCBhdXRvcGxheSBpcyBhbGxvd2VkIGJ5IGJyb3dzZXJzIGFuZCBtYXRjaGVzIFNsaUMzU3ZnVmlkQ3RhLlxuICAgICAgICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdtdXRlJywgJzEnKTtcbiAgICAgICAgICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgncGxheXNpbmxpbmUnLCAnMScpO1xuICAgICAgICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdlbmFibGVqc2FwaScsICcxJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm4gc3JjO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwbGF5RW1iZWRkZWRWaWRlbyhpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNyYyA9IGlmcmFtZS5nZXRBdHRyaWJ1dGUoJ3NyYycpIHx8ICcnO1xuXG4gICAgICAgIGlmICghdGhpcy5pc1lvdXR1YmVVcmwoc3JjKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3c/LnBvc3RNZXNzYWdlKFxuICAgICAgICAgICAgJ3tcImV2ZW50XCI6XCJjb21tYW5kXCIsXCJmdW5jXCI6XCJtdXRlXCIsXCJhcmdzXCI6XCJcIn0nLFxuICAgICAgICAgICAgJyonXG4gICAgICAgICk7XG4gICAgICAgIGlmcmFtZS5jb250ZW50V2luZG93Py5wb3N0TWVzc2FnZShcbiAgICAgICAgICAgICd7XCJldmVudFwiOlwiY29tbWFuZFwiLFwiZnVuY1wiOlwicGxheVZpZGVvXCIsXCJhcmdzXCI6XCJcIn0nLFxuICAgICAgICAgICAgJyonXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ZpZGVvVXJsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAvKD86eW91dHViZVxcLmNvbXx5b3V0dVxcLmJlfHlvdXR1YmUtbm9jb29raWVcXC5jb218dmltZW9cXC5jb218ZGFpXFwubHl8ZGFpbHltb3Rpb25cXC5jb218dmtcXC5jb218dmtvbnRha3RlXFwucnUpL2kudGVzdChcbiAgICAgICAgICAgIHVybFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNZb3V0dWJlVXJsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAvKD86eW91dHViZVxcLmNvbXx5b3V0dVxcLmJlfHlvdXR1YmUtbm9jb29raWVcXC5jb20pL2kudGVzdCh1cmwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9ic2VydmVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4gdGhpcy5yZWZyZXNoKCkpO1xuICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUxpZ2h0R2FsbGVyeVNjcmlwdCgpOiB2b2lkIHtcbiAgICAgICAgZG9jdW1lbnRcbiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKGBzY3JpcHRbc3JjPVwiJHt0aGlzLmxpZ2h0R2FsbGVyeVNjcmlwdH1cIl1gKVxuICAgICAgICAgICAgLmZvckVhY2goKHNjcmlwdCkgPT4gc2NyaXB0LnJlbW92ZSgpKTtcbiAgICB9XG59XG4iXX0=