ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
160 lines • 18.7 kB
JavaScript
import { __decorate } from "tslib";
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
import { PlatformModule } from '@angular/cdk/platform';
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, numberAttribute } from '@angular/core';
import { WithConfig } from 'ng-zorro-antd/core/config';
import { NzIconModule } from 'ng-zorro-antd/icon';
import * as i0 from "@angular/core";
import * as i1 from "ng-zorro-antd/core/config";
import * as i2 from "ng-zorro-antd/icon";
const NZ_CONFIG_MODULE_NAME = 'avatar';
export class NzAvatarComponent {
constructor(nzConfigService, elementRef, cdr) {
this.nzConfigService = nzConfigService;
this.elementRef = elementRef;
this.cdr = cdr;
this._nzModuleName = NZ_CONFIG_MODULE_NAME;
this.nzShape = 'circle';
this.nzSize = 'default';
this.nzGap = 4;
this.nzError = new EventEmitter();
this.hasText = false;
this.hasSrc = true;
this.hasIcon = false;
this.classMap = {};
this.customSize = null;
this.el = this.elementRef.nativeElement;
}
imgError($event) {
this.nzError.emit($event);
if (!$event.defaultPrevented) {
this.hasSrc = false;
this.hasIcon = false;
this.hasText = false;
if (this.nzIcon) {
this.hasIcon = true;
}
else if (this.nzText) {
this.hasText = true;
}
this.cdr.detectChanges();
this.setSizeStyle();
this.calcStringSize();
}
}
ngOnChanges() {
this.hasText = !this.nzSrc && !!this.nzText;
this.hasIcon = !this.nzSrc && !!this.nzIcon;
this.hasSrc = !!this.nzSrc;
this.setSizeStyle();
this.calcStringSize();
}
ngAfterViewInit() {
this.calcStringSize();
}
calcStringSize() {
if (!this.hasText || !this.textEl) {
return;
}
const textEl = this.textEl.nativeElement;
const childrenWidth = textEl.offsetWidth;
const avatarWidth = this.el.getBoundingClientRect?.().width ?? 0;
const offset = this.nzGap * 2 < avatarWidth ? this.nzGap * 2 : 8;
const scale = avatarWidth - offset < childrenWidth ? (avatarWidth - offset) / childrenWidth : 1;
textEl.style.transform = `scale(${scale}) translateX(-50%)`;
textEl.style.lineHeight = this.customSize || '';
}
setSizeStyle() {
if (typeof this.nzSize === 'number') {
this.customSize = `${this.nzSize}px`;
}
else {
this.customSize = null;
}
this.cdr.markForCheck();
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NzAvatarComponent, deps: [{ token: i1.NzConfigService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", type: NzAvatarComponent, isStandalone: true, selector: "nz-avatar", inputs: { nzShape: "nzShape", nzSize: "nzSize", nzGap: ["nzGap", "nzGap", numberAttribute], nzText: "nzText", nzSrc: "nzSrc", nzSrcSet: "nzSrcSet", nzAlt: "nzAlt", nzIcon: "nzIcon" }, outputs: { nzError: "nzError" }, host: { properties: { "class.ant-avatar-lg": "nzSize === 'large'", "class.ant-avatar-sm": "nzSize === 'small'", "class.ant-avatar-square": "nzShape === 'square'", "class.ant-avatar-circle": "nzShape === 'circle'", "class.ant-avatar-icon": "nzIcon", "class.ant-avatar-image": "hasSrc ", "style.width": "customSize", "style.height": "customSize", "style.line-height": "customSize", "style.font-size.px": "(hasIcon && customSize) ? $any(nzSize) / 2 : null" }, classAttribute: "ant-avatar" }, viewQueries: [{ propertyName: "textEl", first: true, predicate: ["textEl"], descendants: true }], exportAs: ["nzAvatar"], usesOnChanges: true, ngImport: i0, template: `
(nzIcon && hasIcon) {
<span nz-icon [nzType]="nzIcon"></span>
}
(nzSrc && hasSrc) {
<img [src]="nzSrc" [attr.srcset]="nzSrcSet" [attr.alt]="nzAlt" (error)="imgError($event)" />
}
(nzText && hasText) {
<span class="ant-avatar-string" #textEl>{{ nzText }}</span>
}
`, isInline: true, dependencies: [{ kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: PlatformModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
}
__decorate([
WithConfig()
], NzAvatarComponent.prototype, "nzShape", void 0);
__decorate([
WithConfig()
], NzAvatarComponent.prototype, "nzSize", void 0);
__decorate([
WithConfig()
], NzAvatarComponent.prototype, "nzGap", void 0);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NzAvatarComponent, decorators: [{
type: Component,
args: [{
selector: 'nz-avatar',
exportAs: 'nzAvatar',
standalone: true,
imports: [NzIconModule, PlatformModule],
template: `
(nzIcon && hasIcon) {
<span nz-icon [nzType]="nzIcon"></span>
}
(nzSrc && hasSrc) {
<img [src]="nzSrc" [attr.srcset]="nzSrcSet" [attr.alt]="nzAlt" (error)="imgError($event)" />
}
(nzText && hasText) {
<span class="ant-avatar-string" #textEl>{{ nzText }}</span>
}
`,
host: {
class: 'ant-avatar',
'[class.ant-avatar-lg]': `nzSize === 'large'`,
'[class.ant-avatar-sm]': `nzSize === 'small'`,
'[class.ant-avatar-square]': `nzShape === 'square'`,
'[class.ant-avatar-circle]': `nzShape === 'circle'`,
'[class.ant-avatar-icon]': `nzIcon`,
'[class.ant-avatar-image]': `hasSrc `,
'[style.width]': 'customSize',
'[style.height]': 'customSize',
'[style.line-height]': 'customSize',
// nzSize type is number when customSize is true
'[style.font-size.px]': '(hasIcon && customSize) ? $any(nzSize) / 2 : null'
},
preserveWhitespaces: false,
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None
}]
}], ctorParameters: () => [{ type: i1.NzConfigService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { nzShape: [{
type: Input
}], nzSize: [{
type: Input
}], nzGap: [{
type: Input,
args: [{ transform: numberAttribute }]
}], nzText: [{
type: Input
}], nzSrc: [{
type: Input
}], nzSrcSet: [{
type: Input
}], nzAlt: [{
type: Input
}], nzIcon: [{
type: Input
}], nzError: [{
type: Output
}], textEl: [{
type: ViewChild,
args: ['textEl', { static: false }]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvYXZhdGFyL2F2YXRhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDaEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFnQyxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFFbEQsTUFBTSxxQkFBcUIsR0FBZ0IsUUFBUSxDQUFDO0FBb0NwRCxNQUFNLE9BQU8saUJBQWlCO0lBc0I1QixZQUNTLGVBQWdDLEVBQy9CLFVBQXNCLEVBQ3RCLEdBQXNCO1FBRnZCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUMvQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBeEJ2QixrQkFBYSxHQUFnQixxQkFBcUIsQ0FBQztRQUNyQyxZQUFPLEdBQWtCLFFBQVEsQ0FBQztRQUNsQyxXQUFNLEdBQTJCLFNBQVMsQ0FBQztRQUNiLFVBQUssR0FBRyxDQUFDLENBQUM7UUFNNUMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFFdkQsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixXQUFNLEdBQVksSUFBSSxDQUFDO1FBQ3ZCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsYUFBUSxHQUFxQixFQUFFLENBQUM7UUFDaEMsZUFBVSxHQUFrQixJQUFJLENBQUM7UUFJekIsT0FBRSxHQUFnQixJQUFJLENBQUMsVUFBVSxDQUFD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QUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDYSxPQUFPO3NCQUF6QixNQUFNO2dCQVFpQyxNQUFNO3NCQUE3QyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBQbGF0Zm9ybU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIG51bWJlckF0dHJpYnV0ZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTnpDb25maWdLZXksIE56Q29uZmlnU2VydmljZSwgV2l0aENvbmZpZyB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgTmdDbGFzc0ludGVyZmFjZSwgTnpTaGFwZVNDVHlwZSwgTnpTaXplTERTVHlwZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBOekljb25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2ljb24nO1xuXG5jb25zdCBOWl9DT05GSUdfTU9EVUxFX05BTUU6IE56Q29uZmlnS2V5ID0gJ2F2YXRhcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ256LWF2YXRhcicsXG4gIGV4cG9ydEFzOiAnbnpBdmF0YXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTnpJY29uTW9kdWxlLCBQbGF0Zm9ybU1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChuekljb24gJiYgaGFzSWNvbikge1xuICAgICAgPHNwYW4gbnotaWNvbiBbbnpUeXBlXT1cIm56SWNvblwiPjwvc3Bhbj5cbiAgICB9XG4gICAgQGlmIChuelNyYyAmJiBoYXNTcmMpIHtcbiAgICAgIDxpbWcgW3NyY109XCJuelNyY1wiIFthdHRyLnNyY3NldF09XCJuelNyY1NldFwiIFthdHRyLmFsdF09XCJuekFsdFwiIChlcnJvcik9XCJpbWdFcnJvcigkZXZlbnQpXCIgLz5cbiAgICB9XG4gICAgQGlmIChuelRleHQgJiYgaGFzVGV4dCkge1xuICAgICAgPHNwYW4gY2xhc3M9XCJhbnQtYXZhdGFyLXN0cmluZ1wiICN0ZXh0RWw+e3sgbnpUZXh0IH19PC9zcGFuPlxuICAgIH1cbiAgYCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYW50LWF2YXRhcicsXG4gICAgJ1tjbGFzcy5hbnQtYXZhdGFyLWxnXSc6IGBuelNpemUgPT09ICdsYXJnZSdgLFxuICAgICdbY2xhc3MuYW50LWF2YXRhci1zbV0nOiBgbnpTaXplID09PSAnc21hbGwnYCxcbiAgICAnW2NsYXNzLmFudC1hdmF0YXItc3F1YXJlXSc6IGBuelNoYXBlID09PSAnc3F1YXJlJ2AsXG4gICAgJ1tjbGFzcy5hbnQtYXZhdGFyLWNpcmNsZV0nOiBgbnpTaGFwZSA9PT0gJ2NpcmNsZSdgLFxuICAgICdbY2xhc3MuYW50LWF2YXRhci1pY29uXSc6IGBuekljb25gLFxuICAgICdbY2xhc3MuYW50LWF2YXRhci1pbWFnZV0nOiBgaGFzU3JjIGAsXG4gICAgJ1tzdHlsZS53aWR0aF0nOiAnY3VzdG9tU2l6ZScsXG4gICAgJ1tzdHlsZS5oZWlnaHRdJzogJ2N1c3RvbVNpemUnLFxuICAgICdbc3R5bGUubGluZS1oZWlnaHRdJzogJ2N1c3RvbVNpemUnLFxuICAgIC8vIG56U2l6ZSB0eXBlIGlzIG51bWJlciB3aGVuIGN1c3RvbVNpemUgaXMgdHJ1ZVxuICAgICdbc3R5bGUuZm9udC1zaXplLnB4XSc6ICcoaGFzSWNvbiAmJiBjdXN0b21TaXplKSA/ICRhbnkobnpTaXplKSAvIDIgOiBudWxsJ1xuICB9LFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTnpBdmF0YXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICByZWFkb25seSBfbnpNb2R1bGVOYW1lOiBOekNvbmZpZ0tleSA9IE5aX0NPTkZJR19NT0RVTEVfTkFNRTtcbiAgQElucHV0KCkgQFdpdGhDb25maWcoKSBuelNoYXBlOiBOelNoYXBlU0NUeXBlID0gJ2NpcmNsZSc7XG4gIEBJbnB1dCgpIEBXaXRoQ29uZmlnKCkgbnpTaXplOiBOelNpemVMRFNUeXBlIHwgbnVtYmVyID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBAV2l0aENvbmZpZygpIG56R2FwID0gNDtcbiAgQElucHV0KCkgbnpUZXh0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBuelNyYz86IHN0cmluZztcbiAgQElucHV0KCkgbnpTcmNTZXQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG56QWx0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBuekljb24/OiBzdHJpbmc7XG4gIEBPdXRwdXQoKSByZWFkb25seSBuekVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBoYXNUZXh0OiBib29sZWFuID0gZmFsc2U7XG4gIGhhc1NyYzogYm9vbGVhbiA9IHRydWU7XG4gIGhhc0ljb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgY2xhc3NNYXA6IE5nQ2xhc3NJbnRlcmZhY2UgPSB7fTtcbiAgY3VzdG9tU2l6ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgQFZpZXdDaGlsZCgndGV4dEVsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHRleHRFbD86IEVsZW1lbnRSZWY8SFRNTFNwYW5FbGVtZW50PjtcblxuICBwcml2YXRlIGVsOiBIVE1MRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuekNvbmZpZ1NlcnZpY2U6IE56Q29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBpbWdFcnJvcigkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5uekVycm9yLmVtaXQoJGV2ZW50KTtcbiAgICBpZiAoISRldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICB0aGlzLmhhc1NyYyA9IGZhbHNlO1xuICAgICAgdGhpcy5oYXNJY29uID0gZmFsc2U7XG4gICAgICB0aGlzLmhhc1RleHQgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLm56SWNvbikge1xuICAgICAgICB0aGlzLmhhc0ljb24gPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm56VGV4dCkge1xuICAgICAgICB0aGlzLmhhc1RleHQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5zZXRTaXplU3R5bGUoKTtcbiAgICAgIHRoaXMuY2FsY1N0cmluZ1NpemUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmhhc1RleHQgPSAhdGhpcy5uelNyYyAmJiAhIXRoaXMubnpUZXh0O1xuICAgIHRoaXMuaGFzSWNvbiA9ICF0aGlzLm56U3JjICYmICEhdGhpcy5uekljb247XG4gICAgdGhpcy5oYXNTcmMgPSAhIXRoaXMubnpTcmM7XG5cbiAgICB0aGlzLnNldFNpemVTdHlsZSgpO1xuICAgIHRoaXMuY2FsY1N0cmluZ1NpemUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGNTdHJpbmdTaXplKCk7XG4gIH1cblxuICBwcml2YXRlIGNhbGNTdHJpbmdTaXplKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNUZXh0IHx8ICF0aGlzLnRleHRFbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRleHRFbCA9IHRoaXMudGV4dEVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgY2hpbGRyZW5XaWR0aCA9IHRleHRFbC5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCBhdmF0YXJXaWR0aCA9IHRoaXMuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0Py4oKS53aWR0aCA/PyAwO1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMubnpHYXAgKiAyIDwgYXZhdGFyV2lkdGggPyB0aGlzLm56R2FwICogMiA6IDg7XG4gICAgY29uc3Qgc2NhbGUgPSBhdmF0YXJXaWR0aCAtIG9mZnNldCA8IGNoaWxkcmVuV2lkdGggPyAoYXZhdGFyV2lkdGggLSBvZmZzZXQpIC8gY2hpbGRyZW5XaWR0aCA6IDE7XG5cbiAgICB0ZXh0RWwuc3R5bGUudHJhbnNmb3JtID0gYHNjYWxlKCR7c2NhbGV9KSB0cmFuc2xhdGVYKC01MCUpYDtcbiAgICB0ZXh0RWwuc3R5bGUubGluZUhlaWdodCA9IHRoaXMuY3VzdG9tU2l6ZSB8fCAnJztcbiAgfVxuXG4gIHByaXZhdGUgc2V0U2l6ZVN0eWxlKCk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgdGhpcy5uelNpemUgPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLmN1c3RvbVNpemUgPSBgJHt0aGlzLm56U2l6ZX1weGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VzdG9tU2l6ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiJdfQ==