UNPKG

@iotize/ionic

Version:

Iotize specific building blocks on top of @ionic/angular.

33 lines 15.6 kB
import { Component, EventEmitter, Input, Output } from '@angular/core'; import { TapConnectionStoreService } from '../tap-connection-store.service'; import * as i0 from "@angular/core"; import * as i1 from "../tap-connection-store.service"; import * as i2 from "@angular/common"; import * as i3 from "@ionic/angular"; export class TapConnectionStoreItemComponent { constructor(tapConnectionStoreService) { this.tapConnectionStoreService = tapConnectionStoreService; this.selected = new EventEmitter(); } connect() { if (this.item) { this.selected.emit(this.item); } } remove() { if (this.item) { this.tapConnectionStoreService.remove(this.item); } } } /** @nocollapse */ TapConnectionStoreItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapConnectionStoreItemComponent, deps: [{ token: i1.TapConnectionStoreService }], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ TapConnectionStoreItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TapConnectionStoreItemComponent, selector: "tap-connection-store-item", inputs: { item: "item" }, outputs: { selected: "selected" }, ngImport: i0, template: "<ion-card *ngIf=\"item\" (click)=\"connect()\" [button]=\"true\">\n <ion-list class=\"store-list\">\n <ion-item style=\"margin-bottom: 4px\">\n &nbsp;\n <span class=\"title\">{{ item.config.appName }}</span>\n &nbsp;\n <ion-button slot=\"end\" color=\"danger\" fill=\"clear\" (click)=\"remove()\">\n <ion-icon name=\"close\"></ion-icon>\n <!-- &nbsp; Remove -->\n </ion-button>\n </ion-item>\n <!-- <ion-item\n\t\t\tclass=\"extra-info\">\n\t\t\t<ion-icon name=\"time\"></ion-icon>\n\t\t\t&nbsp;\n\t\t\t{{ item.meta.lastConnection | date }}\n\t\t</ion-item> -->\n <!-- <ion-item class=\"extra-info\">\n\t\t\t<ion-icon name=\"information-circle\"></ion-icon>\n &nbsp;\n v{{ item.config.version }}\n\t\t</ion-item> -->\n <ion-item class=\"extra-info\" lines=\"none\">\n <ion-icon color=\"primary\" name=\"hardware-chip\"></ion-icon>\n &nbsp;\n <!-- <ion-label>Serial number</ion-label> -->\n {{ item.config.serialNumber }}\n <ion-badge slot=\"end\">\n {{ item.connection.type }}\n </ion-badge>\n </ion-item>\n <ion-item\n *ngIf=\"item.connection.type === 'mqtt'\"\n class=\"extra-info\"\n lines=\"none\"\n >\n <!-- <ion-label>Last connection</ion-label> -->\n <ion-icon color=\"primary\" name=\"link\"></ion-icon>\n &nbsp;\n <span class=\"\">{{ item.connection.info.endpoint }}</span>\n </ion-item>\n <ion-item\n *ngIf=\"item.connection.type === 'ble'\"\n class=\"extra-info\"\n lines=\"none\"\n >\n <!-- <ion-label>Last connection</ion-label> -->\n <ion-icon color=\"primary\" name=\"link\"></ion-icon>\n &nbsp;\n <span class=\"\">{{ item.connection.info.mac }}</span>\n </ion-item>\n <ion-item\n *ngIf=\"\n item.connection.type === 'socket' ||\n item.connection.type === 'websocket'\n \"\n lines=\"none\"\n class=\"extra-info\"\n >\n <!-- <ion-label>Last connection</ion-label> -->\n <ion-icon color=\"primary\" name=\"link\"></ion-icon>\n &nbsp;\n <span class=\"\">{{ item.connection.info.url }}</span>\n </ion-item>\n <ion-item\n *ngIf=\"item.connection.type === 'wifi'\"\n class=\"extra-info\"\n lines=\"none\"\n >\n <!-- <ion-label>Last connection</ion-label> -->\n <ion-icon color=\"primary\" name=\"link\"></ion-icon>\n &nbsp;\n <span class=\"\">{{ item.connection.info.ssid }}</span>\n </ion-item>\n <!-- <ion-item>\n\t\t\t\t\t<ion-buttons slot=\"end\">\n\t\t\t\t\t\n\t\t\t\t\t\t<ion-button slot=\"end\" color=\"primary\" fill=\"clear\" (click)=\"connect()\">\n\t\t\t\t\t\t\t<ion-icon name=\"log-in\"></ion-icon>\n\t\t\t\t\t\t\t&nbsp; Connect\n\t\t\t\t\t\t</ion-button>\n\t\t\t\t\t</ion-buttons>\n\t\t\t\t</ion-item> -->\n </ion-list>\n</ion-card>\n", styles: [".config-version{font-size:.8em;opacity:.7}.extra-info{font-size:.95em;opacity:.7;padding-top:0;padding-bottom:0;--min-height: 16px}.store-list{padding-top:0}.title{font-size:1.1em}ion-card{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i3.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i3.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapConnectionStoreItemComponent, decorators: [{ type: Component, args: [{ selector: 'tap-connection-store-item', template: "<ion-card *ngIf=\"item\" (click)=\"connect()\" [button]=\"true\">\n <ion-list class=\"store-list\">\n <ion-item style=\"margin-bottom: 4px\">\n &nbsp;\n <span class=\"title\">{{ item.config.appName }}</span>\n &nbsp;\n <ion-button slot=\"end\" color=\"danger\" fill=\"clear\" (click)=\"remove()\">\n <ion-icon name=\"close\"></ion-icon>\n <!-- &nbsp; Remove -->\n </ion-button>\n </ion-item>\n <!-- <ion-item\n\t\t\tclass=\"extra-info\">\n\t\t\t<ion-icon name=\"time\"></ion-icon>\n\t\t\t&nbsp;\n\t\t\t{{ item.meta.lastConnection | date }}\n\t\t</ion-item> -->\n <!-- <ion-item class=\"extra-info\">\n\t\t\t<ion-icon name=\"information-circle\"></ion-icon>\n &nbsp;\n v{{ item.config.version }}\n\t\t</ion-item> -->\n <ion-item class=\"extra-info\" lines=\"none\">\n <ion-icon color=\"primary\" name=\"hardware-chip\"></ion-icon>\n &nbsp;\n <!-- <ion-label>Serial number</ion-label> -->\n {{ item.config.serialNumber }}\n <ion-badge slot=\"end\">\n {{ item.connection.type }}\n </ion-badge>\n </ion-item>\n <ion-item\n *ngIf=\"item.connection.type === 'mqtt'\"\n class=\"extra-info\"\n lines=\"none\"\n >\n <!-- <ion-label>Last connection</ion-label> -->\n <ion-icon color=\"primary\" name=\"link\"></ion-icon>\n &nbsp;\n <span class=\"\">{{ item.connection.info.endpoint }}</span>\n </ion-item>\n <ion-item\n *ngIf=\"item.connection.type === 'ble'\"\n class=\"extra-info\"\n lines=\"none\"\n >\n <!-- <ion-label>Last connection</ion-label> -->\n <ion-icon color=\"primary\" name=\"link\"></ion-icon>\n &nbsp;\n <span class=\"\">{{ item.connection.info.mac }}</span>\n </ion-item>\n <ion-item\n *ngIf=\"\n item.connection.type === 'socket' ||\n item.connection.type === 'websocket'\n \"\n lines=\"none\"\n class=\"extra-info\"\n >\n <!-- <ion-label>Last connection</ion-label> -->\n <ion-icon color=\"primary\" name=\"link\"></ion-icon>\n &nbsp;\n <span class=\"\">{{ item.connection.info.url }}</span>\n </ion-item>\n <ion-item\n *ngIf=\"item.connection.type === 'wifi'\"\n class=\"extra-info\"\n lines=\"none\"\n >\n <!-- <ion-label>Last connection</ion-label> -->\n <ion-icon color=\"primary\" name=\"link\"></ion-icon>\n &nbsp;\n <span class=\"\">{{ item.connection.info.ssid }}</span>\n </ion-item>\n <!-- <ion-item>\n\t\t\t\t\t<ion-buttons slot=\"end\">\n\t\t\t\t\t\n\t\t\t\t\t\t<ion-button slot=\"end\" color=\"primary\" fill=\"clear\" (click)=\"connect()\">\n\t\t\t\t\t\t\t<ion-icon name=\"log-in\"></ion-icon>\n\t\t\t\t\t\t\t&nbsp; Connect\n\t\t\t\t\t\t</ion-button>\n\t\t\t\t\t</ion-buttons>\n\t\t\t\t</ion-item> -->\n </ion-list>\n</ion-card>\n", styles: [".config-version{font-size:.8em;opacity:.7}.extra-info{font-size:.95em;opacity:.7;padding-top:0;padding-bottom:0;--min-height: 16px}.store-list{padding-top:0}.title{font-size:1.1em}ion-card{cursor:pointer}\n"] }] }], ctorParameters: function () { return [{ type: i1.TapConnectionStoreService }]; }, propDecorators: { item: [{ type: Input }], selected: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLWNvbm5lY3Rpb24tc3RvcmUtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb3RpemUtaW9uaWMvc3JjL2xpYi90YXAtY29ubmVjdC90YXAtY29ubmVjdGlvbi1zdG9yZS90YXAtY29ubmVjdGlvbi1zdG9yZS1pdGVtL3RhcC1jb25uZWN0aW9uLXN0b3JlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW90aXplLWlvbmljL3NyYy9saWIvdGFwLWNvbm5lY3QvdGFwLWNvbm5lY3Rpb24tc3RvcmUvdGFwLWNvbm5lY3Rpb24tc3RvcmUtaXRlbS90YXAtY29ubmVjdGlvbi1zdG9yZS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7O0FBTzVFLE1BQU0sT0FBTywrQkFBK0I7SUFLMUMsWUFBb0IseUJBQW9EO1FBQXBELDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFGOUQsYUFBUSxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO0lBRVcsQ0FBQztJQUU1RSxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7O2dKQWpCVSwrQkFBK0I7b0lBQS9CLCtCQUErQiw4SENWNUMsNnlGQXFGQTs0RkQzRWEsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLDJCQUEyQjtnSEFLNUIsSUFBSTtzQkFBWixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRhcENvbm5lY3Rpb25TdG9yZUl0ZW0gfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBUYXBDb25uZWN0aW9uU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vdGFwLWNvbm5lY3Rpb24tc3RvcmUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RhcC1jb25uZWN0aW9uLXN0b3JlLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFwLWNvbm5lY3Rpb24tc3RvcmUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhcC1jb25uZWN0aW9uLXN0b3JlLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFwQ29ubmVjdGlvblN0b3JlSXRlbUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGl0ZW0/OiBUYXBDb25uZWN0aW9uU3RvcmVJdGVtO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VGFwQ29ubmVjdGlvblN0b3JlSXRlbT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRhcENvbm5lY3Rpb25TdG9yZVNlcnZpY2U6IFRhcENvbm5lY3Rpb25TdG9yZVNlcnZpY2UpIHt9XG5cbiAgY29ubmVjdCgpIHtcbiAgICBpZiAodGhpcy5pdGVtKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodGhpcy5pdGVtKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmUoKSB7XG4gICAgaWYgKHRoaXMuaXRlbSkge1xuICAgICAgdGhpcy50YXBDb25uZWN0aW9uU3RvcmVTZXJ2aWNlLnJlbW92ZSh0aGlzLml0ZW0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGlvbi1jYXJkICpuZ0lmPVwiaXRlbVwiIChjbGljayk9XCJjb25uZWN0KClcIiBbYnV0dG9uXT1cInRydWVcIj5cbiAgPGlvbi1saXN0IGNsYXNzPVwic3RvcmUtbGlzdFwiPlxuICAgIDxpb24taXRlbSBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDRweFwiPlxuICAgICAgJm5ic3A7XG4gICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgaXRlbS5jb25maWcuYXBwTmFtZSB9fTwvc3Bhbj5cbiAgICAgICZuYnNwO1xuICAgICAgPGlvbi1idXR0b24gc2xvdD1cImVuZFwiIGNvbG9yPVwiZGFuZ2VyXCIgZmlsbD1cImNsZWFyXCIgKGNsaWNrKT1cInJlbW92ZSgpXCI+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIj48L2lvbi1pY29uPlxuICAgICAgICA8IS0tICZuYnNwOyBSZW1vdmUgLS0+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24taXRlbT5cbiAgICA8IS0tIDxpb24taXRlbVxuXHRcdFx0Y2xhc3M9XCJleHRyYS1pbmZvXCI+XG5cdFx0XHQ8aW9uLWljb24gbmFtZT1cInRpbWVcIj48L2lvbi1pY29uPlxuXHRcdFx0Jm5ic3A7XG5cdFx0XHR7eyBpdGVtLm1ldGEubGFzdENvbm5lY3Rpb24gfCBkYXRlIH19XG5cdFx0PC9pb24taXRlbT4gLS0+XG4gICAgPCEtLSA8aW9uLWl0ZW0gY2xhc3M9XCJleHRyYS1pbmZvXCI+XG5cdFx0XHQ8aW9uLWljb24gbmFtZT1cImluZm9ybWF0aW9uLWNpcmNsZVwiPjwvaW9uLWljb24+XG4gICAgICAmbmJzcDtcbiAgICAgIHZ7eyBpdGVtLmNvbmZpZy52ZXJzaW9uIH19XG5cdFx0PC9pb24taXRlbT4gLS0+XG4gICAgPGlvbi1pdGVtIGNsYXNzPVwiZXh0cmEtaW5mb1wiIGxpbmVzPVwibm9uZVwiPlxuICAgICAgPGlvbi1pY29uIGNvbG9yPVwicHJpbWFyeVwiIG5hbWU9XCJoYXJkd2FyZS1jaGlwXCI+PC9pb24taWNvbj5cbiAgICAgICZuYnNwO1xuICAgICAgPCEtLSA8aW9uLWxhYmVsPlNlcmlhbCBudW1iZXI8L2lvbi1sYWJlbD4gLS0+XG4gICAgICB7eyBpdGVtLmNvbmZpZy5zZXJpYWxOdW1iZXIgfX1cbiAgICAgIDxpb24tYmFkZ2Ugc2xvdD1cImVuZFwiPlxuICAgICAgICB7eyBpdGVtLmNvbm5lY3Rpb24udHlwZSB9fVxuICAgICAgPC9pb24tYmFkZ2U+XG4gICAgPC9pb24taXRlbT5cbiAgICA8aW9uLWl0ZW1cbiAgICAgICpuZ0lmPVwiaXRlbS5jb25uZWN0aW9uLnR5cGUgPT09ICdtcXR0J1wiXG4gICAgICBjbGFzcz1cImV4dHJhLWluZm9cIlxuICAgICAgbGluZXM9XCJub25lXCJcbiAgICA+XG4gICAgICA8IS0tIDxpb24tbGFiZWw+TGFzdCBjb25uZWN0aW9uPC9pb24tbGFiZWw+IC0tPlxuICAgICAgPGlvbi1pY29uIGNvbG9yPVwicHJpbWFyeVwiIG5hbWU9XCJsaW5rXCI+PC9pb24taWNvbj5cbiAgICAgICZuYnNwO1xuICAgICAgPHNwYW4gY2xhc3M9XCJcIj57eyBpdGVtLmNvbm5lY3Rpb24uaW5mby5lbmRwb2ludCB9fTwvc3Bhbj5cbiAgICA8L2lvbi1pdGVtPlxuICAgIDxpb24taXRlbVxuICAgICAgKm5nSWY9XCJpdGVtLmNvbm5lY3Rpb24udHlwZSA9PT0gJ2JsZSdcIlxuICAgICAgY2xhc3M9XCJleHRyYS1pbmZvXCJcbiAgICAgIGxpbmVzPVwibm9uZVwiXG4gICAgPlxuICAgICAgPCEtLSA8aW9uLWxhYmVsPkxhc3QgY29ubmVjdGlvbjwvaW9uLWxhYmVsPiAtLT5cbiAgICAgIDxpb24taWNvbiBjb2xvcj1cInByaW1hcnlcIiBuYW1lPVwibGlua1wiPjwvaW9uLWljb24+XG4gICAgICAmbmJzcDtcbiAgICAgIDxzcGFuIGNsYXNzPVwiXCI+e3sgaXRlbS5jb25uZWN0aW9uLmluZm8ubWFjIH19PC9zcGFuPlxuICAgIDwvaW9uLWl0ZW0+XG4gICAgPGlvbi1pdGVtXG4gICAgICAqbmdJZj1cIlxuICAgICAgICBpdGVtLmNvbm5lY3Rpb24udHlwZSA9PT0gJ3NvY2tldCcgfHxcbiAgICAgICAgaXRlbS5jb25uZWN0aW9uLnR5cGUgPT09ICd3ZWJzb2NrZXQnXG4gICAgICBcIlxuICAgICAgbGluZXM9XCJub25lXCJcbiAgICAgIGNsYXNzPVwiZXh0cmEtaW5mb1wiXG4gICAgPlxuICAgICAgPCEtLSA8aW9uLWxhYmVsPkxhc3QgY29ubmVjdGlvbjwvaW9uLWxhYmVsPiAtLT5cbiAgICAgIDxpb24taWNvbiBjb2xvcj1cInByaW1hcnlcIiBuYW1lPVwibGlua1wiPjwvaW9uLWljb24+XG4gICAgICAmbmJzcDtcbiAgICAgIDxzcGFuIGNsYXNzPVwiXCI+e3sgaXRlbS5jb25uZWN0aW9uLmluZm8udXJsIH19PC9zcGFuPlxuICAgIDwvaW9uLWl0ZW0+XG4gICAgPGlvbi1pdGVtXG4gICAgICAqbmdJZj1cIml0ZW0uY29ubmVjdGlvbi50eXBlID09PSAnd2lmaSdcIlxuICAgICAgY2xhc3M9XCJleHRyYS1pbmZvXCJcbiAgICAgIGxpbmVzPVwibm9uZVwiXG4gICAgPlxuICAgICAgPCEtLSA8aW9uLWxhYmVsPkxhc3QgY29ubmVjdGlvbjwvaW9uLWxhYmVsPiAtLT5cbiAgICAgIDxpb24taWNvbiBjb2xvcj1cInByaW1hcnlcIiBuYW1lPVwibGlua1wiPjwvaW9uLWljb24+XG4gICAgICAmbmJzcDtcbiAgICAgIDxzcGFuIGNsYXNzPVwiXCI+e3sgaXRlbS5jb25uZWN0aW9uLmluZm8uc3NpZCB9fTwvc3Bhbj5cbiAgICA8L2lvbi1pdGVtPlxuICAgIDwhLS0gPGlvbi1pdGVtPlxuXHRcdFx0XHRcdDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHQ8aW9uLWJ1dHRvbiBzbG90PVwiZW5kXCIgY29sb3I9XCJwcmltYXJ5XCIgZmlsbD1cImNsZWFyXCIgKGNsaWNrKT1cImNvbm5lY3QoKVwiPlxuXHRcdFx0XHRcdFx0XHQ8aW9uLWljb24gbmFtZT1cImxvZy1pblwiPjwvaW9uLWljb24+XG5cdFx0XHRcdFx0XHRcdCZuYnNwOyBDb25uZWN0XG5cdFx0XHRcdFx0XHQ8L2lvbi1idXR0b24+XG5cdFx0XHRcdFx0PC9pb24tYnV0dG9ucz5cblx0XHRcdFx0PC9pb24taXRlbT4gLS0+XG4gIDwvaW9uLWxpc3Q+XG48L2lvbi1jYXJkPlxuIl19