UNPKG

@greg-md/ng-flex-css-layout

Version:

Flex-CSS-Layout is an alternative behaviour of Flex-Layout directives, that will still work with Angular Universal and App Shell.

405 lines (404 loc) 28.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Directive, ElementRef, Input, Renderer2, Optional, Self, Inject, PLATFORM_ID } from '@angular/core'; import { isPlatformBrowser } from '@angular/common'; import { ReplaySubject } from 'rxjs'; import { FlexCssService } from './flex-css.service'; import { BaseDirective } from './directive'; import { LayoutDirective } from './layout.directive'; var /** @type {?} */ TRULY = ['true', true, 1]; /** * @param {?} value * @return {?} */ export function isTrueValue(value) { return value === '' || TRULY.indexOf(value) >= 0; } var ShowHideDirective = /** @class */ (function (_super) { tslib_1.__extends(ShowHideDirective, _super); function ShowHideDirective(elementRef, renderer, service, layout, platformId) { var _this = _super.call(this, elementRef, renderer) || this; _this.service = service; _this.layout = layout; _this.platformId = platformId; _this.fcValues = {}; _this.observer$ = new ReplaySubject(1); return _this; } Object.defineProperty(ShowHideDirective.prototype, "show", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['all'] = isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "showXs", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['xs'] = isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "showSm", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['sm'] = isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "showMd", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['md'] = isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "showLg", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lg'] = isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "showXl", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['xl'] = isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "showLtSm", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-sm'] = isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "showLtMd", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-md'] = isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "showLtLg", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-lg'] = isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "showLtXl", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-xl'] = isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "showGtXs", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-xs'] = isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "showGtSm", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-sm'] = isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "showGtMd", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-md'] = isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "showGtLg", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-lg'] = isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "hide", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['all'] = !isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "hideXs", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['xs'] = !isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "hideSm", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['sm'] = !isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "hideMd", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['md'] = !isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "hideLg", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lg'] = !isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "hideXl", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['xl'] = !isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "hideLtSm", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-sm'] = !isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "hideLtMd", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-md'] = !isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "hideLtLg", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-lg'] = !isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "hideLtXl", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['lt-xl'] = !isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "hideGtXs", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-xs'] = !isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "hideGtSm", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-sm'] = !isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "hideGtMd", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-md'] = !isTrueValue(val); }, enumerable: true, configurable: true }); Object.defineProperty(ShowHideDirective.prototype, "hideGtLg", { set: /** * @param {?} val * @return {?} */ function (val) { this.fcValues['gt-lg'] = !isTrueValue(val); }, enumerable: true, configurable: true }); /** * @return {?} */ ShowHideDirective.prototype.ngOnChanges = /** * @return {?} */ function () { this.reload(); }; /** * @return {?} */ ShowHideDirective.prototype.reload = /** * @return {?} */ function () { var _this = this; var /** @type {?} */ classNames = []; var /** @type {?} */ display = this.getDisplayStyle(); this.breakpoints.forEach(function (breakpoint) { classNames.push(_this.service.addShowHide(display, _this.fcValues[breakpoint], breakpoint)); }); this.setClassNames(classNames); this.observer$.next(this.fcValues); }; /** * @return {?} */ ShowHideDirective.prototype.getDisplayStyle = /** * @return {?} */ function () { return this.layout ? 'flex' : (this.getElementStyle(this.elementRef.nativeElement, 'display') || this.fcDisplayDefault || 'block'); }; /** * @param {?} element * @param {?} styleName * @return {?} */ ShowHideDirective.prototype.getElementStyle = /** * @param {?} element * @param {?} styleName * @return {?} */ function (element, styleName) { return (element ? element.style[styleName] || element.style.getPropertyValue(styleName) : '') || (isPlatformBrowser(this.platformId) ? getComputedStyle(element).getPropertyValue(styleName) : ''); }; Object.defineProperty(ShowHideDirective.prototype, "breakpoints", { get: /** * @return {?} */ function () { return Object.keys(this.fcValues); }, enumerable: true, configurable: true }); ShowHideDirective.decorators = [ { type: Directive, args: [{ selector: "\n [fcShow],\n [fcShow.xs], [fcShow.sm], [fcShow.md], [fcShow.lg], [fcShow.xl],\n [fcShow.lt-sm], [fcShow.lt-md], [fcShow.lt-lg], [fcShow.lt-xl],\n [fcShow.gt-xs], [fcShow.gt-sm], [fcShow.gt-md], [fcShow.gt-lg],\n [fcHide],\n [fcHide.xs], [fcHide.sm], [fcHide.md], [fcHide.lg], [fcHide.xl],\n [fcHide.lt-sm], [fcHide.lt-md], [fcHide.lt-lg], [fcHide.lt-xl],\n [fcHide.gt-xs], [fcHide.gt-sm], [fcHide.gt-md], [fcHide.gt-lg]\n ", },] }, ]; /** @nocollapse */ ShowHideDirective.ctorParameters = function () { return [ { type: ElementRef }, { type: Renderer2 }, { type: FlexCssService }, { type: LayoutDirective, decorators: [{ type: Optional }, { type: Self }] }, { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] } ]; }; ShowHideDirective.propDecorators = { fcDisplayDefault: [{ type: Input }], show: [{ type: Input, args: ['fcShow',] }], showXs: [{ type: Input, args: ['fcShow.xs',] }], showSm: [{ type: Input, args: ['fcShow.sm',] }], showMd: [{ type: Input, args: ['fcShow.md',] }], showLg: [{ type: Input, args: ['fcShow.lg',] }], showXl: [{ type: Input, args: ['fcShow.xl',] }], showLtSm: [{ type: Input, args: ['fcShow.lt-sm',] }], showLtMd: [{ type: Input, args: ['fcShow.lt-md',] }], showLtLg: [{ type: Input, args: ['fcShow.lt-lg',] }], showLtXl: [{ type: Input, args: ['fcShow.lt-xl',] }], showGtXs: [{ type: Input, args: ['fcShow.gt-xs',] }], showGtSm: [{ type: Input, args: ['fcShow.gt-sm',] }], showGtMd: [{ type: Input, args: ['fcShow.gt-md',] }], showGtLg: [{ type: Input, args: ['fcShow.gt-lg',] }], hide: [{ type: Input, args: ['fcHide',] }], hideXs: [{ type: Input, args: ['fcHide.xs',] }], hideSm: [{ type: Input, args: ['fcHide.sm',] }], hideMd: [{ type: Input, args: ['fcHide.md',] }], hideLg: [{ type: Input, args: ['fcHide.lg',] }], hideXl: [{ type: Input, args: ['fcHide.xl',] }], hideLtSm: [{ type: Input, args: ['fcHide.lt-sm',] }], hideLtMd: [{ type: Input, args: ['fcHide.lt-md',] }], hideLtLg: [{ type: Input, args: ['fcHide.lt-lg',] }], hideLtXl: [{ type: Input, args: ['fcHide.lt-xl',] }], hideGtXs: [{ type: Input, args: ['fcHide.gt-xs',] }], hideGtSm: [{ type: Input, args: ['fcHide.gt-sm',] }], hideGtMd: [{ type: Input, args: ['fcHide.gt-md',] }], hideGtLg: [{ type: Input, args: ['fcHide.gt-lg',] }] }; return ShowHideDirective; }(BaseDirective)); export { ShowHideDirective }; function ShowHideDirective_tsickle_Closure_declarations() { /** @type {?} */ ShowHideDirective.prototype.fcValues; /** @type {?} */ ShowHideDirective.prototype.observer$; /** @type {?} */ ShowHideDirective.prototype.fcDisplayDefault; /** @type {?} */ ShowHideDirective.prototype.service; /** @type {?} */ ShowHideDirective.prototype.layout; /** @type {?} */ ShowHideDirective.prototype.platformId; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy1oaWRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BncmVnLW1kL25nLWZsZXgtY3NzLWxheW91dC8iLCJzb3VyY2VzIjpbImxpYi9zaG93LWhpZGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBYSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFckQscUJBQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQzs7Ozs7QUFFaEMsTUFBTSxzQkFBc0IsS0FBVTtJQUNwQyxNQUFNLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUNsRDs7SUFjc0MsNkNBQWE7SUF5Q2xELDJCQUNFLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ1gsU0FDb0IsTUFBdUIsRUFDcEIsVUFBa0I7UUFMbkQsWUFPRSxrQkFBTSxVQUFVLEVBQUUsUUFBUSxDQUFDLFNBQzVCO1FBTFMsYUFBTyxHQUFQLE9BQU87UUFDYSxZQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUNwQixnQkFBVSxHQUFWLFVBQVUsQ0FBUTt5QkE3Qy9CLEVBQUU7MEJBRUQsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDOztLQThD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QkFBUyxTQUFTO2dCQUl2QyxjQUFjO2dCQUVkLGVBQWUsdUJBaUVuQixRQUFRLFlBQUksSUFBSTtnQkFDMEIsTUFBTSx1QkFBaEQsTUFBTSxTQUFDLFdBQVc7OzttQ0F6Q3BCLEtBQUs7dUJBRUwsS0FBSyxTQUFDLFFBQVE7eUJBQ2QsS0FBSyxTQUFDLFdBQVc7eUJBQ2pCLEtBQUssU0FBQyxXQUFXO3lCQUNqQixLQUFLLFNBQUMsV0FBVzt5QkFDakIsS0FBSyxTQUFDLFdBQVc7eUJBQ2pCLEtBQUssU0FBQyxXQUFXOzJCQUVqQixLQUFLLFNBQUMsY0FBYzsyQkFDcEIsS0FBSyxTQUFDLGNBQWM7MkJBQ3BCLEtBQUssU0FBQyxjQUFjOzJCQUNwQixLQUFLLFNBQUMsY0FBYzsyQkFFcEIsS0FBSyxTQUFDLGNBQWM7MkJBQ3BCLEtBQUssU0FBQyxjQUFjOzJCQUNwQixLQUFLLFNBQUMsY0FBYzsyQkFDcEIsS0FBSyxTQUFDLGNBQWM7dUJBRXBCLEtBQUssU0FBQyxRQUFRO3lCQUNkLEtBQUssU0FBQyxXQUFXO3lCQUNqQixLQUFLLFNBQUMsV0FBVzt5QkFDakIsS0FBSyxTQUFDLFdBQVc7eUJBQ2pCLEtBQUssU0FBQyxXQUFXO3lCQUNqQixLQUFLLFNBQUMsV0FBVzsyQkFFakIsS0FBSyxTQUFDLGNBQWM7MkJBQ3BCLEtBQUssU0FBQyxjQUFjOzJCQUNwQixLQUFLLFNBQUMsY0FBYzsyQkFDcEIsS0FBSyxTQUFDLGNBQWM7MkJBRXBCLEtBQUssU0FBQyxjQUFjOzJCQUNwQixLQUFLLFNBQUMsY0FBYzsyQkFDcEIsS0FBSyxTQUFDLGNBQWM7MkJBQ3BCLEtBQUssU0FBQyxjQUFjOzs0QkFqRXZCO0VBMEJ1QyxhQUFhO1NBQXZDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIFJlbmRlcmVyMiwgT25DaGFuZ2VzLCBPcHRpb25hbCwgU2VsZiwgSW5qZWN0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGbGV4Q3NzU2VydmljZSB9IGZyb20gJy4vZmxleC1jc3Muc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTGF5b3V0RGlyZWN0aXZlIH0gZnJvbSAnLi9sYXlvdXQuZGlyZWN0aXZlJztcblxuY29uc3QgVFJVTFkgPSBbJ3RydWUnLCB0cnVlLCAxXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVHJ1ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuIHZhbHVlID09PSAnJyB8fCBUUlVMWS5pbmRleE9mKHZhbHVlKSA+PSAwO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IGBcbiAgW2ZjU2hvd10sXG4gIFtmY1Nob3cueHNdLCBbZmNTaG93LnNtXSwgW2ZjU2hvdy5tZF0sIFtmY1Nob3cubGddLCBbZmNTaG93LnhsXSxcbiAgW2ZjU2hvdy5sdC1zbV0sIFtmY1Nob3cubHQtbWRdLCBbZmNTaG93Lmx0LWxnXSwgW2ZjU2hvdy5sdC14bF0sXG4gIFtmY1Nob3cuZ3QteHNdLCBbZmNTaG93Lmd0LXNtXSwgW2ZjU2hvdy5ndC1tZF0sIFtmY1Nob3cuZ3QtbGddLFxuICBbZmNIaWRlXSxcbiAgW2ZjSGlkZS54c10sIFtmY0hpZGUuc21dLCBbZmNIaWRlLm1kXSwgW2ZjSGlkZS5sZ10sIFtmY0hpZGUueGxdLFxuICBbZmNIaWRlLmx0LXNtXSwgW2ZjSGlkZS5sdC1tZF0sIFtmY0hpZGUubHQtbGddLCBbZmNIaWRlLmx0LXhsXSxcbiAgW2ZjSGlkZS5ndC14c10sIFtmY0hpZGUuZ3Qtc21dLCBbZmNIaWRlLmd0LW1kXSwgW2ZjSGlkZS5ndC1sZ11cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgU2hvd0hpZGVEaXJlY3RpdmUgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgcmVhZG9ubHkgZmNWYWx1ZXMgPSB7fTtcblxuICByZWFkb25seSBvYnNlcnZlciQgPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcblxuICBASW5wdXQoKSBmY0Rpc3BsYXlEZWZhdWx0O1xuXG4gIEBJbnB1dCgnZmNTaG93JykgICAgICAgc2V0IHNob3codmFsKSAgeyB0aGlzLmZjVmFsdWVzWydhbGwnXSA9IGlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY1Nob3cueHMnKSAgICBzZXQgc2hvd1hzKHZhbCkgeyB0aGlzLmZjVmFsdWVzWyd4cyddID0gaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjU2hvdy5zbScpICAgIHNldCBzaG93U20odmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ3NtJ10gPSBpc1RydWVWYWx1ZSh2YWwpOyB9XG4gIEBJbnB1dCgnZmNTaG93Lm1kJykgICAgc2V0IHNob3dNZCh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snbWQnXSA9IGlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY1Nob3cubGcnKSAgICBzZXQgc2hvd0xnKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsZyddID0gaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjU2hvdy54bCcpICAgIHNldCBzaG93WGwodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ3hsJ10gPSBpc1RydWVWYWx1ZSh2YWwpOyB9XG5cbiAgQElucHV0KCdmY1Nob3cubHQtc20nKSBzZXQgc2hvd0x0U20odmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LXNtJ10gPSBpc1RydWVWYWx1ZSh2YWwpOyB9XG4gIEBJbnB1dCgnZmNTaG93Lmx0LW1kJykgc2V0IHNob3dMdE1kKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsdC1tZCddID0gaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjU2hvdy5sdC1sZycpIHNldCBzaG93THRMZyh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snbHQtbGcnXSA9IGlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY1Nob3cubHQteGwnKSBzZXQgc2hvd0x0WGwodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LXhsJ10gPSBpc1RydWVWYWx1ZSh2YWwpOyB9XG5cbiAgQElucHV0KCdmY1Nob3cuZ3QteHMnKSBzZXQgc2hvd0d0WHModmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2d0LXhzJ10gPSBpc1RydWVWYWx1ZSh2YWwpOyB9XG4gIEBJbnB1dCgnZmNTaG93Lmd0LXNtJykgc2V0IHNob3dHdFNtKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC1zbSddID0gaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjU2hvdy5ndC1tZCcpIHNldCBzaG93R3RNZCh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snZ3QtbWQnXSA9IGlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY1Nob3cuZ3QtbGcnKSBzZXQgc2hvd0d0TGcodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2d0LWxnJ10gPSBpc1RydWVWYWx1ZSh2YWwpOyB9XG5cbiAgQElucHV0KCdmY0hpZGUnKSAgICAgICBzZXQgaGlkZSh2YWwpICB7IHRoaXMuZmNWYWx1ZXNbJ2FsbCddID0gIWlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY0hpZGUueHMnKSAgICBzZXQgaGlkZVhzKHZhbCkgeyB0aGlzLmZjVmFsdWVzWyd4cyddID0gIWlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY0hpZGUuc20nKSAgICBzZXQgaGlkZVNtKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydzbSddID0gIWlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY0hpZGUubWQnKSAgICBzZXQgaGlkZU1kKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydtZCddID0gIWlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY0hpZGUubGcnKSAgICBzZXQgaGlkZUxnKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsZyddID0gIWlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY0hpZGUueGwnKSAgICBzZXQgaGlkZVhsKHZhbCkgeyB0aGlzLmZjVmFsdWVzWyd4bCddID0gIWlzVHJ1ZVZhbHVlKHZhbCk7IH1cblxuICBASW5wdXQoJ2ZjSGlkZS5sdC1zbScpIHNldCBoaWRlTHRTbSh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snbHQtc20nXSA9ICFpc1RydWVWYWx1ZSh2YWwpOyB9XG4gIEBJbnB1dCgnZmNIaWRlLmx0LW1kJykgc2V0IGhpZGVMdE1kKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsdC1tZCddID0gIWlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY0hpZGUubHQtbGcnKSBzZXQgaGlkZUx0TGcodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LWxnJ10gPSAhaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjSGlkZS5sdC14bCcpIHNldCBoaWRlTHRYbCh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snbHQteGwnXSA9ICFpc1RydWVWYWx1ZSh2YWwpOyB9XG5cbiAgQElucHV0KCdmY0hpZGUuZ3QteHMnKSBzZXQgaGlkZUd0WHModmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2d0LXhzJ10gPSAhaXNUcnVlVmFsdWUodmFsKTsgfVxuICBASW5wdXQoJ2ZjSGlkZS5ndC1zbScpIHNldCBoaWRlR3RTbSh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snZ3Qtc20nXSA9ICFpc1RydWVWYWx1ZSh2YWwpOyB9XG4gIEBJbnB1dCgnZmNIaWRlLmd0LW1kJykgc2V0IGhpZGVHdE1kKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC1tZCddID0gIWlzVHJ1ZVZhbHVlKHZhbCk7IH1cbiAgQElucHV0KCdmY0hpZGUuZ3QtbGcnKSBzZXQgaGlkZUd0TGcodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2d0LWxnJ10gPSAhaXNUcnVlVmFsdWUodmFsKTsgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHNlcnZpY2U6IEZsZXhDc3NTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHJpdmF0ZSBsYXlvdXQ6IExheW91dERpcmVjdGl2ZSxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcm90ZWN0ZWQgcGxhdGZvcm1JZDogT2JqZWN0XG4gICkge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYsIHJlbmRlcmVyKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMucmVsb2FkKCk7XG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IFtdO1xuXG4gICAgY29uc3QgZGlzcGxheSA9IHRoaXMuZ2V0RGlzcGxheVN0eWxlKCk7XG5cbiAgICB0aGlzLmJyZWFrcG9pbnRzLmZvckVhY2goYnJlYWtwb2ludCA9PiB7XG4gICAgICBjbGFzc05hbWVzLnB1c2godGhpcy5zZXJ2aWNlLmFkZFNob3dIaWRlKGRpc3BsYXksIHRoaXMuZmNWYWx1ZXNbYnJlYWtwb2ludF0sIGJyZWFrcG9pbnQpKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2V0Q2xhc3NOYW1lcyhjbGFzc05hbWVzKTtcblxuICAgIHRoaXMub2JzZXJ2ZXIkLm5leHQodGhpcy5mY1ZhbHVlcyk7XG4gIH1cblxuICBnZXREaXNwbGF5U3R5bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0ID8gJ2ZsZXgnIDogKFxuICAgICAgdGhpcy5nZXRFbGVtZW50U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JylcbiAgICAgIHx8IHRoaXMuZmNEaXNwbGF5RGVmYXVsdFxuICAgICAgfHwgJ2Jsb2NrJ1xuICAgICk7XG4gIH1cblxuICBnZXRFbGVtZW50U3R5bGUoZWxlbWVudCwgc3R5bGVOYW1lKSB7XG4gICAgcmV0dXJuIChlbGVtZW50ID8gZWxlbWVudC5zdHlsZVtzdHlsZU5hbWVdIHx8IGVsZW1lbnQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShzdHlsZU5hbWUpIDogJycpXG4gICAgICB8fCAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSA/IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShzdHlsZU5hbWUpIDogJycpO1xuICB9XG5cbiAgZ2V0IGJyZWFrcG9pbnRzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmZjVmFsdWVzKTtcbiAgfVxufVxuIl19