@senx/warpview-editor
Version:
WarpView Editor Elements
87 lines • 15.3 kB
JavaScript
/*
* Copyright 2020 SenX S.A.S.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { GTSLib } from '../../model/gts.lib';
import { Component, Input, ViewEncapsulation } from '@angular/core';
import { Logger } from '../../model/logger';
import { JsonLib } from '../../model/jsonLib';
import * as i0 from "@angular/core";
import * as i1 from "../../model/gts.lib";
import * as i2 from "@angular/common";
export class WarpViewImageResult {
constructor(gtsLib) {
this.gtsLib = gtsLib;
this.config = {};
// tslint:disable-next-line:variable-name
this._theme = 'light';
// tslint:disable-next-line:variable-name
this._debug = false;
this.loading = false;
this.imageList = [];
this.LOG = new Logger(WarpViewImageResult, this._debug);
}
set debug(debug) {
if (typeof debug === 'string') {
debug = 'true' === debug;
}
this._debug = debug;
this.LOG.setDebug(debug);
}
get debug() {
return this._debug;
}
set result(res) {
this._res = res;
this._result = new JsonLib().parse(res || '[]', undefined);
this.loading = true;
this.LOG.debug(['isArray'], 'The new value of result is: ', res);
if (res && this.gtsLib.isArray(this._result)) {
this.imageList = this._result.filter((v) => {
return ((typeof (v) === 'string') && (String(v).startsWith('data:image/png;base64,')));
});
}
else {
this.imageList = [];
}
this.loading = false;
}
get result() {
return this._res;
}
set theme(newValue) {
this._theme = newValue;
}
get theme() {
return this._theme;
}
isArray(arr) {
return this.gtsLib.isArray(arr);
}
}
WarpViewImageResult.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: WarpViewImageResult, deps: [{ token: i1.GTSLib }], target: i0.ɵɵFactoryTarget.Component });
WarpViewImageResult.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: WarpViewImageResult, selector: "warpview-image-result", inputs: { debug: "debug", result: "result", theme: "theme", config: "config" }, ngImport: i0, template: "<!--\n ~ Copyright 2020 SenX S.A.S.\n ~\n ~ Licensed under the Apache License, Version 2.0 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ http://www.apache.org/licenses/LICENSE-2.0\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" BASIS,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div [class]=\"'wrapper-result ' + _theme\">\n <div *ngIf=\"_result && isArray(_result)\" [class]=\"_theme + ' image'\">\n <div *ngFor=\"let img of imageList; let i = index\" class=\"image\"><h2>Image {{i + 1}}</h2>\n <img [src]=\"img\" alt=\"Image\"/>\n </div>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2020 SenX S.A.S.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */:host .wrapper-result{padding:10px}:host img{border-style:solid;border-color:var(--warp-view-image-border-color, #404040);border-width:1.1px;background-color:#fff;background-image:linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef),linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef);background-position:0 0,10px 10px;background-size:21px 21px}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: WarpViewImageResult, decorators: [{
type: Component,
args: [{ selector: 'warpview-image-result', encapsulation: ViewEncapsulation.Emulated, template: "<!--\n ~ Copyright 2020 SenX S.A.S.\n ~\n ~ Licensed under the Apache License, Version 2.0 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ http://www.apache.org/licenses/LICENSE-2.0\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" BASIS,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div [class]=\"'wrapper-result ' + _theme\">\n <div *ngIf=\"_result && isArray(_result)\" [class]=\"_theme + ' image'\">\n <div *ngFor=\"let img of imageList; let i = index\" class=\"image\"><h2>Image {{i + 1}}</h2>\n <img [src]=\"img\" alt=\"Image\"/>\n </div>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2020 SenX S.A.S.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */:host .wrapper-result{padding:10px}:host img{border-style:solid;border-color:var(--warp-view-image-border-color, #404040);border-width:1.1px;background-color:#fff;background-image:linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef),linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef);background-position:0 0,10px 10px;background-size:21px 21px}\n"] }]
}], ctorParameters: function () { return [{ type: i1.GTSLib }]; }, propDecorators: { debug: [{
type: Input
}], result: [{
type: Input
}], theme: [{
type: Input
}], config: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FycC12aWV3LWltYWdlLXJlc3VsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcnB2aWV3LWVkaXRvci1uZy9zcmMvbGliL2VsZW1lbnRzL3dhcnAtdmlldy1pbWFnZS1yZXN1bHQvd2FycC12aWV3LWltYWdlLXJlc3VsdC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcnB2aWV3LWVkaXRvci1uZy9zcmMvbGliL2VsZW1lbnRzL3dhcnAtdmlldy1pbWFnZS1yZXN1bHQvd2FycC12aWV3LWltYWdlLXJlc3VsdC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFRNUMsTUFBTSxPQUFPLG1CQUFtQjtJQXVEOUIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFkekIsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQU03Qix5Q0FBeUM7UUFDekMsV0FBTSxHQUFHLE9BQU8sQ0FBQztRQUNqQix5Q0FBeUM7UUFDekMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQUl2QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBdkRELElBQWEsS0FBSyxDQUFDLEtBQXVCO1FBQ3hDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLEtBQUssR0FBRyxNQUFNLEtBQUssS0FBSyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBYSxNQUFNLENBQUMsR0FBVztRQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSw4QkFBOEIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO2dCQUM5QyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pGLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBYSxLQUFLLENBQUMsUUFBZ0I7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBb0JELE9BQU8sQ0FBQyxHQUFRO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDOztpSEE3RFUsbUJBQW1CO3FHQUFuQixtQkFBbUIsNklDM0JoQyxzNkJBc0JBOzRGREthLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSx1QkFBdUIsaUJBR2xCLGlCQUFpQixDQUFDLFFBQVE7NkZBSTVCLEtBQUs7c0JBQWpCLEtBQUs7Z0JBWU8sTUFBTTtzQkFBbEIsS0FBSztnQkFtQk8sS0FBSztzQkFBakIsS0FBSztnQkFRRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogIENvcHlyaWdodCAyMDIwIFNlblggUy5BLlMuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0dUU0xpYn0gZnJvbSAnLi4vLi4vbW9kZWwvZ3RzLmxpYic7XG5pbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi8uLi9tb2RlbC9sb2dnZXInO1xuaW1wb3J0IHtKc29uTGlifSBmcm9tICcuLi8uLi9tb2RlbC9qc29uTGliJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2FycHZpZXctaW1hZ2UtcmVzdWx0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dhcnAtdmlldy1pbWFnZS1yZXN1bHQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dhcnAtdmlldy1pbWFnZS1yZXN1bHQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZFxufSlcbmV4cG9ydCBjbGFzcyBXYXJwVmlld0ltYWdlUmVzdWx0IHtcblxuICBASW5wdXQoKSBzZXQgZGVidWcoZGVidWc6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIGRlYnVnID09PSAnc3RyaW5nJykge1xuICAgICAgZGVidWcgPSAndHJ1ZScgPT09IGRlYnVnO1xuICAgIH1cbiAgICB0aGlzLl9kZWJ1ZyA9IGRlYnVnO1xuICAgIHRoaXMuTE9HLnNldERlYnVnKGRlYnVnKTtcbiAgfVxuXG4gIGdldCBkZWJ1ZygpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVidWc7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcmVzdWx0KHJlczogc3RyaW5nKSB7XG4gICAgdGhpcy5fcmVzID0gcmVzO1xuICAgIHRoaXMuX3Jlc3VsdCA9IG5ldyBKc29uTGliKCkucGFyc2UocmVzIHx8ICdbXScsIHVuZGVmaW5lZCk7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLkxPRy5kZWJ1ZyhbJ2lzQXJyYXknXSwgJ1RoZSBuZXcgdmFsdWUgb2YgcmVzdWx0IGlzOiAnLCByZXMpO1xuICAgIGlmIChyZXMgJiYgdGhpcy5ndHNMaWIuaXNBcnJheSh0aGlzLl9yZXN1bHQpKSB7XG4gICAgICB0aGlzLmltYWdlTGlzdCA9IHRoaXMuX3Jlc3VsdC5maWx0ZXIoKHY6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gKCh0eXBlb2YgKHYpID09PSAnc3RyaW5nJykgJiYgKFN0cmluZyh2KS5zdGFydHNXaXRoKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsJykpKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmltYWdlTGlzdCA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGdldCByZXN1bHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHRoZW1lKG5ld1ZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90aGVtZSA9IG5ld1ZhbHVlO1xuICB9XG5cbiAgZ2V0IHRoZW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RoZW1lO1xuICB9XG5cbiAgQElucHV0KCkgY29uZmlnOiBvYmplY3QgPSB7fTtcblxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIF9yZXN1bHQ6IGFueVtdO1xuICBfcmVzOiBzdHJpbmc7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIF90aGVtZSA9ICdsaWdodCc7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp2YXJpYWJsZS1uYW1lXG4gIF9kZWJ1ZyA9IGZhbHNlO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIGltYWdlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBMT0c6IExvZ2dlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGd0c0xpYjogR1RTTGliKSB7XG4gICAgdGhpcy5MT0cgPSBuZXcgTG9nZ2VyKFdhcnBWaWV3SW1hZ2VSZXN1bHQsIHRoaXMuX2RlYnVnKTtcbiAgfVxuXG4gIGlzQXJyYXkoYXJyOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5ndHNMaWIuaXNBcnJheShhcnIpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gIENvcHlyaWdodCAyMDIwIFNlblggUy5BLlMuXG4gIH5cbiAgfiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+ICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+ICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICB+XG4gIH4gIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICB+ICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+ICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG48ZGl2IFtjbGFzc109XCInd3JhcHBlci1yZXN1bHQgJyArIF90aGVtZVwiPlxuICA8ZGl2ICpuZ0lmPVwiX3Jlc3VsdCAmJiBpc0FycmF5KF9yZXN1bHQpXCIgW2NsYXNzXT1cIl90aGVtZSArICcgaW1hZ2UnXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgaW1nIG9mIGltYWdlTGlzdDsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiaW1hZ2VcIj48aDI+SW1hZ2Uge3tpICsgMX19PC9oMj5cbiAgICAgIDxpbWcgW3NyY109XCJpbWdcIiBhbHQ9XCJJbWFnZVwiLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==