1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129 | 1×
1×
1×
1×
1×
1×
2×
97×
97×
97×
97×
97×
97×
1×
97×
97×
97×
97×
97×
97×
97×
1×
2×
2×
1×
1×
1×
1×
1×
| (function(global){global.wrappers['/Users/lqez/Dev/summernote/src/js/base/module/ImageDialog.js']=[function(require,module,exports,__dirname,__filename){ "use strict";
exports.__esModule = true;
var jquery_1 = require("jquery");
var env_1 = require("../core/env");
var key_1 = require("../core/key");
var ImageDialog = /** @class */ (function () {
function ImageDialog(context) {
this.context = context;
this.ui = jquery_1["default"].summernote.ui;
this.$body = jquery_1["default"](document.body);
this.$editor = context.layoutInfo.editor;
this.options = context.options;
this.lang = this.options.langInfo;
}
ImageDialog.prototype.initialize = function () {
var $container = this.options.dialogsInBody ? this.$body : this.$editor;
var imageLimitation = '';
Iif (this.options.maximumImageFileSize) {
var unit = Math.floor(Math.log(this.options.maximumImageFileSize) / Math.log(1024));
var readableSize = (this.options.maximumImageFileSize / Math.pow(1024, unit)).toFixed(2) * 1 +
' ' + ' KMGTP'[unit] + 'B';
imageLimitation = "<small>" + (this.lang.image.maximumFileSize + ' : ' + readableSize) + "</small>";
}
var body = [
'<div class="form-group note-form-group note-group-select-from-files">',
'<label class="note-form-label">' + this.lang.image.selectFromFiles + '</label>',
'<input class="note-image-input form-control-file note-form-control note-input" ',
' type="file" name="files" accept="image/*" multiple="multiple" />',
imageLimitation,
'</div>',
'<div class="form-group note-group-image-url" style="overflow:auto;">',
'<label class="note-form-label">' + this.lang.image.url + '</label>',
'<input class="note-image-url form-control note-form-control note-input ',
' col-md-12" type="text" />',
'</div>',
].join('');
var buttonClass = 'btn btn-primary note-btn note-btn-primary note-image-btn';
var footer = "<input type=\"button\" href=\"#\" class=\"" + buttonClass + "\" value=\"" + this.lang.image.insert + "\" disabled>";
this.$dialog = this.ui.dialog({
title: this.lang.image.insert,
fade: this.options.dialogsFade,
body: body,
footer: footer
}).render().appendTo($container);
};
ImageDialog.prototype.destroy = function () {
this.ui.hideDialog(this.$dialog);
this.$dialog.remove();
};
ImageDialog.prototype.bindEnterKey = function ($input, $btn) {
$input.on('keypress', function (event) {
if (event.keyCode === key_1["default"].code.ENTER) {
event.preventDefault();
$btn.trigger('click');
}
});
};
ImageDialog.prototype.show = function () {
var _this = this;
this.context.invoke('editor.saveRange');
this.showImageDialog().then(function (data) {
// [workaround] hide dialog before restore range for IE range focus
_this.ui.hideDialog(_this.$dialog);
_this.context.invoke('editor.restoreRange');
if (typeof data === 'string') { // image url
// If onImageLinkInsert set,
if (_this.options.callbacks.onImageLinkInsert) {
_this.context.triggerEvent('image.link.insert', data);
}
else {
_this.context.invoke('editor.insertImage', data);
}
}
else { // array of files
_this.context.invoke('editor.insertImagesOrCallback', data);
}
}).fail(function () {
_this.context.invoke('editor.restoreRange');
});
};
/**
* show image dialog
*
* @param {jQuery} $dialog
* @return {Promise}
*/
ImageDialog.prototype.showImageDialog = function () {
var _this = this;
return jquery_1["default"].Deferred(function (deferred) {
var $imageInput = _this.$dialog.find('.note-image-input');
var $imageUrl = _this.$dialog.find('.note-image-url');
var $imageBtn = _this.$dialog.find('.note-image-btn');
_this.ui.onDialogShown(_this.$dialog, function () {
_this.context.triggerEvent('dialog.shown');
// Cloning imageInput to clear element.
$imageInput.replaceWith($imageInput.clone().on('change', function (event) {
deferred.resolve(event.target.files || event.target.value);
}).val(''));
$imageBtn.click(function (event) {
event.preventDefault();
deferred.resolve($imageUrl.val());
});
$imageUrl.on('keyup paste', function () {
var url = $imageUrl.val();
_this.ui.toggleBtn($imageBtn, url);
}).val('');
if (!env_1["default"].isSupportTouch) {
$imageUrl.trigger('focus');
}
_this.bindEnterKey($imageUrl, $imageBtn);
});
_this.ui.onDialogHidden(_this.$dialog, function () {
$imageInput.off('change');
$imageUrl.off('keyup paste keypress');
$imageBtn.off('click');
if (deferred.state() === 'pending') {
deferred.reject();
}
});
_this.ui.showDialog(_this.$dialog);
});
};
return ImageDialog;
}());
exports["default"] = ImageDialog;
},'src/js/base/module/ImageDialog.js',{"jquery":"/Users/lqez/Dev/summernote/node_modules/jquery/dist/jquery.js","../core/env":"/Users/lqez/Dev/summernote/src/js/base/core/env.js","../core/key":"/Users/lqez/Dev/summernote/src/js/base/core/key.js"}];})(this);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1hZ2VEaWFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJJbWFnZURpYWxvZy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlDQUF1QjtBQUN2QixtQ0FBOEI7QUFDOUIsbUNBQThCO0FBRTlCO0lBQ0UscUJBQVksT0FBTztRQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsRUFBRSxHQUFHLG1CQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLG1CQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDcEMsQ0FBQztJQUVELGdDQUFVLEdBQVY7UUFDRSxJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUUxRSxJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFO1lBQ3JDLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3RGLElBQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsR0FB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LE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDcEMsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsU0FBUyxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUU7b0JBQzFCLElBQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDNUIsS0FBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRVgsSUFBSSxDQUFDLGdCQUFHLENBQUMsY0FBYyxFQUFFO29CQUN2QixTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUM1QjtnQkFDRCxLQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztZQUVILEtBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEtBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ25DLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztnQkFDdEMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFdkIsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssU0FBUyxFQUFFO29CQUNsQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQ25CO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxLQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0gsa0JBQUM7QUFBRCxDQUFDLEFBbklELElBbUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCBlbnYgZnJvbSAnLi4vY29yZS9lbnYnO1xuaW1wb3J0IGtleSBmcm9tICcuLi9jb3JlL2tleSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEltYWdlRGlhbG9nIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCkge1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgdGhpcy51aSA9ICQuc3VtbWVybm90ZS51aTtcbiAgICB0aGlzLiRib2R5ID0gJChkb2N1bWVudC5ib2R5KTtcbiAgICB0aGlzLiRlZGl0b3IgPSBjb250ZXh0LmxheW91dEluZm8uZWRpdG9yO1xuICAgIHRoaXMub3B0aW9ucyA9IGNvbnRleHQub3B0aW9ucztcbiAgICB0aGlzLmxhbmcgPSB0aGlzLm9wdGlvbnMubGFuZ0luZm87XG4gIH1cblxuICBpbml0aWFsaXplKCkge1xuICAgIGNvbnN0ICRjb250YWluZXIgPSB0aGlzLm9wdGlvbnMuZGlhbG9nc0luQm9keSA/IHRoaXMuJGJvZHkgOiB0aGlzLiRlZGl0b3I7XG5cbiAgICBsZXQgaW1hZ2VMaW1pdGF0aW9uID0gJyc7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYXhpbXVtSW1hZ2VGaWxlU2l6ZSkge1xuICAgICAgY29uc3QgdW5pdCA9IE1hdGguZmxvb3IoTWF0aC5sb2codGhpcy5vcHRpb25zLm1heGltdW1JbWFnZUZpbGVTaXplKSAvIE1hdGgubG9nKDEwMjQpKTtcbiAgICAgIGNvbnN0IHJlYWRhYmxlU2l6ZSA9ICh0aGlzLm9wdGlvbnMubWF4aW11bUltYWdlRmlsZVNpemUgLyBNYXRoLnBvdygxMDI0LCB1bml0KSkudG9GaXhlZCgyKSAqIDEgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICcgJyArICcgS01HVFAnW3VuaXRdICsgJ0InO1xuICAgICAgaW1hZ2VMaW1pdGF0aW9uID0gYDxzbWFsbD4ke3RoaXMubGFuZy5pbWFnZS5tYXhpbXVtRmlsZVNpemUgKyAnIDogJyArIHJlYWRhYmxlU2l6ZX08L3NtYWxsPmA7XG4gICAgfVxuXG4gICAgY29uc3QgYm9keSA9IFtcbiAgICAgICc8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBub3RlLWZvcm0tZ3JvdXAgbm90ZS1ncm91cC1zZWxlY3QtZnJvbS1maWxlc1wiPicsXG4gICAgICAnPGxhYmVsIGNsYXNzPVwibm90ZS1mb3JtLWxhYmVsXCI+JyArIHRoaXMubGFuZy5pbWFnZS5zZWxlY3RGcm9tRmlsZXMgKyAnPC9sYWJlbD4nLFxuICAgICAgJzxpbnB1dCBjbGFzcz1cIm5vdGUtaW1hZ2UtaW5wdXQgZm9ybS1jb250cm9sLWZpbGUgbm90ZS1mb3JtLWNvbnRyb2wgbm90ZS1pbnB1dFwiICcsXG4gICAgICAnIHR5cGU9XCJmaWxlXCIgbmFtZT1cImZpbGVzXCIgYWNjZXB0PVwiaW1hZ2UvKlwiIG11bHRpcGxlPVwibXVsdGlwbGVcIiAvPicsXG4gICAgICBpbWFnZUxpbWl0YXRpb24sXG4gICAgICAnPC9kaXY+JyxcbiAgICAgICc8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBub3RlLWdyb3VwLWltYWdlLXVybFwiIHN0eWxlPVwib3ZlcmZsb3c6YXV0bztcIj4nLFxuICAgICAgJzxsYWJlbCBjbGFzcz1cIm5vdGUtZm9ybS1sYWJlbFwiPicgKyB0aGlzLmxhbmcuaW1hZ2UudXJsICsgJzwvbGFiZWw+JyxcbiAgICAgICc8aW5wdXQgY2xhc3M9XCJub3RlLWltYWdlLXVybCBmb3JtLWNvbnRyb2wgbm90ZS1mb3JtLWNvbnRyb2wgbm90ZS1pbnB1dCAnLFxuICAgICAgJyBjb2wtbWQtMTJcIiB0eXBlPVwidGV4dFwiIC8+JyxcbiAgICAgICc8L2Rpdj4nLFxuICAgIF0uam9pbignJyk7XG4gICAgY29uc3QgYnV0dG9uQ2xhc3MgPSAnYnRuIGJ0bi1wcmltYXJ5IG5vdGUtYnRuIG5vdGUtYnRuLXByaW1hcnkgbm90ZS1pbWFnZS1idG4nO1xuICAgIGNvbnN0IGZvb3RlciA9IGA8aW5wdXQgdHlwZT1cImJ1dHRvblwiIGhyZWY9XCIjXCIgY2xhc3M9XCIke2J1dHRvbkNsYXNzfVwiIHZhbHVlPVwiJHt0aGlzLmxhbmcuaW1hZ2UuaW5zZXJ0fVwiIGRpc2FibGVkPmA7XG5cbiAgICB0aGlzLiRkaWFsb2cgPSB0aGlzLnVpLmRpYWxvZyh7XG4gICAgICB0aXRsZTogdGhpcy5sYW5nLmltYWdlLmluc2VydCxcbiAgICAgIGZhZGU6IHRoaXMub3B0aW9ucy5kaWFsb2dzRmFkZSxcbiAgICAgIGJvZHk6IGJvZHksXG4gICAgICBmb290ZXI6IGZvb3RlcixcbiAgICB9KS5yZW5kZXIoKS5hcHBlbmRUbygkY29udGFpbmVyKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy51aS5oaWRlRGlhbG9nKHRoaXMuJGRpYWxvZyk7XG4gICAgdGhpcy4kZGlhbG9nLnJlbW92ZSgpO1xuICB9XG5cbiAgYmluZEVudGVyS2V5KCRpbnB1dCwgJGJ0bikge1xuICAgICRpbnB1dC5vbigna2V5cHJlc3MnLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBrZXkuY29kZS5FTlRFUikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAkYnRuLnRyaWdnZXIoJ2NsaWNrJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzaG93KCkge1xuICAgIHRoaXMuY29udGV4dC5pbnZva2UoJ2VkaXRvci5zYXZlUmFuZ2UnKTtcbiAgICB0aGlzLnNob3dJbWFnZURpYWxvZygpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgIC8vIFt3b3JrYXJvdW5kXSBoaWRlIGRpYWxvZyBiZWZvcmUgcmVzdG9yZSByYW5nZSBmb3IgSUUgcmFuZ2UgZm9jdXNcbiAgICAgIHRoaXMudWkuaGlkZURpYWxvZyh0aGlzLiRkaWFsb2cpO1xuICAgICAgdGhpcy5jb250ZXh0Lmludm9rZSgnZWRpdG9yLnJlc3RvcmVSYW5nZScpO1xuXG4gICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7IC8vIGltYWdlIHVybFxuICAgICAgICAvLyBJZiBvbkltYWdlTGlua0luc2VydCBzZXQsXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2FsbGJhY2tzLm9uSW1hZ2VMaW5rSW5zZXJ0KSB7XG4gICAgICAgICAgdGhpcy5jb250ZXh0LnRyaWdnZXJFdmVudCgnaW1hZ2UubGluay5pbnNlcnQnLCBkYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNvbnRleHQuaW52b2tlKCdlZGl0b3IuaW5zZXJ0SW1hZ2UnLCBkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHsgLy8gYXJyYXkgb2YgZmlsZXNcbiAgICAgICAgdGhpcy5jb250ZXh0Lmludm9rZSgnZWRpdG9yLmluc2VydEltYWdlc09yQ2FsbGJhY2snLCBkYXRhKTtcbiAgICAgIH1cbiAgICB9KS5mYWlsKCgpID0+IHtcbiAgICAgIHRoaXMuY29udGV4dC5pbnZva2UoJ2VkaXRvci5yZXN0b3JlUmFuZ2UnKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzaG93IGltYWdlIGRpYWxvZ1xuICAgKlxuICAgKiBAcGFyYW0ge2pRdWVyeX0gJGRpYWxvZ1xuICAgKiBAcmV0dXJuIHtQcm9taXNlfVxuICAgKi9cbiAgc2hvd0ltYWdlRGlhbG9nKCkge1xuICAgIHJldHVybiAkLkRlZmVycmVkKChkZWZlcnJlZCkgPT4ge1xuICAgICAgY29uc3QgJGltYWdlSW5wdXQgPSB0aGlzLiRkaWFsb2cuZmluZCgnLm5vdGUtaW1hZ2UtaW5wdXQnKTtcbiAgICAgIGNvbnN0ICRpbWFnZVVybCA9IHRoaXMuJGRpYWxvZy5maW5kKCcubm90ZS1pbWFnZS11cmwnKTtcbiAgICAgIGNvbnN0ICRpbWFnZUJ0biA9IHRoaXMuJGRpYWxvZy5maW5kKCcubm90ZS1pbWFnZS1idG4nKTtcblxuICAgICAgdGhpcy51aS5vbkRpYWxvZ1Nob3duKHRoaXMuJGRpYWxvZywgKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRleHQudHJpZ2dlckV2ZW50KCdkaWFsb2cuc2hvd24nKTtcblxuICAgICAgICAvLyBDbG9uaW5nIGltYWdlSW5wdXQgdG8gY2xlYXIgZWxlbWVudC5cbiAgICAgICAgJGltYWdlSW5wdXQucmVwbGFjZVdpdGgoJGltYWdlSW5wdXQuY2xvbmUoKS5vbignY2hhbmdlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZShldmVudC50YXJnZXQuZmlsZXMgfHwgZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgfSkudmFsKCcnKSk7XG5cbiAgICAgICAgJGltYWdlQnRuLmNsaWNrKChldmVudCkgPT4ge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKCRpbWFnZVVybC52YWwoKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgICRpbWFnZVVybC5vbigna2V5dXAgcGFzdGUnLCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdXJsID0gJGltYWdlVXJsLnZhbCgpO1xuICAgICAgICAgIHRoaXMudWkudG9nZ2xlQnRuKCRpbWFnZUJ0biwgdXJsKTtcbiAgICAgICAgfSkudmFsKCcnKTtcblxuICAgICAgICBpZiAoIWVudi5pc1N1cHBvcnRUb3VjaCkge1xuICAgICAgICAgICRpbWFnZVVybC50cmlnZ2VyKCdmb2N1cycpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmluZEVudGVyS2V5KCRpbWFnZVVybCwgJGltYWdlQnRuKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnVpLm9uRGlhbG9nSGlkZGVuKHRoaXMuJGRpYWxvZywgKCkgPT4ge1xuICAgICAgICAkaW1hZ2VJbnB1dC5vZmYoJ2NoYW5nZScpO1xuICAgICAgICAkaW1hZ2VVcmwub2ZmKCdrZXl1cCBwYXN0ZSBrZXlwcmVzcycpO1xuICAgICAgICAkaW1hZ2VCdG4ub2ZmKCdjbGljaycpO1xuXG4gICAgICAgIGlmIChkZWZlcnJlZC5zdGF0ZSgpID09PSAncGVuZGluZycpIHtcbiAgICAgICAgICBkZWZlcnJlZC5yZWplY3QoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMudWkuc2hvd0RpYWxvZyh0aGlzLiRkaWFsb2cpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|