theme-lib
Version:
This is a simple example Angular Library published to npm.
292 lines • 19.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import { Directive, Input, HostBinding } from '@angular/core';
import { convertToBoolProperty } from '../helpers';
/*
* Basic input directive.
*
* ```html
* <input nbInput></input>
* ```
*
* ### Installation
*
* Import `NbInputModule` to your feature module.
* ```ts
* @NgModule({
* imports: [
* // ...
* NbInputModule,
* ],
* })
* export class PageModule { }
* ```
* ### Usage
*
* Default input size is `medium`:
* @stacked-example(Showcase, input/input-showcase.component)
*
* Inputs are available in multiple colors using `status` property:
* @stacked-example(Input Colors, input/input-colors.component)
*
* There are three input sizes:
*
* @stacked-example(Input Sizes, input/input-sizes.component)
*
* Inputs available in different shapes, which could be combined with the other properties:
* @stacked-example(Input Shapes, input/input-shapes.component)
*
* `nbInput` could be applied to the following selectors - `input`, `textarea`:
* @stacked-example(Input Elements, input/input-types.component)
*
* You can add `fullWidth` attribute to make element fill container:
* @stacked-example(Full width inputs, input/input-full-width.component)
*
* @styles
*
* form-control-bg:
* form-control-border-width:
* form-control-border-type:
* form-control-border-color:
* form-control-text-primary-color:
* form-control-focus-bg:
* form-control-selected-border-color:
* form-control-placeholder-font-size:
* form-control-placeholder-color:
* form-control-font-size:
* form-control-padding:
* form-control-font-size-sm:
* form-control-padding-sm:
* form-control-font-size-lg:
* form-control-padding-lg:
* form-control-border-radius:
* form-control-semi-round-border-radius:
* form-control-round-border-radius:
* form-control-info-border-color:
* form-control-success-border-color:
* form-control-warning-border-color:
* form-control-danger-border-color:
*/
var NbInputDirective = /** @class */ (function () {
function NbInputDirective() {
this.size = NbInputDirective.SIZE_MEDIUM;
/*
* Field shapes: `rectangle`, `round`, `semi-round`
* @param {string} val
*/
this.shape = NbInputDirective.SHAPE_RECTANGLE;
this.fullWidth = false;
}
Object.defineProperty(NbInputDirective.prototype, "setSize", {
/*
* Field size, available sizes:
* `small`, `medium`, `large`
* @param {string} val
*/
set: /*
* Field size, available sizes:
* `small`, `medium`, `large`
* @param {string} val
*/
/**
* @param {?} value
* @return {?}
*/
function (value) {
this.size = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbInputDirective.prototype, "setFullWidth", {
/*
* If set element will fill container
* @param {string}
*/
set: /*
* If set element will fill container
* @param {string}
*/
/**
* @param {?} value
* @return {?}
*/
function (value) {
this.fullWidth = convertToBoolProperty(value);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbInputDirective.prototype, "small", {
get: /**
* @return {?}
*/
function () {
return this.size === NbInputDirective.SIZE_SMALL;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbInputDirective.prototype, "medium", {
get: /**
* @return {?}
*/
function () {
return this.size === NbInputDirective.SIZE_MEDIUM;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbInputDirective.prototype, "large", {
get: /**
* @return {?}
*/
function () {
return this.size === NbInputDirective.SIZE_LARGE;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbInputDirective.prototype, "info", {
get: /**
* @return {?}
*/
function () {
return this.status === NbInputDirective.STATUS_INFO;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbInputDirective.prototype, "success", {
get: /**
* @return {?}
*/
function () {
return this.status === NbInputDirective.STATUS_SUCCESS;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbInputDirective.prototype, "warning", {
get: /**
* @return {?}
*/
function () {
return this.status === NbInputDirective.STATUS_WARNING;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbInputDirective.prototype, "danger", {
get: /**
* @return {?}
*/
function () {
return this.status === NbInputDirective.STATUS_DANGER;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbInputDirective.prototype, "rectangle", {
get: /**
* @return {?}
*/
function () {
return this.shape === NbInputDirective.SHAPE_RECTANGLE;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbInputDirective.prototype, "semiRound", {
get: /**
* @return {?}
*/
function () {
return this.shape === NbInputDirective.SHAPE_SEMI_ROUND;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbInputDirective.prototype, "round", {
get: /**
* @return {?}
*/
function () {
return this.shape === NbInputDirective.SHAPE_ROUND;
},
enumerable: true,
configurable: true
});
NbInputDirective.SIZE_SMALL = 'small';
NbInputDirective.SIZE_MEDIUM = 'medium';
NbInputDirective.SIZE_LARGE = 'large';
NbInputDirective.STATUS_INFO = 'info';
NbInputDirective.STATUS_SUCCESS = 'success';
NbInputDirective.STATUS_WARNING = 'warning';
NbInputDirective.STATUS_DANGER = 'danger';
NbInputDirective.SHAPE_RECTANGLE = 'rectangle';
NbInputDirective.SHAPE_SEMI_ROUND = 'semi-round';
NbInputDirective.SHAPE_ROUND = 'round';
NbInputDirective.decorators = [
{ type: Directive, args: [{
selector: 'input[nbInput],textarea[nbInput]',
},] }
];
NbInputDirective.propDecorators = {
setSize: [{ type: Input, args: ['fieldSize',] }],
status: [{ type: Input, args: ['status',] }],
shape: [{ type: Input, args: ['shape',] }],
setFullWidth: [{ type: Input, args: ['fullWidth',] }],
fullWidth: [{ type: HostBinding, args: ['class.input-full-width',] }],
small: [{ type: HostBinding, args: ['class.input-sm',] }],
medium: [{ type: HostBinding, args: ['class.input-md',] }],
large: [{ type: HostBinding, args: ['class.input-lg',] }],
info: [{ type: HostBinding, args: ['class.input-info',] }],
success: [{ type: HostBinding, args: ['class.input-success',] }],
warning: [{ type: HostBinding, args: ['class.input-warning',] }],
danger: [{ type: HostBinding, args: ['class.input-danger',] }],
rectangle: [{ type: HostBinding, args: ['class.input-rectangle',] }],
semiRound: [{ type: HostBinding, args: ['class.input-semi-round',] }],
round: [{ type: HostBinding, args: ['class.input-round',] }]
};
return NbInputDirective;
}());
export { NbInputDirective };
if (false) {
/** @type {?} */
NbInputDirective.SIZE_SMALL;
/** @type {?} */
NbInputDirective.SIZE_MEDIUM;
/** @type {?} */
NbInputDirective.SIZE_LARGE;
/** @type {?} */
NbInputDirective.STATUS_INFO;
/** @type {?} */
NbInputDirective.STATUS_SUCCESS;
/** @type {?} */
NbInputDirective.STATUS_WARNING;
/** @type {?} */
NbInputDirective.STATUS_DANGER;
/** @type {?} */
NbInputDirective.SHAPE_RECTANGLE;
/** @type {?} */
NbInputDirective.SHAPE_SEMI_ROUND;
/** @type {?} */
NbInputDirective.SHAPE_ROUND;
/** @type {?} */
NbInputDirective.prototype.size;
/** @type {?} */
NbInputDirective.prototype.status;
/** @type {?} */
NbInputDirective.prototype.shape;
/** @type {?} */
NbInputDirective.prototype.fullWidth;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vdGhlbWUtbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQU1BLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1FbkQ7SUFBQTtRQWtCRSxTQUFJLEdBQVcsZ0JBQWdCLENBQUMsV0FBVyxDQUFDOzs7OztRQXlCNUMsVUFBSyxHQUFXLGdCQUFnQixDQUFDLGVBQWUsQ0FBQztRQVlqRCxjQUFTLEdBQUcsS0FBSyxDQUFDO0lBbURwQixDQUFDO0lBakZDLHNCQUNJLHFDQUFPO1FBTlg7Ozs7V0FJRzs7Ozs7Ozs7OztRQUNILFVBQ1ksS0FBYTtZQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNwQixDQUFDOzs7T0FBQTtJQXFCRCxzQkFDSSwwQ0FBWTtRQUxoQjs7O1dBR0c7Ozs7Ozs7OztRQUNILFVBQ2lCLEtBQUs7WUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxDQUFDOzs7T0FBQTtJQUtELHNCQUNJLG1DQUFLOzs7O1FBRFQ7WUFFRSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsVUFBVSxDQUFDO1FBQ25ELENBQUM7OztPQUFBO0lBRUQsc0JBQ0ksb0NBQU07Ozs7UUFEVjtZQUVFLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7UUFDcEQsQ0FBQzs7O09BQUE7SUFFRCxzQkFDSSxtQ0FBSzs7OztRQURUO1lBRUUsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztRQUNuRCxDQUFDOzs7T0FBQTtJQUVELHNCQUNJLGtDQUFJOzs7O1FBRFI7WUFFRSxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLENBQUMsV0FBVyxDQUFDO1FBQ3RELENBQUM7OztPQUFBO0lBRUQsc0JBQ0kscUNBQU87Ozs7UUFEWDtZQUVFLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7UUFDekQsQ0FBQzs7O09BQUE7SUFFRCxzQkFDSSxxQ0FBTzs7OztRQURYO1lBRUUsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLGNBQWMsQ0FBQztRQUN6RCxDQUFDOzs7T0FBQTtJQUVELHNCQUNJLG9DQUFNOzs7O1FBRFY7WUFFRSxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssZ0JBQWdCLENBQUMsYUFBYSxDQUFDO1FBQ3hELENBQUM7OztPQUFBO0lBRUQsc0JBQ0ksdUNBQVM7Ozs7UUFEYjtZQUVFLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUM7UUFDekQsQ0FBQzs7O09BQUE7SUFFRCxzQkFDSSx1Q0FBUzs7OztRQURiO1lBRUUsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1FBQzFELENBQUM7OztPQUFBO0lBRUQsc0JBQ0ksbUNBQUs7Ozs7UUFEVDtZQUVFLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7UUFDckQsQ0FBQzs7O09BQUE7SUFwR2UsMkJBQVUsR0FBRyxPQUFPLENBQUM7SUFDckIsNEJBQVcsR0FBRyxRQUFRLENBQUM7SUFDdkIsMkJBQVUsR0FBRyxPQUFPLENBQUM7SUFFckIsNEJBQVcsR0FBRyxNQUFNLENBQUM7SUFDckIsK0JBQWMsR0FBRyxTQUFTLENBQUM7SUFDM0IsK0JBQWMsR0FBRyxTQUFTLENBQUM7SUFDM0IsOEJBQWEsR0FBRyxRQUFRLENBQUM7SUFFekIsZ0NBQWUsR0FBRyxXQUFXLENBQUM7SUFDOUIsaUNBQWdCLEdBQUcsWUFBWSxDQUFDO0lBQ2hDLDRCQUFXLEdBQUcsT0FBTyxDQUFDOztnQkFoQnZDLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsa0NBQWtDO2lCQUM3Qzs7OzBCQXVCRSxLQUFLLFNBQUMsV0FBVzt5QkFVakIsS0FBSyxTQUFDLFFBQVE7d0JBT2QsS0FBSyxTQUFDLE9BQU87K0JBT2IsS0FBSyxTQUFDLFdBQVc7NEJBS2pCLFdBQVcsU0FBQyx3QkFBd0I7d0JBR3BDLFdBQVcsU0FBQyxnQkFBZ0I7eUJBSzVCLFdBQVcsU0FBQyxnQkFBZ0I7d0JBSzVCLFdBQVcsU0FBQyxnQkFBZ0I7dUJBSzVCLFdBQVcsU0FBQyxrQkFBa0I7MEJBSzlCLFdBQVcsU0FBQyxxQkFBcUI7MEJBS2pDLFdBQVcsU0FBQyxxQkFBcUI7eUJBS2pDLFdBQVcsU0FBQyxvQkFBb0I7NEJBS2hDLFdBQVcsU0FBQyx1QkFBdUI7NEJBS25DLFdBQVcsU0FBQyx3QkFBd0I7d0JBS3BDLFdBQVcsU0FBQyxtQkFBbUI7O0lBSWxDLHVCQUFDO0NBQUEsQUExR0QsSUEwR0M7U0F2R1ksZ0JBQWdCOzs7SUFFM0IsNEJBQXFDOztJQUNyQyw2QkFBdUM7O0lBQ3ZDLDRCQUFxQzs7SUFFckMsNkJBQXFDOztJQUNyQyxnQ0FBMkM7O0lBQzNDLGdDQUEyQzs7SUFDM0MsK0JBQXlDOztJQUV6QyxpQ0FBOEM7O0lBQzlDLGtDQUFnRDs7SUFDaEQsNkJBQXNDOztJQUV0QyxnQ0FBNEM7O0lBaUI1QyxrQ0FDZTs7SUFNZixpQ0FDaUQ7O0lBV2pELHFDQUNrQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cclxuICovXHJcblxyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sUHJvcGVydHkgfSBmcm9tICcuLi9oZWxwZXJzJztcclxuXHJcbi8qXHJcbiAqIEJhc2ljIGlucHV0IGRpcmVjdGl2ZS5cclxuICpcclxuICogYGBgaHRtbFxyXG4gKiA8aW5wdXQgbmJJbnB1dD48L2lucHV0PlxyXG4gKiBgYGBcclxuICpcclxuICogIyMjIEluc3RhbGxhdGlvblxyXG4gKlxyXG4gKiBJbXBvcnQgYE5iSW5wdXRNb2R1bGVgIHRvIHlvdXIgZmVhdHVyZSBtb2R1bGUuXHJcbiAqIGBgYHRzXHJcbiAqIEBOZ01vZHVsZSh7XHJcbiAqICAgaW1wb3J0czogW1xyXG4gKiAgIFx0Ly8gLi4uXHJcbiAqICAgICBOYklucHV0TW9kdWxlLFxyXG4gKiAgIF0sXHJcbiAqIH0pXHJcbiAqIGV4cG9ydCBjbGFzcyBQYWdlTW9kdWxlIHsgfVxyXG4gKiBgYGBcclxuICogIyMjIFVzYWdlXHJcbiAqXHJcbiAqIERlZmF1bHQgaW5wdXQgc2l6ZSBpcyBgbWVkaXVtYDpcclxuICogQHN0YWNrZWQtZXhhbXBsZShTaG93Y2FzZSwgaW5wdXQvaW5wdXQtc2hvd2Nhc2UuY29tcG9uZW50KVxyXG4gKlxyXG4gKiBJbnB1dHMgYXJlIGF2YWlsYWJsZSBpbiBtdWx0aXBsZSBjb2xvcnMgdXNpbmcgYHN0YXR1c2AgcHJvcGVydHk6XHJcbiAqIEBzdGFja2VkLWV4YW1wbGUoSW5wdXQgQ29sb3JzLCBpbnB1dC9pbnB1dC1jb2xvcnMuY29tcG9uZW50KVxyXG4gKlxyXG4gKiBUaGVyZSBhcmUgdGhyZWUgaW5wdXQgc2l6ZXM6XHJcbiAqXHJcbiAqIEBzdGFja2VkLWV4YW1wbGUoSW5wdXQgU2l6ZXMsIGlucHV0L2lucHV0LXNpemVzLmNvbXBvbmVudClcclxuICpcclxuICogSW5wdXRzIGF2YWlsYWJsZSBpbiBkaWZmZXJlbnQgc2hhcGVzLCB3aGljaCBjb3VsZCBiZSBjb21iaW5lZCB3aXRoIHRoZSBvdGhlciBwcm9wZXJ0aWVzOlxyXG4gKiBAc3RhY2tlZC1leGFtcGxlKElucHV0IFNoYXBlcywgaW5wdXQvaW5wdXQtc2hhcGVzLmNvbXBvbmVudClcclxuICpcclxuICogYG5iSW5wdXRgIGNvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIGZvbGxvd2luZyBzZWxlY3RvcnMgLSBgaW5wdXRgLCBgdGV4dGFyZWFgOlxyXG4gKiBAc3RhY2tlZC1leGFtcGxlKElucHV0IEVsZW1lbnRzLCBpbnB1dC9pbnB1dC10eXBlcy5jb21wb25lbnQpXHJcbiAqXHJcbiAqIFlvdSBjYW4gYWRkIGBmdWxsV2lkdGhgIGF0dHJpYnV0ZSB0byBtYWtlIGVsZW1lbnQgZmlsbCBjb250YWluZXI6XHJcbiAqIEBzdGFja2VkLWV4YW1wbGUoRnVsbCB3aWR0aCBpbnB1dHMsIGlucHV0L2lucHV0LWZ1bGwtd2lkdGguY29tcG9uZW50KVxyXG4gKlxyXG4gKiBAc3R5bGVzXHJcbiAqXHJcbiAqIGZvcm0tY29udHJvbC1iZzpcclxuICogZm9ybS1jb250cm9sLWJvcmRlci13aWR0aDpcclxuICogZm9ybS1jb250cm9sLWJvcmRlci10eXBlOlxyXG4gKiBmb3JtLWNvbnRyb2wtYm9yZGVyLWNvbG9yOlxyXG4gKiBmb3JtLWNvbnRyb2wtdGV4dC1wcmltYXJ5LWNvbG9yOlxyXG4gKiBmb3JtLWNvbnRyb2wtZm9jdXMtYmc6XHJcbiAqIGZvcm0tY29udHJvbC1zZWxlY3RlZC1ib3JkZXItY29sb3I6XHJcbiAqIGZvcm0tY29udHJvbC1wbGFjZWhvbGRlci1mb250LXNpemU6XHJcbiAqIGZvcm0tY29udHJvbC1wbGFjZWhvbGRlci1jb2xvcjpcclxuICogZm9ybS1jb250cm9sLWZvbnQtc2l6ZTpcclxuICogZm9ybS1jb250cm9sLXBhZGRpbmc6XHJcbiAqIGZvcm0tY29udHJvbC1mb250LXNpemUtc206XHJcbiAqIGZvcm0tY29udHJvbC1wYWRkaW5nLXNtOlxyXG4gKiBmb3JtLWNvbnRyb2wtZm9udC1zaXplLWxnOlxyXG4gKiBmb3JtLWNvbnRyb2wtcGFkZGluZy1sZzpcclxuICogZm9ybS1jb250cm9sLWJvcmRlci1yYWRpdXM6XHJcbiAqIGZvcm0tY29udHJvbC1zZW1pLXJvdW5kLWJvcmRlci1yYWRpdXM6XHJcbiAqIGZvcm0tY29udHJvbC1yb3VuZC1ib3JkZXItcmFkaXVzOlxyXG4gKiBmb3JtLWNvbnRyb2wtaW5mby1ib3JkZXItY29sb3I6XHJcbiAqIGZvcm0tY29udHJvbC1zdWNjZXNzLWJvcmRlci1jb2xvcjpcclxuICogZm9ybS1jb250cm9sLXdhcm5pbmctYm9yZGVyLWNvbG9yOlxyXG4gKiBmb3JtLWNvbnRyb2wtZGFuZ2VyLWJvcmRlci1jb2xvcjpcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnaW5wdXRbbmJJbnB1dF0sdGV4dGFyZWFbbmJJbnB1dF0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmJJbnB1dERpcmVjdGl2ZSB7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBTSVpFX1NNQUxMID0gJ3NtYWxsJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU0laRV9NRURJVU0gPSAnbWVkaXVtJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU0laRV9MQVJHRSA9ICdsYXJnZSc7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBTVEFUVVNfSU5GTyA9ICdpbmZvJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU1RBVFVTX1NVQ0NFU1MgPSAnc3VjY2Vzcyc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNUQVRVU19XQVJOSU5HID0gJ3dhcm5pbmcnO1xyXG4gIHN0YXRpYyByZWFkb25seSBTVEFUVVNfREFOR0VSID0gJ2Rhbmdlcic7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBTSEFQRV9SRUNUQU5HTEUgPSAncmVjdGFuZ2xlJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU0hBUEVfU0VNSV9ST1VORCA9ICdzZW1pLXJvdW5kJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU0hBUEVfUk9VTkQgPSAncm91bmQnO1xyXG5cclxuICBzaXplOiBzdHJpbmcgPSBOYklucHV0RGlyZWN0aXZlLlNJWkVfTUVESVVNO1xyXG5cclxuICAvKlxyXG4gICAqIEZpZWxkIHNpemUsIGF2YWlsYWJsZSBzaXplczpcclxuICAgKiBgc21hbGxgLCBgbWVkaXVtYCwgYGxhcmdlYFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWxcclxuICAgKi9cclxuICBASW5wdXQoJ2ZpZWxkU2l6ZScpXHJcbiAgc2V0IHNldFNpemUodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5zaXplID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIEZpZWxkIHN0YXR1cyAoYWRkcyBzcGVjaWZpYyBzdHlsZXMpOlxyXG4gICAqIGBpbmZvYCwgYHN1Y2Nlc3NgLCBgd2FybmluZ2AsIGBkYW5nZXJgXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgnc3RhdHVzJylcclxuICBzdGF0dXM6IHN0cmluZztcclxuXHJcbiAgLypcclxuICAgKiBGaWVsZCBzaGFwZXM6IGByZWN0YW5nbGVgLCBgcm91bmRgLCBgc2VtaS1yb3VuZGBcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsXHJcbiAgICovXHJcbiAgQElucHV0KCdzaGFwZScpXHJcbiAgc2hhcGU6IHN0cmluZyA9IE5iSW5wdXREaXJlY3RpdmUuU0hBUEVfUkVDVEFOR0xFO1xyXG5cclxuICAvKlxyXG4gICAqIElmIHNldCBlbGVtZW50IHdpbGwgZmlsbCBjb250YWluZXJcclxuICAgKiBAcGFyYW0ge3N0cmluZ31cclxuICAgKi9cclxuICBASW5wdXQoJ2Z1bGxXaWR0aCcpXHJcbiAgc2V0IHNldEZ1bGxXaWR0aCh2YWx1ZSkge1xyXG4gICAgdGhpcy5mdWxsV2lkdGggPSBjb252ZXJ0VG9Cb29sUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbnB1dC1mdWxsLXdpZHRoJylcclxuICBmdWxsV2lkdGggPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbnB1dC1zbScpXHJcbiAgZ2V0IHNtYWxsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gTmJJbnB1dERpcmVjdGl2ZS5TSVpFX1NNQUxMO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbnB1dC1tZCcpXHJcbiAgZ2V0IG1lZGl1bSgpIHtcclxuICAgIHJldHVybiB0aGlzLnNpemUgPT09IE5iSW5wdXREaXJlY3RpdmUuU0laRV9NRURJVU07XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlucHV0LWxnJylcclxuICBnZXQgbGFyZ2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaXplID09PSBOYklucHV0RGlyZWN0aXZlLlNJWkVfTEFSR0U7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlucHV0LWluZm8nKVxyXG4gIGdldCBpbmZvKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBOYklucHV0RGlyZWN0aXZlLlNUQVRVU19JTkZPO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbnB1dC1zdWNjZXNzJylcclxuICBnZXQgc3VjY2VzcygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gTmJJbnB1dERpcmVjdGl2ZS5TVEFUVVNfU1VDQ0VTUztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaW5wdXQtd2FybmluZycpXHJcbiAgZ2V0IHdhcm5pbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IE5iSW5wdXREaXJlY3RpdmUuU1RBVFVTX1dBUk5JTkc7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlucHV0LWRhbmdlcicpXHJcbiAgZ2V0IGRhbmdlcigpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gTmJJbnB1dERpcmVjdGl2ZS5TVEFUVVNfREFOR0VSO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbnB1dC1yZWN0YW5nbGUnKVxyXG4gIGdldCByZWN0YW5nbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaGFwZSA9PT0gTmJJbnB1dERpcmVjdGl2ZS5TSEFQRV9SRUNUQU5HTEU7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlucHV0LXNlbWktcm91bmQnKVxyXG4gIGdldCBzZW1pUm91bmQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaGFwZSA9PT0gTmJJbnB1dERpcmVjdGl2ZS5TSEFQRV9TRU1JX1JPVU5EO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbnB1dC1yb3VuZCcpXHJcbiAgZ2V0IHJvdW5kKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hhcGUgPT09IE5iSW5wdXREaXJlY3RpdmUuU0hBUEVfUk9VTkQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==