UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

158 lines 19.5 kB
import { Injectable } from '@angular/core'; import { FetchClient, InventoryService } from '@c8y/client'; import { Router } from '@angular/router'; import { AlertService } from '@c8y/ngx-components'; import * as i0 from "@angular/core"; import * as i1 from "@c8y/client"; import * as i2 from "@angular/router"; import * as i3 from "@c8y/ngx-components"; export class OpcuaService { constructor(client, inventoryService, router, alertService) { this.client = client; this.inventoryService = inventoryService; this.router = router; this.alertService = alertService; this.microserviceUrl = '/service/opcua-mgmt-service/server'; this.deviceTypeProtocolUrl = '/service/opcua-mgmt-service/deviceTypes'; this.header = { 'Content-Type': 'application/json' }; this.binaryService = inventoryService.binary; } getServers(id) { if (id && id.length > 0) { const options = { method: 'GET', headers: this.header }; return this.client.fetch(`${this.microserviceUrl}/${id}`, options); } } createServer(data) { if (this.doesGatewayIdExist(data)) { this.cleanUpPayload(data); const options = { method: 'POST', headers: this.header, body: JSON.stringify(data) }; return this.client.fetch(`${this.microserviceUrl}`, options); } } async updateServer(server) { if (this.doesGatewayIdExist(server) && this.doesIdExist(server)) { this.cleanUpPayload(server); const options = { method: 'POST', headers: this.header, body: JSON.stringify(server) }; const res = await this.client.fetch(`${this.microserviceUrl}`, options); let data; try { data = await res.json(); } catch (e) { // nothing } if (res.status !== 200) { this.alertService.addServerFailure({ data, res }); } else { return data; } } } removeServer(data) { if (this.doesGatewayIdExist(data) && this.doesIdExist(data)) { const options = { method: 'DELETE' }; return this.client.fetch(`${this.microserviceUrl}/${data.gatewayId}/${data.id}`, options); } } getKeystore(binaryId) { if (binaryId && binaryId.length > 0) { return this.inventoryService.detail(binaryId); } return null; } uploadKeystore(file) { if (file && file.size > 0) { return this.binaryService.create(file); } return Promise.reject('Invalid file'); } async updateKeystore(id, file) { if (id && id.length > 0 && file && file.size > 0) { const { res } = await this.removeKeystore(id); if (res && res.status === 204) { return this.uploadKeystore(file); } } return Promise.reject('Invalid file'); } removeKeystore(id) { if (id && id.length > 0) { return this.binaryService.delete(id); } } getMoId() { const currentUrl = this.router.routerState.snapshot.url; const isDevice = new RegExp(/device\/\d+/).test(currentUrl); if (isDevice) { return currentUrl.match(/\d+/)[0]; } return ''; } getId() { const currentUrl = this.router.routerState.snapshot.url; const isDeviceprotocol = new RegExp(/deviceprotocols/).test(currentUrl); if (isDeviceprotocol && RegExp(/\d+$/).test(currentUrl)) { return currentUrl.match(/\d+$/)[0]; } } async getDeviceProtocol(id) { const options = { method: 'GET', headers: this.header }; return this.client.fetch(`${this.deviceTypeProtocolUrl}/${id}`, options); } async updateDeviceProtocol(data) { const options = { method: 'PUT', headers: this.header, body: JSON.stringify(data) }; return this.client.fetch(`${this.deviceTypeProtocolUrl}/${data.id}`, options); } async createDeviceProtocol(data) { const options = { method: 'POST', headers: this.header, body: JSON.stringify(data) }; return this.client.fetch(`${this.deviceTypeProtocolUrl}`, options); } doesGatewayIdExist(data) { return data && data.gatewayId && data.gatewayId.length > 0; } doesIdExist(data) { return data && data.id && data.id.length > 0 && data.id !== 'new'; } cleanUpPayload(data) { if (data) { if (data.id && data.id === 'new') { delete data.id; } if (data.quickInfo) { delete data.quickInfo; } } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OpcuaService, deps: [{ token: i1.FetchClient }, { token: i1.InventoryService }, { token: i2.Router }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OpcuaService }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OpcuaService, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i1.FetchClient }, { type: i1.InventoryService }, { type: i2.Router }, { type: i3.AlertService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BjdWFTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvdG9jb2wtb3BjdWEvb3BjdWFTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBaUIsZ0JBQWdCLEVBQTBCLE1BQU0sYUFBYSxDQUFDO0FBRW5HLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBR25ELE1BQU0sT0FBTyxZQUFZO0lBTXZCLFlBQ1UsTUFBbUIsRUFDbkIsZ0JBQWtDLEVBQ2xDLE1BQWMsRUFDZCxZQUEwQjtRQUgxQixXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBRWxDLElBQUksQ0FBQyxlQUFlLEdBQUcsb0NBQW9DLENBQUM7UUFDNUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLHlDQUF5QyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztJQUMvQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEVBQVU7UUFDbkIsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QixNQUFNLE9BQU8sR0FBa0I7Z0JBQzdCLE1BQU0sRUFBRSxLQUFLO2dCQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTTthQUNyQixDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFH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QUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7U0FDM0IsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU8sa0JBQWtCLENBQUMsSUFBaUI7UUFDMUMsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUFpQjtRQUNuQyxPQUFPLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQztJQUNwRSxDQUFDO0lBRU8sY0FBYyxDQUFDLElBQWlCO1FBQ3RDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2pCLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzsrR0FuS1UsWUFBWTttSEFBWixZQUFZOzs0RkFBWixZQUFZO2tCQUR4QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmV0Y2hDbGllbnQsIElGZXRjaE9wdGlvbnMsIEludmVudG9yeVNlcnZpY2UsIEludmVudG9yeUJpbmFyeVNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBPcGN1YVNlcnZlciB9IGZyb20gJy4vb3BjdWEtc2VydmVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPcGN1YVNlcnZpY2Uge1xuICBwcml2YXRlIGJpbmFyeVNlcnZpY2U6IEludmVudG9yeUJpbmFyeVNlcnZpY2U7XG4gIHByaXZhdGUgbWljcm9zZXJ2aWNlVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgZGV2aWNlVHlwZVByb3RvY29sVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgaGVhZGVyOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjbGllbnQ6IEZldGNoQ2xpZW50LFxuICAgIHByaXZhdGUgaW52ZW50b3J5U2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5taWNyb3NlcnZpY2VVcmwgPSAnL3NlcnZpY2Uvb3BjdWEtbWdtdC1zZXJ2aWNlL3NlcnZlcic7XG4gICAgdGhpcy5kZXZpY2VUeXBlUHJvdG9jb2xVcmwgPSAnL3NlcnZpY2Uvb3BjdWEtbWdtdC1zZXJ2aWNlL2RldmljZVR5cGVzJztcbiAgICB0aGlzLmhlYWRlciA9IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9O1xuICAgIHRoaXMuYmluYXJ5U2VydmljZSA9IGludmVudG9yeVNlcnZpY2UuYmluYXJ5O1xuICB9XG5cbiAgZ2V0U2VydmVycyhpZDogc3RyaW5nKSB7XG4gICAgaWYgKGlkICYmIGlkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG9wdGlvbnM6IElGZXRjaE9wdGlvbnMgPSB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVyXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMuY2xpZW50LmZldGNoKGAke3RoaXMubWljcm9zZXJ2aWNlVXJsfS8ke2lkfWAsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZVNlcnZlcihkYXRhOiBPcGN1YVNlcnZlcikge1xuICAgIGlmICh0aGlzLmRvZXNHYXRld2F5SWRFeGlzdChkYXRhKSkge1xuICAgICAgdGhpcy5jbGVhblVwUGF5bG9hZChkYXRhKTtcbiAgICAgIGNvbnN0IG9wdGlvbnM6IElGZXRjaE9wdGlvbnMgPSB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcixcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0YSlcbiAgICAgIH07XG4gICAgICByZXR1cm4gdGhpcy5jbGllbnQuZmV0Y2goYCR7dGhpcy5taWNyb3NlcnZpY2VVcmx9YCwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlU2VydmVyKHNlcnZlcjogT3BjdWFTZXJ2ZXIpIHtcbiAgICBpZiAodGhpcy5kb2VzR2F0ZXdheUlkRXhpc3Qoc2VydmVyKSAmJiB0aGlzLmRvZXNJZEV4aXN0KHNlcnZlcikpIHtcbiAgICAgIHRoaXMuY2xlYW5VcFBheWxvYWQoc2VydmVyKTtcbiAgICAgIGNvbnN0IG9wdGlvbnM6IElGZXRjaE9wdGlvbnMgPSB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcixcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoc2VydmVyKVxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuY2xpZW50LmZldGNoKGAke3RoaXMubWljcm9zZXJ2aWNlVXJsfWAsIG9wdGlvbnMpO1xuICAgICAgbGV0IGRhdGE7XG4gICAgICB0cnkge1xuICAgICAgICBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gbm90aGluZ1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoeyBkYXRhLCByZXMgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW1vdmVTZXJ2ZXIoZGF0YTogT3BjdWFTZXJ2ZXIpIHtcbiAgICBpZiAodGhpcy5kb2VzR2F0ZXdheUlkRXhpc3QoZGF0YSkgJiYgdGhpcy5kb2VzSWRFeGlzdChkYXRhKSkge1xuICAgICAgY29uc3Qgb3B0aW9uczogSUZldGNoT3B0aW9ucyA9IHtcbiAgICAgICAgbWV0aG9kOiAnREVMRVRFJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiB0aGlzLmNsaWVudC5mZXRjaChgJHt0aGlzLm1pY3Jvc2VydmljZVVybH0vJHtkYXRhLmdhdGV3YXlJZH0vJHtkYXRhLmlkfWAsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGdldEtleXN0b3JlKGJpbmFyeUlkOiBzdHJpbmcpIHtcbiAgICBpZiAoYmluYXJ5SWQgJiYgYmluYXJ5SWQubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5U2VydmljZS5kZXRhaWwoYmluYXJ5SWQpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHVwbG9hZEtleXN0b3JlKGZpbGU6IEZpbGUpIHtcbiAgICBpZiAoZmlsZSAmJiBmaWxlLnNpemUgPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5iaW5hcnlTZXJ2aWNlLmNyZWF0ZShmaWxlKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCdJbnZhbGlkIGZpbGUnKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUtleXN0b3JlKGlkOiBzdHJpbmcsIGZpbGU6IEZpbGUpIHtcbiAgICBpZiAoaWQgJiYgaWQubGVuZ3RoID4gMCAmJiBmaWxlICYmIGZpbGUuc2l6ZSA+IDApIHtcbiAgICAgIGNvbnN0IHsgcmVzIH0gPSBhd2FpdCB0aGlzLnJlbW92ZUtleXN0b3JlKGlkKTtcbiAgICAgIGlmIChyZXMgJiYgcmVzLnN0YXR1cyA9PT0gMjA0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVwbG9hZEtleXN0b3JlKGZpbGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ0ludmFsaWQgZmlsZScpO1xuICB9XG5cbiAgcmVtb3ZlS2V5c3RvcmUoaWQ6IHN0cmluZykge1xuICAgIGlmIChpZCAmJiBpZC5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5iaW5hcnlTZXJ2aWNlLmRlbGV0ZShpZCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9JZCgpIHtcbiAgICBjb25zdCBjdXJyZW50VXJsOiBzdHJpbmcgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmw7XG4gICAgY29uc3QgaXNEZXZpY2U6IGJvb2xlYW4gPSBuZXcgUmVnRXhwKC9kZXZpY2VcXC9cXGQrLykudGVzdChjdXJyZW50VXJsKTtcbiAgICBpZiAoaXNEZXZpY2UpIHtcbiAgICAgIHJldHVybiBjdXJyZW50VXJsLm1hdGNoKC9cXGQrLylbMF07XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldElkKCkge1xuICAgIGNvbnN0IGN1cnJlbnRVcmw6IHN0cmluZyA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybDtcbiAgICBjb25zdCBpc0RldmljZXByb3RvY29sOiBib29sZWFuID0gbmV3IFJlZ0V4cCgvZGV2aWNlcHJvdG9jb2xzLykudGVzdChjdXJyZW50VXJsKTtcbiAgICBpZiAoaXNEZXZpY2Vwcm90b2NvbCAmJiBSZWdFeHAoL1xcZCskLykudGVzdChjdXJyZW50VXJsKSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnRVcmwubWF0Y2goL1xcZCskLylbMF07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0RGV2aWNlUHJvdG9jb2woaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG9wdGlvbnM6IElGZXRjaE9wdGlvbnMgPSB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5mZXRjaChgJHt0aGlzLmRldmljZVR5cGVQcm90b2NvbFVybH0vJHtpZH1gLCBvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZURldmljZVByb3RvY29sKGRhdGEpIHtcbiAgICBjb25zdCBvcHRpb25zOiBJRmV0Y2hPcHRpb25zID0ge1xuICAgICAgbWV0aG9kOiAnUFVUJyxcbiAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVyLFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0YSlcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5mZXRjaChgJHt0aGlzLmRldmljZVR5cGVQcm90b2NvbFVybH0vJHtkYXRhLmlkfWAsIG9wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlRGV2aWNlUHJvdG9jb2woZGF0YSkge1xuICAgIGNvbnN0IG9wdGlvbnM6IElGZXRjaE9wdGlvbnMgPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVyLFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0YSlcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5mZXRjaChgJHt0aGlzLmRldmljZVR5cGVQcm90b2NvbFVybH1gLCBvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgZG9lc0dhdGV3YXlJZEV4aXN0KGRhdGE6IE9wY3VhU2VydmVyKSB7XG4gICAgcmV0dXJuIGRhdGEgJiYgZGF0YS5nYXRld2F5SWQgJiYgZGF0YS5nYXRld2F5SWQubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgZG9lc0lkRXhpc3QoZGF0YTogT3BjdWFTZXJ2ZXIpIHtcbiAgICByZXR1cm4gZGF0YSAmJiBkYXRhLmlkICYmIGRhdGEuaWQubGVuZ3RoID4gMCAmJiBkYXRhLmlkICE9PSAnbmV3JztcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5VcFBheWxvYWQoZGF0YTogT3BjdWFTZXJ2ZXIpIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKGRhdGEuaWQgJiYgZGF0YS5pZCA9PT0gJ25ldycpIHtcbiAgICAgICAgZGVsZXRlIGRhdGEuaWQ7XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS5xdWlja0luZm8pIHtcbiAgICAgICAgZGVsZXRlIGRhdGEucXVpY2tJbmZvO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19