UNPKG

ng-zorro-antd-mobile

Version:

An enterprise-class mobile UI components based on Ant Design and Angular

177 lines 20.4 kB
import { Component, ViewEncapsulation, Input, Output, ElementRef, HostListener, EventEmitter, Renderer2, TemplateRef } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "ng-zorro-antd-mobile/icon"; export class ButtonComponent { get type() { return this._type; } get size() { return this._size; } get disabled() { return this._disabled; } get loading() { return this._loading; } get inline() { return this._inline; } get icon() { return this._icon; } set icon(value) { if (value instanceof TemplateRef) { this.ngTemplate = true; this._icon = value; } else { this.ngTemplate = false; this._icon = value; this.setClassMap(); } } set className(v) { this._className = this._className + ' ' + v; this.setClassMap(); } touchStart(event) { if (this._disabled) { return; } this._active = true; this.setClassMap(); } touchEnd(event) { if (this._disabled) { return; } this._active = false; this.setClassMap(); } click(event) { if (this._disabled) { return; } this.onClick.emit(); } constructor(_elementRef, _render) { this._elementRef = _elementRef; this._render = _render; this.prefixCls = 'am-button'; this.ngTemplate = false; this._className = ''; this._classList = []; this._size = 'large'; this._loading = false; this._active = false; this._inline = false; this._disabled = false; this._icon = ''; this._userAgent = navigator.userAgent || navigator.vendor || window.opera; this.onClick = new EventEmitter(); this._el = this._elementRef.nativeElement; this._render.addClass(this._el, this.prefixCls); this._className = this._el.className; } isTemplateRef(value) { if (value) { return value instanceof TemplateRef; } return false; } set type(value) { this._type = value; this.setClassMap(); } set disabled(value) { this._disabled = value; this.setClassMap(); } set loading(value) { this._loading = value; if (this._el.querySelector('icon')) { const icon = this._el.querySelector('icon'); icon.style.display = value ? '' : 'none'; } this.setClassMap(); } set size(value) { this._size = value; this.setClassMap(); } set inline(value) { this._inline = value; this.setClassMap(); } ngAfterViewInit() { if (this._el.querySelector('img')) { const amSize = this._size === 'small' ? 'am-icon-xxs' : 'am-icon-md'; this._el.querySelector('img').setAttribute('class', `am-icon ${this.prefixCls}-icon ${amSize}`); this._render.addClass(this._el, `${this.prefixCls}-icon`); } } setClassMap() { this.iconType = this._loading ? 'loading' : this._icon; this._classList = [ this._type && `${this.prefixCls}-${this._type}`, this._size === 'small' && `${this.prefixCls}-${this._size}`, this._disabled && `${this.prefixCls}-disabled`, this._loading && `${this.prefixCls}-loading`, this.iconType && `${this.prefixCls}-icon`, this._active && `${this.prefixCls}-active`, this._inline && `${this.prefixCls}-inline` ].filter(item => { return !!item; }); this._el.className = this._className + ' ' + this._classList.join(' '); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ButtonComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: ButtonComponent, selector: "[Button], nzm-button", inputs: { type: "type", size: "size", disabled: "disabled", loading: "loading", inline: "inline", icon: "icon", className: "className" }, outputs: { onClick: "onClick" }, host: { listeners: { "touchstart": "touchStart($event)", "mousedown": "touchStart($event)", "touchend": "touchEnd($event)", "mouseup": "touchEnd($event)", "touchmove": "touchEnd($event)", "mousemove": "touchEnd($event)", "touchcancel": "touchEnd($event)", "click": "click($event)" } }, ngImport: i0, template: "<Icon\n *ngIf=\"!ngTemplate\"\n class=\"{{ prefixCls }}-icon\"\n [type]=\"iconType\"\n [size]=\"size === 'small' ? 'xxs' : 'md'\"\n></Icon>\n<ng-template *ngIf=\"ngTemplate\" [ngTemplateOutlet]=\"icon\"></ng-template>\n<ng-content select=\"img\"></ng-content>\n<div class=\"{{ prefixCls }}-content\">\n <span>\n <ng-content></ng-content>\n </span>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "Icon, nzm-icon", inputs: ["color", "type", "src", "size"] }], encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: ButtonComponent, decorators: [{ type: Component, args: [{ selector: '[Button], nzm-button', encapsulation: ViewEncapsulation.None, template: "<Icon\n *ngIf=\"!ngTemplate\"\n class=\"{{ prefixCls }}-icon\"\n [type]=\"iconType\"\n [size]=\"size === 'small' ? 'xxs' : 'md'\"\n></Icon>\n<ng-template *ngIf=\"ngTemplate\" [ngTemplateOutlet]=\"icon\"></ng-template>\n<ng-content select=\"img\"></ng-content>\n<div class=\"{{ prefixCls }}-content\">\n <span>\n <ng-content></ng-content>\n </span>\n</div>\n" }] }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { type: [{ type: Input }], size: [{ type: Input }], disabled: [{ type: Input }], loading: [{ type: Input }], inline: [{ type: Input }], icon: [{ type: Input }], className: [{ type: Input }], onClick: [{ type: Output }], touchStart: [{ type: HostListener, args: ['touchstart', ['$event']] }, { type: HostListener, args: ['mousedown', ['$event']] }], touchEnd: [{ type: HostListener, args: ['touchend', ['$event']] }, { type: HostListener, args: ['mouseup', ['$event']] }, { type: HostListener, args: ['touchmove', ['$event']] }, { type: HostListener, args: ['mousemove', ['$event']] }, { type: HostListener, args: ['touchcancel', ['$event']] }], click: [{ type: HostListener, args: ['click', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixTQUFTLEVBQ1QsV0FBVyxFQUVaLE1BQU0sZUFBZSxDQUFDOzs7O0FBT3ZCLE1BQU0sT0FBTyxlQUFlO0lBaUIxQixJQUNJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQ0ksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUNJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQ0ksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFDSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxLQUFnQztRQUN2QyxJQUFJLEtBQUssWUFBWSxXQUFXLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDcEI7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQVcsS0FBSyxDQUFDO1lBQzNCLElBQUks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VSxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDbkMsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNsQyxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3BDLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDcEMsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVXZDLEtBQUs7c0JBREosWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEV2ZW50RW1pdHRlcixcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgQWZ0ZXJWaWV3SW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW0J1dHRvbl0sIG56bS1idXR0b24nLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJlZml4Q2xzOiBzdHJpbmcgPSAnYW0tYnV0dG9uJztcbiAgbmdUZW1wbGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpY29uVHlwZTogYW55O1xuXG4gIHByaXZhdGUgX2VsOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfY2xhc3NOYW1lID0gJyc7XG4gIHByaXZhdGUgX2NsYXNzTGlzdDogYW55ID0gW107XG4gIHByaXZhdGUgX3R5cGU6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2l6ZSA9ICdsYXJnZSc7XG4gIHByaXZhdGUgX2xvYWRpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYWN0aXZlID0gZmFsc2U7XG4gIHByaXZhdGUgX2lubGluZSA9IGZhbHNlO1xuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9pY29uOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+ID0gJyc7XG4gIHByaXZhdGUgX3VzZXJBZ2VudCA9ICg8YW55Pm5hdmlnYXRvcikudXNlckFnZW50IHx8ICg8YW55Pm5hdmlnYXRvcikudmVuZG9yIHx8ICg8YW55PndpbmRvdykub3BlcmE7XG5cbiAgQElucHV0KClcbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgc2l6ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zaXplO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IGlubGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5saW5lO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBpY29uKCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9pY29uO1xuICB9XG4gIHNldCBpY29uKHZhbHVlOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAgIHRoaXMubmdUZW1wbGF0ZSA9IHRydWU7XG4gICAgICB0aGlzLl9pY29uID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmdUZW1wbGF0ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5faWNvbiA9IDxzdHJpbmc+dmFsdWU7XG4gICAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBjbGFzc05hbWUodikge1xuICAgIHRoaXMuX2NsYXNzTmFtZSA9IHRoaXMuX2NsYXNzTmFtZSArICcgJyArIHY7XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICB9XG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgdG91Y2hTdGFydChldmVudCkge1xuICAgIGlmICh0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgfVxuICBASG9zdExpc3RlbmVyKCd0b3VjaGVuZCcsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNldXAnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd0b3VjaG1vdmUnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdtb3VzZW1vdmUnLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCd0b3VjaGNhbmNlbCcsIFsnJGV2ZW50J10pXG4gIHRvdWNoRW5kKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2FjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgY2xpY2soZXZlbnQpIHtcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgX3JlbmRlcjogUmVuZGVyZXIyKSB7XG4gICAgdGhpcy5fZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5fcmVuZGVyLmFkZENsYXNzKHRoaXMuX2VsLCB0aGlzLnByZWZpeENscyk7XG4gICAgdGhpcy5fY2xhc3NOYW1lID0gdGhpcy5fZWwuY2xhc3NOYW1lO1xuICB9XG5cbiAgaXNUZW1wbGF0ZVJlZih2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHNldCB0eXBlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90eXBlID0gdmFsdWU7XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICB9XG5cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gIH1cblxuICBzZXQgbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2xvYWRpbmcgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5fZWwucXVlcnlTZWxlY3RvcignaWNvbicpKSB7XG4gICAgICBjb25zdCBpY29uID0gdGhpcy5fZWwucXVlcnlTZWxlY3RvcignaWNvbicpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWNvbi5zdHlsZS5kaXNwbGF5ID0gdmFsdWUgPyAnJyA6ICdub25lJztcbiAgICB9XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICB9XG5cbiAgc2V0IHNpemUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NpemUgPSB2YWx1ZTtcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gIH1cblxuICBzZXQgaW5saW5lKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW5saW5lID0gdmFsdWU7XG4gICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLl9lbC5xdWVyeVNlbGVjdG9yKCdpbWcnKSkge1xuICAgICAgY29uc3QgYW1TaXplID0gdGhpcy5fc2l6ZSA9PT0gJ3NtYWxsJyA/ICdhbS1pY29uLXh4cycgOiAnYW0taWNvbi1tZCc7XG4gICAgICB0aGlzLl9lbC5xdWVyeVNlbGVjdG9yKCdpbWcnKS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgYGFtLWljb24gJHt0aGlzLnByZWZpeENsc30taWNvbiAke2FtU2l6ZX1gKTtcbiAgICAgIHRoaXMuX3JlbmRlci5hZGRDbGFzcyh0aGlzLl9lbCwgYCR7dGhpcy5wcmVmaXhDbHN9LWljb25gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENsYXNzTWFwKCk6IHZvaWQge1xuICAgIHRoaXMuaWNvblR5cGUgPSB0aGlzLl9sb2FkaW5nID8gJ2xvYWRpbmcnIDogdGhpcy5faWNvbjtcbiAgICB0aGlzLl9jbGFzc0xpc3QgPSBbXG4gICAgICB0aGlzLl90eXBlICYmIGAke3RoaXMucHJlZml4Q2xzfS0ke3RoaXMuX3R5cGV9YCxcbiAgICAgIHRoaXMuX3NpemUgPT09ICdzbWFsbCcgJiYgYCR7dGhpcy5wcmVmaXhDbHN9LSR7dGhpcy5fc2l6ZX1gLFxuICAgICAgdGhpcy5fZGlzYWJsZWQgJiYgYCR7dGhpcy5wcmVmaXhDbHN9LWRpc2FibGVkYCxcbiAgICAgIHRoaXMuX2xvYWRpbmcgJiYgYCR7dGhpcy5wcmVmaXhDbHN9LWxvYWRpbmdgLFxuICAgICAgdGhpcy5pY29uVHlwZSAmJiBgJHt0aGlzLnByZWZpeENsc30taWNvbmAsXG4gICAgICB0aGlzLl9hY3RpdmUgJiYgYCR7dGhpcy5wcmVmaXhDbHN9LWFjdGl2ZWAsXG4gICAgICB0aGlzLl9pbmxpbmUgJiYgYCR7dGhpcy5wcmVmaXhDbHN9LWlubGluZWBcbiAgICBdLmZpbHRlcihpdGVtID0+IHtcbiAgICAgIHJldHVybiAhIWl0ZW07XG4gICAgfSk7XG4gICAgdGhpcy5fZWwuY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lICsgJyAnICsgdGhpcy5fY2xhc3NMaXN0LmpvaW4oJyAnKTtcbiAgfVxufVxuIiwiPEljb25cbiAgKm5nSWY9XCIhbmdUZW1wbGF0ZVwiXG4gIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LWljb25cIlxuICBbdHlwZV09XCJpY29uVHlwZVwiXG4gIFtzaXplXT1cInNpemUgPT09ICdzbWFsbCcgPyAneHhzJyA6ICdtZCdcIlxuPjwvSWNvbj5cbjxuZy10ZW1wbGF0ZSAqbmdJZj1cIm5nVGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJpY29uXCI+PC9uZy10ZW1wbGF0ZT5cbjxuZy1jb250ZW50IHNlbGVjdD1cImltZ1wiPjwvbmctY29udGVudD5cbjxkaXYgY2xhc3M9XCJ7eyBwcmVmaXhDbHMgfX0tY29udGVudFwiPlxuICA8c3Bhbj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvc3Bhbj5cbjwvZGl2PlxuIl19