devextreme-angular
Version:
Angular UI and visualization components based on DevExtreme widgets
161 lines (153 loc) • 18.6 kB
JavaScript
/*!
* devextreme-angular
* Version: 25.2.3
* Build date: Fri Dec 12 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file in the root of the project for details.
*
* https://github.com/DevExpress/devextreme-angular
*/
/* tslint:disable:max-line-length */
/* tslint:disable:use-input-property-decorator */
import { Component, NgModule, Host, SkipSelf, Output, EventEmitter, ContentChildren, QueryList } from '@angular/core';
import { DxIntegrationModule, NestedOptionHost, } from 'devextreme-angular/core';
import { DxoPopupOptions } from './base/popup-options';
import { PROPERTY_TOKEN_toolbarItems, } from 'devextreme-angular/core/tokens';
import * as i0 from "@angular/core";
import * as i1 from "devextreme-angular/core";
export class DxoDropDownOptionsComponent extends DxoPopupOptions {
set _toolbarItemsContentChildren(value) {
this.setChildren('toolbarItems', value);
}
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
heightChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
positionChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
visibleChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
widthChange;
get _optionPath() {
return 'dropDownOptions';
}
constructor(parentOptionHost, optionHost) {
super();
this._createEventEmitters([
{ emit: 'heightChange' },
{ emit: 'positionChange' },
{ emit: 'visibleChange' },
{ emit: 'widthChange' }
]);
parentOptionHost.setNestedOption(this);
optionHost.setHost(this, this._fullOptionPath.bind(this));
}
ngOnInit() {
this._addRecreatedComponent();
}
ngOnDestroy() {
this._addRemovedOption(this._getOptionPath());
}
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxoDropDownOptionsComponent, deps: [{ token: i1.NestedOptionHost, host: true, skipSelf: true }, { token: i1.NestedOptionHost, host: true }], target: i0.ɵɵFactoryTarget.Component });
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DxoDropDownOptionsComponent, isStandalone: true, selector: "dxo-drop-down-options", inputs: { accessKey: "accessKey", animation: "animation", container: "container", contentTemplate: "contentTemplate", deferRendering: "deferRendering", disabled: "disabled", dragAndResizeArea: "dragAndResizeArea", dragEnabled: "dragEnabled", dragOutsideBoundary: "dragOutsideBoundary", enableBodyScroll: "enableBodyScroll", focusStateEnabled: "focusStateEnabled", fullScreen: "fullScreen", height: "height", hideOnOutsideClick: "hideOnOutsideClick", hideOnParentScroll: "hideOnParentScroll", hint: "hint", hoverStateEnabled: "hoverStateEnabled", maxHeight: "maxHeight", maxWidth: "maxWidth", minHeight: "minHeight", minWidth: "minWidth", onContentReady: "onContentReady", onDisposing: "onDisposing", onHidden: "onHidden", onHiding: "onHiding", onInitialized: "onInitialized", onOptionChanged: "onOptionChanged", onResize: "onResize", onResizeEnd: "onResizeEnd", onResizeStart: "onResizeStart", onShowing: "onShowing", onShown: "onShown", onTitleRendered: "onTitleRendered", position: "position", resizeEnabled: "resizeEnabled", restorePosition: "restorePosition", rtlEnabled: "rtlEnabled", shading: "shading", shadingColor: "shadingColor", showCloseButton: "showCloseButton", showTitle: "showTitle", tabIndex: "tabIndex", title: "title", titleTemplate: "titleTemplate", toolbarItems: "toolbarItems", visible: "visible", width: "width", wrapperAttr: "wrapperAttr", hideEvent: "hideEvent", showEvent: "showEvent", target: "target" }, outputs: { heightChange: "heightChange", positionChange: "positionChange", visibleChange: "visibleChange", widthChange: "widthChange" }, providers: [NestedOptionHost], queries: [{ propertyName: "_toolbarItemsContentChildren", predicate: PROPERTY_TOKEN_toolbarItems }], usesInheritance: true, ngImport: i0, template: '', isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: DxIntegrationModule }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxoDropDownOptionsComponent, decorators: [{
type: Component,
args: [{ selector: 'dxo-drop-down-options', standalone: true, template: '', imports: [DxIntegrationModule], providers: [NestedOptionHost], inputs: [
'accessKey',
'animation',
'container',
'contentTemplate',
'deferRendering',
'disabled',
'dragAndResizeArea',
'dragEnabled',
'dragOutsideBoundary',
'enableBodyScroll',
'focusStateEnabled',
'fullScreen',
'height',
'hideOnOutsideClick',
'hideOnParentScroll',
'hint',
'hoverStateEnabled',
'maxHeight',
'maxWidth',
'minHeight',
'minWidth',
'onContentReady',
'onDisposing',
'onHidden',
'onHiding',
'onInitialized',
'onOptionChanged',
'onResize',
'onResizeEnd',
'onResizeStart',
'onShowing',
'onShown',
'onTitleRendered',
'position',
'resizeEnabled',
'restorePosition',
'rtlEnabled',
'shading',
'shadingColor',
'showCloseButton',
'showTitle',
'tabIndex',
'title',
'titleTemplate',
'toolbarItems',
'visible',
'width',
'wrapperAttr',
'hideEvent',
'showEvent',
'target'
] }]
}], ctorParameters: () => [{ type: i1.NestedOptionHost, decorators: [{
type: SkipSelf
}, {
type: Host
}] }, { type: i1.NestedOptionHost, decorators: [{
type: Host
}] }], propDecorators: { _toolbarItemsContentChildren: [{
type: ContentChildren,
args: [PROPERTY_TOKEN_toolbarItems]
}], heightChange: [{
type: Output
}], positionChange: [{
type: Output
}], visibleChange: [{
type: Output
}], widthChange: [{
type: Output
}] } });
export class DxoDropDownOptionsModule {
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxoDropDownOptionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
/** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: DxoDropDownOptionsModule, imports: [DxoDropDownOptionsComponent], exports: [DxoDropDownOptionsComponent] });
/** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxoDropDownOptionsModule, imports: [DxoDropDownOptionsComponent] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxoDropDownOptionsModule, decorators: [{
type: NgModule,
args: [{
imports: [
DxoDropDownOptionsComponent
],
exports: [
DxoDropDownOptionsComponent
],
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9kaXN0L3VpL25lc3RlZC9kcm9wLWRvd24tb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7R0FXRztBQUVILG9DQUFvQztBQUVwQyxpREFBaUQ7QUFFakQsT0FBTyxFQUNILFNBQVMsRUFHVCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFFBQVEsRUFDUixNQUFNLEVBQ04sWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFRdkIsT0FBTyxFQUNILG1CQUFtQixFQUNuQixnQkFBZ0IsR0FFbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdkQsT0FBTyxFQUNILDJCQUEyQixHQUM5QixNQUFNLGdDQUFnQyxDQUFDOzs7QUErRHhDLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxlQUFlO0lBQzVELElBQ0ksNEJBQTRCLENBQUMsS0FBd0M7UUFDckUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUdEOzs7O09BSUc7SUFDTyxZQUFZLENBQWdDO0lBRXREOzs7O09BSUc7SUFDTyxjQUFjLENBQThEO0lBRXRGOzs7O09BSUc7SUFDTyxhQUFhLENBQXdCO0lBRS9DOzs7O09BSUc7SUFDTyxXQUFXLENBQWdDO0lBQ3JELElBQWMsV0FBVztRQUNyQixPQUFPLGlCQUFpQixDQUFDO0lBQzdCLENBQUM7SUFHRCxZQUFnQyxnQkFBa0MsRUFDbEQsVUFBNEI7UUFDeEMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDdEIsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQ3hCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQzFCLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRTtZQUN6QixFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7U0FDMUIsQ0FBQyxDQUFDO1FBRUgsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUdELFFBQVE7UUFDSixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDOzJIQTVEUSwyQkFBMkI7K0dBQTNCLDJCQUEyQixxbURBdkR6QixDQUFDLGdCQUFnQixDQUFDLHVFQXdEWiwyQkFBMkIsb0RBM0RsQyxFQUFFLHlFQUVELG1CQUFtQjs7NEZBd0RyQiwyQkFBMkI7a0JBN0R2QyxTQUFTOytCQUNJLHVCQUF1QixjQUNyQixJQUFJLFlBQ04sRUFBRSxXQUVILENBQUUsbUJBQW1CLENBQUUsYUFDckIsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUNyQjt3QkFDSixXQUFXO3dCQUNYLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsVUFBVTt3QkFDVixtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixRQUFRO3dCQUNSLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQixNQUFNO3dCQUNOLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxVQUFVO3dCQUNWLFdBQVc7d0JBQ1gsVUFBVTt3QkFDVixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsVUFBVTt3QkFDVixVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixVQUFVO3dCQUNWLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixXQUFXO3dCQUNYLFNBQVM7d0JBQ1QsaUJBQWlCO3dCQUNqQixVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixZQUFZO3dCQUNaLFNBQVM7d0JBQ1QsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLFdBQVc7d0JBQ1gsVUFBVTt3QkFDVixPQUFPO3dCQUNQLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxTQUFTO3dCQUNULE9BQU87d0JBQ1AsYUFBYTt3QkFDYixXQUFXO3dCQUNYLFdBQVc7d0JBQ1gsUUFBUTtxQkFDWDs7MEJBeUNZLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNwQixJQUFJO3lDQXRDVCw0QkFBNEI7c0JBRC9CLGVBQWU7dUJBQUMsMkJBQTJCO2dCQVdsQyxZQUFZO3NCQUFyQixNQUFNO2dCQU9HLGNBQWM7c0JBQXZCLE1BQU07Z0JBT0csYUFBYTtzQkFBdEIsTUFBTTtnQkFPRyxXQUFXO3NCQUFwQixNQUFNOztBQXdDWCxNQUFNLE9BQU8sd0JBQXdCOzJIQUF4Qix3QkFBd0I7NEhBQXhCLHdCQUF3QixZQXpFeEIsMkJBQTJCLGFBQTNCLDJCQUEyQjs0SEF5RTNCLHdCQUF3QixZQU5qQywyQkFBMkI7OzRGQU1sQix3QkFBd0I7a0JBUnBDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLDJCQUEyQjtxQkFDNUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDJCQUEyQjtxQkFDNUI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIGRldmV4dHJlbWUtYW5ndWxhclxuICogVmVyc2lvbjogMjUuMi4zXG4gKiBCdWlsZCBkYXRlOiBGcmkgRGVjIDEyIDIwMjVcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIgLSAyMDI1IERldmVsb3BlciBFeHByZXNzIEluYy4gQUxMIFJJR0hUUyBSRVNFUlZFRFxuICpcbiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXNcbiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHByb2plY3QgZm9yIGRldGFpbHMuXG4gKlxuICogaHR0cHM6Ly9naXRodWIuY29tL0RldkV4cHJlc3MvZGV2ZXh0cmVtZS1hbmd1bGFyXG4gKi9cblxuLyogdHNsaW50OmRpc2FibGU6bWF4LWxpbmUtbGVuZ3RoICovXHJcblxyXG4vKiB0c2xpbnQ6ZGlzYWJsZTp1c2UtaW5wdXQtcHJvcGVydHktZGVjb3JhdG9yICovXHJcblxyXG5pbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgTmdNb2R1bGUsXHJcbiAgICBIb3N0LFxyXG4gICAgU2tpcFNlbGYsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgICBRdWVyeUxpc3RcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcblxyXG5cclxuXHJcbmltcG9ydCB7IFBvc2l0aW9uQWxpZ25tZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS9jb21tb24nO1xyXG5pbXBvcnQgeyBQb3NpdGlvbkNvbmZpZyB9IGZyb20gJ2RldmV4dHJlbWUvY29tbW9uL2NvcmUvYW5pbWF0aW9uJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBEeEludGVncmF0aW9uTW9kdWxlLFxyXG4gICAgTmVzdGVkT3B0aW9uSG9zdCxcclxuICAgIENvbGxlY3Rpb25OZXN0ZWRPcHRpb24sXHJcbn0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEeG9Qb3B1cE9wdGlvbnMgfSBmcm9tICcuL2Jhc2UvcG9wdXAtb3B0aW9ucyc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgUFJPUEVSVFlfVE9LRU5fdG9vbGJhckl0ZW1zLFxyXG59IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci9jb3JlL3Rva2Vucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnZHhvLWRyb3AtZG93bi1vcHRpb25zJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICB0ZW1wbGF0ZTogJycsXHJcbiAgICBzdHlsZXM6IFsnJ10sXHJcbiAgICBpbXBvcnRzOiBbIER4SW50ZWdyYXRpb25Nb2R1bGUgXSxcclxuICAgIHByb3ZpZGVyczogW05lc3RlZE9wdGlvbkhvc3RdLFxyXG4gICAgaW5wdXRzOiBbXHJcbiAgICAgICAgJ2FjY2Vzc0tleScsXHJcbiAgICAgICAgJ2FuaW1hdGlvbicsXHJcbiAgICAgICAgJ2NvbnRhaW5lcicsXHJcbiAgICAgICAgJ2NvbnRlbnRUZW1wbGF0ZScsXHJcbiAgICAgICAgJ2RlZmVyUmVuZGVyaW5nJyxcclxuICAgICAgICAnZGlzYWJsZWQnLFxyXG4gICAgICAgICdkcmFnQW5kUmVzaXplQXJlYScsXHJcbiAgICAgICAgJ2RyYWdFbmFibGVkJyxcclxuICAgICAgICAnZHJhZ091dHNpZGVCb3VuZGFyeScsXHJcbiAgICAgICAgJ2VuYWJsZUJvZHlTY3JvbGwnLFxyXG4gICAgICAgICdmb2N1c1N0YXRlRW5hYmxlZCcsXHJcbiAgICAgICAgJ2Z1bGxTY3JlZW4nLFxyXG4gICAgICAgICdoZWlnaHQnLFxyXG4gICAgICAgICdoaWRlT25PdXRzaWRlQ2xpY2snLFxyXG4gICAgICAgICdoaWRlT25QYXJlbnRTY3JvbGwnLFxyXG4gICAgICAgICdoaW50JyxcclxuICAgICAgICAnaG92ZXJTdGF0ZUVuYWJsZWQnLFxyXG4gICAgICAgICdtYXhIZWlnaHQnLFxyXG4gICAgICAgICdtYXhXaWR0aCcsXHJcbiAgICAgICAgJ21pbkhlaWdodCcsXHJcbiAgICAgICAgJ21pbldpZHRoJyxcclxuICAgICAgICAnb25Db250ZW50UmVhZHknLFxyXG4gICAgICAgICdvbkRpc3Bvc2luZycsXHJcbiAgICAgICAgJ29uSGlkZGVuJyxcclxuICAgICAgICAnb25IaWRpbmcnLFxyXG4gICAgICAgICdvbkluaXRpYWxpemVkJyxcclxuICAgICAgICAnb25PcHRpb25DaGFuZ2VkJyxcclxuICAgICAgICAnb25SZXNpemUnLFxyXG4gICAgICAgICdvblJlc2l6ZUVuZCcsXHJcbiAgICAgICAgJ29uUmVzaXplU3RhcnQnLFxyXG4gICAgICAgICdvblNob3dpbmcnLFxyXG4gICAgICAgICdvblNob3duJyxcclxuICAgICAgICAnb25UaXRsZVJlbmRlcmVkJyxcclxuICAgICAgICAncG9zaXRpb24nLFxyXG4gICAgICAgICdyZXNpemVFbmFibGVkJyxcclxuICAgICAgICAncmVzdG9yZVBvc2l0aW9uJyxcclxuICAgICAgICAncnRsRW5hYmxlZCcsXHJcbiAgICAgICAgJ3NoYWRpbmcnLFxyXG4gICAgICAgICdzaGFkaW5nQ29sb3InLFxyXG4gICAgICAgICdzaG93Q2xvc2VCdXR0b24nLFxyXG4gICAgICAgICdzaG93VGl0bGUnLFxyXG4gICAgICAgICd0YWJJbmRleCcsXHJcbiAgICAgICAgJ3RpdGxlJyxcclxuICAgICAgICAndGl0bGVUZW1wbGF0ZScsXHJcbiAgICAgICAgJ3Rvb2xiYXJJdGVtcycsXHJcbiAgICAgICAgJ3Zpc2libGUnLFxyXG4gICAgICAgICd3aWR0aCcsXHJcbiAgICAgICAgJ3dyYXBwZXJBdHRyJyxcclxuICAgICAgICAnaGlkZUV2ZW50JyxcclxuICAgICAgICAnc2hvd0V2ZW50JyxcclxuICAgICAgICAndGFyZ2V0J1xyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHhvRHJvcERvd25PcHRpb25zQ29tcG9uZW50IGV4dGVuZHMgRHhvUG9wdXBPcHRpb25zIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQgIHtcclxuICAgIEBDb250ZW50Q2hpbGRyZW4oUFJPUEVSVFlfVE9LRU5fdG9vbGJhckl0ZW1zKVxyXG4gICAgc2V0IF90b29sYmFySXRlbXNDb250ZW50Q2hpbGRyZW4odmFsdWU6IFF1ZXJ5TGlzdDxDb2xsZWN0aW9uTmVzdGVkT3B0aW9uPikge1xyXG4gICAgICAgIHRoaXMuc2V0Q2hpbGRyZW4oJ3Rvb2xiYXJJdGVtcycsIHZhbHVlKTtcclxuICAgIH1cclxuICAgIFxyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBoZWlnaHRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXIgfCBzdHJpbmc+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBwb3NpdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPFBvc2l0aW9uQWxpZ25tZW50IHwgUG9zaXRpb25Db25maWcgfCBGdW5jdGlvbj47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgd2lkdGhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXIgfCBzdHJpbmc+O1xyXG4gICAgcHJvdGVjdGVkIGdldCBfb3B0aW9uUGF0aCgpIHtcclxuICAgICAgICByZXR1cm4gJ2Ryb3BEb3duT3B0aW9ucyc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBTa2lwU2VsZigpIEBIb3N0KCkgcGFyZW50T3B0aW9uSG9zdDogTmVzdGVkT3B0aW9uSG9zdCxcclxuICAgICAgICAgICAgQEhvc3QoKSBvcHRpb25Ib3N0OiBOZXN0ZWRPcHRpb25Ib3N0KSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLl9jcmVhdGVFdmVudEVtaXR0ZXJzKFtcclxuICAgICAgICAgICAgeyBlbWl0OiAnaGVpZ2h0Q2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdwb3NpdGlvbkNoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAndmlzaWJsZUNoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnd2lkdGhDaGFuZ2UnIH1cclxuICAgICAgICBdKTtcclxuXHJcbiAgICAgICAgcGFyZW50T3B0aW9uSG9zdC5zZXROZXN0ZWRPcHRpb24odGhpcyk7XHJcbiAgICAgICAgb3B0aW9uSG9zdC5zZXRIb3N0KHRoaXMsIHRoaXMuX2Z1bGxPcHRpb25QYXRoLmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLl9hZGRSZWNyZWF0ZWRDb21wb25lbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLl9hZGRSZW1vdmVkT3B0aW9uKHRoaXMuX2dldE9wdGlvblBhdGgoKSk7XHJcbiAgICB9XHJcblxyXG5cclxufVxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBEeG9Ecm9wRG93bk9wdGlvbnNDb21wb25lbnRcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIER4b0Ryb3BEb3duT3B0aW9uc0NvbXBvbmVudFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeG9Ecm9wRG93bk9wdGlvbnNNb2R1bGUgeyB9XHJcbiJdfQ==