@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
331 lines • 22.3 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Directive, HostBinding, Input, NgModule } from '@angular/core';
var IgxLayoutDirective = /** @class */ (function () {
function IgxLayoutDirective() {
/**
* Sets the default flow direction of the container's children.
*
* Defaults to `rows`.
*
* ```html
* <div
* igxLayout
* igxLayoutDir="row">
* <div igxFlex>1</div>
* <div igxFlex>2</div>
* <div igxFlex>3</div>
* </div>
* ```
*/
this.dir = 'row';
/**
* Defines the direction flex children are placed in the flex container.
*
* When set to `true`, the `rows` direction goes right to left and `columns` goes bottom to top.
*
* ```html
* <div
* igxLayout
* igxLayoutReverse="true">
* <div igxFlex>1</div>
* <div igxFlex>2</div>
* <div igxFlex>3</div>
* </div>
* ```
*/
this.reverse = false;
/**
* By default the immediate children will all try to fit onto one line.
*
* The default value `nowrap` sets this behavior.
*
* Other accepted values are `wrap` and `wrap-reverse`.
*
* ```html
* <div
* igxLayout
* igxLayoutDir="row"
* igxLayoutWrap="wrap">
* <div igxFlex igxFlexGrow="0">1</div>
* <div igxFlex igxFlexGrow="0">2</div>
* <div igxFlex igxFlexGrow="0">3</div>
* </div>
* ```
*/
this.wrap = 'nowrap';
/**
* Defines the alignment along the main axis.
*
* Defaults to `flex-start` which packs the children toward the start line.
*
* Other possible values are `flex-end`, `center`, `space-between`, `space-around`.
*
* ```html
* <div
* igxLayout
* igxLayoutDir="column"
* igxLayoutJustify="space-between">
* <div>1</div>
* <div>2</div>
* <div>3</div>
* </div>
* ```
*/
this.justify = 'flex-start';
/**
* Defines the default behavior for how children are laid out along the corss axis of the current line.
*
* Defaults to `flex-start`.
*
* Other possible values are `flex-end`, `center`, `baseline`, and `stretch`.
*
* ```html
* <div
* igxLayout
* igxLayoutDir="column"
* igxLayoutItemAlign="start">
* <div igxFlex igxFlexGrow="0">1</div>
* <div igxFlex igxFlexGrow="0">2</div>
* <div igxFlex igxFlexGrow="0">3</div>
* </div>
* ```
*/
this.itemAlign = 'stretch';
/**
* @hidden
*/
this.display = 'flex';
}
Object.defineProperty(IgxLayoutDirective.prototype, "flexwrap", {
/**
* @hidden
*/
get: function () { return this.wrap; },
enumerable: true,
configurable: true
});
Object.defineProperty(IgxLayoutDirective.prototype, "justifycontent", {
/**
* @hidden
*/
get: function () { return this.justify; },
enumerable: true,
configurable: true
});
Object.defineProperty(IgxLayoutDirective.prototype, "align", {
/**
* @hidden
*/
get: function () { return this.itemAlign; },
enumerable: true,
configurable: true
});
Object.defineProperty(IgxLayoutDirective.prototype, "direction", {
/**
* @hidden
*/
get: function () {
if (this.reverse) {
return (this.dir === 'row') ? 'row-reverse' : 'column-reverse';
}
return (this.dir === 'row') ? 'row' : 'column';
},
enumerable: true,
configurable: true
});
__decorate([
Input('igxLayoutDir'),
__metadata("design:type", Object)
], IgxLayoutDirective.prototype, "dir", void 0);
__decorate([
Input('igxLayoutReverse'),
__metadata("design:type", Object)
], IgxLayoutDirective.prototype, "reverse", void 0);
__decorate([
Input('igxLayoutWrap'),
__metadata("design:type", Object)
], IgxLayoutDirective.prototype, "wrap", void 0);
__decorate([
Input('igxLayoutJustify'),
__metadata("design:type", Object)
], IgxLayoutDirective.prototype, "justify", void 0);
__decorate([
Input('igxLayoutItemAlign'),
__metadata("design:type", Object)
], IgxLayoutDirective.prototype, "itemAlign", void 0);
__decorate([
HostBinding('style.display'),
__metadata("design:type", Object)
], IgxLayoutDirective.prototype, "display", void 0);
__decorate([
HostBinding('style.flex-wrap'),
__metadata("design:type", Object),
__metadata("design:paramtypes", [])
], IgxLayoutDirective.prototype, "flexwrap", null);
__decorate([
HostBinding('style.justify-content'),
__metadata("design:type", Object),
__metadata("design:paramtypes", [])
], IgxLayoutDirective.prototype, "justifycontent", null);
__decorate([
HostBinding('style.align-items'),
__metadata("design:type", Object),
__metadata("design:paramtypes", [])
], IgxLayoutDirective.prototype, "align", null);
__decorate([
HostBinding('style.flex-direction'),
__metadata("design:type", Object),
__metadata("design:paramtypes", [])
], IgxLayoutDirective.prototype, "direction", null);
IgxLayoutDirective = __decorate([
Directive({
selector: '[igxLayout]'
})
], IgxLayoutDirective);
return IgxLayoutDirective;
}());
export { IgxLayoutDirective };
var IgxFlexDirective = /** @class */ (function () {
function IgxFlexDirective() {
/**
* Applies the `grow` attribute to an element that uses the directive.
*
* Default value is `1`.
*
* ```html
* <div>
* <div igxFlex igxFlexGrow="0">Content1</div>
* <div igxFlex igxFlexGrow="1">Content2</div>
* <div igxFlex igxFlexGrow="0">Content3</div>
* </div>
* ```
*/
this.grow = 1;
/**
* Applies the `shrink` attribute to an element that uses the directive.
*
* Default value is `1`.
*
* ```html
* <div>
* <div igxFlex igxFlexShrink="1">Content1</div>
* <div igxFlex igxFlexShrink="0">Content2</div>
* <div igxFlex igxFlexShrink="1">Content3</div>
* </div>
* ```
*/
this.shrink = 1;
/**
* Applies the directive to an element.
*
* Possible values include `igxFlexGrow`, `igxFlexShrink`, `igxFlexOrder`, `igxFlexBasis`.
*
* ```html
* <div igxFlex>Content</div>
* ```
*/
this.flex = '';
/**
* Applies the `order` attribute to an element that uses the directive.
*
* Default value is `0`.
*
* ```html
* <div>
* <div igxFlex igxFlexOrder="1">Content1</div>
* <div igxFlex igxFlexOrder="0">Content2</div>
* <div igxFlex igxFlexOrder="2">Content3</div>
* </div>
* ```
*/
this.order = 0;
/**
* Applies the `flex-basis` attribute to an element that uses the directive.
*
* Default value is `auto`.
*
* Other possible values include `content`, `max-content`, `min-content`, `fit-content`.
*
* ```html
* <div igxFlex igxFlexBasis="fit-content">Content</div>
* ```
*/
this.basis = 'auto';
}
Object.defineProperty(IgxFlexDirective.prototype, "style", {
/**
* @hidden
*/
get: function () {
if (this.flex) {
return "" + this.flex;
}
return this.grow + " " + this.shrink + " " + this.basis;
},
enumerable: true,
configurable: true
});
Object.defineProperty(IgxFlexDirective.prototype, "itemorder", {
/**
* @hidden
*/
get: function () {
return this.order || 0;
},
enumerable: true,
configurable: true
});
__decorate([
Input('igxFlexGrow'),
__metadata("design:type", Object)
], IgxFlexDirective.prototype, "grow", void 0);
__decorate([
Input('igxFlexShrink'),
__metadata("design:type", Object)
], IgxFlexDirective.prototype, "shrink", void 0);
__decorate([
Input('igxFlex'),
__metadata("design:type", Object)
], IgxFlexDirective.prototype, "flex", void 0);
__decorate([
Input('igxFlexOrder'),
__metadata("design:type", Object)
], IgxFlexDirective.prototype, "order", void 0);
__decorate([
Input('igxFlexBasis'),
__metadata("design:type", Object)
], IgxFlexDirective.prototype, "basis", void 0);
__decorate([
HostBinding('style.flex'),
__metadata("design:type", Object),
__metadata("design:paramtypes", [])
], IgxFlexDirective.prototype, "style", null);
__decorate([
HostBinding('style.order'),
__metadata("design:type", Object),
__metadata("design:paramtypes", [])
], IgxFlexDirective.prototype, "itemorder", null);
IgxFlexDirective = __decorate([
Directive({
selector: '[igxFlex]'
})
], IgxFlexDirective);
return IgxFlexDirective;
}());
export { IgxFlexDirective };
/**
* @hidden
*/
var IgxLayoutModule = /** @class */ (function () {
function IgxLayoutModule() {
}
IgxLayoutModule = __decorate([
NgModule({
declarations: [IgxFlexDirective, IgxLayoutDirective],
exports: [IgxFlexDirective, IgxLayoutDirective]
})
], IgxLayoutModule);
return IgxLayoutModule;
}());
export { IgxLayoutModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9sYXlvdXQvbGF5b3V0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt4RTtJQUFBO1FBQ0k7Ozs7Ozs7Ozs7Ozs7O1dBY0c7UUFDMkIsUUFBRyxHQUFHLEtBQUssQ0FBQztRQUUxQzs7Ozs7Ozs7Ozs7Ozs7V0FjRztRQUMrQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWxEOzs7Ozs7Ozs7Ozs7Ozs7OztXQWlCRztRQUM0QixTQUFJLEdBQUcsUUFBUSxDQUFDO1FBRS9DOzs7Ozs7Ozs7Ozs7Ozs7OztXQWlCRztRQUMrQixZQUFPLEdBQUcsWUFBWSxDQUFDO1FBRXpEOzs7Ozs7Ozs7Ozs7Ozs7OztXQWlCRztRQUNpQyxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTFEOztXQUVHO1FBQ2tDLFlBQU8sR0FBRyxNQUFNLENBQUM7SUEyQjFELENBQUM7SUF0Qm1DLHNCQUFJLHdDQUFRO1FBSDVDOztXQUVHO2FBQzZCLGNBQWlCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBSzlCLHNCQUFJLDhDQUFjO1FBSHhEOztXQUVHO2FBQ21DLGNBQXVCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBS2pELHNCQUFJLHFDQUFLO1FBSDNDOztXQUVHO2FBQytCLGNBQWMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFNeEUsc0JBQUkseUNBQVM7UUFKYjs7V0FFRzthQUVIO1lBQ0ksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO2FBQ2xFO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ25ELENBQUM7OztPQUFBO0lBNUdzQjtRQUF0QixLQUFLLENBQUMsY0FBYyxDQUFDOzttREFBb0I7SUFpQmY7UUFBMUIsS0FBSyxDQUFDLGtCQUFrQixDQUFDOzt1REFBd0I7SUFvQjFCO1FBQXZCLEtBQUssQ0FBQyxlQUFlLENBQUM7O29EQUF3QjtJQW9CcEI7UUFBMUIsS0FBSyxDQUFDLGtCQUFrQixDQUFDOzt1REFBK0I7SUFvQjVCO1FBQTVCLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQzs7eURBQThCO0lBSzVCO1FBQTdCLFdBQVcsQ0FBQyxlQUFlLENBQUM7O3VEQUF5QjtJQUt0QjtRQUEvQixXQUFXLENBQUMsaUJBQWlCLENBQUM7OztzREFBcUM7SUFLOUI7UUFBckMsV0FBVyxDQUFDLHVCQUF1QixDQUFDOzs7NERBQThDO0lBS2pEO1FBQWpDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQzs7O21EQUF1QztJQU14RTtRQURDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQzs7O3VEQU1uQztJQTVIUSxrQkFBa0I7UUFIOUIsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLGFBQWE7U0FDMUIsQ0FBQztPQUNXLGtCQUFrQixDQTZIOUI7SUFBRCx5QkFBQztDQUFBLEFBN0hELElBNkhDO1NBN0hZLGtCQUFrQjtBQWtJL0I7SUFBQTtRQUVJOzs7Ozs7Ozs7Ozs7V0FZRztRQUMwQixTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBRXRDOzs7Ozs7Ozs7Ozs7V0FZRztRQUM0QixXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRTFDOzs7Ozs7OztXQVFHO1FBQ3NCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFbkM7Ozs7Ozs7Ozs7OztXQVlHO1FBQzJCLFVBQUssR0FBRyxDQUFDLENBQUM7UUFFeEM7Ozs7Ozs7Ozs7V0FVRztRQUMyQixVQUFLLEdBQUcsTUFBTSxDQUFDO0lBb0JqRCxDQUFDO0lBZEcsc0JBQUksbUNBQUs7UUFKVDs7V0FFRzthQUVIO1lBQ0ksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNYLE9BQU8sS0FBRyxJQUFJLENBQUMsSUFBTSxDQUFDO2FBQ3pCO1lBQ0QsT0FBVSxJQUFJLENBQUMsSUFBSSxTQUFJLElBQUksQ0FBQyxNQUFNLFNBQUksSUFBSSxDQUFDLEtBQU8sQ0FBQztRQUN2RCxDQUFDOzs7T0FBQTtJQU1ELHNCQUFJLHVDQUFTO1FBSmI7O1dBRUc7YUFFSDtZQUNJLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQzs7O09BQUE7SUF6RXFCO1FBQXJCLEtBQUssQ0FBQyxhQUFhLENBQUM7O2tEQUFpQjtJQWVkO1FBQXZCLEtBQUssQ0FBQyxlQUFlLENBQUM7O29EQUFtQjtJQVd4QjtRQUFqQixLQUFLLENBQUMsU0FBUyxDQUFDOztrREFBa0I7SUFlWjtRQUF0QixLQUFLLENBQUMsY0FBYyxDQUFDOzttREFBa0I7SUFhakI7UUFBdEIsS0FBSyxDQUFDLGNBQWMsQ0FBQzs7bURBQXVCO0lBTTdDO1FBREMsV0FBVyxDQUFDLFlBQVksQ0FBQzs7O2lEQU16QjtJQU1EO1FBREMsV0FBVyxDQUFDLGFBQWEsQ0FBQzs7O3FEQUcxQjtJQXhGUSxnQkFBZ0I7UUFINUIsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLFdBQVc7U0FDeEIsQ0FBQztPQUNXLGdCQUFnQixDQXlGNUI7SUFBRCx1QkFBQztDQUFBLEFBekZELElBeUZDO1NBekZZLGdCQUFnQjtBQTJGN0I7O0dBRUc7QUFLSDtJQUFBO0lBQStCLENBQUM7SUFBbkIsZUFBZTtRQUozQixRQUFRLENBQUM7WUFDTixZQUFZLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQztZQUNwRCxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQztTQUNsRCxDQUFDO09BQ1csZUFBZSxDQUFJO0lBQUQsc0JBQUM7Q0FBQSxBQUFoQyxJQUFnQztTQUFuQixlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5wdXQsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneExheW91dF0nXG59KVxuZXhwb3J0IGNsYXNzIElneExheW91dERpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgZGVmYXVsdCBmbG93IGRpcmVjdGlvbiBvZiB0aGUgY29udGFpbmVyJ3MgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byBgcm93c2AuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxkaXZcbiAgICAgKiAgIGlneExheW91dFxuICAgICAqICAgaWd4TGF5b3V0RGlyPVwicm93XCI+XG4gICAgICogICAgPGRpdiBpZ3hGbGV4PjE8L2Rpdj5cbiAgICAgKiAgICA8ZGl2IGlneEZsZXg+MjwvZGl2PlxuICAgICAqICAgIDxkaXYgaWd4RmxleD4zPC9kaXY+XG4gICAgICogIDwvZGl2PlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4TGF5b3V0RGlyJykgcHVibGljIGRpciA9ICdyb3cnO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgZGlyZWN0aW9uIGZsZXggY2hpbGRyZW4gYXJlIHBsYWNlZCBpbiB0aGUgZmxleCBjb250YWluZXIuXG4gICAgICpcbiAgICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHRoZSBgcm93c2AgZGlyZWN0aW9uIGdvZXMgcmlnaHQgdG8gbGVmdCBhbmQgYGNvbHVtbnNgIGdvZXMgYm90dG9tIHRvIHRvcC5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8ZGl2XG4gICAgICogICBpZ3hMYXlvdXRcbiAgICAgKiAgIGlneExheW91dFJldmVyc2U9XCJ0cnVlXCI+XG4gICAgICogICAgPGRpdiBpZ3hGbGV4PjE8L2Rpdj5cbiAgICAgKiAgICA8ZGl2IGlneEZsZXg+MjwvZGl2PlxuICAgICAqICAgIDxkaXYgaWd4RmxleD4zPC9kaXY+XG4gICAgICogPC9kaXY+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hMYXlvdXRSZXZlcnNlJykgcHVibGljIHJldmVyc2UgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEJ5IGRlZmF1bHQgdGhlIGltbWVkaWF0ZSBjaGlsZHJlbiB3aWxsIGFsbCB0cnkgdG8gZml0IG9udG8gb25lIGxpbmUuXG4gICAgICpcbiAgICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBgbm93cmFwYCBzZXRzIHRoaXMgYmVoYXZpb3IuXG4gICAgICpcbiAgICAgKiBPdGhlciBhY2NlcHRlZCB2YWx1ZXMgYXJlIGB3cmFwYCBhbmQgYHdyYXAtcmV2ZXJzZWAuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGRpdlxuICAgICAqICAgaWd4TGF5b3V0XG4gICAgICogICBpZ3hMYXlvdXREaXI9XCJyb3dcIlxuICAgICAqICAgaWd4TGF5b3V0V3JhcD1cIndyYXBcIj5cbiAgICAgKiAgICA8ZGl2IGlneEZsZXggaWd4RmxleEdyb3c9XCIwXCI+MTwvZGl2PlxuICAgICAqICAgIDxkaXYgaWd4RmxleCBpZ3hGbGV4R3Jvdz1cIjBcIj4yPC9kaXY+XG4gICAgICogICAgPGRpdiBpZ3hGbGV4IGlneEZsZXhHcm93PVwiMFwiPjM8L2Rpdj5cbiAgICAgKiA8L2Rpdj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneExheW91dFdyYXAnKSBwdWJsaWMgd3JhcCA9ICdub3dyYXAnO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgYWxpZ25tZW50IGFsb25nIHRoZSBtYWluIGF4aXMuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byBgZmxleC1zdGFydGAgd2hpY2ggcGFja3MgdGhlIGNoaWxkcmVuIHRvd2FyZCB0aGUgc3RhcnQgbGluZS5cbiAgICAgKlxuICAgICAqIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgYGZsZXgtZW5kYCwgYGNlbnRlcmAsIGBzcGFjZS1iZXR3ZWVuYCwgYHNwYWNlLWFyb3VuZGAuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGRpdlxuICAgICAqICAgaWd4TGF5b3V0XG4gICAgICogICBpZ3hMYXlvdXREaXI9XCJjb2x1bW5cIlxuICAgICAqICAgaWd4TGF5b3V0SnVzdGlmeT1cInNwYWNlLWJldHdlZW5cIj5cbiAgICAgKiAgICA8ZGl2PjE8L2Rpdj5cbiAgICAgKiAgICA8ZGl2PjI8L2Rpdj5cbiAgICAgKiAgICA8ZGl2PjM8L2Rpdj5cbiAgICAgKiA8L2Rpdj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneExheW91dEp1c3RpZnknKSBwdWJsaWMganVzdGlmeSA9ICdmbGV4LXN0YXJ0JztcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGhvdyBjaGlsZHJlbiBhcmUgbGFpZCBvdXQgYWxvbmcgdGhlIGNvcnNzIGF4aXMgb2YgdGhlIGN1cnJlbnQgbGluZS5cbiAgICAgKlxuICAgICAqIERlZmF1bHRzIHRvIGBmbGV4LXN0YXJ0YC5cbiAgICAgKlxuICAgICAqIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgYGZsZXgtZW5kYCwgYGNlbnRlcmAsIGBiYXNlbGluZWAsIGFuZCBgc3RyZXRjaGAuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGRpdlxuICAgICAqICAgaWd4TGF5b3V0XG4gICAgICogICBpZ3hMYXlvdXREaXI9XCJjb2x1bW5cIlxuICAgICAqICAgaWd4TGF5b3V0SXRlbUFsaWduPVwic3RhcnRcIj5cbiAgICAgKiAgICA8ZGl2IGlneEZsZXggaWd4RmxleEdyb3c9XCIwXCI+MTwvZGl2PlxuICAgICAqICAgIDxkaXYgaWd4RmxleCBpZ3hGbGV4R3Jvdz1cIjBcIj4yPC9kaXY+XG4gICAgICogICAgPGRpdiBpZ3hGbGV4IGlneEZsZXhHcm93PVwiMFwiPjM8L2Rpdj5cbiAgICAgKiA8L2Rpdj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneExheW91dEl0ZW1BbGlnbicpIHB1YmxpYyBpdGVtQWxpZ24gPSAnc3RyZXRjaCc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5kaXNwbGF5JykgcHVibGljIGRpc3BsYXkgPSAnZmxleCc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5mbGV4LXdyYXAnKSBnZXQgZmxleHdyYXAoKSB7IHJldHVybiB0aGlzLndyYXA7IH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmp1c3RpZnktY29udGVudCcpIGdldCBqdXN0aWZ5Y29udGVudCgpIHsgcmV0dXJuIHRoaXMuanVzdGlmeTsgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuYWxpZ24taXRlbXMnKSBnZXQgYWxpZ24oKSB7IHJldHVybiB0aGlzLml0ZW1BbGlnbjsgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuZmxleC1kaXJlY3Rpb24nKVxuICAgIGdldCBkaXJlY3Rpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLnJldmVyc2UpIHtcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5kaXIgPT09ICdyb3cnKSA/ICdyb3ctcmV2ZXJzZScgOiAnY29sdW1uLXJldmVyc2UnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGhpcy5kaXIgPT09ICdyb3cnKSA/ICdyb3cnIDogJ2NvbHVtbic7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hGbGV4XSdcbn0pXG5leHBvcnQgY2xhc3MgSWd4RmxleERpcmVjdGl2ZSB7XG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIHRoZSBgZ3Jvd2AgYXR0cmlidXRlIHRvIGFuIGVsZW1lbnQgdGhhdCB1c2VzIHRoZSBkaXJlY3RpdmUuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGAxYC5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8ZGl2PlxuICAgICAqICAgIDxkaXYgaWd4RmxleCBpZ3hGbGV4R3Jvdz1cIjBcIj5Db250ZW50MTwvZGl2PlxuICAgICAqICAgIDxkaXYgaWd4RmxleCBpZ3hGbGV4R3Jvdz1cIjFcIj5Db250ZW50MjwvZGl2PlxuICAgICAqICAgIDxkaXYgaWd4RmxleCBpZ3hGbGV4R3Jvdz1cIjBcIj5Db250ZW50MzwvZGl2PlxuICAgICAqIDwvZGl2PlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4RmxleEdyb3cnKSBwdWJsaWMgZ3JvdyA9IDE7XG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIHRoZSBgc2hyaW5rYCBhdHRyaWJ1dGUgdG8gYW4gZWxlbWVudCB0aGF0IHVzZXMgdGhlIGRpcmVjdGl2ZS5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYDFgLlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxkaXY+XG4gICAgICogICAgPGRpdiBpZ3hGbGV4IGlneEZsZXhTaHJpbms9XCIxXCI+Q29udGVudDE8L2Rpdj5cbiAgICAgKiAgICA8ZGl2IGlneEZsZXggaWd4RmxleFNocmluaz1cIjBcIj5Db250ZW50MjwvZGl2PlxuICAgICAqICAgIDxkaXYgaWd4RmxleCBpZ3hGbGV4U2hyaW5rPVwiMVwiPkNvbnRlbnQzPC9kaXY+XG4gICAgICogPC9kaXY+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hGbGV4U2hyaW5rJykgcHVibGljIHNocmluayA9IDE7XG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIHRoZSBkaXJlY3RpdmUgdG8gYW4gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIFBvc3NpYmxlIHZhbHVlcyBpbmNsdWRlIGBpZ3hGbGV4R3Jvd2AsIGBpZ3hGbGV4U2hyaW5rYCwgYGlneEZsZXhPcmRlcmAsIGBpZ3hGbGV4QmFzaXNgLlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxkaXYgaWd4RmxleD5Db250ZW50PC9kaXY+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hGbGV4JykgcHVibGljIGZsZXggPSAnJztcblxuICAgIC8qKlxuICAgICAqIEFwcGxpZXMgdGhlIGBvcmRlcmAgYXR0cmlidXRlIHRvIGFuIGVsZW1lbnQgdGhhdCB1c2VzIHRoZSBkaXJlY3RpdmUuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGAwYC5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8ZGl2PlxuICAgICAqICAgIDxkaXYgaWd4RmxleCBpZ3hGbGV4T3JkZXI9XCIxXCI+Q29udGVudDE8L2Rpdj5cbiAgICAgKiAgICA8ZGl2IGlneEZsZXggaWd4RmxleE9yZGVyPVwiMFwiPkNvbnRlbnQyPC9kaXY+XG4gICAgICogICAgPGRpdiBpZ3hGbGV4IGlneEZsZXhPcmRlcj1cIjJcIj5Db250ZW50MzwvZGl2PlxuICAgICAqIDwvZGl2PlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4RmxleE9yZGVyJykgcHVibGljIG9yZGVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIEFwcGxpZXMgdGhlIGBmbGV4LWJhc2lzYCBhdHRyaWJ1dGUgdG8gYW4gZWxlbWVudCB0aGF0IHVzZXMgdGhlIGRpcmVjdGl2ZS5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYGF1dG9gLlxuICAgICAqXG4gICAgICogT3RoZXIgcG9zc2libGUgdmFsdWVzIGluY2x1ZGUgYGNvbnRlbnRgLCBgbWF4LWNvbnRlbnRgLCBgbWluLWNvbnRlbnRgLCBgZml0LWNvbnRlbnRgLlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxkaXYgaWd4RmxleCBpZ3hGbGV4QmFzaXM9XCJmaXQtY29udGVudFwiPkNvbnRlbnQ8L2Rpdj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneEZsZXhCYXNpcycpIHB1YmxpYyBiYXNpcyA9ICdhdXRvJztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmZsZXgnKVxuICAgIGdldCBzdHlsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZmxleCkge1xuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuZmxleH1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdyb3d9ICR7dGhpcy5zaHJpbmt9ICR7dGhpcy5iYXNpc31gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm9yZGVyJylcbiAgICBnZXQgaXRlbW9yZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcmRlciB8fCAwO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbSWd4RmxleERpcmVjdGl2ZSwgSWd4TGF5b3V0RGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbSWd4RmxleERpcmVjdGl2ZSwgSWd4TGF5b3V0RGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hMYXlvdXRNb2R1bGUgeyB9XG4iXX0=