UNPKG

igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

231 lines • 14.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, ElementRef, EventEmitter, HostBinding, Input, Output, NgModule, Renderer2, HostListener } from '@angular/core'; export class IgxButtonDirective { /** * @param {?} element * @param {?} _renderer */ constructor(element, _renderer) { this.element = element; this._renderer = _renderer; /** * @hidden */ this._type = 'flat'; /** * @hidden */ this._cssClass = 'igx-button'; /** * Called when the button is clicked */ this.buttonClick = new EventEmitter(); /** * Sets/gets the `role` attribute. * ```typescript * this.button.role = 'navbutton'; * ``` * ```typescript * let buttonRole = this.button.role; * ``` * \@memberof IgxButtonDirective */ this.role = 'button'; /** * Gets or sets whether the button is selected. * Mainly used in the IgxButtonGroup component and it will have no effect if set separately. * ```html * <button igxButton="flat" [selected]="button.selected"></button> * ``` * \@memberof IgxButtonDirective */ this.selected = false; } /** * Returns the underlying DOM element * @return {?} */ get nativeElement() { return this.element.nativeElement; } /** * Sets the type of the button. * ```html * <button igxButton= "icon"></button> * ``` * \@memberof IgxButtonDirective * @param {?} value * @return {?} */ set type(value) { this._type = value || this._type; this._renderer.addClass(this.nativeElement, `${this._cssClass}--${this._type}`); } /** * Sets the button text color. * ```html * <button igxButton="gradient" igxButtonColor="blue"></button> * ``` * \@memberof IgxButtonDirective * @param {?} value * @return {?} */ set color(value) { this._color = value || this.nativeElement.style.color; this._renderer.setStyle(this.nativeElement, 'color', this._color); } /** * Sets the background color of the button. * ```html * <button igxButton="raised" igxButtonBackground="red"></button> * ``` * \@memberof IgxButtonDirective * @param {?} value * @return {?} */ set background(value) { this._backgroundColor = value || this._backgroundColor; this._renderer.setStyle(this.nativeElement, 'background', this._backgroundColor); } /** * Sets the `aria-label` attribute. * ```html * <button igxButton= "flat" igxLabel="Label"></button> * ``` * \@memberof IgxButtonDirective * @param {?} value * @return {?} */ set label(value) { this._label = value || this._label; this._renderer.setAttribute(this.nativeElement, `aria-label`, this._label); } /** * Enables/disables the button. * ```html * <button igxButton= "fab" [disabled]="true"></button> * ``` * \@memberof IgxButtonDirective * @param {?} val * @return {?} */ set disabled(val) { val = !!val; if (val) { this._renderer.addClass(this.nativeElement, `${this._cssClass}--disabled`); } else { this._renderer.removeClass(this.nativeElement, `${this._cssClass}--disabled`); } } /** * @hidden * @param {?} ev * @return {?} */ onClick(ev) { this.buttonClick.emit(ev); } } IgxButtonDirective.decorators = [ { type: Directive, args: [{ selector: '[igxButton]' },] } ]; /** @nocollapse */ IgxButtonDirective.ctorParameters = () => [ { type: ElementRef }, { type: Renderer2 } ]; IgxButtonDirective.propDecorators = { buttonClick: [{ type: Output }], role: [{ type: HostBinding, args: ['attr.role',] }], type: [{ type: Input, args: ['igxButton',] }], color: [{ type: Input, args: ['igxButtonColor',] }], background: [{ type: Input, args: ['igxButtonBackground',] }], label: [{ type: Input, args: ['igxLabel',] }], disabled: [{ type: Input }], selected: [{ type: Input }], onClick: [{ type: HostListener, args: ['click', ['$event'],] }] }; if (false) { /** * @hidden * @type {?} * @private */ IgxButtonDirective.prototype._type; /** * @hidden * @type {?} * @private */ IgxButtonDirective.prototype._cssClass; /** * @hidden * @type {?} * @private */ IgxButtonDirective.prototype._color; /** * @hidden * @type {?} * @private */ IgxButtonDirective.prototype._label; /** * @hidden * @type {?} * @private */ IgxButtonDirective.prototype._backgroundColor; /** * Called when the button is clicked * @type {?} */ IgxButtonDirective.prototype.buttonClick; /** * Sets/gets the `role` attribute. * ```typescript * this.button.role = 'navbutton'; * ``` * ```typescript * let buttonRole = this.button.role; * ``` * \@memberof IgxButtonDirective * @type {?} */ IgxButtonDirective.prototype.role; /** * Gets or sets whether the button is selected. * Mainly used in the IgxButtonGroup component and it will have no effect if set separately. * ```html * <button igxButton="flat" [selected]="button.selected"></button> * ``` * \@memberof IgxButtonDirective * @type {?} */ IgxButtonDirective.prototype.selected; /** @type {?} */ IgxButtonDirective.prototype.element; /** * @type {?} * @private */ IgxButtonDirective.prototype._renderer; } /** * @hidden */ export class IgxButtonModule { } IgxButtonModule.decorators = [ { type: NgModule, args: [{ declarations: [IgxButtonDirective], exports: [IgxButtonDirective] },] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS25JLE1BQU0sT0FBTyxrQkFBa0I7Ozs7O0lBc0IzQixZQUFtQixPQUFtQixFQUFVLFNBQW9CO1FBQWpELFlBQU8sR0FBUCxPQUFPLENBQVk7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFXOzs7O1FBbEI1RCxVQUFLLEdBQUcsTUFBTSxDQUFDOzs7O1FBSWYsY0FBUyxHQUFHLFlBQVksQ0FBQzs7OztRQTJCMUIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDOzs7Ozs7Ozs7OztRQVlaLFNBQUksR0FBRyxRQUFRLENBQUM7Ozs7Ozs7OztRQXFFakMsYUFBUSxHQUFHLEtBQUssQ0FBQztJQTlGdUMsQ0FBQzs7Ozs7SUFLekUsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFDdEMsQ0FBQzs7Ozs7Ozs7OztJQTBCRCxJQUF3QixJQUFJLENBQUMsS0FBYTtRQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7Ozs7Ozs7Ozs7SUFRRCxJQUE2QixLQUFLLENBQUMsS0FBYTtRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RFLENBQUM7Ozs7Ozs7Ozs7SUFRRCxJQUFrQyxVQUFVLENBQUMsS0FBYTtRQUN0RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUN2RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNyRixDQUFDOzs7Ozs7Ozs7O0lBUUQsSUFBdUIsS0FBSyxDQUFDLEtBQWE7UUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0UsQ0FBQzs7Ozs7Ozs7OztJQVFELElBQWEsUUFBUSxDQUFDLEdBQUc7UUFDckIsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDWixJQUFJLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxZQUFZLENBQUMsQ0FBQztTQUM5RTthQUFNO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLFlBQVksQ0FBQyxDQUFDO1NBQ2pGO0lBQ0wsQ0FBQzs7Ozs7O0lBZ0JNLE9BQU8sQ0FBQyxFQUFFO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7O1lBL0hKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsYUFBYTthQUMxQjs7OztZQUptQixVQUFVO1lBQXNELFNBQVM7OzswQkF1Q3hGLE1BQU07bUJBYU4sV0FBVyxTQUFDLFdBQVc7bUJBUXZCLEtBQUssU0FBQyxXQUFXO29CQVdqQixLQUFLLFNBQUMsZ0JBQWdCO3lCQVd0QixLQUFLLFNBQUMscUJBQXFCO29CQVczQixLQUFLLFNBQUMsVUFBVTt1QkFXaEIsS0FBSzt1QkFpQkwsS0FBSztzQkFLTCxZQUFZLFNBQUMsT0FBTyxFQUFHLENBQUMsUUFBUSxDQUFDOzs7Ozs7OztJQXJIbEMsbUNBQXVCOzs7Ozs7SUFJdkIsdUNBQWlDOzs7Ozs7SUFJakMsb0NBQXVCOzs7Ozs7SUFJdkIsb0NBQXVCOzs7Ozs7SUFJdkIsOENBQWlDOzs7OztJQWNqQyx5Q0FDNkM7Ozs7Ozs7Ozs7OztJQVk3QyxrQ0FBaUQ7Ozs7Ozs7Ozs7SUFxRWpELHNDQUFpQzs7SUE5RnJCLHFDQUEwQjs7Ozs7SUFBRSx1Q0FBNEI7Ozs7O0FBZ0h4RSxNQUFNLE9BQU8sZUFBZTs7O1lBSjNCLFFBQVEsU0FBQztnQkFDTixZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDbEMsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7YUFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIE5nTW9kdWxlLCBSZW5kZXJlcjIsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hCdXR0b25dJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hCdXR0b25EaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX3R5cGUgPSAnZmxhdCc7XG4gICAgLyoqXG4gICAgICpAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY3NzQ2xhc3MgPSAnaWd4LWJ1dHRvbic7XG4gICAgLyoqXG4gICAgICpAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29sb3I6IHN0cmluZztcbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9sYWJlbDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2JhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWYsIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIpIHsgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdW5kZXJseWluZyBET00gZWxlbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgcm9sZWAgYXR0cmlidXRlLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmJ1dHRvbi5yb2xlID0gJ25hdmJ1dHRvbic7XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBidXR0b25Sb2xlID0gIHRoaXMuYnV0dG9uLnJvbGU7XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEJ1dHRvbkRpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcHVibGljIHJvbGUgPSAnYnV0dG9uJztcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB0eXBlIG9mIHRoZSBidXR0b24uXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gIGlneEJ1dHRvbj0gXCJpY29uXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEJ1dHRvbkRpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4QnV0dG9uJykgc2V0IHR5cGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl90eXBlID0gdmFsdWUgfHwgdGhpcy5fdHlwZTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBgJHt0aGlzLl9jc3NDbGFzc30tLSR7dGhpcy5fdHlwZX1gKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYnV0dG9uIHRleHQgY29sb3IuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gaWd4QnV0dG9uPVwiZ3JhZGllbnRcIiBpZ3hCdXR0b25Db2xvcj1cImJsdWVcIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4QnV0dG9uRGlyZWN0aXZlXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hCdXR0b25Db2xvcicpIHNldCBjb2xvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2NvbG9yID0gdmFsdWUgfHwgdGhpcy5uYXRpdmVFbGVtZW50LnN0eWxlLmNvbG9yO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLm5hdGl2ZUVsZW1lbnQsICdjb2xvcicsIHRoaXMuX2NvbG9yKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYnV0dG9uLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbj1cInJhaXNlZFwiIGlneEJ1dHRvbkJhY2tncm91bmQ9XCJyZWRcIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4QnV0dG9uRGlyZWN0aXZlXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hCdXR0b25CYWNrZ3JvdW5kJykgc2V0IGJhY2tncm91bmQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZSB8fCB0aGlzLl9iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMubmF0aXZlRWxlbWVudCwgJ2JhY2tncm91bmQnLCB0aGlzLl9iYWNrZ3JvdW5kQ29sb3IpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbj0gXCJmbGF0XCIgaWd4TGFiZWw9XCJMYWJlbFwiPjwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqIEBtZW1iZXJvZiBJZ3hCdXR0b25EaXJlY3RpdmVcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneExhYmVsJykgc2V0IGxhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbGFiZWwgPSB2YWx1ZSB8fCB0aGlzLl9sYWJlbDtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubmF0aXZlRWxlbWVudCwgYGFyaWEtbGFiZWxgLCB0aGlzLl9sYWJlbCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMvZGlzYWJsZXMgdGhlIGJ1dHRvbi5cbiAgICAgKiAgYGBgaHRtbFxuICAgICAqIDxidXR0b24gaWd4QnV0dG9uPSBcImZhYlwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC9idXR0b24+XG4gICAgICogYGBgXG4gICAgICogQG1lbWJlcm9mIElneEJ1dHRvbkRpcmVjdGl2ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCBkaXNhYmxlZCh2YWwpIHtcbiAgICAgICAgdmFsID0gISF2YWw7XG4gICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgYCR7dGhpcy5fY3NzQ2xhc3N9LS1kaXNhYmxlZGApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBgJHt0aGlzLl9jc3NDbGFzc30tLWRpc2FibGVkYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIG9yIHNldHMgd2hldGhlciB0aGUgYnV0dG9uIGlzIHNlbGVjdGVkLlxuICAgICAqIE1haW5seSB1c2VkIGluIHRoZSBJZ3hCdXR0b25Hcm91cCBjb21wb25lbnQgYW5kIGl0IHdpbGwgaGF2ZSBubyBlZmZlY3QgaWYgc2V0IHNlcGFyYXRlbHkuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gaWd4QnV0dG9uPVwiZmxhdFwiIFtzZWxlY3RlZF09XCJidXR0b24uc2VsZWN0ZWRcIj48L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4QnV0dG9uRGlyZWN0aXZlXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKkBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsICBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkNsaWNrKGV2KSB7XG4gICAgICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdChldik7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtJZ3hCdXR0b25EaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtJZ3hCdXR0b25EaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElneEJ1dHRvbk1vZHVsZSB7IH1cbiJdfQ==