easy-richtextarea 4.0.26 → 4.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/example.js +315 -304
- package/lib/mixins/event.js +66 -0
- package/lib/operation/delete.js +2 -2
- package/lib/richTextarea.js +152 -230
- package/lib/selection.js +15 -8
- package/package.json +2 -2
- package/src/mixins/event.js +92 -0
- package/src/operation/delete.js +1 -1
- package/src/richTextarea.js +192 -248
- package/src/selection.js +16 -8
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _default;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _eventTypes = require("../eventTypes");
|
|
12
|
+
function onFind(findHandler, element) {
|
|
13
|
+
var eventType = _eventTypes.FIND_EVENT_TYPE, handler = findHandler; ///
|
|
14
|
+
this.addEventListener(eventType, handler, element);
|
|
15
|
+
}
|
|
16
|
+
function onBlur(blurHandler, element) {
|
|
17
|
+
var eventType = _eventTypes.BLUR_EVENT_TYPE, handler = blurHandler; ///
|
|
18
|
+
this.addEventListener(eventType, handler, element);
|
|
19
|
+
}
|
|
20
|
+
function onFocus(blurHandler, element) {
|
|
21
|
+
var eventType = _eventTypes.FOCUS_EVENT_TYPE, handler = blurHandler; ///
|
|
22
|
+
this.addEventListener(eventType, handler, element);
|
|
23
|
+
}
|
|
24
|
+
function onScroll(scrollHandler, element) {
|
|
25
|
+
var eventType = _eventTypes.SCROLL_EVENT_TYPE, handler = scrollHandler; ///
|
|
26
|
+
this.addEventListener(eventType, handler, element);
|
|
27
|
+
}
|
|
28
|
+
function onChange(changeHandler, element) {
|
|
29
|
+
var eventType = _eventTypes.CHANGE_EVENT_TYPE, handler = changeHandler; ///
|
|
30
|
+
this.addEventListener(eventType, handler, element);
|
|
31
|
+
}
|
|
32
|
+
function offFind(findHandler, element) {
|
|
33
|
+
var eventType = _eventTypes.FIND_EVENT_TYPE, handler = findHandler; ///
|
|
34
|
+
this.removeEventListener(eventType, handler, element);
|
|
35
|
+
}
|
|
36
|
+
function offBlur(blurHandler, element) {
|
|
37
|
+
var eventType = _eventTypes.BLUR_EVENT_TYPE, handler = blurHandler; ///
|
|
38
|
+
this.removeEventListener(eventType, handler, element);
|
|
39
|
+
}
|
|
40
|
+
function offFocus(blurHandler, element) {
|
|
41
|
+
var eventType = _eventTypes.FOCUS_EVENT_TYPE, handler = blurHandler; ///
|
|
42
|
+
this.removeEventListener(eventType, handler, element);
|
|
43
|
+
}
|
|
44
|
+
function offScroll(scrollHandler, element) {
|
|
45
|
+
var eventType = _eventTypes.SCROLL_EVENT_TYPE, handler = scrollHandler; ///
|
|
46
|
+
this.removeEventListener(eventType, handler, element);
|
|
47
|
+
}
|
|
48
|
+
function offChange(changeHandler, element) {
|
|
49
|
+
var eventType = _eventTypes.CHANGE_EVENT_TYPE, handler = changeHandler; ///
|
|
50
|
+
this.removeEventListener(eventType, handler, element);
|
|
51
|
+
}
|
|
52
|
+
var eventMixins = {
|
|
53
|
+
onFind: onFind,
|
|
54
|
+
onBlur: onBlur,
|
|
55
|
+
onFocus: onFocus,
|
|
56
|
+
onScroll: onScroll,
|
|
57
|
+
onChange: onChange,
|
|
58
|
+
offFind: offFind,
|
|
59
|
+
offBlur: offBlur,
|
|
60
|
+
offFocus: offFocus,
|
|
61
|
+
offScroll: offScroll,
|
|
62
|
+
offChange: offChange
|
|
63
|
+
};
|
|
64
|
+
var _default = eventMixins;
|
|
65
|
+
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taXhpbnMvZXZlbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEZJTkRfRVZFTlRfVFlQRSxcbiAgICAgICAgIEJMVVJfRVZFTlRfVFlQRSxcbiAgICAgICAgIEZPQ1VTX0VWRU5UX1RZUEUsXG4gICAgICAgICBTQ1JPTExfRVZFTlRfVFlQRSxcbiAgICAgICAgIENIQU5HRV9FVkVOVF9UWVBFIH0gZnJvbSBcIi4uL2V2ZW50VHlwZXNcIjtcblxuZnVuY3Rpb24gb25GaW5kKGZpbmRIYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGV2ZW50VHlwZSA9IEZJTkRfRVZFTlRfVFlQRSxcbiAgICAgICAgaGFuZGxlciA9IGZpbmRIYW5kbGVyOyAgLy8vXG5cbiAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9uQmx1cihibHVySGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXG4gICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xuXG4gIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvbkZvY3VzKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXG4gICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xuXG4gIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvblNjcm9sbChzY3JvbGxIYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFLFxuICAgICAgICBoYW5kbGVyID0gc2Nyb2xsSGFuZGxlcjsgIC8vL1xuXG4gIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvbkNoYW5nZShjaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGV2ZW50VHlwZSA9IENIQU5HRV9FVkVOVF9UWVBFLFxuICAgICAgICBoYW5kbGVyID0gY2hhbmdlSGFuZGxlcjsgIC8vL1xuXG4gIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvZmZGaW5kKGZpbmRIYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGV2ZW50VHlwZSA9IEZJTkRfRVZFTlRfVFlQRSxcbiAgICAgICAgaGFuZGxlciA9IGZpbmRIYW5kbGVyOyAgLy8vXG5cbiAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9mZkJsdXIoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgZXZlbnRUeXBlID0gQkxVUl9FVkVOVF9UWVBFLFxuICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cblxuICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gb2ZmRm9jdXMoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcbiAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcbiAgICAgICAgaGFuZGxlciA9IGJsdXJIYW5kbGVyOyAgLy8vXG5cbiAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIG9mZlNjcm9sbChzY3JvbGxIYW5kbGVyLCBlbGVtZW50KSB7XG4gIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFLFxuICAgICAgICBoYW5kbGVyID0gc2Nyb2xsSGFuZGxlcjsgIC8vL1xuXG4gIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBvZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xuICBjb25zdCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSxcbiAgICAgICAgaGFuZGxlciA9IGNoYW5nZUhhbmRsZXI7ICAvLy9cblxuICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcbn1cblxuY29uc3QgZXZlbnRNaXhpbnMgPSB7XG4gIG9uRmluZCxcbiAgb25CbHVyLFxuICBvbkZvY3VzLFxuICBvblNjcm9sbCxcbiAgb25DaGFuZ2UsXG4gIG9mZkZpbmQsXG4gIG9mZkJsdXIsXG4gIG9mZkZvY3VzLFxuICBvZmZTY3JvbGwsXG4gIG9mZkNoYW5nZVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZXZlbnRNaXhpbnM7XG4iXSwibmFtZXMiOlsib25GaW5kIiwiZmluZEhhbmRsZXIiLCJlbGVtZW50IiwiZXZlbnRUeXBlIiwiRklORF9FVkVOVF9UWVBFIiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbkJsdXIiLCJibHVySGFuZGxlciIsIkJMVVJfRVZFTlRfVFlQRSIsIm9uRm9jdXMiLCJGT0NVU19FVkVOVF9UWVBFIiwib25TY3JvbGwiLCJzY3JvbGxIYW5kbGVyIiwiU0NST0xMX0VWRU5UX1RZUEUiLCJvbkNoYW5nZSIsImNoYW5nZUhhbmRsZXIiLCJDSEFOR0VfRVZFTlRfVFlQRSIsIm9mZkZpbmQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib2ZmQmx1ciIsIm9mZkZvY3VzIiwib2ZmU2Nyb2xsIiwib2ZmQ2hhbmdlIiwiZXZlbnRNaXhpbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQTJGQTs7O2VBQUE7OzswQkFyRmtDO0FBRWxDLFNBQVNBLE9BQU9DLFdBQVcsRUFBRUMsT0FBTyxFQUFFO0lBQ3BDLElBQU1DLFlBQVlDLDJCQUFlLEVBQzNCQyxVQUFVSixhQUFjLEdBQUc7SUFFakMsSUFBSSxDQUFDSyxnQkFBZ0IsQ0FBQ0gsV0FBV0UsU0FBU0g7QUFDNUM7QUFFQSxTQUFTSyxPQUFPQyxXQUFXLEVBQUVOLE9BQU8sRUFBRTtJQUNwQyxJQUFNQyxZQUFZTSwyQkFBZSxFQUMzQkosVUFBVUcsYUFBYyxHQUFHO0lBRWpDLElBQUksQ0FBQ0YsZ0JBQWdCLENBQUNILFdBQVdFLFNBQVNIO0FBQzVDO0FBRUEsU0FBU1EsUUFBUUYsV0FBVyxFQUFFTixPQUFPLEVBQUU7SUFDckMsSUFBTUMsWUFBWVEsNEJBQWdCLEVBQzVCTixVQUFVRyxhQUFjLEdBQUc7SUFFakMsSUFBSSxDQUFDRixnQkFBZ0IsQ0FBQ0gsV0FBV0UsU0FBU0g7QUFDNUM7QUFFQSxTQUFTVSxTQUFTQyxhQUFhLEVBQUVYLE9BQU8sRUFBRTtJQUN4QyxJQUFNQyxZQUFZVyw2QkFBaUIsRUFDN0JULFVBQVVRLGVBQWdCLEdBQUc7SUFFbkMsSUFBSSxDQUFDUCxnQkFBZ0IsQ0FBQ0gsV0FBV0UsU0FBU0g7QUFDNUM7QUFFQSxTQUFTYSxTQUFTQyxhQUFhLEVBQUVkLE9BQU8sRUFBRTtJQUN4QyxJQUFNQyxZQUFZYyw2QkFBaUIsRUFDN0JaLFVBQVVXLGVBQWdCLEdBQUc7SUFFbkMsSUFBSSxDQUFDVixnQkFBZ0IsQ0FBQ0gsV0FBV0UsU0FBU0g7QUFDNUM7QUFFQSxTQUFTZ0IsUUFBUWpCLFdBQVcsRUFBRUMsT0FBTyxFQUFFO0lBQ3JDLElBQU1DLFlBQVlDLDJCQUFlLEVBQzNCQyxVQUFVSixhQUFjLEdBQUc7SUFFakMsSUFBSSxDQUFDa0IsbUJBQW1CLENBQUNoQixXQUFXRSxTQUFTSDtBQUMvQztBQUVBLFNBQVNrQixRQUFRWixXQUFXLEVBQUVOLE9BQU8sRUFBRTtJQUNyQyxJQUFNQyxZQUFZTSwyQkFBZSxFQUMzQkosVUFBVUcsYUFBYyxHQUFHO0lBRWpDLElBQUksQ0FBQ1csbUJBQW1CLENBQUNoQixXQUFXRSxTQUFTSDtBQUMvQztBQUVBLFNBQVNtQixTQUFTYixXQUFXLEVBQUVOLE9BQU8sRUFBRTtJQUN0QyxJQUFNQyxZQUFZUSw0QkFBZ0IsRUFDNUJOLFVBQVVHLGFBQWMsR0FBRztJQUVqQyxJQUFJLENBQUNXLG1CQUFtQixDQUFDaEIsV0FBV0UsU0FBU0g7QUFDL0M7QUFFQSxTQUFTb0IsVUFBVVQsYUFBYSxFQUFFWCxPQUFPLEVBQUU7SUFDekMsSUFBTUMsWUFBWVcsNkJBQWlCLEVBQzdCVCxVQUFVUSxlQUFnQixHQUFHO0lBRW5DLElBQUksQ0FBQ00sbUJBQW1CLENBQUNoQixXQUFXRSxTQUFTSDtBQUMvQztBQUVBLFNBQVNxQixVQUFVUCxhQUFhLEVBQUVkLE9BQU8sRUFBRTtJQUN6QyxJQUFNQyxZQUFZYyw2QkFBaUIsRUFDN0JaLFVBQVVXLGVBQWdCLEdBQUc7SUFFbkMsSUFBSSxDQUFDRyxtQkFBbUIsQ0FBQ2hCLFdBQVdFLFNBQVNIO0FBQy9DO0FBRUEsSUFBTXNCLGNBQWM7SUFDbEJ4QixRQUFBQTtJQUNBTyxRQUFBQTtJQUNBRyxTQUFBQTtJQUNBRSxVQUFBQTtJQUNBRyxVQUFBQTtJQUNBRyxTQUFBQTtJQUNBRSxTQUFBQTtJQUNBQyxVQUFBQTtJQUNBQyxXQUFBQTtJQUNBQyxXQUFBQTtBQUNGO0lBRUEsV0FBZUMifQ==
|
package/lib/operation/delete.js
CHANGED
|
@@ -171,7 +171,7 @@ var DeleteOperation = /*#__PURE__*/ function() {
|
|
|
171
171
|
transformedSelection = selection.shifted(offset1).endPositionShifted(endOffset);
|
|
172
172
|
} else {
|
|
173
173
|
var offset2 = startPosition - selectionStartPosition;
|
|
174
|
-
transformedSelection = selection.
|
|
174
|
+
transformedSelection = selection.emptiedToStart().shifted(offset2);
|
|
175
175
|
}
|
|
176
176
|
} else if (selectionEndPosition > endPosition) {
|
|
177
177
|
var endOffset1 = -contentLength;
|
|
@@ -287,4 +287,4 @@ var DeleteOperation = /*#__PURE__*/ function() {
|
|
|
287
287
|
return DeleteOperation;
|
|
288
288
|
}();
|
|
289
289
|
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVyYXRpb24vZGVsZXRlLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5cclxuaW1wb3J0IEVtcHR5T3BlcmF0aW9uIGZyb20gXCIuLi9vcGVyYXRpb24vZW1wdHlcIjtcclxuXHJcbmltcG9ydCB7IElOU0VSVF9UWVBFLCBERUxFVEVfVFlQRSwgRU1QVFlfVFlQRSB9IGZyb20gXCIuLi90eXBlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGVsZXRlT3BlcmF0aW9uIHtcclxuICBjb25zdHJ1Y3Rvcih0eXBlLCBjb250ZW50LCBwb3NpdGlvbikge1xyXG5cdCAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMuY29udGVudCA9IGNvbnRlbnQ7XHJcbiAgICB0aGlzLnBvc2l0aW9uID0gcG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHlwZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0UG9zaXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbjtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybUNvbnRlbnQoY29udGVudCkge1xyXG4gICAgbGV0IHN0YXJ0LCBlbmQ7XHJcblxyXG4gICAgc3RhcnQgPSAwO1xyXG5cclxuICAgIGVuZCA9IHRoaXMucG9zaXRpb247XHJcblxyXG4gICAgY29uc3QgbGVmdENvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZyhzdGFydCwgZW5kKSxcclxuICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSB0aGlzLmNvbnRlbnQubGVuZ3RoO1xyXG5cclxuICAgIHN0YXJ0ID0gdGhpcy5wb3NpdGlvbiArIGNvbnRlbnRMZW5ndGg7XHJcblxyXG4gICAgY29uc3QgcmlnaHRDb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoc3RhcnQpLFxyXG4gICAgICAgICAgdHJhbnNmb3JtZWRDb250ZW50ID0gbGVmdENvbnRlbnQgKyByaWdodENvbnRlbnQ7XHJcblxyXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkQ29udGVudDtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybU9wZXJhdGlvbihvcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IHR5cGUgPSBvcGVyYXRpb24uZ2V0VHlwZSgpO1xyXG5cclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIElOU0VSVF9UWVBFOlxyXG4gICAgICAgIHJldHVybiAoKHRhdSwgcmhvKSA9PiB7XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA8PSByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFt0YXUuY2xvbmUoKV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodGF1LnBvc2l0aW9uIDwgcmhvLmNvbnRlbnQubGVuZ3RoICsgcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIFt0YXUubGVmdChyaG8pLnNoaWZ0KHRhdSldO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGF1LnBvc2l0aW9uID49IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnNoaWZ0KHRhdSldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pKG9wZXJhdGlvbiwgdGhpcyk7XHJcblxyXG4gICAgICBjYXNlIERFTEVURV9UWVBFOlxyXG4gICAgICAgIHJldHVybiAoKHRhdSwgcmhvKSA9PiB7XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA8IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodGF1LmNvbnRlbnQubGVuZ3RoICsgdGF1LnBvc2l0aW9uIDw9IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbdGF1LmNsb25lKCldO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGF1LmNvbnRlbnQubGVuZ3RoICsgdGF1LnBvc2l0aW9uIDw9IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnRha2VuRnJvbSh0YXUpXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRhdS5jb250ZW50Lmxlbmd0aCArIHRhdS5wb3NpdGlvbiA+IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnNwbGl0KHRhdSldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA9PT0gcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh0YXUuY29udGVudC5sZW5ndGggKyB0YXUucG9zaXRpb24gPD0gcmhvLmNvbnRlbnQubGVuZ3RoICsgcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIFtFbXB0eU9wZXJhdGlvbi5mcm9tTm90aGluZygpXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRhdS5jb250ZW50Lmxlbmd0aCArIHRhdS5wb3NpdGlvbiA+IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnNoaWZ0KHJoby50YWtlbkZyb20odGF1KSldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+PSByaG8uY29udGVudC5sZW5ndGggKyByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtyaG8uc2hpZnQodGF1KV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodGF1LmNvbnRlbnQubGVuZ3RoICsgdGF1LnBvc2l0aW9uIDw9IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbRW1wdHlPcGVyYXRpb24uZnJvbU5vdGhpbmcoKV07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0YXUuY29udGVudC5sZW5ndGggKyB0YXUucG9zaXRpb24gPiByaG8uY29udGVudC5sZW5ndGggKyByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgICByZXR1cm4gW3Joby5zaGlmdChyaG8udGFrZW5Gcm9tKHRhdSkpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KShvcGVyYXRpb24sIHRoaXMpO1xyXG5cclxuICAgICAgY2FzZSBFTVBUWV9UWVBFOlxyXG4gICAgICAgIHJldHVybiAoKHRhdSwgcmhvKSA9PiB7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIFt0YXUuY2xvbmUoKV07XHJcblxyXG4gICAgICAgIH0pKG9wZXJhdGlvbiwgdGhpcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uKSB7XHJcbiAgICBsZXQgdHJhbnNmb3JtZWRTZWxlY3Rpb247XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgY29udGVudExlbmd0aCA9IHRoaXMuY29udGVudC5sZW5ndGgsXHJcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbiwgLy8vXHJcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyBjb250ZW50TGVuZ3RoO1xyXG5cclxuICAgIGlmIChmYWxzZSkge1xyXG4gICAgICAvLy9cclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA+PSBlbmRQb3NpdGlvbikge1xyXG4gICAgICBjb25zdCBvZmZzZXQgPSAtY29udGVudExlbmd0aDtcclxuXHJcbiAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gc2VsZWN0aW9uLnNoaWZ0ZWQob2Zmc2V0KTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA+PSBzdGFydFBvc2l0aW9uKSB7XHJcbiAgICAgIGlmIChzZWxlY3Rpb25FbmRQb3NpdGlvbiA+IGVuZFBvc2l0aW9uKSB7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gc3RhcnRQb3NpdGlvbiAtIHNlbGVjdGlvblN0YXJ0UG9zaXRpb24sXHJcbiAgICAgICAgICAgICAgZW5kT2Zmc2V0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiAtIGVuZFBvc2l0aW9uO1xyXG5cclxuICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5zaGlmdGVkKG9mZnNldCkuZW5kUG9zaXRpb25TaGlmdGVkKGVuZE9mZnNldCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gc3RhcnRQb3NpdGlvbiAtIHNlbGVjdGlvblN0YXJ0UG9zaXRpb247XHJcblxyXG4gICAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gc2VsZWN0aW9uLmVtcHRpZWQoKS5zaGlmdGVkKG9mZnNldCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uRW5kUG9zaXRpb24gPiBlbmRQb3NpdGlvbikge1xyXG4gICAgICBjb25zdCBlbmRPZmZzZXQgPSAtY29udGVudExlbmd0aDtcclxuXHJcbiAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gc2VsZWN0aW9uLmVuZFBvc2l0aW9uU2hpZnRlZChlbmRPZmZzZXQpO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3Rpb25FbmRQb3NpdGlvbiA+IHN0YXJ0UG9zaXRpb24pIHtcclxuICAgICAgY29uc3QgZW5kT2Zmc2V0ID0gc3RhcnRQb3NpdGlvbiAtIHNlbGVjdGlvbkVuZFBvc2l0aW9uO1xyXG5cclxuICAgICAgdHJhbnNmb3JtZWRTZWxlY3Rpb24gPSBzZWxlY3Rpb24uZW5kUG9zaXRpb25TaGlmdGVkKGVuZE9mZnNldCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5jbG9uZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cmFuc2Zvcm1lZFNlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIHNoaWZ0ZWQob2Zmc2V0KSB7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5jb250ZW50LFxyXG4gICAgICAgICAgcG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uICsgb2Zmc2V0LFxyXG4gICAgICAgICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kUG9zaXRpb24oY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBzaGlmdChvcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IGNvbnRlbnRMZW5ndGggPSB0aGlzLmNvbnRlbnQubGVuZ3RoLFxyXG4gICAgICAgICAgb2Zmc2V0ID0gLWNvbnRlbnRMZW5ndGgsXHJcbiAgICAgICAgICBzaGlmdGVkT3BlcmF0aW9uID0gb3BlcmF0aW9uLnNoaWZ0ZWQob2Zmc2V0KTtcclxuXHJcbiAgICByZXR1cm4gc2hpZnRlZE9wZXJhdGlvblxyXG4gIH1cclxuXHJcbiAgdGFrZW5Gcm9tKGRlbGV0ZU9wZXJhdGlvbikge1xyXG4gICAgbGV0IGNvbnRlbnQgPSBkZWxldGVPcGVyYXRpb24uZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHBvc2l0aW9uID0gZGVsZXRlT3BlcmF0aW9uLmdldFBvc2l0aW9uKCk7XHJcblxyXG4gICAgbGV0IGNvbnRlbnRMZW5ndGggPSBjb250ZW50Lmxlbmd0aDtcclxuXHJcbiAgICBpZiAoKHRoaXMucG9zaXRpb24gPiBwb3NpdGlvbikgJiYgKHRoaXMucG9zaXRpb24gKyB0aGlzLmNvbnRlbnQubGVuZ3RoID49IHBvc2l0aW9uICsgY29udGVudExlbmd0aCkpIHtcclxuICAgICAgY29uc3QgY29udGVudExlbmd0aCA9IHRoaXMucG9zaXRpb24gLSBwb3NpdGlvbixcclxuICAgICAgICAgICAgc3RhcnQgPSAwLFxyXG4gICAgICAgICAgICBlbmQgPSBzdGFydCArIGNvbnRlbnRMZW5ndGg7ICAvLy9cclxuXHJcbiAgICAgIGNvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZyhzdGFydCwgZW5kKTtcclxuXHJcbiAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IERlbGV0ZU9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFBvc2l0aW9uKGNvbnRlbnQsIHBvc2l0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoKHRoaXMucG9zaXRpb24gPD0gcG9zaXRpb24pICYmICh0aGlzLnBvc2l0aW9uICsgdGhpcy5jb250ZW50Lmxlbmd0aCA8IHBvc2l0aW9uICsgY29udGVudExlbmd0aCkpIHtcclxuICAgICAgY29udGVudExlbmd0aCA9IChwb3NpdGlvbiArIGNvbnRlbnRMZW5ndGgpIC0gKHRoaXMucG9zaXRpb24gKyB0aGlzLmNvbnRlbnQubGVuZ3RoKTtcclxuXHJcbiAgICAgIGNvbnN0IHN0YXJ0ID0gKHRoaXMucG9zaXRpb24gKyB0aGlzLmNvbnRlbnQubGVuZ3RoKSAtIHBvc2l0aW9uLFxyXG4gICAgICAgICAgICBlbmQgPSBzdGFydCArIGNvbnRlbnRMZW5ndGg7ICAvLy9cclxuXHJcbiAgICAgIHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbiArIHRoaXMuY29udGVudC5sZW5ndGg7XHJcblxyXG4gICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgICBkZWxldGVPcGVyYXRpb24gPSBEZWxldGVPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRQb3NpdGlvbihjb250ZW50LCBwb3NpdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRlbGV0ZU9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHNwbGl0KGRlbGV0ZU9wZXJhdGlvbikge1xyXG4gICAgbGV0IGNvbnRlbnQgPSBkZWxldGVPcGVyYXRpb24uZ2V0Q29udGVudCgpLFxyXG4gICAgICAgIHBvc2l0aW9uID0gZGVsZXRlT3BlcmF0aW9uLmdldFBvc2l0aW9uKCk7XHJcblxyXG4gICAgbGV0IHN0YXJ0LFxyXG4gICAgICAgIGVuZDtcclxuXHJcbiAgICBzdGFydCA9IDA7XHJcblxyXG4gICAgZW5kID0gdGhpcy5wb3NpdGlvbiAtIHBvc2l0aW9uO1xyXG5cclxuICAgIGNvbnN0IGxlZnRDb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgc3RhcnQgPSB0aGlzLnBvc2l0aW9uIC0gcG9zaXRpb24gKyB0aGlzLmNvbnRlbnQubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IHJpZ2h0Q29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKHN0YXJ0KTtcclxuXHJcbiAgICBjb250ZW50ID0gbGVmdENvbnRlbnQgKyByaWdodENvbnRlbnQ7XHJcblxyXG4gICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kUG9zaXRpb24oY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBpbnZlcnQoSW5zZXJ0T3BlcmF0aW9uLCBEZWxldGVPcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IGluc2VydE9wZXJhdGlvbiA9IEluc2VydE9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFBvc2l0aW9uKHRoaXMuY29udGVudCwgdGhpcy5wb3NpdGlvbik7XHJcblxyXG4gICAgcmV0dXJuIGluc2VydE9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIGNsb25lKCkge1xyXG4gICAgY29uc3QgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kUG9zaXRpb24odGhpcy5jb250ZW50LCB0aGlzLnBvc2l0aW9uKTtcclxuXHJcbiAgICByZXR1cm4gZGVsZXRlT3BlcmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgdG9KU09OKCkge1xyXG4gICAgY29uc3QgdHlwZSA9IHRoaXMudHlwZSxcclxuICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLmNvbnRlbnQsXHJcbiAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb24sXHJcbiAgICAgICAgICBqc29uID0ge1xyXG4gICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICBjb250ZW50LFxyXG4gICAgICAgICAgICBwb3NpdGlvbixcclxuICAgICAgICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGpzb247XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUpTT04oanNvbikge1xyXG4gICAgY29uc3QgeyB0eXBlLCBjb250ZW50LCBwb3NpdGlvbiB9ID0ganNvbixcclxuICAgICAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IG5ldyBEZWxldGVPcGVyYXRpb24odHlwZSwgY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUNvbnRlbnRBbmRQb3NpdGlvbihjb250ZW50LCBwb3NpdGlvbikge1xyXG4gICAgY29uc3QgdHlwZSA9IERFTEVURV9UWVBFLCAvLy9cclxuICAgICAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IG5ldyBEZWxldGVPcGVyYXRpb24odHlwZSwgY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24oY29udGVudCwgc2VsZWN0aW9uKSB7XHJcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldFN0YXJ0UG9zaXRpb24oKSxcclxuICAgICAgICAgIGVuZFBvc2l0aW9uID0gc2VsZWN0aW9uLmdldEVuZFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBiZWdpbiA9IHN0YXJ0UG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIGVuZCA9IGVuZFBvc2l0aW9uOyAgLy8vXHJcblxyXG4gICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoYmVnaW4sIGVuZCk7ICAvLy9cclxuXHJcbiAgICBjb25zdCB0eXBlID0gREVMRVRFX1RZUEUsIC8vL1xyXG4gICAgICAgICAgcG9zaXRpb24gPSBzdGFydFBvc2l0aW9uLCAvLy9cclxuICAgICAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IG5ldyBEZWxldGVPcGVyYXRpb24odHlwZSwgY29udGVudCwgcG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG59XHJcbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiRGVsZXRlT3BlcmF0aW9uIiwidHlwZSIsImNvbnRlbnQiLCJwb3NpdGlvbiIsImdldFR5cGUiLCJnZXRDb250ZW50IiwiZ2V0UG9zaXRpb24iLCJ0cmFuc2Zvcm1Db250ZW50Iiwic3RhcnQiLCJlbmQiLCJsZWZ0Q29udGVudCIsInN1YnN0cmluZyIsImNvbnRlbnRMZW5ndGgiLCJsZW5ndGgiLCJyaWdodENvbnRlbnQiLCJ0cmFuc2Zvcm1lZENvbnRlbnQiLCJ0cmFuc2Zvcm1PcGVyYXRpb24iLCJvcGVyYXRpb24iLCJJTlNFUlRfVFlQRSIsInRhdSIsInJobyIsImNsb25lIiwibGVmdCIsInNoaWZ0IiwiREVMRVRFX1RZUEUiLCJ0YWtlbkZyb20iLCJzcGxpdCIsIkVtcHR5T3BlcmF0aW9uIiwiZnJvbU5vdGhpbmciLCJFTVBUWV9UWVBFIiwidHJhbnNmb3JtU2VsZWN0aW9uIiwic2VsZWN0aW9uIiwidHJhbnNmb3JtZWRTZWxlY3Rpb24iLCJzZWxlY3Rpb25TdGFydFBvc2l0aW9uIiwiZ2V0U3RhcnRQb3NpdGlvbiIsInNlbGVjdGlvbkVuZFBvc2l0aW9uIiwiZ2V0RW5kUG9zaXRpb24iLCJzdGFydFBvc2l0aW9uIiwiZW5kUG9zaXRpb24iLCJvZmZzZXQiLCJzaGlmdGVkIiwiZW5kT2Zmc2V0IiwiZW5kUG9zaXRpb25TaGlmdGVkIiwiZW1wdGllZCIsImRlbGV0ZU9wZXJhdGlvbiIsImZyb21Db250ZW50QW5kUG9zaXRpb24iLCJzaGlmdGVkT3BlcmF0aW9uIiwiaW52ZXJ0IiwiSW5zZXJ0T3BlcmF0aW9uIiwiaW5zZXJ0T3BlcmF0aW9uIiwidG9KU09OIiwianNvbiIsImZyb21KU09OIiwiZnJvbUNvbnRlbnRBbmRTZWxlY3Rpb24iLCJiZWdpbiIsInNsaWNlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQU1xQkE7OzswREFKTTtxQkFFMEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEMsSUFBQSxBQUFNQSxnQ0FBTjthQUFNQSxnQkFDUEMsSUFBSSxFQUFFQyxPQUFPLEVBQUVDLFFBQVE7OEJBRGhCSDtRQUVsQixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWCxJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLFFBQVEsR0FBR0E7O2lCQUpDSDs7WUFPbkJJLEtBQUFBO21CQUFBQSxTQUFBQSxVQUFVO2dCQUNSLE9BQU8sSUFBSSxDQUFDSCxJQUFJO1lBQ2xCOzs7WUFFQUksS0FBQUE7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
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVyYXRpb24vZGVsZXRlLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5cclxuaW1wb3J0IEVtcHR5T3BlcmF0aW9uIGZyb20gXCIuLi9vcGVyYXRpb24vZW1wdHlcIjtcclxuXHJcbmltcG9ydCB7IElOU0VSVF9UWVBFLCBERUxFVEVfVFlQRSwgRU1QVFlfVFlQRSB9IGZyb20gXCIuLi90eXBlc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGVsZXRlT3BlcmF0aW9uIHtcclxuICBjb25zdHJ1Y3Rvcih0eXBlLCBjb250ZW50LCBwb3NpdGlvbikge1xyXG5cdCAgdGhpcy50eXBlID0gdHlwZTtcclxuICAgIHRoaXMuY29udGVudCA9IGNvbnRlbnQ7XHJcbiAgICB0aGlzLnBvc2l0aW9uID0gcG9zaXRpb247XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHlwZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0UG9zaXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbjtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybUNvbnRlbnQoY29udGVudCkge1xyXG4gICAgbGV0IHN0YXJ0LCBlbmQ7XHJcblxyXG4gICAgc3RhcnQgPSAwO1xyXG5cclxuICAgIGVuZCA9IHRoaXMucG9zaXRpb247XHJcblxyXG4gICAgY29uc3QgbGVmdENvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZyhzdGFydCwgZW5kKSxcclxuICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSB0aGlzLmNvbnRlbnQubGVuZ3RoO1xyXG5cclxuICAgIHN0YXJ0ID0gdGhpcy5wb3NpdGlvbiArIGNvbnRlbnRMZW5ndGg7XHJcblxyXG4gICAgY29uc3QgcmlnaHRDb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoc3RhcnQpLFxyXG4gICAgICAgICAgdHJhbnNmb3JtZWRDb250ZW50ID0gbGVmdENvbnRlbnQgKyByaWdodENvbnRlbnQ7XHJcblxyXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkQ29udGVudDtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybU9wZXJhdGlvbihvcGVyYXRpb24pIHtcclxuICAgIGNvbnN0IHR5cGUgPSBvcGVyYXRpb24uZ2V0VHlwZSgpO1xyXG5cclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIElOU0VSVF9UWVBFOlxyXG4gICAgICAgIHJldHVybiAoKHRhdSwgcmhvKSA9PiB7XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA8PSByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFt0YXUuY2xvbmUoKV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodGF1LnBvc2l0aW9uIDwgcmhvLmNvbnRlbnQubGVuZ3RoICsgcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIFt0YXUubGVmdChyaG8pLnNoaWZ0KHRhdSldO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGF1LnBvc2l0aW9uID49IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnNoaWZ0KHRhdSldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pKG9wZXJhdGlvbiwgdGhpcyk7XHJcblxyXG4gICAgICBjYXNlIERFTEVURV9UWVBFOlxyXG4gICAgICAgIHJldHVybiAoKHRhdSwgcmhvKSA9PiB7XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA8IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodGF1LmNvbnRlbnQubGVuZ3RoICsgdGF1LnBvc2l0aW9uIDw9IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbdGF1LmNsb25lKCldO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGF1LmNvbnRlbnQubGVuZ3RoICsgdGF1LnBvc2l0aW9uIDw9IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnRha2VuRnJvbSh0YXUpXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRhdS5jb250ZW50Lmxlbmd0aCArIHRhdS5wb3NpdGlvbiA+IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnNwbGl0KHRhdSldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA9PT0gcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh0YXUuY29udGVudC5sZW5ndGggKyB0YXUucG9zaXRpb24gPD0gcmhvLmNvbnRlbnQubGVuZ3RoICsgcmhvLnBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIFtFbXB0eU9wZXJhdGlvbi5mcm9tTm90aGluZygpXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRhdS5jb250ZW50Lmxlbmd0aCArIHRhdS5wb3NpdGlvbiA+IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbcmhvLnNoaWZ0KHJoby50YWtlbkZyb20odGF1KSldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+PSByaG8uY29udGVudC5sZW5ndGggKyByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtyaG8uc2hpZnQodGF1KV07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRhdS5wb3NpdGlvbiA+IHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAodGF1LmNvbnRlbnQubGVuZ3RoICsgdGF1LnBvc2l0aW9uIDw9IHJoby5jb250ZW50Lmxlbmd0aCArIHJoby5wb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHJldHVybiBbRW1wdHlPcGVyYXRpb24uZnJvbU5vdGhpbmcoKV07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0YXUuY29udGVudC5sZW5ndGggKyB0YXUucG9zaXRpb24gPiByaG8uY29udGVudC5sZW5ndGggKyByaG8ucG9zaXRpb24pIHtcclxuICAgICAgICAgICAgICByZXR1cm4gW3Joby5zaGlmdChyaG8udGFrZW5Gcm9tKHRhdSkpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9KShvcGVyYXRpb24sIHRoaXMpO1xyXG5cclxuICAgICAgY2FzZSBFTVBUWV9UWVBFOlxyXG4gICAgICAgIHJldHVybiAoKHRhdSwgcmhvKSA9PiB7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIFt0YXUuY2xvbmUoKV07XHJcblxyXG4gICAgICAgIH0pKG9wZXJhdGlvbiwgdGhpcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmFuc2Zvcm1TZWxlY3Rpb24oc2VsZWN0aW9uKSB7XHJcbiAgICBsZXQgdHJhbnNmb3JtZWRTZWxlY3Rpb247XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25FbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgY29udGVudExlbmd0aCA9IHRoaXMuY29udGVudC5sZW5ndGgsXHJcbiAgICAgICAgICBzdGFydFBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbiwgLy8vXHJcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyBjb250ZW50TGVuZ3RoO1xyXG5cclxuICAgIGlmIChmYWxzZSkge1xyXG4gICAgICAvLy9cclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA+PSBlbmRQb3NpdGlvbikge1xyXG4gICAgICBjb25zdCBvZmZzZXQgPSAtY29udGVudExlbmd0aDtcclxuXHJcbiAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gc2VsZWN0aW9uLnNoaWZ0ZWQob2Zmc2V0KTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiA+PSBzdGFydFBvc2l0aW9uKSB7XHJcbiAgICAgIGlmIChzZWxlY3Rpb25FbmRQb3NpdGlvbiA+IGVuZFBvc2l0aW9uKSB7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gc3RhcnRQb3NpdGlvbiAtIHNlbGVjdGlvblN0YXJ0UG9zaXRpb24sXHJcbiAgICAgICAgICAgICAgZW5kT2Zmc2V0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiAtIGVuZFBvc2l0aW9uO1xyXG5cclxuICAgICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5zaGlmdGVkKG9mZnNldCkuZW5kUG9zaXRpb25TaGlmdGVkKGVuZE9mZnNldCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gc3RhcnRQb3NpdGlvbiAtIHNlbGVjdGlvblN0YXJ0UG9zaXRpb247XHJcblxyXG4gICAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gc2VsZWN0aW9uLmVtcHRpZWRUb1N0YXJ0KCkuc2hpZnRlZChvZmZzZXQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGlvbkVuZFBvc2l0aW9uID4gZW5kUG9zaXRpb24pIHtcclxuICAgICAgY29uc3QgZW5kT2Zmc2V0ID0gLWNvbnRlbnRMZW5ndGg7XHJcblxyXG4gICAgICB0cmFuc2Zvcm1lZFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5lbmRQb3NpdGlvblNoaWZ0ZWQoZW5kT2Zmc2V0KTtcclxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uRW5kUG9zaXRpb24gPiBzdGFydFBvc2l0aW9uKSB7XHJcbiAgICAgIGNvbnN0IGVuZE9mZnNldCA9IHN0YXJ0UG9zaXRpb24gLSBzZWxlY3Rpb25FbmRQb3NpdGlvbjtcclxuXHJcbiAgICAgIHRyYW5zZm9ybWVkU2VsZWN0aW9uID0gc2VsZWN0aW9uLmVuZFBvc2l0aW9uU2hpZnRlZChlbmRPZmZzZXQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdHJhbnNmb3JtZWRTZWxlY3Rpb24gPSBzZWxlY3Rpb24uY2xvbmUoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJhbnNmb3JtZWRTZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBzaGlmdGVkKG9mZnNldCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuY29udGVudCxcclxuICAgICAgICAgIHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbiArIG9mZnNldCxcclxuICAgICAgICAgIGRlbGV0ZU9wZXJhdGlvbiA9IERlbGV0ZU9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFBvc2l0aW9uKGNvbnRlbnQsIHBvc2l0aW9uKTtcclxuXHJcbiAgICByZXR1cm4gZGVsZXRlT3BlcmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgc2hpZnQob3BlcmF0aW9uKSB7XHJcbiAgICBjb25zdCBjb250ZW50TGVuZ3RoID0gdGhpcy5jb250ZW50Lmxlbmd0aCxcclxuICAgICAgICAgIG9mZnNldCA9IC1jb250ZW50TGVuZ3RoLFxyXG4gICAgICAgICAgc2hpZnRlZE9wZXJhdGlvbiA9IG9wZXJhdGlvbi5zaGlmdGVkKG9mZnNldCk7XHJcblxyXG4gICAgcmV0dXJuIHNoaWZ0ZWRPcGVyYXRpb25cclxuICB9XHJcblxyXG4gIHRha2VuRnJvbShkZWxldGVPcGVyYXRpb24pIHtcclxuICAgIGxldCBjb250ZW50ID0gZGVsZXRlT3BlcmF0aW9uLmdldENvbnRlbnQoKSxcclxuICAgICAgICBwb3NpdGlvbiA9IGRlbGV0ZU9wZXJhdGlvbi5nZXRQb3NpdGlvbigpO1xyXG5cclxuICAgIGxldCBjb250ZW50TGVuZ3RoID0gY29udGVudC5sZW5ndGg7XHJcblxyXG4gICAgaWYgKCh0aGlzLnBvc2l0aW9uID4gcG9zaXRpb24pICYmICh0aGlzLnBvc2l0aW9uICsgdGhpcy5jb250ZW50Lmxlbmd0aCA+PSBwb3NpdGlvbiArIGNvbnRlbnRMZW5ndGgpKSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnRMZW5ndGggPSB0aGlzLnBvc2l0aW9uIC0gcG9zaXRpb24sXHJcbiAgICAgICAgICAgIHN0YXJ0ID0gMCxcclxuICAgICAgICAgICAgZW5kID0gc3RhcnQgKyBjb250ZW50TGVuZ3RoOyAgLy8vXHJcblxyXG4gICAgICBjb250ZW50ID0gY29udGVudC5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7XHJcblxyXG4gICAgICBkZWxldGVPcGVyYXRpb24gPSBEZWxldGVPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRQb3NpdGlvbihjb250ZW50LCBwb3NpdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCh0aGlzLnBvc2l0aW9uIDw9IHBvc2l0aW9uKSAmJiAodGhpcy5wb3NpdGlvbiArIHRoaXMuY29udGVudC5sZW5ndGggPCBwb3NpdGlvbiArIGNvbnRlbnRMZW5ndGgpKSB7XHJcbiAgICAgIGNvbnRlbnRMZW5ndGggPSAocG9zaXRpb24gKyBjb250ZW50TGVuZ3RoKSAtICh0aGlzLnBvc2l0aW9uICsgdGhpcy5jb250ZW50Lmxlbmd0aCk7XHJcblxyXG4gICAgICBjb25zdCBzdGFydCA9ICh0aGlzLnBvc2l0aW9uICsgdGhpcy5jb250ZW50Lmxlbmd0aCkgLSBwb3NpdGlvbixcclxuICAgICAgICAgICAgZW5kID0gc3RhcnQgKyBjb250ZW50TGVuZ3RoOyAgLy8vXHJcblxyXG4gICAgICBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb24gKyB0aGlzLmNvbnRlbnQubGVuZ3RoO1xyXG5cclxuICAgICAgY29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpO1xyXG5cclxuICAgICAgZGVsZXRlT3BlcmF0aW9uID0gRGVsZXRlT3BlcmF0aW9uLmZyb21Db250ZW50QW5kUG9zaXRpb24oY29udGVudCwgcG9zaXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZWxldGVPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBzcGxpdChkZWxldGVPcGVyYXRpb24pIHtcclxuICAgIGxldCBjb250ZW50ID0gZGVsZXRlT3BlcmF0aW9uLmdldENvbnRlbnQoKSxcclxuICAgICAgICBwb3NpdGlvbiA9IGRlbGV0ZU9wZXJhdGlvbi5nZXRQb3NpdGlvbigpO1xyXG5cclxuICAgIGxldCBzdGFydCxcclxuICAgICAgICBlbmQ7XHJcblxyXG4gICAgc3RhcnQgPSAwO1xyXG5cclxuICAgIGVuZCA9IHRoaXMucG9zaXRpb24gLSBwb3NpdGlvbjtcclxuXHJcbiAgICBjb25zdCBsZWZ0Q29udGVudCA9IGNvbnRlbnQuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpO1xyXG5cclxuICAgIHN0YXJ0ID0gdGhpcy5wb3NpdGlvbiAtIHBvc2l0aW9uICsgdGhpcy5jb250ZW50Lmxlbmd0aDtcclxuXHJcbiAgICBjb25zdCByaWdodENvbnRlbnQgPSBjb250ZW50LnN1YnN0cmluZyhzdGFydCk7XHJcblxyXG4gICAgY29udGVudCA9IGxlZnRDb250ZW50ICsgcmlnaHRDb250ZW50O1xyXG5cclxuICAgIGRlbGV0ZU9wZXJhdGlvbiA9IERlbGV0ZU9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFBvc2l0aW9uKGNvbnRlbnQsIHBvc2l0aW9uKTtcclxuXHJcbiAgICByZXR1cm4gZGVsZXRlT3BlcmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgaW52ZXJ0KEluc2VydE9wZXJhdGlvbiwgRGVsZXRlT3BlcmF0aW9uKSB7XHJcbiAgICBjb25zdCBpbnNlcnRPcGVyYXRpb24gPSBJbnNlcnRPcGVyYXRpb24uZnJvbUNvbnRlbnRBbmRQb3NpdGlvbih0aGlzLmNvbnRlbnQsIHRoaXMucG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBpbnNlcnRPcGVyYXRpb247XHJcbiAgfVxyXG5cclxuICBjbG9uZSgpIHtcclxuICAgIGNvbnN0IGRlbGV0ZU9wZXJhdGlvbiA9IERlbGV0ZU9wZXJhdGlvbi5mcm9tQ29udGVudEFuZFBvc2l0aW9uKHRoaXMuY29udGVudCwgdGhpcy5wb3NpdGlvbik7XHJcblxyXG4gICAgcmV0dXJuIGRlbGV0ZU9wZXJhdGlvbjtcclxuICB9XHJcblxyXG4gIHRvSlNPTigpIHtcclxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnR5cGUsXHJcbiAgICAgICAgICBjb250ZW50ID0gdGhpcy5jb250ZW50LFxyXG4gICAgICAgICAgcG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uLFxyXG4gICAgICAgICAganNvbiA9IHtcclxuICAgICAgICAgICAgdHlwZSxcclxuICAgICAgICAgICAgY29udGVudCxcclxuICAgICAgICAgICAgcG9zaXRpb24sXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgIHJldHVybiBqc29uO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZyb21KU09OKGpzb24pIHtcclxuICAgIGNvbnN0IHsgdHlwZSwgY29udGVudCwgcG9zaXRpb24gfSA9IGpzb24sXHJcbiAgICAgICAgICBkZWxldGVPcGVyYXRpb24gPSBuZXcgRGVsZXRlT3BlcmF0aW9uKHR5cGUsIGNvbnRlbnQsIHBvc2l0aW9uKTtcclxuXHJcbiAgICByZXR1cm4gZGVsZXRlT3BlcmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZyb21Db250ZW50QW5kUG9zaXRpb24oY29udGVudCwgcG9zaXRpb24pIHtcclxuICAgIGNvbnN0IHR5cGUgPSBERUxFVEVfVFlQRSwgLy8vXHJcbiAgICAgICAgICBkZWxldGVPcGVyYXRpb24gPSBuZXcgRGVsZXRlT3BlcmF0aW9uKHR5cGUsIGNvbnRlbnQsIHBvc2l0aW9uKTtcclxuXHJcbiAgICByZXR1cm4gZGVsZXRlT3BlcmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZyb21Db250ZW50QW5kU2VsZWN0aW9uKGNvbnRlbnQsIHNlbGVjdGlvbikge1xyXG4gICAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRTdGFydFBvc2l0aW9uKCksXHJcbiAgICAgICAgICBlbmRQb3NpdGlvbiA9IHNlbGVjdGlvbi5nZXRFbmRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgYmVnaW4gPSBzdGFydFBvc2l0aW9uLCAgLy8vXHJcbiAgICAgICAgICBlbmQgPSBlbmRQb3NpdGlvbjsgIC8vL1xyXG5cclxuICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKGJlZ2luLCBlbmQpOyAgLy8vXHJcblxyXG4gICAgY29uc3QgdHlwZSA9IERFTEVURV9UWVBFLCAvLy9cclxuICAgICAgICAgIHBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiwgLy8vXHJcbiAgICAgICAgICBkZWxldGVPcGVyYXRpb24gPSBuZXcgRGVsZXRlT3BlcmF0aW9uKHR5cGUsIGNvbnRlbnQsIHBvc2l0aW9uKTtcclxuXHJcbiAgICByZXR1cm4gZGVsZXRlT3BlcmF0aW9uO1xyXG4gIH1cclxufVxyXG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIkRlbGV0ZU9wZXJhdGlvbiIsInR5cGUiLCJjb250ZW50IiwicG9zaXRpb24iLCJnZXRUeXBlIiwiZ2V0Q29udGVudCIsImdldFBvc2l0aW9uIiwidHJhbnNmb3JtQ29udGVudCIsInN0YXJ0IiwiZW5kIiwibGVmdENvbnRlbnQiLCJzdWJzdHJpbmciLCJjb250ZW50TGVuZ3RoIiwibGVuZ3RoIiwicmlnaHRDb250ZW50IiwidHJhbnNmb3JtZWRDb250ZW50IiwidHJhbnNmb3JtT3BlcmF0aW9uIiwib3BlcmF0aW9uIiwiSU5TRVJUX1RZUEUiLCJ0YXUiLCJyaG8iLCJjbG9uZSIsImxlZnQiLCJzaGlmdCIsIkRFTEVURV9UWVBFIiwidGFrZW5Gcm9tIiwic3BsaXQiLCJFbXB0eU9wZXJhdGlvbiIsImZyb21Ob3RoaW5nIiwiRU1QVFlfVFlQRSIsInRyYW5zZm9ybVNlbGVjdGlvbiIsInNlbGVjdGlvbiIsInRyYW5zZm9ybWVkU2VsZWN0aW9uIiwic2VsZWN0aW9uU3RhcnRQb3NpdGlvbiIsImdldFN0YXJ0UG9zaXRpb24iLCJzZWxlY3Rpb25FbmRQb3NpdGlvbiIsImdldEVuZFBvc2l0aW9uIiwic3RhcnRQb3NpdGlvbiIsImVuZFBvc2l0aW9uIiwib2Zmc2V0Iiwic2hpZnRlZCIsImVuZE9mZnNldCIsImVuZFBvc2l0aW9uU2hpZnRlZCIsImVtcHRpZWRUb1N0YXJ0IiwiZGVsZXRlT3BlcmF0aW9uIiwiZnJvbUNvbnRlbnRBbmRQb3NpdGlvbiIsInNoaWZ0ZWRPcGVyYXRpb24iLCJpbnZlcnQiLCJJbnNlcnRPcGVyYXRpb24iLCJpbnNlcnRPcGVyYXRpb24iLCJ0b0pTT04iLCJqc29uIiwiZnJvbUpTT04iLCJmcm9tQ29udGVudEFuZFNlbGVjdGlvbiIsImJlZ2luIiwic2xpY2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBTXFCQTs7OzBEQUpNO3FCQUUwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV0QyxJQUFBLEFBQU1BLGdDQUFOO2FBQU1BLGdCQUNQQyxJQUFJLEVBQUVDLE9BQU8sRUFBRUMsUUFBUTs4QkFEaEJIO1FBRWxCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNYLElBQUksQ0FBQ0MsT0FBTyxHQUFHQTtRQUNmLElBQUksQ0FBQ0MsUUFBUSxHQUFHQTs7aUJBSkNIOztZQU9uQkksS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVU7Z0JBQ1IsT0FBTyxJQUFJLENBQUNILElBQUk7WUFDbEI7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
|