com.phloxui
Version:
PhloxUI Ng2+ Framework
157 lines (156 loc) • 14 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component } from '@angular/core';
import { ConnectionManager } from '../service/ConnectionManager.service';
import { PhloxAppInfoService } from '../service/PhloxAppInfoService.service';
import { I18N } from '../decorator/I18N.decorator';
var /** @type {?} */ TYPE_NAME = "phx-connection-status-pane";
var /** @type {?} */ STATUS_NORMAL = "Your internet connection is normal.";
var /** @type {?} */ STATUS_SLOW = "Your internet connection is quite slow.";
var /** @type {?} */ STATUS_NOT_CONNECT = "Could not connect to the server.";
var /** @type {?} */ TROUBLESHOOT = "troubleshoot";
var ConnectionStatusPane = /** @class */ (function () {
function ConnectionStatusPane(connectionMgr, phloxAppService) {
var _this = this;
this.connectionMgr = connectionMgr;
phloxAppService.getAppInfo().then(function (result) {
_this.connectionMgr.setPhloxAppInfo(result);
});
this.troubleshoot = TROUBLESHOOT;
}
/**
* @return {?}
*/
ConnectionStatusPane.prototype.getSignalBarClass = /**
* @return {?}
*/
function () {
var /** @type {?} */ signalClasses = [];
this._signalPercent = this.getSignalPercent();
if (this._signalPercent !== null && typeof this._signalPercent === 'number') {
if (this._signalPercent > 0) {
if (this._signalPercent >= 1 && this._signalPercent <= 25) {
signalClasses.push('signal-half');
this.statasMessage = this.statasMessage ? this.statasMessage : STATUS_SLOW;
}
else if (this._signalPercent >= 26 && this._signalPercent <= 50) {
signalClasses.push('signal-half');
this.statasMessage = this.statasMessage ? this.statasMessage : STATUS_SLOW;
}
else if (this._signalPercent >= 51 && this._signalPercent <= 75) {
signalClasses.push('signal-full');
this.statasMessage = this.statasMessage ? this.statasMessage : STATUS_NORMAL;
}
else {
// over 76%
signalClasses.push('signal-full');
this.statasMessage = this.statasMessage ? this.statasMessage : STATUS_NORMAL;
}
}
else {
// <= 0 do nothing
signalClasses.push('signal-lost');
this.statasMessage = this.statasMessage ? this.statasMessage : STATUS_NOT_CONNECT;
}
}
return signalClasses;
};
/**
* @return {?}
*/
ConnectionStatusPane.prototype.getSignalPercent = /**
* @return {?}
*/
function () {
// return this.connectionMgr.getConnectionQuality();
return 60;
};
/**
* @return {?}
*/
ConnectionStatusPane.prototype.getStatasMessage = /**
* @return {?}
*/
function () {
return this.statasMessage;
};
/**
* @param {?} statasMessage
* @return {?}
*/
ConnectionStatusPane.prototype.setStatasMessage = /**
* @param {?} statasMessage
* @return {?}
*/
function (statasMessage) {
this.statasMessage = statasMessage;
};
/**
* @return {?}
*/
ConnectionStatusPane.prototype.getTroubleshoot = /**
* @return {?}
*/
function () {
return this.troubleshoot;
};
/**
* @param {?} troubleshoot
* @return {?}
*/
ConnectionStatusPane.prototype.setTroubleshoot = /**
* @param {?} troubleshoot
* @return {?}
*/
function (troubleshoot) {
this.troubleshoot = troubleshoot;
};
ConnectionStatusPane.TYPE_NAME = TYPE_NAME;
ConnectionStatusPane.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: "<div class=\"connection-status-pane\">\n\t<div [attr.class]=\"'status-left ' + getSignalBarClass().join(' ')\"></div>\n\t<div class=\"status-right\">\n\t\t<div [attr.class]=\"'status-message ' + getSignalBarClass().join(' ')\">{{statasMessage}}</div>\n\t\t<div class=\"status-troubleshoot\" *ngIf=\"getSignalPercent()<=50\">{{troubleshoot}}</div>\n\t</div>\n</div>\n"
},] },
];
/** @nocollapse */
ConnectionStatusPane.ctorParameters = function () { return [
{ type: ConnectionManager, },
{ type: PhloxAppInfoService, },
]; };
tslib_1.__decorate([
I18N(),
tslib_1.__metadata("design:type", String)
], ConnectionStatusPane.prototype, "statasMessage", void 0);
tslib_1.__decorate([
I18N(),
tslib_1.__metadata("design:type", String)
], ConnectionStatusPane.prototype, "troubleshoot", void 0);
return ConnectionStatusPane;
}());
export { ConnectionStatusPane };
function ConnectionStatusPane_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
ConnectionStatusPane.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
ConnectionStatusPane.ctorParameters;
/** @type {?} */
ConnectionStatusPane.TYPE_NAME;
/** @type {?} */
ConnectionStatusPane.prototype.statasMessage;
/** @type {?} */
ConnectionStatusPane.prototype.troubleshoot;
/** @type {?} */
ConnectionStatusPane.prototype.connectionMgr;
/** @type {?} */
ConnectionStatusPane.prototype.model;
/** @type {?} */
ConnectionStatusPane.prototype._signalPercent;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29ubmVjdGlvblN0YXR1c1BhbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L0Nvbm5lY3Rpb25TdGF0dXNQYW5lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNELE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQU1uRCxxQkFBTSxTQUFTLEdBQVcsNEJBQTRCLENBQUM7QUFFdkQscUJBQU0sYUFBYSxHQUFXLHFDQUFxQyxDQUFDO0FBQ3BFLHFCQUFNLFdBQVcsR0FBVyx5Q0FBeUMsQ0FBQztBQUN0RSxxQkFBTSxrQkFBa0IsR0FBVyxrQ0FBa0MsQ0FBQztBQUN0RSxxQkFBTSxZQUFZLEdBQVcsY0FBYyxDQUFDOztJQTJCMUMsOEJBQVksYUFBZ0MsRUFBRSxlQUFvQztRQUFsRixpQkFRQztRQVBDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBRW5DLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBQyxNQUFXO1lBQzVDLEtBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzVDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0tBQ2xDOzs7O0lBRU0sZ0RBQWlCOzs7O1FBQ3RCLHFCQUFJLGFBQWEsR0FBYSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUU5QyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztZQUM1RSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDMUQsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7aUJBQzVFO2dCQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2xFLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO2lCQUM1RTtnQkFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNsRSxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztpQkFDOUU7Z0JBQUMsSUFBSSxDQUFDLENBQUM7O29CQUVOLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO2lCQUM5RTthQUNGO1lBQUMsSUFBSSxDQUFDLENBQUM7O2dCQUVOLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUM7YUFDbkY7U0FDRjtRQUVELE1BQU0sQ0FBQyxhQUFhLENBQUM7Ozs7O0lBR2hCLCtDQUFnQjs7Ozs7UUFFckIsTUFBTSxDQUFDLEVBQUUsQ0FBQzs7Ozs7SUFHTCwrQ0FBZ0I7Ozs7UUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7Ozs7OztJQUdyQiwrQ0FBZ0I7Ozs7Y0FBQyxhQUFxQjtRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQzs7Ozs7SUFHOUIsOENBQWU7Ozs7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7Ozs7OztJQUdwQiw4Q0FBZTs7OztjQUFDLFlBQW9CO1FBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDOztxQ0FyRVEsU0FBUzs7Z0JBZHJELFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ25CLFFBQVEsRUFBRSxTQUFTO29CQUNuQixRQUFRLEVBQUUsZ1hBT1g7aUJBQ0E7Ozs7Z0JBMUJRLGlCQUFpQjtnQkFDakIsbUJBQW1COzs7UUE4QnpCLElBQUksRUFBRTs7OztRQUVOLElBQUksRUFBRTs7OytCQWxDVDs7U0E0QmEsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIElucHV0LCBIb3N0TGlzdGVuZXIsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbk1hbmFnZXIgfSBmcm9tICcuLi9zZXJ2aWNlL0Nvbm5lY3Rpb25NYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGhsb3hBcHBJbmZvU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvUGhsb3hBcHBJbmZvU2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOE4gfSBmcm9tICcuLi9kZWNvcmF0b3IvSTE4Ti5kZWNvcmF0b3InO1xuXG5cblxuZGVjbGFyZSB2YXIgJDogYW55O1xuXG5jb25zdCBUWVBFX05BTUU6IHN0cmluZyA9IFwicGh4LWNvbm5lY3Rpb24tc3RhdHVzLXBhbmVcIjtcblxuY29uc3QgU1RBVFVTX05PUk1BTDogc3RyaW5nID0gXCJZb3VyIGludGVybmV0IGNvbm5lY3Rpb24gaXMgbm9ybWFsLlwiO1xuY29uc3QgU1RBVFVTX1NMT1c6IHN0cmluZyA9IFwiWW91ciBpbnRlcm5ldCBjb25uZWN0aW9uIGlzIHF1aXRlIHNsb3cuXCI7XG5jb25zdCBTVEFUVVNfTk9UX0NPTk5FQ1Q6IHN0cmluZyA9IFwiQ291bGQgbm90IGNvbm5lY3QgdG8gdGhlIHNlcnZlci5cIjtcbmNvbnN0IFRST1VCTEVTSE9PVDogc3RyaW5nID0gXCJ0cm91Ymxlc2hvb3RcIjtcblxuQENvbXBvbmVudCh7XG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXG4gIHNlbGVjdG9yOiBUWVBFX05BTUUsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cImNvbm5lY3Rpb24tc3RhdHVzLXBhbmVcIj5cclxuXHQ8ZGl2IFthdHRyLmNsYXNzXT1cIidzdGF0dXMtbGVmdCAnICsgZ2V0U2lnbmFsQmFyQ2xhc3MoKS5qb2luKCcgJylcIj48L2Rpdj5cclxuXHQ8ZGl2IGNsYXNzPVwic3RhdHVzLXJpZ2h0XCI+XHJcblx0XHQ8ZGl2IFthdHRyLmNsYXNzXT1cIidzdGF0dXMtbWVzc2FnZSAnICsgZ2V0U2lnbmFsQmFyQ2xhc3MoKS5qb2luKCcgJylcIj57e3N0YXRhc01lc3NhZ2V9fTwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cInN0YXR1cy10cm91Ymxlc2hvb3RcIiAqbmdJZj1cImdldFNpZ25hbFBlcmNlbnQoKTw9NTBcIj57e3Ryb3VibGVzaG9vdH19PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG5gXG59KVxuZXhwb3J0IGNsYXNzIENvbm5lY3Rpb25TdGF0dXNQYW5lIHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRZUEVfTkFNRTogc3RyaW5nID0gVFlQRV9OQU1FO1xuXG4gIEBJMThOKClcbiAgcHVibGljIHN0YXRhc01lc3NhZ2U6IHN0cmluZztcbiAgQEkxOE4oKVxuICBwdWJsaWMgdHJvdWJsZXNob290OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25uZWN0aW9uTWdyOiBDb25uZWN0aW9uTWFuYWdlcjtcbiAgcHJpdmF0ZSBtb2RlbDogYW55O1xuICBwcml2YXRlIF9zaWduYWxQZXJjZW50OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoY29ubmVjdGlvbk1ncjogQ29ubmVjdGlvbk1hbmFnZXIsIHBobG94QXBwU2VydmljZTogUGhsb3hBcHBJbmZvU2VydmljZSkge1xuICAgIHRoaXMuY29ubmVjdGlvbk1nciA9IGNvbm5lY3Rpb25NZ3I7XG5cbiAgICBwaGxveEFwcFNlcnZpY2UuZ2V0QXBwSW5mbygpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3Rpb25NZ3Iuc2V0UGhsb3hBcHBJbmZvKHJlc3VsdCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnRyb3VibGVzaG9vdCA9IFRST1VCTEVTSE9PVDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTaWduYWxCYXJDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgbGV0IHNpZ25hbENsYXNzZXM6IHN0cmluZ1tdID0gW107XG4gICAgdGhpcy5fc2lnbmFsUGVyY2VudCA9IHRoaXMuZ2V0U2lnbmFsUGVyY2VudCgpO1xuXG4gICAgaWYgKHRoaXMuX3NpZ25hbFBlcmNlbnQgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuX3NpZ25hbFBlcmNlbnQgPT09ICdudW1iZXInKSB7XG4gICAgICBpZiAodGhpcy5fc2lnbmFsUGVyY2VudCA+IDApIHtcbiAgICAgICAgaWYgKHRoaXMuX3NpZ25hbFBlcmNlbnQgPj0gMSAmJiB0aGlzLl9zaWduYWxQZXJjZW50IDw9IDI1KSB7XG4gICAgICAgICAgc2lnbmFsQ2xhc3Nlcy5wdXNoKCdzaWduYWwtaGFsZicpO1xuICAgICAgICAgIHRoaXMuc3RhdGFzTWVzc2FnZSA9IHRoaXMuc3RhdGFzTWVzc2FnZSA/IHRoaXMuc3RhdGFzTWVzc2FnZSA6IFNUQVRVU19TTE9XO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3NpZ25hbFBlcmNlbnQgPj0gMjYgJiYgdGhpcy5fc2lnbmFsUGVyY2VudCA8PSA1MCkge1xuICAgICAgICAgIHNpZ25hbENsYXNzZXMucHVzaCgnc2lnbmFsLWhhbGYnKTtcbiAgICAgICAgICB0aGlzLnN0YXRhc01lc3NhZ2UgPSB0aGlzLnN0YXRhc01lc3NhZ2UgPyB0aGlzLnN0YXRhc01lc3NhZ2UgOiBTVEFUVVNfU0xPVztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9zaWduYWxQZXJjZW50ID49IDUxICYmIHRoaXMuX3NpZ25hbFBlcmNlbnQgPD0gNzUpIHtcbiAgICAgICAgICBzaWduYWxDbGFzc2VzLnB1c2goJ3NpZ25hbC1mdWxsJyk7XG4gICAgICAgICAgdGhpcy5zdGF0YXNNZXNzYWdlID0gdGhpcy5zdGF0YXNNZXNzYWdlID8gdGhpcy5zdGF0YXNNZXNzYWdlIDogU1RBVFVTX05PUk1BTDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBvdmVyIDc2JVxuICAgICAgICAgIHNpZ25hbENsYXNzZXMucHVzaCgnc2lnbmFsLWZ1bGwnKTtcbiAgICAgICAgICB0aGlzLnN0YXRhc01lc3NhZ2UgPSB0aGlzLnN0YXRhc01lc3NhZ2UgPyB0aGlzLnN0YXRhc01lc3NhZ2UgOiBTVEFUVVNfTk9STUFMO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyA8PSAwIGRvIG5vdGhpbmdcbiAgICAgICAgc2lnbmFsQ2xhc3Nlcy5wdXNoKCdzaWduYWwtbG9zdCcpO1xuICAgICAgICB0aGlzLnN0YXRhc01lc3NhZ2UgPSB0aGlzLnN0YXRhc01lc3NhZ2UgPyB0aGlzLnN0YXRhc01lc3NhZ2UgOiBTVEFUVVNfTk9UX0NPTk5FQ1Q7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpZ25hbENsYXNzZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2lnbmFsUGVyY2VudCgpOiBudW1iZXJ7XG4gICAgLy8gcmV0dXJuIHRoaXMuY29ubmVjdGlvbk1nci5nZXRDb25uZWN0aW9uUXVhbGl0eSgpO1xuICAgIHJldHVybiA2MDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdGF0YXNNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGFzTWVzc2FnZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTdGF0YXNNZXNzYWdlKHN0YXRhc01lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGFzTWVzc2FnZSA9IHN0YXRhc01lc3NhZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHJvdWJsZXNob290KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJvdWJsZXNob290O1xuICB9XG5cbiAgcHVibGljIHNldFRyb3VibGVzaG9vdCh0cm91Ymxlc2hvb3Q6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudHJvdWJsZXNob290ID0gdHJvdWJsZXNob290O1xuICB9XG59XG4iXX0=