New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

rfx-parallax

Package Overview
Dependencies
Maintainers
1
Versions
36
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rfx-parallax - npm Package Compare versions

Comparing version 2.0.0 to 2.1.0

3

bundles/rfx-parallax.umd.js

@@ -227,4 +227,3 @@ (function (global, factory) {

RfxParallaxDirective.prototype.setImageTransform = function (image, imageLeft, imageTop) {
this.renderer.setStyle(image, 'transform', "translate(" + imageLeft + "px, " + imageTop + "px)");
// this.renderer.setStyle(image, 'transform', `translate3d(${imageLeft}px, ${imageTop}px, 0)`);
this.renderer.setStyle(image, 'transform', "translate3d(" + imageLeft + "px, " + imageTop + "px, 0)");
};

@@ -231,0 +230,0 @@ /**

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs")):"function"==typeof define&&define.amd?define("rfx-parallax",["exports","@angular/core","rxjs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["rfx-parallax"]={},e.ng.core,e.rxjs)}(this,(function(e,t,i){"use strict";var r=function(){function e(e){this.rendererFactory=e,this.subjectScroll=new i.BehaviorSubject(void 0),this.subjectResize=new i.BehaviorSubject(void 0),this.renderer=this.rendererFactory.createRenderer(null,null)}return e.prototype.ngOnDestroy=function(){this.scrollEvent&&this.scrollEvent(),this.resizeEvent&&this.resizeEvent()},e.prototype.initListeners=function(e){var t=this,i=null!=e?e:document;this.scrollEvent=this.renderer.listen(i,"scroll",(function(e){return t.onMouseScroll(e)})),this.resizeEvent=this.renderer.listen(window,"resize",(function(e){return t.onWindowResize(e)}))},e.prototype.onMouseScroll=function(e){this.subjectScroll.next(e.target.scrollTop)},e.prototype.getMouseScroll=function(){return this.subjectScroll.asObservable()},e.prototype.onWindowResize=function(e){this.subjectResize.next(e.target.innerWidth)},e.prototype.getWindowResize=function(){return this.subjectResize.asObservable()},e}();r.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new r(t.ɵɵinject(t.RendererFactory2))},token:r,providedIn:"root"}),r.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],r.ctorParameters=function(){return[{type:t.RendererFactory2}]};var n=function(e,t,i,r){this.startPoint=e,this.endPoint=t,this.totalPixels=i,this.usablePixels=r},s=function(){function e(e,t,i){this.htmlElement=e,this.renderer=t,this.rfxParallaxService=i,this.parallaxPercentage=40,this.positionPercentage=50,this.imageZIndex=-1,this.isDisabled=!1,this.visibleOverflow=!1,this.scrollTop=0}return e.prototype.ngOnInit=function(){this.setListeners()},e.prototype.ngOnDestroy=function(){this.onScrollListener&&this.onScrollListener.unsubscribe(),this.onResizeListener&&this.onResizeListener.unsubscribe()},e.prototype.ngOnChanges=function(e){var t;(null===(t=e.imageUrl)||void 0===t?void 0:t.currentValue)?this.loadImage(e.imageUrl.currentValue):this.image&&this.setParallaxProperties(this.scrollTop)},e.prototype.setListeners=function(){var e=this;this.onScrollListener=this.rfxParallaxService.getMouseScroll().subscribe((function(t){return e.onMouseScroll(t)})),this.onResizeListener=this.rfxParallaxService.getWindowResize().subscribe((function(t){return e.onWindowResize(t)}))},e.prototype.onMouseScroll=function(e){if(void 0!==e&&this.image){var t=this.getImageTop(e,this.parallaxBoundaries);this.setImageTransform(this.image,this.imageLeft,t)}},e.prototype.onWindowResize=function(e){void 0!==e&&this.image&&this.setParallaxProperties(this.scrollTop)},e.prototype.loadImage=function(e){var t=this;this.image=new Image,this.image.src=e,this.image.setAttribute("class","parallax-image"),this.renderer.setStyle(this.image,"visiblity","hidden"),this.htmlElement.nativeElement.appendChild(this.image),this.image.onload=function(){t.setParallaxProperties(t.scrollTop),t.renderer.setStyle(t.image,"visiblity","visible")}},e.prototype.setParallaxProperties=function(e){var t=this.htmlElement.nativeElement,i=this.htmlElement.nativeElement.getBoundingClientRect().top+e;this.setStaticProperties(),this.setImageSize(t,this.image,this.parallaxPercentage),this.parallaxBoundaries=this.getParallaxBoundaries(i,t.clientHeight,this.parallaxPercentage),this.imageLeft=this.getImageLeft(this.htmlElement.nativeElement.clientWidth,this.image.width,this.positionPercentage);var r=this.getImageTop(e,this.parallaxBoundaries);this.setImageTransform(this.image,this.imageLeft,r)},e.prototype.setStaticProperties=function(){this.isAlreadyPositioned(this.htmlElement.nativeElement)||this.renderer.setStyle(this.htmlElement.nativeElement,"position","relative"),this.renderer.setStyle(this.htmlElement.nativeElement,"overflow",this.visibleOverflow?"visible":"hidden"),this.renderer.setStyle(this.image,"z-index",this.imageZIndex),this.renderer.setStyle(this.image,"position","absolute"),this.renderer.setStyle(this.image,"left","0"),this.renderer.setStyle(this.image,"top","0")},e.prototype.isAlreadyPositioned=function(e){return["absolute","relative"].includes(window.getComputedStyle(e).position)},e.prototype.setImageSize=function(e,t,i){var r=e.clientHeight*(100+i)/100;t.naturalHeight/t.naturalWidth>r/e.clientWidth?(this.image.setAttribute("width",e.clientWidth+"px"),this.image.setAttribute("height","auto")):(this.image.setAttribute("height",r+"px"),this.image.setAttribute("width","auto"))},e.prototype.getParallaxBoundaries=function(e,t,i){var r=t/100*i,s=e-r-window.innerHeight,o=e+t+r;return new n(s,o,o-s,r)},e.prototype.setImageTransform=function(e,t,i){this.renderer.setStyle(e,"transform","translate("+t+"px, "+i+"px)")},e.prototype.getImageLeft=function(e,t,i){return(e-t)/100*i},e.prototype.getImageTop=function(e,t){var i=Math.max(0,Math.min(e-t.startPoint,t.totalPixels)),r=100/t.totalPixels*i;return-t.usablePixels*(1-r/100)},e}();s.decorators=[{type:t.Directive,args:[{selector:"[libRfxParallax]"}]}],s.ctorParameters=function(){return[{type:t.ElementRef},{type:t.Renderer2},{type:r}]},s.propDecorators={parallaxPercentage:[{type:t.Input}],positionPercentage:[{type:t.Input}],imageUrl:[{type:t.Input}],imageZIndex:[{type:t.Input}],visibleOverflow:[{type:t.Input}],isDisabled:[{type:t.Input}]};var o=function(){};o.decorators=[{type:t.NgModule,args:[{declarations:[s],imports:[],exports:[s]}]}],e.RfxParallaxBoundariesModel=n,e.RfxParallaxDirective=s,e.RfxParallaxModule=o,e.RfxParallaxService=r,Object.defineProperty(e,"__esModule",{value:!0})}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs")):"function"==typeof define&&define.amd?define("rfx-parallax",["exports","@angular/core","rxjs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["rfx-parallax"]={},e.ng.core,e.rxjs)}(this,(function(e,t,i){"use strict";var r=function(){function e(e){this.rendererFactory=e,this.subjectScroll=new i.BehaviorSubject(void 0),this.subjectResize=new i.BehaviorSubject(void 0),this.renderer=this.rendererFactory.createRenderer(null,null)}return e.prototype.ngOnDestroy=function(){this.scrollEvent&&this.scrollEvent(),this.resizeEvent&&this.resizeEvent()},e.prototype.initListeners=function(e){var t=this,i=null!=e?e:document;this.scrollEvent=this.renderer.listen(i,"scroll",(function(e){return t.onMouseScroll(e)})),this.resizeEvent=this.renderer.listen(window,"resize",(function(e){return t.onWindowResize(e)}))},e.prototype.onMouseScroll=function(e){this.subjectScroll.next(e.target.scrollTop)},e.prototype.getMouseScroll=function(){return this.subjectScroll.asObservable()},e.prototype.onWindowResize=function(e){this.subjectResize.next(e.target.innerWidth)},e.prototype.getWindowResize=function(){return this.subjectResize.asObservable()},e}();r.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new r(t.ɵɵinject(t.RendererFactory2))},token:r,providedIn:"root"}),r.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],r.ctorParameters=function(){return[{type:t.RendererFactory2}]};var n=function(e,t,i,r){this.startPoint=e,this.endPoint=t,this.totalPixels=i,this.usablePixels=r},s=function(){function e(e,t,i){this.htmlElement=e,this.renderer=t,this.rfxParallaxService=i,this.parallaxPercentage=40,this.positionPercentage=50,this.imageZIndex=-1,this.isDisabled=!1,this.visibleOverflow=!1,this.scrollTop=0}return e.prototype.ngOnInit=function(){this.setListeners()},e.prototype.ngOnDestroy=function(){this.onScrollListener&&this.onScrollListener.unsubscribe(),this.onResizeListener&&this.onResizeListener.unsubscribe()},e.prototype.ngOnChanges=function(e){var t;(null===(t=e.imageUrl)||void 0===t?void 0:t.currentValue)?this.loadImage(e.imageUrl.currentValue):this.image&&this.setParallaxProperties(this.scrollTop)},e.prototype.setListeners=function(){var e=this;this.onScrollListener=this.rfxParallaxService.getMouseScroll().subscribe((function(t){return e.onMouseScroll(t)})),this.onResizeListener=this.rfxParallaxService.getWindowResize().subscribe((function(t){return e.onWindowResize(t)}))},e.prototype.onMouseScroll=function(e){if(void 0!==e&&this.image){var t=this.getImageTop(e,this.parallaxBoundaries);this.setImageTransform(this.image,this.imageLeft,t)}},e.prototype.onWindowResize=function(e){void 0!==e&&this.image&&this.setParallaxProperties(this.scrollTop)},e.prototype.loadImage=function(e){var t=this;this.image=new Image,this.image.src=e,this.image.setAttribute("class","parallax-image"),this.renderer.setStyle(this.image,"visiblity","hidden"),this.htmlElement.nativeElement.appendChild(this.image),this.image.onload=function(){t.setParallaxProperties(t.scrollTop),t.renderer.setStyle(t.image,"visiblity","visible")}},e.prototype.setParallaxProperties=function(e){var t=this.htmlElement.nativeElement,i=this.htmlElement.nativeElement.getBoundingClientRect().top+e;this.setStaticProperties(),this.setImageSize(t,this.image,this.parallaxPercentage),this.parallaxBoundaries=this.getParallaxBoundaries(i,t.clientHeight,this.parallaxPercentage),this.imageLeft=this.getImageLeft(this.htmlElement.nativeElement.clientWidth,this.image.width,this.positionPercentage);var r=this.getImageTop(e,this.parallaxBoundaries);this.setImageTransform(this.image,this.imageLeft,r)},e.prototype.setStaticProperties=function(){this.isAlreadyPositioned(this.htmlElement.nativeElement)||this.renderer.setStyle(this.htmlElement.nativeElement,"position","relative"),this.renderer.setStyle(this.htmlElement.nativeElement,"overflow",this.visibleOverflow?"visible":"hidden"),this.renderer.setStyle(this.image,"z-index",this.imageZIndex),this.renderer.setStyle(this.image,"position","absolute"),this.renderer.setStyle(this.image,"left","0"),this.renderer.setStyle(this.image,"top","0")},e.prototype.isAlreadyPositioned=function(e){return["absolute","relative"].includes(window.getComputedStyle(e).position)},e.prototype.setImageSize=function(e,t,i){var r=e.clientHeight*(100+i)/100;t.naturalHeight/t.naturalWidth>r/e.clientWidth?(this.image.setAttribute("width",e.clientWidth+"px"),this.image.setAttribute("height","auto")):(this.image.setAttribute("height",r+"px"),this.image.setAttribute("width","auto"))},e.prototype.getParallaxBoundaries=function(e,t,i){var r=t/100*i,s=e-r-window.innerHeight,o=e+t+r;return new n(s,o,o-s,r)},e.prototype.setImageTransform=function(e,t,i){this.renderer.setStyle(e,"transform","translate3d("+t+"px, "+i+"px, 0)")},e.prototype.getImageLeft=function(e,t,i){return(e-t)/100*i},e.prototype.getImageTop=function(e,t){var i=Math.max(0,Math.min(e-t.startPoint,t.totalPixels)),r=100/t.totalPixels*i;return-t.usablePixels*(1-r/100)},e}();s.decorators=[{type:t.Directive,args:[{selector:"[libRfxParallax]"}]}],s.ctorParameters=function(){return[{type:t.ElementRef},{type:t.Renderer2},{type:r}]},s.propDecorators={parallaxPercentage:[{type:t.Input}],positionPercentage:[{type:t.Input}],imageUrl:[{type:t.Input}],imageZIndex:[{type:t.Input}],visibleOverflow:[{type:t.Input}],isDisabled:[{type:t.Input}]};var o=function(){};o.decorators=[{type:t.NgModule,args:[{declarations:[s],imports:[],exports:[s]}]}],e.RfxParallaxBoundariesModel=n,e.RfxParallaxDirective=s,e.RfxParallaxModule=o,e.RfxParallaxService=r,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=rfx-parallax.umd.min.js.map

@@ -152,4 +152,3 @@ import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';

setImageTransform(image, imageLeft, imageTop) {
this.renderer.setStyle(image, 'transform', `translate(${imageLeft}px, ${imageTop}px)`);
// this.renderer.setStyle(image, 'transform', `translate3d(${imageLeft}px, ${imageTop}px, 0)`);
this.renderer.setStyle(image, 'transform', `translate3d(${imageLeft}px, ${imageTop}px, 0)`);
}

@@ -194,2 +193,2 @@ /**

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmZ4LXBhcmFsbGF4LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJEOi9SZXBvcy9SRlhMaWJyYXJ5L3Byb2plY3RzL3JmeC1wYXJhbGxheC9zcmMvIiwic291cmNlcyI6WyJsaWIvcmZ4LXBhcmFsbGF4LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWdDLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLN0UsTUFBTSxPQUFPLG9CQUFvQjtJQWtCL0IsWUFDVSxXQUF1QixFQUN2QixRQUFtQixFQUNuQixrQkFBc0M7UUFGdEMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBRTlDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNyQztRQUVELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFF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QUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDOUcsTUFBTSxzQkFBc0IsR0FBVyxHQUFHLEdBQUcsVUFBVSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUM7UUFDbkYsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsc0JBQXNCLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDdkUsQ0FBQzs7O1lBOU1GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2FBQzdCOzs7WUFQbUIsVUFBVTtZQUF1QyxTQUFTO1lBRXJFLGtCQUFrQjs7O2lDQU94QixLQUFLO2lDQUNMLEtBQUs7dUJBQ0wsS0FBSzswQkFDTCxLQUFLOzhCQUNMLEtBQUs7eUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUmZ4UGFyYWxsYXhTZXJ2aWNlIH0gZnJvbSAnLi9yZngtcGFyYWxsYXguc2VydmljZSc7XHJcbmltcG9ydCB7IFJmeFBhcmFsbGF4Qm91bmRhcmllc01vZGVsIH0gZnJvbSAnLi9yZngtcGFyYWxsYXgtYm91bmRhcmllcy5tb2RlbCc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tsaWJSZnhQYXJhbGxheF0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZnhQYXJhbGxheERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwYXJhbGxheFBlcmNlbnRhZ2U6IG51bWJlcjtcclxuICBASW5wdXQoKSBwdWJsaWMgcG9zaXRpb25QZXJjZW50YWdlOiBudW1iZXI7XHJcbiAgQElucHV0KCkgcHVibGljIGltYWdlVXJsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGltYWdlWkluZGV4OiBudW1iZXI7XHJcbiAgQElucHV0KCkgcHVibGljIHZpc2libGVPdmVyZmxvdzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgLy8gQElucHV0KCkgcHVibGljIHRlc3Q6IGJvb2xlYW47IC8vIFRPRE8hOiByZW1vdmVcclxuXHJcbiAgcHJpdmF0ZSBpbWFnZTogSFRNTEltYWdlRWxlbWVudDtcclxuICBwcml2YXRlIGltYWdlTGVmdDogbnVtYmVyO1xyXG4gIHByaXZhdGUgc2Nyb2xsVG9wOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBwYXJhbGxheEJvdW5kYXJpZXM6IFJmeFBhcmFsbGF4Qm91bmRhcmllc01vZGVsO1xyXG5cclxuICBwcml2YXRlIG9uU2Nyb2xsTGlzdGVuZXI6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIG9uUmVzaXplTGlzdGVuZXI6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0bWxFbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSByZnhQYXJhbGxheFNlcnZpY2U6IFJmeFBhcmFsbGF4U2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5wYXJhbGxheFBlcmNlbnRhZ2UgPSA0MDtcclxuICAgIHRoaXMucG9zaXRpb25QZXJjZW50YWdlID0gNTA7XHJcbiAgICB0aGlzLmltYWdlWkluZGV4ID0gLTE7XHJcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudmlzaWJsZU92ZXJmbG93ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNjcm9sbFRvcCA9IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldExpc3RlbmVycygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub25TY3JvbGxMaXN0ZW5lcikge1xyXG4gICAgICB0aGlzLm9uU2Nyb2xsTGlzdGVuZXIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vblJlc2l6ZUxpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMub25SZXNpemVMaXN0ZW5lci51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzLmltYWdlVXJsPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgdGhpcy5sb2FkSW1hZ2UoY2hhbmdlcy5pbWFnZVVybC5jdXJyZW50VmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmltYWdlKSB7XHJcbiAgICAgIHRoaXMuc2V0UGFyYWxsYXhQcm9wZXJ0aWVzKHRoaXMuc2Nyb2xsVG9wKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmliZSB0byBzY3JvbGwgYW5kIHJlc2l6ZSBsaXN0ZW5lcnNcclxuICAgKi9cclxuICBwcml2YXRlIHNldExpc3RlbmVycygpOiB2b2lkIHtcclxuICAgIHRoaXMub25TY3JvbGxMaXN0ZW5lciA9IHRoaXMucmZ4UGFyYWxsYXhTZXJ2aWNlLmdldE1vdXNlU2Nyb2xsKCkuc3Vic2NyaWJlKChzY3JvbGw6IG51bWJlcikgPT4gdGhpcy5vbk1vdXNlU2Nyb2xsKHNjcm9sbCkpO1xyXG4gICAgdGhpcy5vblJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZnhQYXJhbGxheFNlcnZpY2UuZ2V0V2luZG93UmVzaXplKCkuc3Vic2NyaWJlKCh3aWR0aDogbnVtYmVyKSA9PiB0aGlzLm9uV2luZG93UmVzaXplKHdpZHRoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdHJhbnNmb3JtIHByb3BlcnR5IGJhc2VkIG9uIHRoZSBuZXcgc2Nyb2xsIHZhbHVlXHJcbiAgICogQHBhcmFtIHNjcm9sbCBuZXcgZWxlbWVudCBzY3JvbGwgdmFsdWVcclxuICAgKi9cclxuICBwcml2YXRlIG9uTW91c2VTY3JvbGwoc2Nyb2xsOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChzY3JvbGwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmltYWdlKSB7XHJcbiAgICAgIGNvbnN0IGltYWdlVG9wID0gdGhpcy5nZXRJbWFnZVRvcChzY3JvbGwsIHRoaXMucGFyYWxsYXhCb3VuZGFyaWVzKTtcclxuICAgICAgdGhpcy5zZXRJbWFnZVRyYW5zZm9ybSh0aGlzLmltYWdlLCB0aGlzLmltYWdlTGVmdCwgaW1hZ2VUb3ApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXQgcGFyYWxsYXggcHJvcGVydGllcyBhY2NvcmRpbmcgdG8gbmV3IHdpbmRvdyBzaXplXHJcbiAgICogQHBhcmFtIHdpZHRoIHdpbmRvdyBuZXcgd2lkdGggdmFsdWVcclxuICAgKi9cclxuICBwcml2YXRlIG9uV2luZG93UmVzaXplKHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh3aWR0aCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuaW1hZ2UpIHtcclxuICAgICAgdGhpcy5zZXRQYXJhbGxheFByb3BlcnRpZXModGhpcy5zY3JvbGxUb3ApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZCBwYXJhbGxheCBpbWFnZSBmcm9tIGltYWdlVXJsXHJcbiAgICogQHBhcmFtIGltYWdlVXJsIGltYWdlIHVybFxyXG4gICAqL1xyXG4gIHByaXZhdGUgbG9hZEltYWdlKGltYWdlVXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcclxuICAgIHRoaXMuaW1hZ2Uuc3JjID0gaW1hZ2VVcmw7XHJcbiAgICB0aGlzLmltYWdlLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAncGFyYWxsYXgtaW1hZ2UnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbWFnZSwgJ3Zpc2libGl0eScsICdoaWRkZW4nKTtcclxuICAgIHRoaXMuaHRtbEVsZW1lbnQubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmltYWdlKTtcclxuXHJcbiAgICB0aGlzLmltYWdlLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgdGhpcy5zZXRQYXJhbGxheFByb3BlcnRpZXModGhpcy5zY3JvbGxUb3ApO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW1hZ2UsICd2aXNpYmxpdHknLCAndmlzaWJsZScpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBwYXJhbGxheCBwcm9wZXJ0aWVzIGFuZCBwb3NpdGlvblxyXG4gICAqIEBwYXJhbSBzY3JvbGxUb3AgcGFnZSBjb250YWluZXIgcGl4ZWxzIGZyb20gdGhlIHRvcCBvZiB0aGUgcGFnZSB0byB0aGUgY3VycmVudCB2aWV3XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRQYXJhbGxheFByb3BlcnRpZXMoc2Nyb2xsVG9wOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lckVsZW1lbnQgPSB0aGlzLmh0bWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBjb250YWluZXJSZWN0ID0gdGhpcy5odG1sRWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgZWxlbWVudFRvcCA9IGNvbnRhaW5lclJlY3QudG9wICsgc2Nyb2xsVG9wO1xyXG4gICAgdGhpcy5zZXRTdGF0aWNQcm9wZXJ0aWVzKCk7XHJcbiAgICB0aGlzLnNldEltYWdlU2l6ZShjb250YWluZXJFbGVtZW50LCB0aGlzLmltYWdlLCB0aGlzLnBhcmFsbGF4UGVyY2VudGFnZSk7XHJcbiAgICB0aGlzLnBhcmFsbGF4Qm91bmRhcmllcyA9IHRoaXMuZ2V0UGFyYWxsYXhCb3VuZGFyaWVzKGVsZW1lbnRUb3AsIGNvbnRhaW5lckVsZW1lbnQuY2xpZW50SGVpZ2h0LCB0aGlzLnBhcmFsbGF4UGVyY2VudGFnZSk7XHJcbiAgICB0aGlzLmltYWdlTGVmdCA9IHRoaXMuZ2V0SW1hZ2VMZWZ0KHRoaXMuaHRtbEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCwgdGhpcy5pbWFnZS53aWR0aCwgdGhpcy5wb3NpdGlvblBlcmNlbnRhZ2UpO1xyXG4gICAgY29uc3QgaW1hZ2VUb3AgPSB0aGlzLmdldEltYWdlVG9wKHNjcm9sbFRvcCwgdGhpcy5wYXJhbGxheEJvdW5kYXJpZXMpO1xyXG4gICAgdGhpcy5zZXRJbWFnZVRyYW5zZm9ybSh0aGlzLmltYWdlLCB0aGlzLmltYWdlTGVmdCwgaW1hZ2VUb3ApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGRlZmF1bHQgcHJvcGVydGllcyBmb3IgY29udGFpbmVyIGFuZCBpbWFnZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0U3RhdGljUHJvcGVydGllcygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0FscmVhZHlQb3NpdGlvbmVkKHRoaXMuaHRtbEVsZW1lbnQubmF0aXZlRWxlbWVudCkpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmh0bWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdwb3NpdGlvbicsICdyZWxhdGl2ZScpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5odG1sRWxlbWVudC5uYXRpdmVFbGVtZW50LCAnb3ZlcmZsb3cnLCB0aGlzLnZpc2libGVPdmVyZmxvdyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbWFnZSwgJ3otaW5kZXgnLCB0aGlzLmltYWdlWkluZGV4KTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbWFnZSwgJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW1hZ2UsICdsZWZ0JywgJzAnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbWFnZSwgJ3RvcCcsICcwJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBlbGVtZW50IGhhcyBwb3NpdGlvbiBhYnNvbHV0ZSBvciByZWxhdGl2ZVxyXG4gICAqIEBwYXJhbSBlbGVtZW50IGh0bWwgZWxlbWVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaXNBbHJlYWR5UG9zaXRpb25lZChlbGVtZW50OiBFbGVtZW50KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gWydhYnNvbHV0ZScsICdyZWxhdGl2ZSddLmluY2x1ZGVzKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBkZWZhdWx0IGltYWdlIHNpemUgdGhhdCBtYXRjaCBwcm9wZXJ0aWVzXHJcbiAgICogQHBhcmFtIGNvbnRhaW5lciBtYWluIGNvbnRhaW5lciBIVE1MRWxlbWVudFxyXG4gICAqIEBwYXJhbSBpbWFnZSBtYWluIGltYWdlIEhUTUxFbGVtZW50XHJcbiAgICogQHBhcmFtIHBhcmFsbGF4UGVyY2VudGFnZSBwYXJhbGxheCBzY3JvbGwgcGVyY2VudGFnZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0SW1hZ2VTaXplKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIGltYWdlOiBIVE1MSW1hZ2VFbGVtZW50LCBwYXJhbGxheFBlcmNlbnRhZ2U6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgbWluSGVpZ2h0ID0gKGNvbnRhaW5lci5jbGllbnRIZWlnaHQgKiAoMTAwICsgcGFyYWxsYXhQZXJjZW50YWdlKSkgLyAxMDA7XHJcbiAgICBjb25zdCByYXRpbyA9IGltYWdlLm5hdHVyYWxIZWlnaHQgLyBpbWFnZS5uYXR1cmFsV2lkdGg7XHJcbiAgICBjb25zdCBtaW5SYXRpbyA9IG1pbkhlaWdodCAvIGNvbnRhaW5lci5jbGllbnRXaWR0aDtcclxuXHJcbiAgICBpZiAocmF0aW8gPiBtaW5SYXRpbykge1xyXG4gICAgICB0aGlzLmltYWdlLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBgJHtjb250YWluZXIuY2xpZW50V2lkdGh9cHhgKTtcclxuICAgICAgdGhpcy5pbWFnZS5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIGBhdXRvYCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmltYWdlLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7bWluSGVpZ2h0fXB4YCk7XHJcbiAgICAgIHRoaXMuaW1hZ2Uuc2V0QXR0cmlidXRlKCd3aWR0aCcsIGBhdXRvYCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgcGFyYWxsYXggc2Nyb2xsaW5nIHZpc2libGUgYXJlYS5cclxuICAgKiBVc2UgdGhpcyB3aGVuIGNvbnRhaW5lciBvdmVyZmxvdyBpcyBoaWRkZW4gZm9yIGJldHRlciBwYWdlIHBlcmZvcm1hbmNlXHJcbiAgICogQHBhcmFtIGVsZW1lbnRUb3AgbWFpbiBjb250YWluZXIgcG9zaXRpb24gZnJvbSB0aGUgdG9wIG9mIHRoZSBkb2N1bWVudCBpbiBwaXhlbHNcclxuICAgKiBAcGFyYW0gZWxlbWVudEhlaWdodCBtYWluIGNvbnRhaW5lciBoZWlnaHQgaW4gcGl4ZWxzXHJcbiAgICogQHBhcmFtIHBhcmFsbGF4UGVyY2VudGFnZSBwYXJhbGxheCBzY3JvbGwgcGVyY2VudGFnZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0UGFyYWxsYXhCb3VuZGFyaWVzKGVsZW1lbnRUb3A6IG51bWJlciwgZWxlbWVudEhlaWdodDogbnVtYmVyLCBwYXJhbGxheFBlcmNlbnRhZ2U6IG51bWJlcik6IFJmeFBhcmFsbGF4Qm91bmRhcmllc01vZGVsIHtcclxuICAgIGNvbnN0IHVzYWJsZVBpeGVscyA9IGVsZW1lbnRIZWlnaHQgLyAxMDAgKiBwYXJhbGxheFBlcmNlbnRhZ2U7XHJcbiAgICBjb25zdCBzdGFydFBvaW50ID0gZWxlbWVudFRvcCAtIHVzYWJsZVBpeGVscyAtIHdpbmRvdy5pbm5lckhlaWdodDtcclxuICAgIGNvbnN0IGVuZFBvaW50ID0gZWxlbWVudFRvcCArIGVsZW1lbnRIZWlnaHQgKyB1c2FibGVQaXhlbHM7XHJcbiAgICBjb25zdCB0b3RhbFBpeGVscyA9IGVuZFBvaW50IC0gc3RhcnRQb2ludDtcclxuICAgIHJldHVybiBuZXcgUmZ4UGFyYWxsYXhCb3VuZGFyaWVzTW9kZWwoc3RhcnRQb2ludCwgZW5kUG9pbnQsIHRvdGFsUGl4ZWxzLCB1c2FibGVQaXhlbHMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGltYWdlIHRyYW5zZm9ybSBwcm9wZXJ0eVxyXG4gICAqIEBwYXJhbSBpbWFnZSBpbWFnZSBIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnRcclxuICAgKiBAcGFyYW0gaW1hZ2VMZWZ0IGltYWdlIGxlZnQgc2hpZnQgaW4gcGl4ZWxzXHJcbiAgICogQHBhcmFtIGltYWdlVG9wIGltYWdlIHRvcCBzaGlmdCBpbiBwaXhlbHNcclxuICAgKi9cclxuICBwcml2YXRlIHNldEltYWdlVHJhbnNmb3JtKGltYWdlOiBIVE1MSW1hZ2VFbGVtZW50LCBpbWFnZUxlZnQ6IG51bWJlciwgaW1hZ2VUb3A6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbWFnZSwgJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoJHtpbWFnZUxlZnR9cHgsICR7aW1hZ2VUb3B9cHgpYCk7XHJcbiAgICAvLyB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltYWdlLCAndHJhbnNmb3JtJywgYHRyYW5zbGF0ZTNkKCR7aW1hZ2VMZWZ0fXB4LCAke2ltYWdlVG9wfXB4LCAwKWApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGltYWdlIGxlZnQgcHJvcGVydHkgYmFzZWQgb24gcG9zaXRpb25QZXJjZW50YWdlIGluIHBpeGVsc1xyXG4gICAqIEBwYXJhbSBjb250YWluZXJXaWR0aCBtYWluIGNvbnRhaW5lciB3aWR0aCBpbiBwaXhlbHNcclxuICAgKiBAcGFyYW0gaW1hZ2VXaWR0aCBpbWFnZSB3aWR0aCBpbiBwaXhlbHNcclxuICAgKiBAcGFyYW0gcG9zaXRpb25QZXJjZW50YWdlIGltYWdlIHBvc2l0aW9uIHBlcmNlbnRhZ2VcclxuICAgKi9cclxuICBwcml2YXRlIGdldEltYWdlTGVmdChjb250YWluZXJXaWR0aDogbnVtYmVyLCBpbWFnZVdpZHRoOiBudW1iZXIsIHBvc2l0aW9uUGVyY2VudGFnZTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAoY29udGFpbmVyV2lkdGggLSBpbWFnZVdpZHRoKSAvIDEwMCAqIHBvc2l0aW9uUGVyY2VudGFnZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBpbWFnZSB0b3Agc2hpZnQgaW4gcGl4ZWxzXHJcbiAgICogQHBhcmFtIHNjcm9sbFRvcCBwaXhlbHMgZnJvbSB0aGUgdG9wIG9mIHRoZSBwYWdlIHRvIHRoZSBjdXJyZW50IHZpZXdcclxuICAgKiBAcGFyYW0gYm91bmRhcmllcyBwYXJhbGxheCBwb3NpdGlvbiBwb2ludHMgaW5zaWRlIHRoZSBwYWdlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRJbWFnZVRvcChzY3JvbGxUb3A6IG51bWJlciwgYm91bmRhcmllczogUmZ4UGFyYWxsYXhCb3VuZGFyaWVzTW9kZWwpOiBudW1iZXIge1xyXG4gICAgY29uc3QgcGFyYWxsYXhBcmVhOiBudW1iZXIgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihzY3JvbGxUb3AgLSBib3VuZGFyaWVzLnN0YXJ0UG9pbnQsIGJvdW5kYXJpZXMudG90YWxQaXhlbHMpKTtcclxuICAgIGNvbnN0IHBhcmFsbGF4QXJlYVBlcmNlbnRhZ2U6IG51bWJlciA9IDEwMCAvIGJvdW5kYXJpZXMudG90YWxQaXhlbHMgKiBwYXJhbGxheEFyZWE7XHJcbiAgICByZXR1cm4gLWJvdW5kYXJpZXMudXNhYmxlUGl4ZWxzICogKDEgLSBwYXJhbGxheEFyZWFQZXJjZW50YWdlIC8gMTAwKTtcclxuICB9XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmZ4LXBhcmFsbGF4LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJEOi9SZXBvcy9SRlhMaWJyYXJ5L3Byb2plY3RzL3JmeC1wYXJhbGxheC9zcmMvIiwic291cmNlcyI6WyJsaWIvcmZ4LXBhcmFsbGF4LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQWdDLFNBQVMsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLN0UsTUFBTSxPQUFPLG9CQUFvQjtJQWtCL0IsWUFDVSxXQUF1QixFQUN2QixRQUFtQixFQUNuQixrQkFBc0M7UUFGdEMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBRTlDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNyQztRQUVELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFF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VUFBVSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUM5RyxNQUFNLHNCQUFzQixHQUFXLEdBQUcsR0FBRyxVQUFVLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztRQUNuRixPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxzQkFBc0IsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN2RSxDQUFDOzs7WUE3TUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7YUFDN0I7OztZQVBtQixVQUFVO1lBQXVDLFNBQVM7WUFFckUsa0JBQWtCOzs7aUNBT3hCLEtBQUs7aUNBQ0wsS0FBSzt1QkFDTCxLQUFLOzBCQUNMLEtBQUs7OEJBQ0wsS0FBSzt5QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBSZnhQYXJhbGxheFNlcnZpY2UgfSBmcm9tICcuL3JmeC1wYXJhbGxheC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmZ4UGFyYWxsYXhCb3VuZGFyaWVzTW9kZWwgfSBmcm9tICcuL3JmeC1wYXJhbGxheC1ib3VuZGFyaWVzLm1vZGVsJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2xpYlJmeFBhcmFsbGF4XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJmeFBhcmFsbGF4RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgcHVibGljIHBhcmFsbGF4UGVyY2VudGFnZTogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwb3NpdGlvblBlcmNlbnRhZ2U6IG51bWJlcjtcclxuICBASW5wdXQoKSBwdWJsaWMgaW1hZ2VVcmw6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgaW1hZ2VaSW5kZXg6IG51bWJlcjtcclxuICBASW5wdXQoKSBwdWJsaWMgdmlzaWJsZU92ZXJmbG93OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc0Rpc2FibGVkOiBib29sZWFuO1xyXG5cclxuICAvLyBASW5wdXQoKSBwdWJsaWMgdGVzdDogYm9vbGVhbjsgLy8gVE9ETyE6IHJlbW92ZVxyXG5cclxuICBwcml2YXRlIGltYWdlOiBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gIHByaXZhdGUgaW1hZ2VMZWZ0OiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBzY3JvbGxUb3A6IG51bWJlcjtcclxuICBwcml2YXRlIHBhcmFsbGF4Qm91bmRhcmllczogUmZ4UGFyYWxsYXhCb3VuZGFyaWVzTW9kZWw7XHJcblxyXG4gIHByaXZhdGUgb25TY3JvbGxMaXN0ZW5lcjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgb25SZXNpemVMaXN0ZW5lcjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHRtbEVsZW1lbnQ6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIHJmeFBhcmFsbGF4U2VydmljZTogUmZ4UGFyYWxsYXhTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnBhcmFsbGF4UGVyY2VudGFnZSA9IDQwO1xyXG4gICAgdGhpcy5wb3NpdGlvblBlcmNlbnRhZ2UgPSA1MDtcclxuICAgIHRoaXMuaW1hZ2VaSW5kZXggPSAtMTtcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy52aXNpYmxlT3ZlcmZsb3cgPSBmYWxzZTtcclxuICAgIHRoaXMuc2Nyb2xsVG9wID0gMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0TGlzdGVuZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vblNjcm9sbExpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMub25TY3JvbGxMaXN0ZW5lci51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9uUmVzaXplTGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5vblJlc2l6ZUxpc3RlbmVyLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMuaW1hZ2VVcmw/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLmxvYWRJbWFnZShjaGFuZ2VzLmltYWdlVXJsLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW1hZ2UpIHtcclxuICAgICAgdGhpcy5zZXRQYXJhbGxheFByb3BlcnRpZXModGhpcy5zY3JvbGxUb3ApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaWJlIHRvIHNjcm9sbCBhbmQgcmVzaXplIGxpc3RlbmVyc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0TGlzdGVuZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblNjcm9sbExpc3RlbmVyID0gdGhpcy5yZnhQYXJhbGxheFNlcnZpY2UuZ2V0TW91c2VTY3JvbGwoKS5zdWJzY3JpYmUoKHNjcm9sbDogbnVtYmVyKSA9PiB0aGlzLm9uTW91c2VTY3JvbGwoc2Nyb2xsKSk7XHJcbiAgICB0aGlzLm9uUmVzaXplTGlzdGVuZXIgPSB0aGlzLnJmeFBhcmFsbGF4U2VydmljZS5nZXRXaW5kb3dSZXNpemUoKS5zdWJzY3JpYmUoKHdpZHRoOiBudW1iZXIpID0+IHRoaXMub25XaW5kb3dSZXNpemUod2lkdGgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0cmFuc2Zvcm0gcHJvcGVydHkgYmFzZWQgb24gdGhlIG5ldyBzY3JvbGwgdmFsdWVcclxuICAgKiBAcGFyYW0gc2Nyb2xsIG5ldyBlbGVtZW50IHNjcm9sbCB2YWx1ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgb25Nb3VzZVNjcm9sbChzY3JvbGw6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHNjcm9sbCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuaW1hZ2UpIHtcclxuICAgICAgY29uc3QgaW1hZ2VUb3AgPSB0aGlzLmdldEltYWdlVG9wKHNjcm9sbCwgdGhpcy5wYXJhbGxheEJvdW5kYXJpZXMpO1xyXG4gICAgICB0aGlzLnNldEltYWdlVHJhbnNmb3JtKHRoaXMuaW1hZ2UsIHRoaXMuaW1hZ2VMZWZ0LCBpbWFnZVRvcCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCBwYXJhbGxheCBwcm9wZXJ0aWVzIGFjY29yZGluZyB0byBuZXcgd2luZG93IHNpemVcclxuICAgKiBAcGFyYW0gd2lkdGggd2luZG93IG5ldyB3aWR0aCB2YWx1ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgb25XaW5kb3dSZXNpemUod2lkdGg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHdpZHRoICE9PSB1bmRlZmluZWQgJiYgdGhpcy5pbWFnZSkge1xyXG4gICAgICB0aGlzLnNldFBhcmFsbGF4UHJvcGVydGllcyh0aGlzLnNjcm9sbFRvcCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkIHBhcmFsbGF4IGltYWdlIGZyb20gaW1hZ2VVcmxcclxuICAgKiBAcGFyYW0gaW1hZ2VVcmwgaW1hZ2UgdXJsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBsb2FkSW1hZ2UoaW1hZ2VVcmw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5pbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG4gICAgdGhpcy5pbWFnZS5zcmMgPSBpbWFnZVVybDtcclxuICAgIHRoaXMuaW1hZ2Uuc2V0QXR0cmlidXRlKCdjbGFzcycsICdwYXJhbGxheC1pbWFnZScpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmltYWdlLCAndmlzaWJsaXR5JywgJ2hpZGRlbicpO1xyXG4gICAgdGhpcy5odG1sRWxlbWVudC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaW1hZ2UpO1xyXG5cclxuICAgIHRoaXMuaW1hZ2Uub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLnNldFBhcmFsbGF4UHJvcGVydGllcyh0aGlzLnNjcm9sbFRvcCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbWFnZSwgJ3Zpc2libGl0eScsICd2aXNpYmxlJyk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHBhcmFsbGF4IHByb3BlcnRpZXMgYW5kIHBvc2l0aW9uXHJcbiAgICogQHBhcmFtIHNjcm9sbFRvcCBwYWdlIGNvbnRhaW5lciBwaXhlbHMgZnJvbSB0aGUgdG9wIG9mIHRoZSBwYWdlIHRvIHRoZSBjdXJyZW50IHZpZXdcclxuICAgKi9cclxuICBwcml2YXRlIHNldFBhcmFsbGF4UHJvcGVydGllcyhzY3JvbGxUb3A6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgY29udGFpbmVyRWxlbWVudCA9IHRoaXMuaHRtbEVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSB0aGlzLmh0bWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBlbGVtZW50VG9wID0gY29udGFpbmVyUmVjdC50b3AgKyBzY3JvbGxUb3A7XHJcbiAgICB0aGlzLnNldFN0YXRpY1Byb3BlcnRpZXMoKTtcclxuICAgIHRoaXMuc2V0SW1hZ2VTaXplKGNvbnRhaW5lckVsZW1lbnQsIHRoaXMuaW1hZ2UsIHRoaXMucGFyYWxsYXhQZXJjZW50YWdlKTtcclxuICAgIHRoaXMucGFyYWxsYXhCb3VuZGFyaWVzID0gdGhpcy5nZXRQYXJhbGxheEJvdW5kYXJpZXMoZWxlbWVudFRvcCwgY29udGFpbmVyRWxlbWVudC5jbGllbnRIZWlnaHQsIHRoaXMucGFyYWxsYXhQZXJjZW50YWdlKTtcclxuICAgIHRoaXMuaW1hZ2VMZWZ0ID0gdGhpcy5nZXRJbWFnZUxlZnQodGhpcy5odG1sRWxlbWVudC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoLCB0aGlzLmltYWdlLndpZHRoLCB0aGlzLnBvc2l0aW9uUGVyY2VudGFnZSk7XHJcbiAgICBjb25zdCBpbWFnZVRvcCA9IHRoaXMuZ2V0SW1hZ2VUb3Aoc2Nyb2xsVG9wLCB0aGlzLnBhcmFsbGF4Qm91bmRhcmllcyk7XHJcbiAgICB0aGlzLnNldEltYWdlVHJhbnNmb3JtKHRoaXMuaW1hZ2UsIHRoaXMuaW1hZ2VMZWZ0LCBpbWFnZVRvcCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgZGVmYXVsdCBwcm9wZXJ0aWVzIGZvciBjb250YWluZXIgYW5kIGltYWdlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRTdGF0aWNQcm9wZXJ0aWVzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzQWxyZWFkeVBvc2l0aW9uZWQodGhpcy5odG1sRWxlbWVudC5uYXRpdmVFbGVtZW50KSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaHRtbEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3Bvc2l0aW9uJywgJ3JlbGF0aXZlJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmh0bWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdvdmVyZmxvdycsIHRoaXMudmlzaWJsZU92ZXJmbG93ID8gJ3Zpc2libGUnIDogJ2hpZGRlbicpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmltYWdlLCAnei1pbmRleCcsIHRoaXMuaW1hZ2VaSW5kZXgpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmltYWdlLCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbWFnZSwgJ2xlZnQnLCAnMCcpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmltYWdlLCAndG9wJywgJzAnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGVsZW1lbnQgaGFzIHBvc2l0aW9uIGFic29sdXRlIG9yIHJlbGF0aXZlXHJcbiAgICogQHBhcmFtIGVsZW1lbnQgaHRtbCBlbGVtZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpc0FscmVhZHlQb3NpdGlvbmVkKGVsZW1lbnQ6IEVsZW1lbnQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBbJ2Fic29sdXRlJywgJ3JlbGF0aXZlJ10uaW5jbHVkZXMod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGRlZmF1bHQgaW1hZ2Ugc2l6ZSB0aGF0IG1hdGNoIHByb3BlcnRpZXNcclxuICAgKiBAcGFyYW0gY29udGFpbmVyIG1haW4gY29udGFpbmVyIEhUTUxFbGVtZW50XHJcbiAgICogQHBhcmFtIGltYWdlIG1haW4gaW1hZ2UgSFRNTEVsZW1lbnRcclxuICAgKiBAcGFyYW0gcGFyYWxsYXhQZXJjZW50YWdlIHBhcmFsbGF4IHNjcm9sbCBwZXJjZW50YWdlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRJbWFnZVNpemUoY29udGFpbmVyOiBIVE1MRWxlbWVudCwgaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQsIHBhcmFsbGF4UGVyY2VudGFnZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBtaW5IZWlnaHQgPSAoY29udGFpbmVyLmNsaWVudEhlaWdodCAqICgxMDAgKyBwYXJhbGxheFBlcmNlbnRhZ2UpKSAvIDEwMDtcclxuICAgIGNvbnN0IHJhdGlvID0gaW1hZ2UubmF0dXJhbEhlaWdodCAvIGltYWdlLm5hdHVyYWxXaWR0aDtcclxuICAgIGNvbnN0IG1pblJhdGlvID0gbWluSGVpZ2h0IC8gY29udGFpbmVyLmNsaWVudFdpZHRoO1xyXG5cclxuICAgIGlmIChyYXRpbyA+IG1pblJhdGlvKSB7XHJcbiAgICAgIHRoaXMuaW1hZ2Uuc2V0QXR0cmlidXRlKCd3aWR0aCcsIGAke2NvbnRhaW5lci5jbGllbnRXaWR0aH1weGApO1xyXG4gICAgICB0aGlzLmltYWdlLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYGF1dG9gKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW1hZ2Uuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHttaW5IZWlnaHR9cHhgKTtcclxuICAgICAgdGhpcy5pbWFnZS5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYGF1dG9gKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBwYXJhbGxheCBzY3JvbGxpbmcgdmlzaWJsZSBhcmVhLlxyXG4gICAqIFVzZSB0aGlzIHdoZW4gY29udGFpbmVyIG92ZXJmbG93IGlzIGhpZGRlbiBmb3IgYmV0dGVyIHBhZ2UgcGVyZm9ybWFuY2VcclxuICAgKiBAcGFyYW0gZWxlbWVudFRvcCBtYWluIGNvbnRhaW5lciBwb3NpdGlvbiBmcm9tIHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50IGluIHBpeGVsc1xyXG4gICAqIEBwYXJhbSBlbGVtZW50SGVpZ2h0IG1haW4gY29udGFpbmVyIGhlaWdodCBpbiBwaXhlbHNcclxuICAgKiBAcGFyYW0gcGFyYWxsYXhQZXJjZW50YWdlIHBhcmFsbGF4IHNjcm9sbCBwZXJjZW50YWdlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRQYXJhbGxheEJvdW5kYXJpZXMoZWxlbWVudFRvcDogbnVtYmVyLCBlbGVtZW50SGVpZ2h0OiBudW1iZXIsIHBhcmFsbGF4UGVyY2VudGFnZTogbnVtYmVyKTogUmZ4UGFyYWxsYXhCb3VuZGFyaWVzTW9kZWwge1xyXG4gICAgY29uc3QgdXNhYmxlUGl4ZWxzID0gZWxlbWVudEhlaWdodCAvIDEwMCAqIHBhcmFsbGF4UGVyY2VudGFnZTtcclxuICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSBlbGVtZW50VG9wIC0gdXNhYmxlUGl4ZWxzIC0gd2luZG93LmlubmVySGVpZ2h0O1xyXG4gICAgY29uc3QgZW5kUG9pbnQgPSBlbGVtZW50VG9wICsgZWxlbWVudEhlaWdodCArIHVzYWJsZVBpeGVscztcclxuICAgIGNvbnN0IHRvdGFsUGl4ZWxzID0gZW5kUG9pbnQgLSBzdGFydFBvaW50O1xyXG4gICAgcmV0dXJuIG5ldyBSZnhQYXJhbGxheEJvdW5kYXJpZXNNb2RlbChzdGFydFBvaW50LCBlbmRQb2ludCwgdG90YWxQaXhlbHMsIHVzYWJsZVBpeGVscyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgaW1hZ2UgdHJhbnNmb3JtIHByb3BlcnR5XHJcbiAgICogQHBhcmFtIGltYWdlIGltYWdlIEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudFxyXG4gICAqIEBwYXJhbSBpbWFnZUxlZnQgaW1hZ2UgbGVmdCBzaGlmdCBpbiBwaXhlbHNcclxuICAgKiBAcGFyYW0gaW1hZ2VUb3AgaW1hZ2UgdG9wIHNoaWZ0IGluIHBpeGVsc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0SW1hZ2VUcmFuc2Zvcm0oaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQsIGltYWdlTGVmdDogbnVtYmVyLCBpbWFnZVRvcDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltYWdlLCAndHJhbnNmb3JtJywgYHRyYW5zbGF0ZTNkKCR7aW1hZ2VMZWZ0fXB4LCAke2ltYWdlVG9wfXB4LCAwKWApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGltYWdlIGxlZnQgcHJvcGVydHkgYmFzZWQgb24gcG9zaXRpb25QZXJjZW50YWdlIGluIHBpeGVsc1xyXG4gICAqIEBwYXJhbSBjb250YWluZXJXaWR0aCBtYWluIGNvbnRhaW5lciB3aWR0aCBpbiBwaXhlbHNcclxuICAgKiBAcGFyYW0gaW1hZ2VXaWR0aCBpbWFnZSB3aWR0aCBpbiBwaXhlbHNcclxuICAgKiBAcGFyYW0gcG9zaXRpb25QZXJjZW50YWdlIGltYWdlIHBvc2l0aW9uIHBlcmNlbnRhZ2VcclxuICAgKi9cclxuICBwcml2YXRlIGdldEltYWdlTGVmdChjb250YWluZXJXaWR0aDogbnVtYmVyLCBpbWFnZVdpZHRoOiBudW1iZXIsIHBvc2l0aW9uUGVyY2VudGFnZTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAoY29udGFpbmVyV2lkdGggLSBpbWFnZVdpZHRoKSAvIDEwMCAqIHBvc2l0aW9uUGVyY2VudGFnZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBpbWFnZSB0b3Agc2hpZnQgaW4gcGl4ZWxzXHJcbiAgICogQHBhcmFtIHNjcm9sbFRvcCBwaXhlbHMgZnJvbSB0aGUgdG9wIG9mIHRoZSBwYWdlIHRvIHRoZSBjdXJyZW50IHZpZXdcclxuICAgKiBAcGFyYW0gYm91bmRhcmllcyBwYXJhbGxheCBwb3NpdGlvbiBwb2ludHMgaW5zaWRlIHRoZSBwYWdlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRJbWFnZVRvcChzY3JvbGxUb3A6IG51bWJlciwgYm91bmRhcmllczogUmZ4UGFyYWxsYXhCb3VuZGFyaWVzTW9kZWwpOiBudW1iZXIge1xyXG4gICAgY29uc3QgcGFyYWxsYXhBcmVhOiBudW1iZXIgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihzY3JvbGxUb3AgLSBib3VuZGFyaWVzLnN0YXJ0UG9pbnQsIGJvdW5kYXJpZXMudG90YWxQaXhlbHMpKTtcclxuICAgIGNvbnN0IHBhcmFsbGF4QXJlYVBlcmNlbnRhZ2U6IG51bWJlciA9IDEwMCAvIGJvdW5kYXJpZXMudG90YWxQaXhlbHMgKiBwYXJhbGxheEFyZWE7XHJcbiAgICByZXR1cm4gLWJvdW5kYXJpZXMudXNhYmxlUGl4ZWxzICogKDEgLSBwYXJhbGxheEFyZWFQZXJjZW50YWdlIC8gMTAwKTtcclxuICB9XHJcbn1cclxuIl19

@@ -219,4 +219,3 @@ import { ɵɵdefineInjectable, ɵɵinject, RendererFactory2, Injectable, Directive, ElementRef, Renderer2, Input, NgModule } from '@angular/core';

setImageTransform(image, imageLeft, imageTop) {
this.renderer.setStyle(image, 'transform', `translate(${imageLeft}px, ${imageTop}px)`);
// this.renderer.setStyle(image, 'transform', `translate3d(${imageLeft}px, ${imageTop}px, 0)`);
this.renderer.setStyle(image, 'transform', `translate3d(${imageLeft}px, ${imageTop}px, 0)`);
}

@@ -223,0 +222,0 @@ /**

{
"name": "rfx-parallax",
"version": "2.0.0",
"version": "2.1.0",
"description": "RfxParallax - parallax made easy",

@@ -5,0 +5,0 @@ "author": "RedFoxxo",

@@ -13,3 +13,3 @@ # RfxParallax

- Configurable image **scroll percentage**, **z-index** and **zoom position**
- ~~Best performance with `translate3d`~~ (Coming soon)
- Best performance with `translate3d`
- ~~Asynchronous browser scrolling disabled for better performance~~ (Coming soon)

@@ -16,0 +16,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc