occam-languages 2.2.28 → 2.2.30
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/lib/index.js +5 -1
- package/lib/utilities/continuation.js +20 -2
- package/lib/utilities/pass.js +8 -1
- package/package.json +1 -1
- package/src/index.js +1 -0
- package/src/utilities/continuation.js +15 -1
- package/src/utilities/pass.js +5 -0
package/lib/index.js
CHANGED
|
@@ -72,6 +72,9 @@ _export(exports, {
|
|
|
72
72
|
get nominalUtilities () {
|
|
73
73
|
return _nominal.default;
|
|
74
74
|
},
|
|
75
|
+
get passUtilities () {
|
|
76
|
+
return _pass.default;
|
|
77
|
+
},
|
|
75
78
|
get releaseContextUtilities () {
|
|
76
79
|
return _releaseContext.default;
|
|
77
80
|
},
|
|
@@ -95,6 +98,7 @@ const _nonTerminalNode = /*#__PURE__*/ _interop_require_default(require("./nonTe
|
|
|
95
98
|
const _node = /*#__PURE__*/ _interop_require_default(require("./mixins/node"));
|
|
96
99
|
const _bnf = /*#__PURE__*/ _interop_require_default(require("./utilities/bnf"));
|
|
97
100
|
const _node1 = /*#__PURE__*/ _interop_require_default(require("./utilities/node"));
|
|
101
|
+
const _pass = /*#__PURE__*/ _interop_require_default(require("./utilities/pass"));
|
|
98
102
|
const _furtle = /*#__PURE__*/ _interop_require_default(require("./utilities/furtle"));
|
|
99
103
|
const _nominal = /*#__PURE__*/ _interop_require_default(require("./utilities/nominal"));
|
|
100
104
|
const _breakPoint1 = /*#__PURE__*/ _interop_require_default(require("./utilities/breakPoint"));
|
|
@@ -108,4 +112,4 @@ function _interop_require_default(obj) {
|
|
|
108
112
|
};
|
|
109
113
|
}
|
|
110
114
|
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMb2cgfSBmcm9tIFwiLi9sb2dcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQnJlYWtQb2ludCB9IGZyb20gXCIuL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRmlsZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L2ZpbGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVsZWFzZUNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0L3JlbGVhc2VcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBDb250aW51YXRpb25QYXNzIH0gZnJvbSBcIi4vcGFzcy9jb250aW51YXRpb25cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ29udGludWF0aW9uWmlwUGFzcyB9IGZyb20gXCIuL3Bhc3MvY29udGludWF0aW9uWmlwXCI7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgRnVydGxlTGV4ZXIgfSBmcm9tIFwiLi9mdXJ0bGUvbGV4ZXJcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRnVydGxlUGFyc2VyIH0gZnJvbSBcIi4vZnVydGxlL3BhcnNlclwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb21pbmFsTGV4ZXIgfSBmcm9tIFwiLi9ub21pbmFsL2xleGVyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE5vbWluYWxQYXJzZXIgfSBmcm9tIFwiLi9ub21pbmFsL3BhcnNlclwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIE5vblRlcm1pbmFsTm9kZSB9IGZyb20gXCIuL25vblRlcm1pbmFsTm9kZVwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vZGVNaXhpbnMgfSBmcm9tIFwiLi9taXhpbnMvbm9kZVwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIGJuZlV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9ibmZcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbm9kZVV0aWxpdGllcyB9IGZyb20gXCIuL3V0aWxpdGllcy9ub2RlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHBhc3NVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcGFzc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmdXJ0bGVVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZnVydGxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vbWluYWxVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvbm9taW5hbFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2JyZWFrUG9pbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsZUNvbnRleHRVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvZmlsZUNvbnRleHRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY29udGludWF0aW9uVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2NvbnRpbnVhdGlvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB2ZXJpZmljYXRpb25VdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvdmVyaWZpY2F0aW9uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3JlbGVhc2VDb250ZXh0XCI7XG4iXSwibmFtZXMiOlsiQnJlYWtQb2ludCIsIkNvbnRleHQiLCJDb250aW51YXRpb25QYXNzIiwiQ29udGludWF0aW9uWmlwUGFzcyIsIkVsZW1lbnQiLCJGaWxlQ29udGV4dCIsIkZ1cnRsZUxleGVyIiwiRnVydGxlUGFyc2VyIiwiTG9nIiwiTm9taW5hbExleGVyIiwiTm9taW5hbFBhcnNlciIsIk5vblRlcm1pbmFsTm9kZSIsIlJlbGVhc2VDb250ZXh0IiwiYm5mVXRpbGl0aWVzIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImZpbGVDb250ZXh0VXRpbGl0aWVzIiwiZnVydGxlVXRpbGl0aWVzIiwibm9kZU1peGlucyIsIm5vZGVVdGlsaXRpZXMiLCJub21pbmFsVXRpbGl0aWVzIiwicGFzc1V0aWxpdGllcyIsInJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIiwidmVyaWZpY2F0aW9uVXRpbGl0aWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFLb0JBO2VBQUFBLG1CQUFVOztRQURWQztlQUFBQSxnQkFBTzs7UUFLUEM7ZUFBQUEscUJBQWdCOztRQUNoQkM7ZUFBQUEsd0JBQW1COztRQVBuQkM7ZUFBQUEsZ0JBQU87O1FBR1BDO2VBQUFBLGFBQVc7O1FBTVhDO2VBQUFBLGNBQVc7O1FBQ1hDO2VBQUFBLGVBQVk7O1FBWFpDO2VBQUFBLFlBQUc7O1FBWUhDO2VBQUFBLGVBQVk7O1FBQ1pDO2VBQUFBLGdCQUFhOztRQUViQztlQUFBQSx3QkFBZTs7UUFWZkM7ZUFBQUEsZ0JBQWM7O1FBY2RDO2VBQUFBLFlBQVk7O1FBS1pDO2VBQUFBLG9CQUFtQjs7UUFFbkJDO2VBQUFBLHNCQUFxQjs7UUFEckJDO2VBQUFBLG9CQUFvQjs7UUFIcEJDO2VBQUFBLGVBQWU7O1FBTGZDO2VBQUFBLGFBQVU7O1FBR1ZDO2VBQUFBLGNBQWE7O1FBR2JDO2VBQUFBLGdCQUFnQjs7UUFGaEJDO2VBQUFBLGFBQWE7O1FBT2JDO2VBQUFBLHVCQUF1Qjs7UUFEdkJDO2VBQUFBLHFCQUFxQjs7OzREQTNCVjtnRUFDSTtnRUFDQTttRUFDRzs2REFDQztnRUFDRztxRUFFRTt3RUFDRzs4REFFUjsrREFDQzsrREFDQTtnRUFDQzt3RUFFRTs2REFFTDs0REFFRTs4REFDQzs2REFDQTsrREFDRTtnRUFDQztvRUFDRztvRUFDQztzRUFDQztxRUFDQTt1RUFDRSJ9
|
|
@@ -9,6 +9,9 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
+
get all () {
|
|
13
|
+
return all;
|
|
14
|
+
},
|
|
12
15
|
get backwardsEvery () {
|
|
13
16
|
return backwardsEvery;
|
|
14
17
|
},
|
|
@@ -24,6 +27,9 @@ _export(exports, {
|
|
|
24
27
|
get every () {
|
|
25
28
|
return every;
|
|
26
29
|
},
|
|
30
|
+
get exists () {
|
|
31
|
+
return exists;
|
|
32
|
+
},
|
|
27
33
|
get extract () {
|
|
28
34
|
return extract;
|
|
29
35
|
},
|
|
@@ -446,6 +452,16 @@ function resolve(arrayA, arrayB, callback, ...initialArguments) {
|
|
|
446
452
|
const callbackArguments = initialArguments; ///
|
|
447
453
|
return nextPass(...callbackArguments);
|
|
448
454
|
}
|
|
455
|
+
function all(callbacks, ...initialArguments) {
|
|
456
|
+
return every(callbacks, (callback, ...callbackArguments)=>{
|
|
457
|
+
return callback(...callbackArguments);
|
|
458
|
+
}, ...initialArguments);
|
|
459
|
+
}
|
|
460
|
+
function exists(callbacks, ...initialArguments) {
|
|
461
|
+
return some(callbacks, (callback, ...callbackArguments)=>{
|
|
462
|
+
return callback(...callbackArguments);
|
|
463
|
+
}, ...initialArguments);
|
|
464
|
+
}
|
|
449
465
|
const _default = {
|
|
450
466
|
one,
|
|
451
467
|
some,
|
|
@@ -461,7 +477,9 @@ const _default = {
|
|
|
461
477
|
prune,
|
|
462
478
|
extract,
|
|
463
479
|
match,
|
|
464
|
-
resolve
|
|
480
|
+
resolve,
|
|
481
|
+
all,
|
|
482
|
+
exists
|
|
465
483
|
};
|
|
466
484
|
|
|
467
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBmaWx0ZXI6IGFycmF5RmlsdGVyIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIG9uZShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGxldCBjb3VudCA9IDAsXG4gICAgICBpbmRleCA9IC0xO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBmdW5jdGlvbiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgaW5kZXgrKztcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBjb25zdCBzdWNjZXNzID0gKGNvdW50ID09PSAxKTtcblxuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIGZpbmFsQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2VzcywgLi4uZmluYWxBcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soZWxlbWVudCwgLi4uY2FsbGJhY2tBcmd1bWVudHMsIChzdWNjZXNzLCAuLi5pbnRlcm1lZGlhdGVBcmd1bWVudHMpID0+IHtcbiAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgIGlmIChjb3VudCA9PT0gMSkge1xuICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGZpbmFsQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpbmFsQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWxsYmFja0FyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBjYWxsYmFja0FyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gIHJldHVybiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWUoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBsZXQgaW5kZXggPSAtMTtcblxuICBsZXQgZmluYWxBcmd1bWVudHM7XG5cbiAgZnVuY3Rpb24gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cykge1xuICAgIGluZGV4Kys7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgY29uc3Qgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICBmaW5hbEFyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKGVsZW1lbnQsIC4uLmNhbGxiYWNrQXJndW1lbnRzLCAoc3VjY2VzcywgLi4uaW50ZXJtZWRpYXRlQXJndW1lbnRzKSA9PiB7XG4gICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICBmaW5hbEFyZ3VtZW50cyA9IGludGVybWVkaWF0ZUFyZ3VtZW50czsgLy8vXG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZWFjaChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGxldCBjb3VudCA9IDAsXG4gICAgICBpbmRleCA9IC0xO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBmdW5jdGlvbiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgaW5kZXgrKztcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBjb25zdCBzdWNjZXNzID0gKGNvdW50ID4gMCk7XG5cbiAgICAgIGZpbmFsQXJndW1lbnRzID0gY2FsbGJhY2tBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKGVsZW1lbnQsIC4uLmNhbGxiYWNrQXJndW1lbnRzLCAoc3VjY2VzcywgLi4uaW50ZXJtZWRpYXRlQXJndW1lbnRzKSA9PiB7XG4gICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgZmluYWxBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgY291bnQrKztcblxuICAgICAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbnRlcm1lZGlhdGVBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBjYWxsYmFja0FyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gIHJldHVybiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBjb250aW51YXRpb24gPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgbGV0IGZpbmFsQXJndW1lbnRzO1xuXG4gIGZ1bmN0aW9uIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpIHtcbiAgICBpbmRleCsrO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICBmaW5hbEFyZ3VtZW50cyA9IGNhbGxiYWNrQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKHN1Y2Nlc3MsIC4uLmludGVybWVkaWF0ZUFyZ3VtZW50cykgPT4ge1xuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIGZpbmFsQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2UoYXJyYXksIGluaXRpYWxWYWx1ZSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGxldCBpbmRleCA9IC0xO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBmdW5jdGlvbiBuZXh0KHZhbHVlLCAuLi5jYWxsYmFja0FyZ3VtZW50cykge1xuICAgIGluZGV4Kys7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgZmluYWxBcmd1bWVudHMgPSBjYWxsYmFja0FyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24odmFsdWUsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKGVsZW1lbnQsIHZhbHVlLCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKHZhbHVlLCAuLi5pbnRlcm1lZGlhdGVBcmd1bWVudHMpID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIG5leHQodmFsdWUsIC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHZhbHVlID0gaW5pdGlhbFZhbHVlLCAvLy9cbiAgICAgICAgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dCh2YWx1ZSwgLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yRWFjaChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGxldCBpbmRleCA9IC0xO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBmdW5jdGlvbiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgaW5kZXgrKztcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBmaW5hbEFyZ3VtZW50cyA9IGNhbGxiYWNrQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbiguLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKC4uLmludGVybWVkaWF0ZUFyZ3VtZW50cykgPT4ge1xuICAgICAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbnRlcm1lZGlhdGVBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBjYWxsYmFja0FyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gIHJldHVybiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBsZXQgaW5kZXggPSAtMTtcblxuICBsZXQgZmluYWxBcmd1bWVudHM7XG5cbiAgZnVuY3Rpb24gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cykge1xuICAgIGluZGV4Kys7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgY29uc3Qgc3VjY2VzcyA9IHRydWU7XG5cbiAgICAgIGZpbmFsQXJndW1lbnRzID0gY2FsbGJhY2tBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKGVsZW1lbnQsIC4uLmNhbGxiYWNrQXJndW1lbnRzLCAoc3VjY2VzcywgLi4uaW50ZXJtZWRpYXRlQXJndW1lbnRzKSA9PiB7XG4gICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgZmluYWxBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbnRlcm1lZGlhdGVBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBjYWxsYmFja0FyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gIHJldHVybiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0V2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBjb250aW51YXRpb24gPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgbGV0IGluZGV4ID0gbGVuZ3RoO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBmdW5jdGlvbiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgaW5kZXgtLTtcblxuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICBmaW5hbEFyZ3VtZW50cyA9IGNhbGxiYWNrQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKHN1Y2Nlc3MsIC4uLmludGVybWVkaWF0ZUFyZ3VtZW50cykgPT4ge1xuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIGZpbmFsQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGxldCBpbmRleCA9IC0xO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBmdW5jdGlvbiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgaW5kZXgrKztcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBmaW5hbEFyZ3VtZW50cyA9IGNhbGxiYWNrQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbiguLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKC4uLmludGVybWVkaWF0ZUFyZ3VtZW50cykgPT4ge1xuICAgICAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbnRlcm1lZGlhdGVBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBjYWxsYmFja0FyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gIHJldHVybiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBsZXQgaW5kZXggPSBsZW5ndGg7XG5cbiAgbGV0IGZpbmFsQXJndW1lbnRzO1xuXG4gIGZ1bmN0aW9uIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpIHtcbiAgICBpbmRleC0tO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgZmluYWxBcmd1bWVudHMgPSBjYWxsYmFja0FyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oLi4uZmluYWxBcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soZWxlbWVudCwgLi4uY2FsbGJhY2tBcmd1bWVudHMsICguLi5pbnRlcm1lZGlhdGVBcmd1bWVudHMpID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXIoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBjb25zdCBkZWxldGVkRWxlbWVudHMgPSBbXTtcblxuICBsZXQgaW5kZXggPSBsZW5ndGg7XG5cbiAgbGV0IGZpbmFsQXJndW1lbnRzO1xuXG4gIGZ1bmN0aW9uIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpIHtcbiAgICBpbmRleC0tO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgZmluYWxBcmd1bWVudHMgPSBjYWxsYmFja0FyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVsZXRlZEVsZW1lbnRzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKHBhc3NlZCwgLi4uaW50ZXJtZWRpYXRlQXJndW1lbnRzKSA9PiB7XG4gICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gaW5kZXgsIC8vL1xuICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gZWxlbWVudDsgLy8vXG5cbiAgICAgICAgYXJyYXkuc3BsaWNlKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50KTtcblxuICAgICAgICBkZWxldGVkRWxlbWVudHMudW5zaGlmdChkZWxldGVkRWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGxldCBkZWxldGVkRWxlbWVudDtcblxuICBsZXQgaW5kZXggPSBsZW5ndGg7XG5cbiAgbGV0IGZpbmFsQXJndW1lbnRzO1xuXG4gIGZ1bmN0aW9uIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpIHtcbiAgICBpbmRleC0tO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgZGVsZXRlZEVsZW1lbnQgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGZpbmFsQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVsZXRlZEVsZW1lbnQsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKGVsZW1lbnQsIC4uLmNhbGxiYWNrQXJndW1lbnRzLCAocGFzc2VkLCAuLi5pbnRlcm1lZGlhdGVBcmd1bWVudHMpID0+IHtcbiAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBpbmRleCwgLy8vXG4gICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnQgPSBlbGVtZW50OyAvLy9cblxuICAgICAgICBhcnJheS5zcGxpY2Uoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQpO1xuXG4gICAgICAgIGZpbmFsQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGRlbGV0ZWRFbGVtZW50LCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGxldCBkZWxldGVkRWxlbWVudDtcblxuICBsZXQgaW5kZXggPSBsZW5ndGg7XG5cbiAgbGV0IGZpbmFsQXJndW1lbnRzO1xuXG4gIGZ1bmN0aW9uIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpIHtcbiAgICBpbmRleC0tO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgZGVsZXRlZEVsZW1lbnQgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGZpbmFsQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVsZXRlZEVsZW1lbnQsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKGVsZW1lbnQsIC4uLmNhbGxiYWNrQXJndW1lbnRzLCAocGFzc2VkLCAuLi5pbnRlcm1lZGlhdGVBcmd1bWVudHMpID0+IHtcbiAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IGluZGV4LCAvLy9cbiAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgICBkZWxldGVkRWxlbWVudCA9IGVsZW1lbnQ7IC8vL1xuXG4gICAgICAgIGFycmF5LnNwbGljZShzdGFydEluZGV4LCBkZWxldGVDb3VudCk7XG5cbiAgICAgICAgZmluYWxBcmd1bWVudHMgPSBpbnRlcm1lZGlhdGVBcmd1bWVudHM7IC8vL1xuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVsZXRlZEVsZW1lbnQsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaChhcnJheUEsIGFycmF5QiwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKTtcblxuICBjb25zdCBhcnJheUFMZW5ndGggPSBhcnJheUEubGVuZ3RoLFxuICAgICAgICBhcnJheUJMZW5ndGggPSBhcnJheUIubGVuZ3RoO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBpZiAoYXJyYXlBTGVuZ3RoICE9PSBhcnJheUJMZW5ndGgpIHtcbiAgICBjb25zdCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICBmaW5hbEFyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gIH1cblxuICBjb25zdCBsZW5ndGggPSBhcnJheUFMZW5ndGg7ICAvLy9cblxuICBsZXQgaW5kZXggPSAtMTtcblxuICBmdW5jdGlvbiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgaW5kZXgrKztcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBjb25zdCBzdWNjZXNzID0gdHJ1ZTtcblxuICAgICAgZmluYWxBcmd1bWVudHMgPSBjYWxsYmFja0FyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2VzcywgLi4uZmluYWxBcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRBID0gYXJyYXlBW2luZGV4XSxcbiAgICAgICAgICBlbGVtZW50QiA9IGFycmF5QltpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soZWxlbWVudEEsIGVsZW1lbnRCLCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKHN1Y2Nlc3MsIC4uLmludGVybWVkaWF0ZUFyZ3VtZW50cykgPT4ge1xuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIGZpbmFsQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKGFycmF5QSwgYXJyYXlCLCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBhcnJheUEgPSBbICAvLy9cbiAgICAuLi5hcnJheUFcbiAgXTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBmdW5jdGlvbiBuZXh0UGFzcyguLi5jYWxsYmFja0FyZ3VtZW50cykge1xuICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICBjb25zdCBsZW5ndGggPSBhcnJheUEubGVuZ3RoOyAvLy9cblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICBmaW5hbEFyZ3VtZW50cyA9IGNhbGxiYWNrQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgbGV0IGluZGV4ID0gLTE7XG5cbiAgICBmdW5jdGlvbiBuZXh0RWxlbWVudCguLi5jYWxsYmFja0FyZ3VtZW50cykge1xuICAgICAgaW5kZXgrKztcblxuICAgICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgY29uc3QgZmluYWxBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2VzcywgLi4uZmluYWxBcmd1bWVudHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXJyYXlGaWx0ZXIoYXJyYXlBLCAoZWxlbWVudEEpID0+IHtcbiAgICAgICAgICBjb25zdCBhcnJheUJJbmNsdWRlc0VsZW1lbnRBID0gYXJyYXlCLmluY2x1ZGVzKGVsZW1lbnRBKTtcblxuICAgICAgICAgIGlmICghYXJyYXlCSW5jbHVkZXNFbGVtZW50QSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbmV4dFBhc3MoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZWxlbWVudEEgPSBhcnJheUFbaW5kZXhdO1xuXG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50QSwgLi4uY2FsbGJhY2tBcmd1bWVudHMsIChwYXNzZWQsIC4uLmludGVybWVkaWF0ZUFyZ3VtZW50cykgPT4ge1xuICAgICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAgLy8vXG5cbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRCID0gZWxlbWVudEE7ICAvLy9cblxuICAgICAgICAgICAgYXJyYXlCLnB1c2goZWxlbWVudEIpO1xuXG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbmV4dEVsZW1lbnQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dEVsZW1lbnQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICB9XG5cbiAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dFBhc3MoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG9uZSxcbiAgc29tZSxcbiAgZWFjaCxcbiAgZXZlcnksXG4gIHJlZHVjZSxcbiAgZm9yRWFjaCxcbiAgZm9yd2FyZHNFdmVyeSxcbiAgYmFja3dhcmRzRXZlcnksXG4gIGZvcndhcmRzRm9yRWFjaCxcbiAgYmFja3dhcmRzRm9yRWFjaCxcbiAgZmlsdGVyLFxuICBwcnVuZSxcbiAgZXh0cmFjdCxcbiAgbWF0Y2gsXG4gIHJlc29sdmVcbn07XG4iXSwibmFtZXMiOlsiYmFja3dhcmRzRXZlcnkiLCJiYWNrd2FyZHNGb3JFYWNoIiwiZWFjaCIsImV2ZXJ5IiwiZXh0cmFjdCIsImZpbHRlciIsImZvckVhY2giLCJmb3J3YXJkc0V2ZXJ5IiwiZm9yd2FyZHNGb3JFYWNoIiwibWF0Y2giLCJvbmUiLCJwcnVuZSIsInJlZHVjZSIsInJlc29sdmUiLCJzb21lIiwiYXJyYXlGaWx0ZXIiLCJhcnJheVV0aWxpdGllcyIsImFycmF5IiwiY2FsbGJhY2siLCJpbml0aWFsQXJndW1lbnRzIiwiY29udGludWF0aW9uIiwicG9wIiwibGVuZ3RoIiwiY291bnQiLCJpbmRleCIsImZpbmFsQXJndW1lbnRzIiwibmV4dCIsImNhbGxiYWNrQXJndW1lbnRzIiwic3VjY2VzcyIsImVsZW1lbnQiLCJpbnRlcm1lZGlhdGVBcmd1bWVudHMiLCJpbml0aWFsVmFsdWUiLCJ2YWx1ZSIsImRlbGV0ZWRFbGVtZW50cyIsInBhc3NlZCIsInN0YXJ0SW5kZXgiLCJkZWxldGVDb3VudCIsImRlbGV0ZWRFbGVtZW50Iiwic3BsaWNlIiwidW5zaGlmdCIsInVuZGVmaW5lZCIsImFycmF5QSIsImFycmF5QiIsImFycmF5QUxlbmd0aCIsImFycmF5Qkxlbmd0aCIsImVsZW1lbnRBIiwiZWxlbWVudEIiLCJuZXh0UGFzcyIsIm5leHRFbGVtZW50IiwiYXJyYXlCSW5jbHVkZXNFbGVtZW50QSIsImluY2x1ZGVzIiwicHVzaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBc1JnQkE7ZUFBQUE7O1FBc0VBQztlQUFBQTs7UUFvU2hCO2VBQUE7O1FBamlCZ0JDO2VBQUFBOztRQTBDQUM7ZUFBQUE7O1FBNFVBQztlQUFBQTs7UUExRkFDO2VBQUFBOztRQTNLQUM7ZUFBQUE7O1FBK0JBQztlQUFBQTs7UUE4RUFDO2VBQUFBOztRQXVNQUM7ZUFBQUE7O1FBOWZBQztlQUFBQTs7UUFnYUFDO2VBQUFBOztRQXRQQUM7ZUFBQUE7O1FBd1lBQztlQUFBQTs7UUFoZ0JBQztlQUFBQTs7OzJCQXREZTtBQUUvQixNQUFNLEVBQUVULFFBQVFV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
|
|
485
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGludWF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBmaWx0ZXI6IGFycmF5RmlsdGVyIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGZ1bmN0aW9uIG9uZShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGxldCBjb3VudCA9IDAsXG4gICAgICBpbmRleCA9IC0xO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBmdW5jdGlvbiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgaW5kZXgrKztcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBjb25zdCBzdWNjZXNzID0gKGNvdW50ID09PSAxKTtcblxuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIGZpbmFsQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2VzcywgLi4uZmluYWxBcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soZWxlbWVudCwgLi4uY2FsbGJhY2tBcmd1bWVudHMsIChzdWNjZXNzLCAuLi5pbnRlcm1lZGlhdGVBcmd1bWVudHMpID0+IHtcbiAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgIGlmIChjb3VudCA9PT0gMSkge1xuICAgICAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgICAgIGZpbmFsQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpbmFsQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgICBjb3VudCsrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWxsYmFja0FyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBjYWxsYmFja0FyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gIHJldHVybiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvbWUoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBsZXQgaW5kZXggPSAtMTtcblxuICBsZXQgZmluYWxBcmd1bWVudHM7XG5cbiAgZnVuY3Rpb24gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cykge1xuICAgIGluZGV4Kys7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgY29uc3Qgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICBmaW5hbEFyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKGVsZW1lbnQsIC4uLmNhbGxiYWNrQXJndW1lbnRzLCAoc3VjY2VzcywgLi4uaW50ZXJtZWRpYXRlQXJndW1lbnRzKSA9PiB7XG4gICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICBmaW5hbEFyZ3VtZW50cyA9IGludGVybWVkaWF0ZUFyZ3VtZW50czsgLy8vXG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZWFjaChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGxldCBjb3VudCA9IDAsXG4gICAgICBpbmRleCA9IC0xO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBmdW5jdGlvbiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgaW5kZXgrKztcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBjb25zdCBzdWNjZXNzID0gKGNvdW50ID4gMCk7XG5cbiAgICAgIGZpbmFsQXJndW1lbnRzID0gY2FsbGJhY2tBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKGVsZW1lbnQsIC4uLmNhbGxiYWNrQXJndW1lbnRzLCAoc3VjY2VzcywgLi4uaW50ZXJtZWRpYXRlQXJndW1lbnRzKSA9PiB7XG4gICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgZmluYWxBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgY291bnQrKztcblxuICAgICAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbnRlcm1lZGlhdGVBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBjYWxsYmFja0FyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gIHJldHVybiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBjb250aW51YXRpb24gPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgbGV0IGZpbmFsQXJndW1lbnRzO1xuXG4gIGZ1bmN0aW9uIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpIHtcbiAgICBpbmRleCsrO1xuXG4gICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICBmaW5hbEFyZ3VtZW50cyA9IGNhbGxiYWNrQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKHN1Y2Nlc3MsIC4uLmludGVybWVkaWF0ZUFyZ3VtZW50cykgPT4ge1xuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIGZpbmFsQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWR1Y2UoYXJyYXksIGluaXRpYWxWYWx1ZSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGxldCBpbmRleCA9IC0xO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBmdW5jdGlvbiBuZXh0KHZhbHVlLCAuLi5jYWxsYmFja0FyZ3VtZW50cykge1xuICAgIGluZGV4Kys7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgZmluYWxBcmd1bWVudHMgPSBjYWxsYmFja0FyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24odmFsdWUsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKGVsZW1lbnQsIHZhbHVlLCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKHZhbHVlLCAuLi5pbnRlcm1lZGlhdGVBcmd1bWVudHMpID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIG5leHQodmFsdWUsIC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHZhbHVlID0gaW5pdGlhbFZhbHVlLCAvLy9cbiAgICAgICAgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dCh2YWx1ZSwgLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yRWFjaChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGxldCBpbmRleCA9IC0xO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBmdW5jdGlvbiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgaW5kZXgrKztcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBmaW5hbEFyZ3VtZW50cyA9IGNhbGxiYWNrQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbiguLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKC4uLmludGVybWVkaWF0ZUFyZ3VtZW50cykgPT4ge1xuICAgICAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbnRlcm1lZGlhdGVBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBjYWxsYmFja0FyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gIHJldHVybiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBsZXQgaW5kZXggPSAtMTtcblxuICBsZXQgZmluYWxBcmd1bWVudHM7XG5cbiAgZnVuY3Rpb24gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cykge1xuICAgIGluZGV4Kys7XG5cbiAgICBpZiAoaW5kZXggPT09IGxlbmd0aCkge1xuICAgICAgY29uc3Qgc3VjY2VzcyA9IHRydWU7XG5cbiAgICAgIGZpbmFsQXJndW1lbnRzID0gY2FsbGJhY2tBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKGVsZW1lbnQsIC4uLmNhbGxiYWNrQXJndW1lbnRzLCAoc3VjY2VzcywgLi4uaW50ZXJtZWRpYXRlQXJndW1lbnRzKSA9PiB7XG4gICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgZmluYWxBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN1Y2Nlc3MsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbnRlcm1lZGlhdGVBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBjYWxsYmFja0FyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gIHJldHVybiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0V2ZXJ5KGFycmF5LCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBjb25zdCBjb250aW51YXRpb24gPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgbGV0IGluZGV4ID0gbGVuZ3RoO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBmdW5jdGlvbiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgaW5kZXgtLTtcblxuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICBmaW5hbEFyZ3VtZW50cyA9IGNhbGxiYWNrQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKHN1Y2Nlc3MsIC4uLmludGVybWVkaWF0ZUFyZ3VtZW50cykgPT4ge1xuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIGZpbmFsQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGxldCBpbmRleCA9IC0xO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBmdW5jdGlvbiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgaW5kZXgrKztcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBmaW5hbEFyZ3VtZW50cyA9IGNhbGxiYWNrQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbiguLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKC4uLmludGVybWVkaWF0ZUFyZ3VtZW50cykgPT4ge1xuICAgICAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbnRlcm1lZGlhdGVBcmd1bWVudHM7IC8vL1xuXG4gICAgICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBjYWxsYmFja0FyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gIHJldHVybiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBsZXQgaW5kZXggPSBsZW5ndGg7XG5cbiAgbGV0IGZpbmFsQXJndW1lbnRzO1xuXG4gIGZ1bmN0aW9uIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpIHtcbiAgICBpbmRleC0tO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgZmluYWxBcmd1bWVudHMgPSBjYWxsYmFja0FyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oLi4uZmluYWxBcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soZWxlbWVudCwgLi4uY2FsbGJhY2tBcmd1bWVudHMsICguLi5pbnRlcm1lZGlhdGVBcmd1bWVudHMpID0+IHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXIoYXJyYXksIGNhbGxiYWNrLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IGluaXRpYWxBcmd1bWVudHMucG9wKCksXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBjb25zdCBkZWxldGVkRWxlbWVudHMgPSBbXTtcblxuICBsZXQgaW5kZXggPSBsZW5ndGg7XG5cbiAgbGV0IGZpbmFsQXJndW1lbnRzO1xuXG4gIGZ1bmN0aW9uIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpIHtcbiAgICBpbmRleC0tO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgZmluYWxBcmd1bWVudHMgPSBjYWxsYmFja0FyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVsZXRlZEVsZW1lbnRzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50LCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKHBhc3NlZCwgLi4uaW50ZXJtZWRpYXRlQXJndW1lbnRzKSA9PiB7XG4gICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gaW5kZXgsIC8vL1xuICAgICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50ID0gZWxlbWVudDsgLy8vXG5cbiAgICAgICAgYXJyYXkuc3BsaWNlKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50KTtcblxuICAgICAgICBkZWxldGVkRWxlbWVudHMudW5zaGlmdChkZWxldGVkRWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZShhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGxldCBkZWxldGVkRWxlbWVudDtcblxuICBsZXQgaW5kZXggPSBsZW5ndGg7XG5cbiAgbGV0IGZpbmFsQXJndW1lbnRzO1xuXG4gIGZ1bmN0aW9uIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpIHtcbiAgICBpbmRleC0tO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgZGVsZXRlZEVsZW1lbnQgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGZpbmFsQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVsZXRlZEVsZW1lbnQsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKGVsZW1lbnQsIC4uLmNhbGxiYWNrQXJndW1lbnRzLCAocGFzc2VkLCAuLi5pbnRlcm1lZGlhdGVBcmd1bWVudHMpID0+IHtcbiAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBpbmRleCwgLy8vXG4gICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnQgPSBlbGVtZW50OyAvLy9cblxuICAgICAgICBhcnJheS5zcGxpY2Uoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQpO1xuXG4gICAgICAgIGZpbmFsQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGRlbGV0ZWRFbGVtZW50LCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdChhcnJheSwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGxldCBkZWxldGVkRWxlbWVudDtcblxuICBsZXQgaW5kZXggPSBsZW5ndGg7XG5cbiAgbGV0IGZpbmFsQXJndW1lbnRzO1xuXG4gIGZ1bmN0aW9uIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpIHtcbiAgICBpbmRleC0tO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgZGVsZXRlZEVsZW1lbnQgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGZpbmFsQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVsZXRlZEVsZW1lbnQsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgcmV0dXJuIGNhbGxiYWNrKGVsZW1lbnQsIC4uLmNhbGxiYWNrQXJndW1lbnRzLCAocGFzc2VkLCAuLi5pbnRlcm1lZGlhdGVBcmd1bWVudHMpID0+IHtcbiAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IGluZGV4LCAvLy9cbiAgICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgICBkZWxldGVkRWxlbWVudCA9IGVsZW1lbnQ7IC8vL1xuXG4gICAgICAgIGFycmF5LnNwbGljZShzdGFydEluZGV4LCBkZWxldGVDb3VudCk7XG5cbiAgICAgICAgZmluYWxBcmd1bWVudHMgPSBpbnRlcm1lZGlhdGVBcmd1bWVudHM7IC8vL1xuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oZGVsZXRlZEVsZW1lbnQsIC4uLmZpbmFsQXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaChhcnJheUEsIGFycmF5QiwgY2FsbGJhY2ssIC4uLmluaXRpYWxBcmd1bWVudHMpIHtcbiAgY29uc3QgY29udGludWF0aW9uID0gaW5pdGlhbEFyZ3VtZW50cy5wb3AoKTtcblxuICBjb25zdCBhcnJheUFMZW5ndGggPSBhcnJheUEubGVuZ3RoLFxuICAgICAgICBhcnJheUJMZW5ndGggPSBhcnJheUIubGVuZ3RoO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBpZiAoYXJyYXlBTGVuZ3RoICE9PSBhcnJheUJMZW5ndGgpIHtcbiAgICBjb25zdCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICBmaW5hbEFyZ3VtZW50cyA9IGluaXRpYWxBcmd1bWVudHM7IC8vL1xuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gIH1cblxuICBjb25zdCBsZW5ndGggPSBhcnJheUFMZW5ndGg7ICAvLy9cblxuICBsZXQgaW5kZXggPSAtMTtcblxuICBmdW5jdGlvbiBuZXh0KC4uLmNhbGxiYWNrQXJndW1lbnRzKSB7XG4gICAgaW5kZXgrKztcblxuICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoKSB7XG4gICAgICBjb25zdCBzdWNjZXNzID0gdHJ1ZTtcblxuICAgICAgZmluYWxBcmd1bWVudHMgPSBjYWxsYmFja0FyZ3VtZW50czsgLy8vXG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2VzcywgLi4uZmluYWxBcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRBID0gYXJyYXlBW2luZGV4XSxcbiAgICAgICAgICBlbGVtZW50QiA9IGFycmF5QltpbmRleF07XG5cbiAgICByZXR1cm4gY2FsbGJhY2soZWxlbWVudEEsIGVsZW1lbnRCLCAuLi5jYWxsYmFja0FyZ3VtZW50cywgKHN1Y2Nlc3MsIC4uLmludGVybWVkaWF0ZUFyZ3VtZW50cykgPT4ge1xuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIGZpbmFsQXJndW1lbnRzID0gaW5pdGlhbEFyZ3VtZW50czsgLy8vXG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGxiYWNrQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIG5leHQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dCguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKGFycmF5QSwgYXJyYXlCLCBjYWxsYmFjaywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICBhcnJheUEgPSBbICAvLy9cbiAgICAuLi5hcnJheUFcbiAgXTtcblxuICBjb25zdCBjb250aW51YXRpb24gPSBpbml0aWFsQXJndW1lbnRzLnBvcCgpO1xuXG4gIGxldCBmaW5hbEFyZ3VtZW50cztcblxuICBmdW5jdGlvbiBuZXh0UGFzcyguLi5jYWxsYmFja0FyZ3VtZW50cykge1xuICAgIGxldCBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICBjb25zdCBsZW5ndGggPSBhcnJheUEubGVuZ3RoOyAvLy9cblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xuXG4gICAgICBmaW5hbEFyZ3VtZW50cyA9IGNhbGxiYWNrQXJndW1lbnRzOyAvLy9cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdWNjZXNzLCAuLi5maW5hbEFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgbGV0IGluZGV4ID0gLTE7XG5cbiAgICBmdW5jdGlvbiBuZXh0RWxlbWVudCguLi5jYWxsYmFja0FyZ3VtZW50cykge1xuICAgICAgaW5kZXgrKztcblxuICAgICAgaWYgKGluZGV4ID09PSBsZW5ndGgpIHtcbiAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICAgICAgY29uc3QgZmluYWxBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VjY2VzcywgLi4uZmluYWxBcmd1bWVudHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXJyYXlGaWx0ZXIoYXJyYXlBLCAoZWxlbWVudEEpID0+IHtcbiAgICAgICAgICBjb25zdCBhcnJheUJJbmNsdWRlc0VsZW1lbnRBID0gYXJyYXlCLmluY2x1ZGVzKGVsZW1lbnRBKTtcblxuICAgICAgICAgIGlmICghYXJyYXlCSW5jbHVkZXNFbGVtZW50QSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbmV4dFBhc3MoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZWxlbWVudEEgPSBhcnJheUFbaW5kZXhdO1xuXG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlbGVtZW50QSwgLi4uY2FsbGJhY2tBcmd1bWVudHMsIChwYXNzZWQsIC4uLmludGVybWVkaWF0ZUFyZ3VtZW50cykgPT4ge1xuICAgICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrQXJndW1lbnRzID0gaW50ZXJtZWRpYXRlQXJndW1lbnRzOyAgLy8vXG5cbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRCID0gZWxlbWVudEE7ICAvLy9cblxuICAgICAgICAgICAgYXJyYXlCLnB1c2goZWxlbWVudEIpO1xuXG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbmV4dEVsZW1lbnQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dEVsZW1lbnQoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xuICB9XG5cbiAgY29uc3QgY2FsbGJhY2tBcmd1bWVudHMgPSBpbml0aWFsQXJndW1lbnRzOyAvLy9cblxuICByZXR1cm4gbmV4dFBhc3MoLi4uY2FsbGJhY2tBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxsKGNhbGxiYWNrcywgLi4uaW5pdGlhbEFyZ3VtZW50cykge1xuICByZXR1cm4gZXZlcnkoY2FsbGJhY2tzLCAoY2FsbGJhY2ssIC4uLmNhbGxiYWNrQXJndW1lbnRzKSA9PiB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKC4uLmNhbGxiYWNrQXJndW1lbnRzKTtcbiAgfSwgLi4uaW5pdGlhbEFyZ3VtZW50cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGlzdHMoY2FsbGJhY2tzLCAuLi5pbml0aWFsQXJndW1lbnRzKSB7XG4gIHJldHVybiBzb21lKGNhbGxiYWNrcywgKGNhbGxiYWNrLCAuLi5jYWxsYmFja0FyZ3VtZW50cykgPT4ge1xuICAgIHJldHVybiBjYWxsYmFjayguLi5jYWxsYmFja0FyZ3VtZW50cyk7XG4gIH0sIC4uLmluaXRpYWxBcmd1bWVudHMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG9uZSxcbiAgc29tZSxcbiAgZWFjaCxcbiAgZXZlcnksXG4gIHJlZHVjZSxcbiAgZm9yRWFjaCxcbiAgZm9yd2FyZHNFdmVyeSxcbiAgYmFja3dhcmRzRXZlcnksXG4gIGZvcndhcmRzRm9yRWFjaCxcbiAgYmFja3dhcmRzRm9yRWFjaCxcbiAgZmlsdGVyLFxuICBwcnVuZSxcbiAgZXh0cmFjdCxcbiAgbWF0Y2gsXG4gIHJlc29sdmUsXG4gIGFsbCxcbiAgZXhpc3RzXG59O1xuIl0sIm5hbWVzIjpbImFsbCIsImJhY2t3YXJkc0V2ZXJ5IiwiYmFja3dhcmRzRm9yRWFjaCIsImVhY2giLCJldmVyeSIsImV4aXN0cyIsImV4dHJhY3QiLCJmaWx0ZXIiLCJmb3JFYWNoIiwiZm9yd2FyZHNFdmVyeSIsImZvcndhcmRzRm9yRWFjaCIsIm1hdGNoIiwib25lIiwicHJ1bmUiLCJyZWR1Y2UiLCJyZXNvbHZlIiwic29tZSIsImFycmF5RmlsdGVyIiwiYXJyYXlVdGlsaXRpZXMiLCJhcnJheSIsImNhbGxiYWNrIiwiaW5pdGlhbEFyZ3VtZW50cyIsImNvbnRpbnVhdGlvbiIsInBvcCIsImxlbmd0aCIsImNvdW50IiwiaW5kZXgiLCJmaW5hbEFyZ3VtZW50cyIsIm5leHQiLCJjYWxsYmFja0FyZ3VtZW50cyIsInN1Y2Nlc3MiLCJlbGVtZW50IiwiaW50ZXJtZWRpYXRlQXJndW1lbnRzIiwiaW5pdGlhbFZhbHVlIiwidmFsdWUiLCJkZWxldGVkRWxlbWVudHMiLCJwYXNzZWQiLCJzdGFydEluZGV4IiwiZGVsZXRlQ291bnQiLCJkZWxldGVkRWxlbWVudCIsInNwbGljZSIsInVuc2hpZnQiLCJ1bmRlZmluZWQiLCJhcnJheUEiLCJhcnJheUIiLCJhcnJheUFMZW5ndGgiLCJhcnJheUJMZW5ndGgiLCJlbGVtZW50QSIsImVsZW1lbnRCIiwibmV4dFBhc3MiLCJuZXh0RWxlbWVudCIsImFycmF5QkluY2x1ZGVzRWxlbWVudEEiLCJpbmNsdWRlcyIsInB1c2giLCJjYWxsYmFja3MiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQWdvQmdCQTtlQUFBQTs7UUExV0FDO2VBQUFBOztRQXNFQUM7ZUFBQUE7O1FBZ1RoQjtlQUFBOztRQTdpQmdCQztlQUFBQTs7UUEwQ0FDO2VBQUFBOztRQTZmQUM7ZUFBQUE7O1FBakxBQztlQUFBQTs7UUExRkFDO2VBQUFBOztRQTNLQUM7ZUFBQUE7O1FBK0JBQztlQUFBQTs7UUE4RUFDO2VBQUFBOztRQXVNQUM7ZUFBQUE7O1FBOWZBQztlQUFBQTs7UUFnYUFDO2VBQUFBOztRQXRQQUM7ZUFBQUE7O1FBd1lBQztlQUFBQTs7UUFoZ0JBQztlQUFBQTs7OzJCQXREZTtBQUUvQixNQUFNLEVBQUVULFFBQVFVLFdBQVcsRUFBRSxHQUFHQyx5QkFBYztBQUV2QyxTQUFTTixJQUFJTyxLQUFLLEVBQUVDLFFBQVEsRUFBRSxHQUFHQyxnQkFBZ0I7SUFDdEQsTUFBTUMsZUFBZUQsaUJBQWlCRSxHQUFHLElBQ25DQyxTQUFTTCxNQUFNSyxNQUFNO0lBRTNCLElBQUlDLFFBQVEsR0FDUkMsUUFBUSxDQUFDO0lBRWIsSUFBSUM7SUFFSixTQUFTQyxLQUFLLEdBQUdDLGlCQUFpQjtRQUNoQ0g7UUFFQSxJQUFJQSxVQUFVRixRQUFRO1lBQ3BCLE1BQU1NLFVBQVdMLFVBQVU7WUFFM0IsSUFBSSxDQUFDSyxTQUFTO2dCQUNaSCxpQkFBaUJOLGtCQUFrQixHQUFHO1lBQ3hDO1lBRUEsT0FBT0MsYUFBYVEsWUFBWUg7UUFDbEM7UUFFQSxNQUFNSSxVQUFVWixLQUFLLENBQUNPLE1BQU07UUFFNUIsT0FBT04sU0FBU1csWUFBWUYsbUJBQW1CLENBQUNDLFNBQVMsR0FBR0U7WUFDMUQsSUFB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
|
package/lib/utilities/pass.js
CHANGED
|
@@ -12,6 +12,9 @@ _export(exports, {
|
|
|
12
12
|
get areChildNodesCongruent () {
|
|
13
13
|
return areChildNodesCongruent;
|
|
14
14
|
},
|
|
15
|
+
get default () {
|
|
16
|
+
return _default;
|
|
17
|
+
},
|
|
15
18
|
get nonTerminalNodeQuery () {
|
|
16
19
|
return nonTerminalNodeQuery;
|
|
17
20
|
}
|
|
@@ -45,5 +48,9 @@ function isChildNodeCongruent(childNodeA, childNodeB) {
|
|
|
45
48
|
}
|
|
46
49
|
return childNodeCongruent;
|
|
47
50
|
}
|
|
51
|
+
const _default = {
|
|
52
|
+
nonTerminalNodeQuery,
|
|
53
|
+
areChildNodesCongruent
|
|
54
|
+
};
|
|
48
55
|
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcGFzcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5pbXBvcnQgeyBxdWVyeVV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1xdWVyeVwiO1xuXG5jb25zdCB7IG1hdGNoIH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgbm9kZVF1ZXJ5IH0gPSBxdWVyeVV0aWxpdGllcztcblxuZXhwb3J0IGNvbnN0IG5vblRlcm1pbmFsTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiLypcIik7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcmVDaGlsZE5vZGVzQ29uZ3J1ZW50KGNoaWxkTm9kZXNBLCBjaGlsZE5vZGVzQikge1xuICBjb25zdCBjaGlsZE5vZGVzQ29uZ3J1ZW50ID0gbWF0Y2goY2hpbGROb2Rlc0EsIGNoaWxkTm9kZXNCLCAoY2hpbGROb2RlQSwgY2hpbGROb2RlQikgPT4ge1xuICAgIGNvbnN0IGNoaWxkTm9kZUNvbmdydWVudCA9IGlzQ2hpbGROb2RlQ29uZ3J1ZW50KGNoaWxkTm9kZUEsIGNoaWxkTm9kZUIpO1xuXG4gICAgaWYgKGNoaWxkTm9kZUNvbmdydWVudCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gY2hpbGROb2Rlc0NvbmdydWVudDtcbn1cblxuZnVuY3Rpb24gaXNDaGlsZE5vZGVDb25ncnVlbnQoY2hpbGROb2RlQSwgY2hpbGROb2RlQikge1xuICBsZXQgY2hpbGROb2RlQ29uZ3J1ZW50ID0gZmFsc2U7XG5cbiAgY29uc3QgY2hpbGROb2RlQU5vblRlcm1pbmFsTm9kZSA9IGNoaWxkTm9kZUEuaXNOb25UZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgY2hpbGROb2RlQk5vblRlcm1pbmFsTm9kZSA9IGNoaWxkTm9kZUIuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICBpZiAoY2hpbGROb2RlQU5vblRlcm1pbmFsTm9kZSAmJiBjaGlsZE5vZGVCTm9uVGVybWluYWxOb2RlKSB7XG4gICAgY2hpbGROb2RlQ29uZ3J1ZW50ID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjaGlsZE5vZGVBVGVybWluYWxOb2RlID0gIWNoaWxkTm9kZUFOb25UZXJtaW5hbE5vZGUsXG4gICAgICAgICAgY2hpbGROb2RlQlRlcm1pbmFsTm9kZSA9ICFjaGlsZE5vZGVCTm9uVGVybWluYWxOb2RlO1xuXG4gICAgaWYgKGNoaWxkTm9kZUFUZXJtaW5hbE5vZGUgJiYgY2hpbGROb2RlQlRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgdGVybWluYWxOb2RlQSA9IGNoaWxkTm9kZUEsIC8vL1xuICAgICAgICAgICAgdGVybWluYWxOb2RlQiA9IGNoaWxkTm9kZUIsIC8vL1xuICAgICAgICAgICAgdGVybWluYWxOb2RlQU1hdGNoZXNUZXJtaW5hbE5vZGVCID0gdGVybWluYWxOb2RlQS5tYXRjaCh0ZXJtaW5hbE5vZGVCKTtcblxuICAgICAgaWYgKHRlcm1pbmFsTm9kZUFNYXRjaGVzVGVybWluYWxOb2RlQikge1xuICAgICAgICBjaGlsZE5vZGVDb25ncnVlbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjaGlsZE5vZGVDb25ncnVlbnQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbm9uVGVybWluYWxOb2RlUXVlcnksXG4gIGFyZUNoaWxkTm9kZXNDb25ncnVlbnRcbn07XG4iXSwibmFtZXMiOlsiYXJlQ2hpbGROb2Rlc0NvbmdydWVudCIsIm5vblRlcm1pbmFsTm9kZVF1ZXJ5IiwibWF0Y2giLCJhcnJheVV0aWxpdGllcyIsIm5vZGVRdWVyeSIsInF1ZXJ5VXRpbGl0aWVzIiwiY2hpbGROb2Rlc0EiLCJjaGlsZE5vZGVzQiIsImNoaWxkTm9kZXNDb25ncnVlbnQiLCJjaGlsZE5vZGVBIiwiY2hpbGROb2RlQiIsImNoaWxkTm9kZUNvbmdydWVudCIsImlzQ2hpbGROb2RlQ29uZ3J1ZW50IiwiY2hpbGROb2RlQU5vblRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwiY2hpbGROb2RlQk5vblRlcm1pbmFsTm9kZSIsImNoaWxkTm9kZUFUZXJtaW5hbE5vZGUiLCJjaGlsZE5vZGVCVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlQSIsInRlcm1pbmFsTm9kZUIiLCJ0ZXJtaW5hbE5vZGVBTWF0Y2hlc1Rlcm1pbmFsTm9kZUIiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQVVnQkE7ZUFBQUE7O1FBc0NoQjtlQUFBOztRQXhDYUM7ZUFBQUE7OzsyQkFOa0I7NEJBQ0E7QUFFL0IsTUFBTSxFQUFFQyxLQUFLLEVBQUUsR0FBR0MseUJBQWMsRUFDMUIsRUFBRUMsU0FBUyxFQUFFLEdBQUdDLDBCQUFjO0FBRTdCLE1BQU1KLHVCQUF1QkcsVUFBVTtBQUV2QyxTQUFTSix1QkFBdUJNLFdBQVcsRUFBRUMsV0FBVztJQUM3RCxNQUFNQyxzQkFBc0JOLE1BQU1JLGFBQWFDLGFBQWEsQ0FBQ0UsWUFBWUM7UUFDdkUsTUFBTUMscUJBQXFCQyxxQkFBcUJILFlBQVlDO1FBRTVELElBQUlDLG9CQUFvQjtZQUN0QixPQUFPO1FBQ1Q7SUFDRjtJQUVBLE9BQU9IO0FBQ1Q7QUFFQSxTQUFTSSxxQkFBcUJILFVBQVUsRUFBRUMsVUFBVTtJQUNsRCxJQUFJQyxxQkFBcUI7SUFFekIsTUFBTUUsNEJBQTRCSixXQUFXSyxpQkFBaUIsSUFDeERDLDRCQUE0QkwsV0FBV0ksaUJBQWlCO0lBRTlELElBQUlELDZCQUE2QkUsMkJBQTJCO1FBQzFESixxQkFBcUI7SUFDdkIsT0FBTztRQUNMLE1BQU1LLHlCQUF5QixDQUFDSCwyQkFDMUJJLHlCQUF5QixDQUFDRjtRQUVoQyxJQUFJQywwQkFBMEJDLHdCQUF3QjtZQUNwRCxNQUFNQyxnQkFBZ0JULFlBQ2hCVSxnQkFBZ0JULFlBQ2hCVSxvQ0FBb0NGLGNBQWNoQixLQUFLLENBQUNpQjtZQUU5RCxJQUFJQyxtQ0FBbUM7Z0JBQ3JDVCxxQkFBcUI7WUFDdkI7UUFDRjtJQUNGO0lBRUEsT0FBT0E7QUFDVDtNQUVBLFdBQWU7SUFDYlY7SUFDQUQ7QUFDRiJ9
|
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -21,6 +21,7 @@ export { default as nodeMixins } from "./mixins/node";
|
|
|
21
21
|
|
|
22
22
|
export { default as bnfUtilities } from "./utilities/bnf";
|
|
23
23
|
export { default as nodeUtilities } from "./utilities/node";
|
|
24
|
+
export { default as passUtilities } from "./utilities/pass";
|
|
24
25
|
export { default as furtleUtilities } from "./utilities/furtle";
|
|
25
26
|
export { default as nominalUtilities } from "./utilities/nominal";
|
|
26
27
|
export { default as breakPointUtilities } from "./utilities/breakPoint";
|
|
@@ -638,6 +638,18 @@ export function resolve(arrayA, arrayB, callback, ...initialArguments) {
|
|
|
638
638
|
return nextPass(...callbackArguments);
|
|
639
639
|
}
|
|
640
640
|
|
|
641
|
+
export function all(callbacks, ...initialArguments) {
|
|
642
|
+
return every(callbacks, (callback, ...callbackArguments) => {
|
|
643
|
+
return callback(...callbackArguments);
|
|
644
|
+
}, ...initialArguments);
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
export function exists(callbacks, ...initialArguments) {
|
|
648
|
+
return some(callbacks, (callback, ...callbackArguments) => {
|
|
649
|
+
return callback(...callbackArguments);
|
|
650
|
+
}, ...initialArguments);
|
|
651
|
+
}
|
|
652
|
+
|
|
641
653
|
export default {
|
|
642
654
|
one,
|
|
643
655
|
some,
|
|
@@ -653,5 +665,7 @@ export default {
|
|
|
653
665
|
prune,
|
|
654
666
|
extract,
|
|
655
667
|
match,
|
|
656
|
-
resolve
|
|
668
|
+
resolve,
|
|
669
|
+
all,
|
|
670
|
+
exists
|
|
657
671
|
};
|