necessary 11.2.7 → 11.3.0

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/README.md CHANGED
@@ -600,6 +600,7 @@ pathWithoutTopmostDirectoryNameFromPath("root/etc/init.conf"); // returns 'etc/i
600
600
  - `find()`
601
601
  - `prune()`
602
602
  - `patch()`
603
+ - `compressƒ()`
603
604
  - `augment()`
604
605
  - `separate()`
605
606
  - `forwardsFind()`
@@ -697,6 +698,14 @@ patch([1, 2, 0, -1, -2], 4, (element, index) => {
697
698
  }); // the first array argument becomes [1, 2, 0, -1, -2, 4]
698
699
  ```
699
700
 
701
+ * The `compress()` function will remove elements from the first array argument whenever the callback function returns a truthy value:
702
+
703
+ ```
704
+ compress([1, 2, 1], (element1, element2) => {
705
+ return element1 === element2;
706
+ }); // the first array argument becomes [1, 2]
707
+ ```
708
+
700
709
  * The `augment()` function appends each of the elements of the second array argument to the first array argument whenever the callback returns a truthy value:
701
710
 
702
711
  ```
package/lib/keyCodes.js CHANGED
@@ -2,7 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.default = exports.ARROW_RIGHT_KEY_CODE = exports.ARROW_LEFT_KEY_CODE = exports.ARROW_DOWN_KEY_CODE = exports.ARROW_UP_KEY_CODE = exports.BACKSPACE_KEY_CODE = exports.DELETE_KEY_CODE = exports.ESCAPE_KEY_CODE = exports.ENTER_KEY_CODE = exports.SHIFT_KEY_CODE = void 0;
5
+ exports.default = exports.ARROW_RIGHT_KEY_CODE = exports.ARROW_LEFT_KEY_CODE = exports.ARROW_DOWN_KEY_CODE = exports.ARROW_UP_KEY_CODE = exports.BACKSPACE_KEY_CODE = exports.DELETE_KEY_CODE = exports.ESCAPE_KEY_CODE = exports.ENTER_KEY_CODE = exports.SHIFT_KEY_CODE = exports.TAB_KEY_CODE = void 0;
6
+ var TAB_KEY_CODE = 9;
7
+ exports.TAB_KEY_CODE = TAB_KEY_CODE;
6
8
  var SHIFT_KEY_CODE = 16;
7
9
  exports.SHIFT_KEY_CODE = SHIFT_KEY_CODE;
8
10
  var ENTER_KEY_CODE = 13;
@@ -22,6 +24,7 @@ exports.ARROW_LEFT_KEY_CODE = ARROW_LEFT_KEY_CODE;
22
24
  var ARROW_RIGHT_KEY_CODE = 39;
23
25
  exports.ARROW_RIGHT_KEY_CODE = ARROW_RIGHT_KEY_CODE;
24
26
  var _default = {
27
+ TAB_KEY_CODE: TAB_KEY_CODE,
25
28
  SHIFT_KEY_CODE: SHIFT_KEY_CODE,
26
29
  ENTER_KEY_CODE: ENTER_KEY_CODE,
27
30
  ESCAPE_KEY_CODE: ESCAPE_KEY_CODE,
@@ -34,4 +37,4 @@ var _default = {
34
37
  };
35
38
  exports.default = _default;
36
39
 
37
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9rZXlDb2Rlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGNvbnN0IFNISUZUX0tFWV9DT0RFID0gMTY7XG5leHBvcnQgY29uc3QgRU5URVJfS0VZX0NPREUgPSAxMztcbmV4cG9ydCBjb25zdCBFU0NBUEVfS0VZX0NPREUgPSAyNztcbmV4cG9ydCBjb25zdCBERUxFVEVfS0VZX0NPREUgPSA0NjtcbmV4cG9ydCBjb25zdCBCQUNLU1BBQ0VfS0VZX0NPREUgPSA4O1xuZXhwb3J0IGNvbnN0IEFSUk9XX1VQX0tFWV9DT0RFID0gMzg7XG5leHBvcnQgY29uc3QgQVJST1dfRE9XTl9LRVlfQ09ERSA9IDQwO1xuZXhwb3J0IGNvbnN0IEFSUk9XX0xFRlRfS0VZX0NPREUgPSAzNztcbmV4cG9ydCBjb25zdCBBUlJPV19SSUdIVF9LRVlfQ09ERSA9IDM5O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFNISUZUX0tFWV9DT0RFLFxuICBFTlRFUl9LRVlfQ09ERSxcbiAgRVNDQVBFX0tFWV9DT0RFLFxuICBERUxFVEVfS0VZX0NPREUsXG4gIEJBQ0tTUEFDRV9LRVlfQ09ERSxcbiAgQVJST1dfVVBfS0VZX0NPREUsXG4gIEFSUk9XX0RPV05fS0VZX0NPREUsXG4gIEFSUk9XX0xFRlRfS0VZX0NPREUsXG4gIEFSUk9XX1JJR0hUX0tFWV9DT0RFXG59O1xuIl0sIm5hbWVzIjpbIlNISUZUX0tFWV9DT0RFIiwiRU5URVJfS0VZX0NPREUiLCJFU0NBUEVfS0VZX0NPREUiLCJERUxFVEVfS0VZX0NPREUiLCJCQUNLU1BBQ0VfS0VZX0NPREUiLCJBUlJPV19VUF9LRVlfQ09ERSIsIkFSUk9XX0RPV05fS0VZX0NPREUiLCJBUlJPV19MRUZUX0tFWV9DT0RFIiwiQVJST1dfUklHSFRfS0VZX0NPREUiXSwibWFwcGluZ3MiOiJBQUFBLENBQVk7Ozs7O0FBRUwsR0FBSyxDQUFDQSxjQUFjLEdBQUcsRUFBRTtRQUFuQkEsY0FBYyxHQUFkQSxjQUFjO0FBQ3BCLEdBQUssQ0FBQ0MsY0FBYyxHQUFHLEVBQUU7UUFBbkJBLGNBQWMsR0FBZEEsY0FBYztBQUNwQixHQUFLLENBQUNDLGVBQWUsR0FBRyxFQUFFO1FBQXBCQSxlQUFlLEdBQWZBLGVBQWU7QUFDckIsR0FBSyxDQUFDQyxlQUFlLEdBQUcsRUFBRTtRQUFwQkEsZUFBZSxHQUFmQSxlQUFlO0FBQ3JCLEdBQUssQ0FBQ0Msa0JBQWtCLEdBQUcsQ0FBQztRQUF0QkEsa0JBQWtCLEdBQWxCQSxrQkFBa0I7QUFDeEIsR0FBSyxDQUFDQyxpQkFBaUIsR0FBRyxFQUFFO1FBQXRCQSxpQkFBaUIsR0FBakJBLGlCQUFpQjtBQUN2QixHQUFLLENBQUNDLG1CQUFtQixHQUFHLEVBQUU7UUFBeEJBLG1CQUFtQixHQUFuQkEsbUJBQW1CO0FBQ3pCLEdBQUssQ0FBQ0MsbUJBQW1CLEdBQUcsRUFBRTtRQUF4QkEsbUJBQW1CLEdBQW5CQSxtQkFBbUI7QUFDekIsR0FBSyxDQUFDQyxvQkFBb0IsR0FBRyxFQUFFO1FBQXpCQSxvQkFBb0IsR0FBcEJBLG9CQUFvQjtlQUVsQixDQUFDO0lBQ2RSLGNBQWMsRUFBZEEsY0FBYztJQUNkQyxjQUFjLEVBQWRBLGNBQWM7SUFDZEMsZUFBZSxFQUFmQSxlQUFlO0lBQ2ZDLGVBQWUsRUFBZkEsZUFBZTtJQUNmQyxrQkFBa0IsRUFBbEJBLGtCQUFrQjtJQUNsQkMsaUJBQWlCLEVBQWpCQSxpQkFBaUI7SUFDakJDLG1CQUFtQixFQUFuQkEsbUJBQW1CO0lBQ25CQyxtQkFBbUIsRUFBbkJBLG1CQUFtQjtJQUNuQkMsb0JBQW9CLEVBQXBCQSxvQkFBb0I7QUFDdEIsQ0FBQyJ9
40
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9rZXlDb2Rlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGNvbnN0IFRBQl9LRVlfQ09ERSA9IDk7XG5leHBvcnQgY29uc3QgU0hJRlRfS0VZX0NPREUgPSAxNjtcbmV4cG9ydCBjb25zdCBFTlRFUl9LRVlfQ09ERSA9IDEzO1xuZXhwb3J0IGNvbnN0IEVTQ0FQRV9LRVlfQ09ERSA9IDI3O1xuZXhwb3J0IGNvbnN0IERFTEVURV9LRVlfQ09ERSA9IDQ2O1xuZXhwb3J0IGNvbnN0IEJBQ0tTUEFDRV9LRVlfQ09ERSA9IDg7XG5leHBvcnQgY29uc3QgQVJST1dfVVBfS0VZX0NPREUgPSAzODtcbmV4cG9ydCBjb25zdCBBUlJPV19ET1dOX0tFWV9DT0RFID0gNDA7XG5leHBvcnQgY29uc3QgQVJST1dfTEVGVF9LRVlfQ09ERSA9IDM3O1xuZXhwb3J0IGNvbnN0IEFSUk9XX1JJR0hUX0tFWV9DT0RFID0gMzk7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgVEFCX0tFWV9DT0RFLFxuICBTSElGVF9LRVlfQ09ERSxcbiAgRU5URVJfS0VZX0NPREUsXG4gIEVTQ0FQRV9LRVlfQ09ERSxcbiAgREVMRVRFX0tFWV9DT0RFLFxuICBCQUNLU1BBQ0VfS0VZX0NPREUsXG4gIEFSUk9XX1VQX0tFWV9DT0RFLFxuICBBUlJPV19ET1dOX0tFWV9DT0RFLFxuICBBUlJPV19MRUZUX0tFWV9DT0RFLFxuICBBUlJPV19SSUdIVF9LRVlfQ09ERVxufTtcbiJdLCJuYW1lcyI6WyJUQUJfS0VZX0NPREUiLCJTSElGVF9LRVlfQ09ERSIsIkVOVEVSX0tFWV9DT0RFIiwiRVNDQVBFX0tFWV9DT0RFIiwiREVMRVRFX0tFWV9DT0RFIiwiQkFDS1NQQUNFX0tFWV9DT0RFIiwiQVJST1dfVVBfS0VZX0NPREUiLCJBUlJPV19ET1dOX0tFWV9DT0RFIiwiQVJST1dfTEVGVF9LRVlfQ09ERSIsIkFSUk9XX1JJR0hUX0tFWV9DT0RFIl0sIm1hcHBpbmdzIjoiQUFBQSxDQUFZOzs7OztBQUVMLEdBQUssQ0FBQ0EsWUFBWSxHQUFHLENBQUM7UUFBaEJBLFlBQVksR0FBWkEsWUFBWTtBQUNsQixHQUFLLENBQUNDLGNBQWMsR0FBRyxFQUFFO1FBQW5CQSxjQUFjLEdBQWRBLGNBQWM7QUFDcEIsR0FBSyxDQUFDQyxjQUFjLEdBQUcsRUFBRTtRQUFuQkEsY0FBYyxHQUFkQSxjQUFjO0FBQ3BCLEdBQUssQ0FBQ0MsZUFBZSxHQUFHLEVBQUU7UUFBcEJBLGVBQWUsR0FBZkEsZUFBZTtBQUNyQixHQUFLLENBQUNDLGVBQWUsR0FBRyxFQUFFO1FBQXBCQSxlQUFlLEdBQWZBLGVBQWU7QUFDckIsR0FBSyxDQUFDQyxrQkFBa0IsR0FBRyxDQUFDO1FBQXRCQSxrQkFBa0IsR0FBbEJBLGtCQUFrQjtBQUN4QixHQUFLLENBQUNDLGlCQUFpQixHQUFHLEVBQUU7UUFBdEJBLGlCQUFpQixHQUFqQkEsaUJBQWlCO0FBQ3ZCLEdBQUssQ0FBQ0MsbUJBQW1CLEdBQUcsRUFBRTtRQUF4QkEsbUJBQW1CLEdBQW5CQSxtQkFBbUI7QUFDekIsR0FBSyxDQUFDQyxtQkFBbUIsR0FBRyxFQUFFO1FBQXhCQSxtQkFBbUIsR0FBbkJBLG1CQUFtQjtBQUN6QixHQUFLLENBQUNDLG9CQUFvQixHQUFHLEVBQUU7UUFBekJBLG9CQUFvQixHQUFwQkEsb0JBQW9CO2VBRWxCLENBQUM7SUFDZFQsWUFBWSxFQUFaQSxZQUFZO0lBQ1pDLGNBQWMsRUFBZEEsY0FBYztJQUNkQyxjQUFjLEVBQWRBLGNBQWM7SUFDZEMsZUFBZSxFQUFmQSxlQUFlO0lBQ2ZDLGVBQWUsRUFBZkEsZUFBZTtJQUNmQyxrQkFBa0IsRUFBbEJBLGtCQUFrQjtJQUNsQkMsaUJBQWlCLEVBQWpCQSxpQkFBaUI7SUFDakJDLG1CQUFtQixFQUFuQkEsbUJBQW1CO0lBQ25CQyxtQkFBbUIsRUFBbkJBLG1CQUFtQjtJQUNuQkMsb0JBQW9CLEVBQXBCQSxvQkFBb0I7QUFDdEIsQ0FBQyJ9
@@ -29,6 +29,7 @@ exports.filter = filter;
29
29
  exports.find = find;
30
30
  exports.prune = prune;
31
31
  exports.patch = patch;
32
+ exports.compress = compress;
32
33
  exports.augment = augment;
33
34
  exports.separate = separate;
34
35
  exports.forwardsFind = forwardsFind;
@@ -210,6 +211,21 @@ function patch(array, element2, callback) {
210
211
  }
211
212
  return found;
212
213
  }
214
+ function compress(array, callback) {
215
+ var index1 = 0, length = array.length;
216
+ while(index1 < length){
217
+ var element1 = array[index1];
218
+ for(var index2 = length - 1; index2 > index1; index2--){
219
+ var element2 = array[index2], passed = callback(element2, element1);
220
+ if (passed) {
221
+ var start = index2, deleteCount = 1;
222
+ array.splice(start, deleteCount);
223
+ }
224
+ }
225
+ index1++;
226
+ length = array.length;
227
+ }
228
+ }
213
229
  function augment(array1, array2, callback) {
214
230
  array2.forEach(function(element, index) {
215
231
  var passed = callback(element, index);
@@ -344,6 +360,7 @@ var _default = {
344
360
  find: find,
345
361
  prune: prune,
346
362
  patch: patch,
363
+ compress: compress,
347
364
  augment: augment,
348
365
  separate: separate,
349
366
  forwardsFind: forwardsFind,
@@ -359,4 +376,4 @@ var _default = {
359
376
  };
360
377
  exports.default = _default;
361
378
 
362
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbMF07fVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kKGFycmF5KSB7IHJldHVybiBhcnJheVsxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gdGhpcmQoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzJdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3VydGgoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWZ0aChhcnJheSkgeyByZXR1cm4gYXJyYXlbNF07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZnRoTGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gNV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJ0aExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDRdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGlyZExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAyXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gbGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHsgcmV0dXJuIGFycmF5LnNsaWNlKDAsIDEpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWlsKGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gYmFjayhhcnJheSkgeyByZXR1cm4gYXJyYXkuc2xpY2UoYXJyYXkubGVuZ3RoIC0gMSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb250KGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgwLCBNYXRoLm1heCgxLCBhcnJheS5sZW5ndGggLSAxKSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1c2goYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnNoaWZ0KGFycmF5MSwgYXJyYXkyKSB7IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGFycmF5MSwgYXJyYXkyKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0KGFycmF5MSwgZWxlbWVudE9yQXJyYXkyKSB7XG4gIGNvbnN0IGFycmF5MiA9IChlbGVtZW50T3JBcnJheTIgaW5zdGFuY2VvZiBBcnJheSkgP1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50T3JBcnJheTIgOlxuICAgICAgICAgICAgICAgICAgICAgW2VsZW1lbnRPckFycmF5Ml07XG4gIFxuICBwdXNoKGFycmF5MSwgYXJyYXkyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyKGFycmF5KSB7XG4gIGNvbnN0IHN0YXJ0ID0gMDtcbiAgXG4gIHJldHVybiBhcnJheS5zcGxpY2Uoc3RhcnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29weShhcnJheTEsIGFycmF5Mikge1xuICBjb25zdCBzdGFydCA9IDAsXG4gICAgICAgIGRlbGV0ZUNvdW50ID0gYXJyYXkyLmxlbmd0aDsgIC8vL1xuICBcbiAgc3BsaWNlKGFycmF5MSwgc3RhcnQsIGRlbGV0ZUNvdW50LCBhcnJheTIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UoYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGxpY2UoYXJyYXkxLCBzdGFydCwgZGVsZXRlQ291bnQgPSBJbmZpbml0eSwgYXJyYXkyID0gW10pIHtcbiAgY29uc3QgYXJncyA9IFtzdGFydCwgZGVsZXRlQ291bnQsIC4uLmFycmF5Ml0sXG4gICAgICAgIGRlbGV0ZWRJdGVtc0FycmF5ID0gQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShhcnJheTEsIGFyZ3MpO1xuXG4gIHJldHVybiBkZWxldGVkSXRlbXNBcnJheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2UoYXJyYXksIGVsZW1lbnQsIGNhbGxiYWNrKSB7XG4gIGxldCBzdGFydDtcbiAgXG4gIGNvbnN0IGZvdW5kID0gYXJyYXkuc29tZSgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBzdGFydCA9IGluZGV4OyAgLy8vXG4gICAgICBcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG4gIFxuICBpZiAoZm91bmQpIHtcbiAgICBjb25zdCBkZWxldGVDb3VudCA9IDE7XG5cbiAgICBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCBlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcihhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgZmlsdGVyZWRFbGVtZW50cyA9IFtdO1xuICBcbiAgYmFja3dhcmRzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXgsICAvLy9cbiAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50cyA9IGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpLFxuICAgICAgICAgICAgZmlyc3REZWxldGVkRWxlbWVudCA9IGZpcnN0KGRlbGV0ZWRFbGVtZW50cyk7XG4gICAgICBcbiAgICAgIGZpbHRlcmVkRWxlbWVudHMudW5zaGlmdChmaXJzdERlbGV0ZWRFbGVtZW50KTsgIC8vL1xuICAgIH1cbiAgfSk7XG4gIFxuICByZXR1cm4gZmlsdGVyZWRFbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmQoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGVsZW1lbnRzID0gW107XG5cbiAgZm9yd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBlbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJ1bmUoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGxldCBwcnVuZWRFbGVtZW50ID0gdW5kZWZpbmVkO1xuICBcbiAgYXJyYXkuc29tZSgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gZmlyc3QoZGVsZXRlZEVsZW1lbnRzKTtcbiAgICAgIFxuICAgICAgcHJ1bmVkRWxlbWVudCA9IGZpcnN0RGVsZXRlZEVsZW1lbnQ7ICAvLy9cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbiAgXG4gIHJldHVybiBwcnVuZWRFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2goYXJyYXksIGVsZW1lbnQsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGZvdW5kID0gYXJyYXkuc29tZSgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG5cbiAgaWYgKGZvdW5kKSB7XG4gICAgYXJyYXkucHVzaChlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF1Z21lbnQoYXJyYXkxLCBhcnJheTIsIGNhbGxiYWNrKSB7XG4gIGFycmF5Mi5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIGFycmF5MS5wdXNoKGVsZW1lbnQpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXBhcmF0ZShhcnJheSwgYXJyYXkxLCBhcnJheTIsIGNhbGxiYWNrKSB7XG4gIGFycmF5LmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgcGFzc2VkID9cbiAgICAgIGFycmF5MS5wdXNoKGVsZW1lbnQpIDpcbiAgICAgICAgYXJyYXkyLnB1c2goZWxlbWVudCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNGaW5kKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0ZpbmQoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc1NvbWUoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuICAgIFxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc1NvbWUoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0V2ZXJ5KGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcGFzc2VkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcGFzc2VkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc1JlZHVjZShhcnJheSwgY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkge1xuICBsZXQgdmFsdWUgPSBpbml0aWFsVmFsdWU7IC8vL1xuXG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICB2YWx1ZSA9IGNhbGxiYWNrKHZhbHVlLCBlbGVtZW50LCBpbmRleCk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNSZWR1Y2UoYXJyYXksIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlOyAvLy9cblxuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICB2YWx1ZSA9IGNhbGxiYWNrKHZhbHVlLCBlbGVtZW50LCBpbmRleCk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGZpcnN0LFxuICBzZWNvbmQsXG4gIHRoaXJkLFxuICBmb3VydGgsXG4gIGZpZnRoLFxuICBmaWZ0aExhc3QsXG4gIGZvdXJ0aExhc3QsXG4gIHRoaXJkTGFzdCxcbiAgc2Vjb25kTGFzdCxcbiAgZmlyc3RMYXN0LFxuICBsYXN0LFxuICBoZWFkLFxuICB0YWlsLFxuICBiYWNrLFxuICBmcm9udCxcbiAgcHVzaCxcbiAgdW5zaGlmdCxcbiAgY29uY2F0LFxuICBjbGVhcixcbiAgY29weSxcbiAgbWVyZ2UsXG4gIHNwbGljZSxcbiAgcmVwbGFjZSxcbiAgZmlsdGVyLFxuICBmaW5kLFxuICBwcnVuZSxcbiAgcGF0Y2gsXG4gIGF1Z21lbnQsXG4gIHNlcGFyYXRlLFxuICBmb3J3YXJkc0ZpbmQsXG4gIGJhY2t3YXJkc0ZpbmQsXG4gIGZvcndhcmRzU29tZSxcbiAgYmFja3dhcmRzU29tZSxcbiAgZm9yd2FyZHNFdmVyeSxcbiAgYmFja3dhcmRzRXZlcnksXG4gIGZvcndhcmRzUmVkdWNlLFxuICBiYWNrd2FyZHNSZWR1Y2UsXG4gIGZvcndhcmRzRm9yRWFjaCxcbiAgYmFja3dhcmRzRm9yRWFjaFxufTtcbiJdLCJuYW1lcyI6WyJmaXJzdCIsInNlY29uZCIsInRoaXJkIiwiZm91cnRoIiwiZmlmdGgiLCJmaWZ0aExhc3QiLCJmb3VydGhMYXN0IiwidGhpcmRMYXN0Iiwic2Vjb25kTGFzdCIsImZpcnN0TGFzdCIsImxhc3QiLCJoZWFkIiwidGFpbCIsImJhY2siLCJmcm9udCIsInB1c2giLCJ1bnNoaWZ0IiwiY29uY2F0IiwiY2xlYXIiLCJjb3B5IiwibWVyZ2UiLCJzcGxpY2UiLCJyZXBsYWNlIiwiZmlsdGVyIiwiZmluZCIsInBydW5lIiwicGF0Y2giLCJhdWdtZW50Iiwic2VwYXJhdGUiLCJmb3J3YXJkc0ZpbmQiLCJiYWNrd2FyZHNGaW5kIiwiZm9yd2FyZHNTb21lIiwiYmFja3dhcmRzU29tZSIsImZvcndhcmRzRXZlcnkiLCJiYWNrd2FyZHNFdmVyeSIsImZvcndhcmRzUmVkdWNlIiwiYmFja3dhcmRzUmVkdWNlIiwiZm9yd2FyZHNGb3JFYWNoIiwiYmFja3dhcmRzRm9yRWFjaCIsImFycmF5IiwibGVuZ3RoIiwic2xpY2UiLCJNYXRoIiwibWF4IiwiYXJyYXkxIiwiYXJyYXkyIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJhcHBseSIsImVsZW1lbnRPckFycmF5MiIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJJbmZpbml0eSIsImFyZ3MiLCJkZWxldGVkSXRlbXNBcnJheSIsImVsZW1lbnQiLCJjYWxsYmFjayIsImZvdW5kIiwic29tZSIsImluZGV4IiwicGFzc2VkIiwiZmlsdGVyZWRFbGVtZW50cyIsImRlbGV0ZWRFbGVtZW50cyIsImZpcnN0RGVsZXRlZEVsZW1lbnQiLCJlbGVtZW50cyIsInBydW5lZEVsZW1lbnQiLCJ1bmRlZmluZWQiLCJmb3JFYWNoIiwiYXJyYXlMZW5ndGgiLCJpbml0aWFsVmFsdWUiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7OztRQUVJQSxLQUFLLEdBQUxBLEtBQUs7UUFFTEMsTUFBTSxHQUFOQSxNQUFNO1FBRU5DLEtBQUssR0FBTEEsS0FBSztRQUVMQyxNQUFNLEdBQU5BLE1BQU07UUFFTkMsS0FBSyxHQUFMQSxLQUFLO1FBRUxDLFNBQVMsR0FBVEEsU0FBUztRQUVUQyxVQUFVLEdBQVZBLFVBQVU7UUFFVkMsU0FBUyxHQUFUQSxTQUFTO1FBRVRDLFVBQVUsR0FBVkEsVUFBVTtRQUVWQyxTQUFTLEdBQVRBLFNBQVM7UUFFVEMsSUFBSSxHQUFKQSxJQUFJO1FBRUpDLElBQUksR0FBSkEsSUFBSTtRQUVKQyxJQUFJLEdBQUpBLElBQUk7UUFFSkMsSUFBSSxHQUFKQSxJQUFJO1FBRUpDLEtBQUssR0FBTEEsS0FBSztR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
379
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbMF07fVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kKGFycmF5KSB7IHJldHVybiBhcnJheVsxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gdGhpcmQoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzJdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3VydGgoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWZ0aChhcnJheSkgeyByZXR1cm4gYXJyYXlbNF07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZnRoTGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gNV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJ0aExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDRdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGlyZExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAyXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gbGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHsgcmV0dXJuIGFycmF5LnNsaWNlKDAsIDEpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWlsKGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gYmFjayhhcnJheSkgeyByZXR1cm4gYXJyYXkuc2xpY2UoYXJyYXkubGVuZ3RoIC0gMSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb250KGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgwLCBNYXRoLm1heCgxLCBhcnJheS5sZW5ndGggLSAxKSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1c2goYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnNoaWZ0KGFycmF5MSwgYXJyYXkyKSB7IEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KGFycmF5MSwgYXJyYXkyKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2F0KGFycmF5MSwgZWxlbWVudE9yQXJyYXkyKSB7XG4gIGNvbnN0IGFycmF5MiA9IChlbGVtZW50T3JBcnJheTIgaW5zdGFuY2VvZiBBcnJheSkgP1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50T3JBcnJheTIgOlxuICAgICAgICAgICAgICAgICAgICAgW2VsZW1lbnRPckFycmF5Ml07XG4gIFxuICBwdXNoKGFycmF5MSwgYXJyYXkyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyKGFycmF5KSB7XG4gIGNvbnN0IHN0YXJ0ID0gMDtcbiAgXG4gIHJldHVybiBhcnJheS5zcGxpY2Uoc3RhcnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29weShhcnJheTEsIGFycmF5Mikge1xuICBjb25zdCBzdGFydCA9IDAsXG4gICAgICAgIGRlbGV0ZUNvdW50ID0gYXJyYXkyLmxlbmd0aDsgIC8vL1xuICBcbiAgc3BsaWNlKGFycmF5MSwgc3RhcnQsIGRlbGV0ZUNvdW50LCBhcnJheTIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UoYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGxpY2UoYXJyYXkxLCBzdGFydCwgZGVsZXRlQ291bnQgPSBJbmZpbml0eSwgYXJyYXkyID0gW10pIHtcbiAgY29uc3QgYXJncyA9IFtzdGFydCwgZGVsZXRlQ291bnQsIC4uLmFycmF5Ml0sXG4gICAgICAgIGRlbGV0ZWRJdGVtc0FycmF5ID0gQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseShhcnJheTEsIGFyZ3MpO1xuXG4gIHJldHVybiBkZWxldGVkSXRlbXNBcnJheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2UoYXJyYXksIGVsZW1lbnQsIGNhbGxiYWNrKSB7XG4gIGxldCBzdGFydDtcbiAgXG4gIGNvbnN0IGZvdW5kID0gYXJyYXkuc29tZSgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBzdGFydCA9IGluZGV4OyAgLy8vXG4gICAgICBcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG4gIFxuICBpZiAoZm91bmQpIHtcbiAgICBjb25zdCBkZWxldGVDb3VudCA9IDE7XG5cbiAgICBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCBlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcihhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgZmlsdGVyZWRFbGVtZW50cyA9IFtdO1xuICBcbiAgYmFja3dhcmRzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXgsICAvLy9cbiAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMSxcbiAgICAgICAgICAgIGRlbGV0ZWRFbGVtZW50cyA9IGFycmF5LnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpLFxuICAgICAgICAgICAgZmlyc3REZWxldGVkRWxlbWVudCA9IGZpcnN0KGRlbGV0ZWRFbGVtZW50cyk7XG4gICAgICBcbiAgICAgIGZpbHRlcmVkRWxlbWVudHMudW5zaGlmdChmaXJzdERlbGV0ZWRFbGVtZW50KTsgIC8vL1xuICAgIH1cbiAgfSk7XG4gIFxuICByZXR1cm4gZmlsdGVyZWRFbGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmQoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGVsZW1lbnRzID0gW107XG5cbiAgZm9yd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBlbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVsZW1lbnRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJ1bmUoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGxldCBwcnVuZWRFbGVtZW50ID0gdW5kZWZpbmVkO1xuICBcbiAgYXJyYXkuc29tZSgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gZmlyc3QoZGVsZXRlZEVsZW1lbnRzKTtcbiAgICAgIFxuICAgICAgcHJ1bmVkRWxlbWVudCA9IGZpcnN0RGVsZXRlZEVsZW1lbnQ7ICAvLy9cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbiAgXG4gIHJldHVybiBwcnVuZWRFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2goYXJyYXksIGVsZW1lbnQsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGZvdW5kID0gYXJyYXkuc29tZSgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG5cbiAgaWYgKGZvdW5kKSB7XG4gICAgYXJyYXkucHVzaChlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXByZXNzKGFycmF5LCBjYWxsYmFjaykge1xuICBsZXQgaW5kZXgxID0gMCxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgxIDwgbGVuZ3RoKSB7XG4gICAgY29uc3QgZWxlbWVudDEgPSBhcnJheVtpbmRleDFdO1xuXG4gICAgZm9yIChsZXQgaW5kZXgyID0gbGVuZ3RoIC0gMTsgaW5kZXgyID4gaW5kZXgxOyBpbmRleDItLSkge1xuICAgICAgY29uc3QgZWxlbWVudDIgPSBhcnJheVtpbmRleDJdLFxuICAgICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudDIsIGVsZW1lbnQxKTtcblxuICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICBjb25zdCBzdGFydCA9IGluZGV4MiwgLy8vXG4gICAgICAgICAgICAgIGRlbGV0ZUNvdW50ID0gMTtcblxuICAgICAgICBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbmRleDErKztcblxuICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXVnbWVudChhcnJheTEsIGFycmF5MiwgY2FsbGJhY2spIHtcbiAgYXJyYXkyLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgYXJyYXkxLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcGFyYXRlKGFycmF5LCBhcnJheTEsIGFycmF5MiwgY2FsbGJhY2spIHtcbiAgYXJyYXkuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBwYXNzZWQgP1xuICAgICAgYXJyYXkxLnB1c2goZWxlbWVudCkgOlxuICAgICAgICBhcnJheTIucHVzaChlbGVtZW50KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0ZpbmQoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRmluZChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzU29tZShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICBwYXNzZWQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG4gICAgXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzU29tZShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHBhc3NlZCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0V2ZXJ5KGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcGFzc2VkID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzUmVkdWNlKGFycmF5LCBjYWxsYmFjaywgaW5pdGlhbFZhbHVlKSB7XG4gIGxldCB2YWx1ZSA9IGluaXRpYWxWYWx1ZTsgLy8vXG5cbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHZhbHVlID0gY2FsbGJhY2sodmFsdWUsIGVsZW1lbnQsIGluZGV4KTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc1JlZHVjZShhcnJheSwgY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkge1xuICBsZXQgdmFsdWUgPSBpbml0aWFsVmFsdWU7IC8vL1xuXG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIHZhbHVlID0gY2FsbGJhY2sodmFsdWUsIGVsZW1lbnQsIGluZGV4KTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRm9yRWFjaChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRm9yRWFjaChhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZmlyc3QsXG4gIHNlY29uZCxcbiAgdGhpcmQsXG4gIGZvdXJ0aCxcbiAgZmlmdGgsXG4gIGZpZnRoTGFzdCxcbiAgZm91cnRoTGFzdCxcbiAgdGhpcmRMYXN0LFxuICBzZWNvbmRMYXN0LFxuICBmaXJzdExhc3QsXG4gIGxhc3QsXG4gIGhlYWQsXG4gIHRhaWwsXG4gIGJhY2ssXG4gIGZyb250LFxuICBwdXNoLFxuICB1bnNoaWZ0LFxuICBjb25jYXQsXG4gIGNsZWFyLFxuICBjb3B5LFxuICBtZXJnZSxcbiAgc3BsaWNlLFxuICByZXBsYWNlLFxuICBmaWx0ZXIsXG4gIGZpbmQsXG4gIHBydW5lLFxuICBwYXRjaCxcbiAgY29tcHJlc3MsXG4gIGF1Z21lbnQsXG4gIHNlcGFyYXRlLFxuICBmb3J3YXJkc0ZpbmQsXG4gIGJhY2t3YXJkc0ZpbmQsXG4gIGZvcndhcmRzU29tZSxcbiAgYmFja3dhcmRzU29tZSxcbiAgZm9yd2FyZHNFdmVyeSxcbiAgYmFja3dhcmRzRXZlcnksXG4gIGZvcndhcmRzUmVkdWNlLFxuICBiYWNrd2FyZHNSZWR1Y2UsXG4gIGZvcndhcmRzRm9yRWFjaCxcbiAgYmFja3dhcmRzRm9yRWFjaFxufTtcbiJdLCJuYW1lcyI6WyJmaXJzdCIsInNlY29uZCIsInRoaXJkIiwiZm91cnRoIiwiZmlmdGgiLCJmaWZ0aExhc3QiLCJmb3VydGhMYXN0IiwidGhpcmRMYXN0Iiwic2Vjb25kTGFzdCIsImZpcnN0TGFzdCIsImxhc3QiLCJoZWFkIiwidGFpbCIsImJhY2siLCJmcm9udCIsInB1c2giLCJ1bnNoaWZ0IiwiY29uY2F0IiwiY2xlYXIiLCJjb3B5IiwibWVyZ2UiLCJzcGxpY2UiLCJyZXBsYWNlIiwiZmlsdGVyIiwiZmluZCIsInBydW5lIiwicGF0Y2giLCJjb21wcmVzcyIsImF1Z21lbnQiLCJzZXBhcmF0ZSIsImZvcndhcmRzRmluZCIsImJhY2t3YXJkc0ZpbmQiLCJmb3J3YXJkc1NvbWUiLCJiYWNrd2FyZHNTb21lIiwiZm9yd2FyZHNFdmVyeSIsImJhY2t3YXJkc0V2ZXJ5IiwiZm9yd2FyZHNSZWR1Y2UiLCJiYWNrd2FyZHNSZWR1Y2UiLCJmb3J3YXJkc0ZvckVhY2giLCJiYWNrd2FyZHNGb3JFYWNoIiwiYXJyYXkiLCJsZW5ndGgiLCJzbGljZSIsIk1hdGgiLCJtYXgiLCJhcnJheTEiLCJhcnJheTIiLCJBcnJheSIsInByb3RvdHlwZSIsImFwcGx5IiwiZWxlbWVudE9yQXJyYXkyIiwic3RhcnQiLCJkZWxldGVDb3VudCIsIkluZmluaXR5IiwiYXJncyIsImRlbGV0ZWRJdGVtc0FycmF5IiwiZWxlbWVudCIsImNhbGxiYWNrIiwiZm91bmQiLCJzb21lIiwiaW5kZXgiLCJwYXNzZWQiLCJmaWx0ZXJlZEVsZW1lbnRzIiwiZGVsZXRlZEVsZW1lbnRzIiwiZmlyc3REZWxldGVkRWxlbWVudCIsImVsZW1lbnRzIiwicHJ1bmVkRWxlbWVudCIsInVuZGVmaW5lZCIsImluZGV4MSIsImVsZW1lbnQxIiwiaW5kZXgyIiwiZWxlbWVudDIiLCJmb3JFYWNoIiwiYXJyYXlMZW5ndGgiLCJpbml0aWFsVmFsdWUiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7OztRQUVJQSxLQUFLLEdBQUxBLEtBQUs7UUFFTEMsTUFBTSxHQUFOQSxNQUFNO1FBRU5DLEtBQUssR0FBTEEsS0FBSztRQUVMQyxNQUFNLEdBQU5BLE1BQU07UUFFTkMsS0FBSyxHQUFMQSxLQUFLO1FBRUxDLFNBQVMsR0FBVEEsU0FBUztRQUVUQyxVQUFVLEdBQVZBLFVBQVU7UUFFVkMsU0FBUyxHQUFUQSxTQUFTO1FBRVRDLFVBQVUsR0FBVkEsVUFBVTtRQUVWQyxTQUFTLEdBQVRBLFNBQVM7UUFFVEMsSUFBSSxHQUFKQSxJQUFJO1FBRUpDLElBQUksR0FBSkEsSUFBSTtRQUVKQyxJQUFJLEdBQUpBLElBQUk7UUFFSkMsSUFBSSxHQUFKQSxJQUFJO1FBRUpDLEtBQUssR0FBTEEsS0FBSztRQUVMQyxJQUFJLEdBQUpBLElBQUk7UUFFSkMsT0FBTyxHQUFQQSxPQUFPO1FBRVBDLE1BQU0sR0FBTkEsTUFBTTtRQVFOQyxLQUFLLEdBQUxBLEtBQUs7UUFNTEMsSUFBSSxHQUFKQSxJQUFJO1FBT0pDLEtBQUssR0FBTEEsS0FBSztRQUVMQyxNQUFNLEdBQU5BLE1BQU07UUFPTkMsT0FBTyxHQUFQQSxPQUFPO1FBc0JQQyxNQUFNLEdBQU5BLE1BQU07UUFtQk5DLElBQUksR0FBSkEsSUFBSTtRQWNKQyxLQUFLLEdBQUxBLEtBQUs7UUFxQkxDLEtBQUssR0FBTEEsS0FBSztRQWlCTEMsUUFBUSxHQUFSQSxRQUFRO1FBeUJSQyxPQUFPLEdBQVBBLE9BQU87UUFVUEMsUUFBUSxHQUFSQSxRQUFRO1FBVVJDLFlBQVksR0FBWkEsWUFBWTtRQWVaQyxhQUFhLEdBQWJBLGFBQWE7UUFlYkMsWUFBWSxHQUFaQSxZQUFZO1FBZVpDLGFBQWEsR0FBYkEsYUFBYTtRQWViQyxhQUFhLEdBQWJBLGFBQWE7UUFlYkMsY0FBYyxHQUFkQSxjQUFjO1FBZWRDLGNBQWMsR0FBZEEsY0FBYztRQWNkQyxlQUFlLEdBQWZBLGVBQWU7UUFjZkMsZUFBZSxHQUFmQSxlQUFlO1FBVWZDLGdCQUFnQixHQUFoQkEsZ0JBQWdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBMVVoQnZDLEtBQUssQ0FBQ3dDLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDQSxLQUFLLENBQUMsQ0FBQztBQUFFLENBQUM7U0FFaEN2QyxNQUFNLENBQUN1QyxLQUFLLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQ0EsS0FBSyxDQUFDLENBQUM7QUFBRyxDQUFDO1NBRWxDdEMsS0FBSyxDQUFDc0MsS0FBSyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUNBLEtBQUssQ0FBQyxDQUFDO0FBQUcsQ0FBQztTQUVqQ3JDLE1BQU0sQ0FBQ3FDLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDQSxLQUFLLENBQUMsQ0FBQztBQUFHLENBQUM7U0FFbENwQyxLQUFLLENBQUNvQyxLQUFLLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQ0EsS0FBSyxDQUFDLENBQUM7QUFBRyxDQUFDO1NBRWpDbkMsU0FBUyxDQUFDbUMsS0FBSyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUNBLEtBQUssQ0FBQ0EsS0FBSyxDQUFDQyxNQUFNLEdBQUcsQ0FBQztBQUFHLENBQUM7U0FFcERuQyxVQUFVLENBQUNrQyxLQUFLLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQ0EsS0FBSyxDQUFDQSxLQUFLLENBQUNDLE1BQU0sR0FBRyxDQUFDO0FBQUcsQ0FBQztTQUVyRGxDLFNBQVMsQ0FBQ2lDLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDQSxLQUFLLENBQUNBLEtBQUssQ0FBQ0MsTUFBTSxHQUFHLENBQUM7QUFBRyxDQUFDO1NBRXBEakMsVUFBVSxDQUFDZ0MsS0FBSyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUNBLEtBQUssQ0FBQ0EsS0FBSyxDQUFDQyxNQUFNLEdBQUcsQ0FBQztBQUFHLENBQUM7U0FFckRoQyxTQUFTLENBQUMrQixLQUFLLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQ0EsS0FBSyxDQUFDQSxLQUFLLENBQUNDLE1BQU0sR0FBRyxDQUFDO0FBQUcsQ0FBQztTQUVwRC9CLElBQUksQ0FBQzhCLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDQSxLQUFLLENBQUNBLEtBQUssQ0FBQ0MsTUFBTSxHQUFHLENBQUM7QUFBRyxDQUFDO1NBRS9DOUIsSUFBSSxDQUFDNkIsS0FBSyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUNBLEtBQUssQ0FBQ0UsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQUcsQ0FBQztTQUV6QzlCLElBQUksQ0FBQzRCLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDQSxLQUFLLENBQUNFLEtBQUssQ0FBQyxDQUFDO0FBQUcsQ0FBQztTQUV0QzdCLElBQUksQ0FBQzJCLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDQSxLQUFLLENBQUNFLEtBQUssQ0FBQ0YsS0FBSyxDQUFDQyxNQUFNLEdBQUcsQ0FBQztBQUFHLENBQUM7U0FFckQzQixLQUFLLENBQUMwQixLQUFLLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQ0EsS0FBSyxDQUFDRSxLQUFLLENBQUMsQ0FBQyxFQUFFQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUVKLEtBQUssQ0FBQ0MsTUFBTSxHQUFHLENBQUM7QUFBSSxDQUFDO1NBRXRFMUIsSUFBSSxDQUFDOEIsTUFBTSxFQUFFQyxNQUFNLEVBQUUsQ0FBQztJQUFDQyxLQUFLLENBQUNDLFNBQVMsQ0FBQ2pDLElBQUksQ0FBQ2tDLEtBQUssQ0FBQ0osTUFBTSxFQUFFQyxNQUFNO0FBQUcsQ0FBQztTQUVwRTlCLE9BQU8sQ0FBQzZCLE1BQU0sRUFBRUMsTUFBTSxFQUFFLENBQUM7SUFBQ0MsS0FBSyxDQUFDQyxTQUFTLENBQUNoQyxPQUFPLENBQUNpQyxLQUFLLENBQUNKLE1BQU0sRUFBRUMsTUFBTTtBQUFHLENBQUM7U0FFMUU3QixNQUFNLENBQUM0QixNQUFNLEVBQUVLLGVBQWUsRUFBRSxDQUFDO0lBQy9DLEdBQUssQ0FBQ0osTUFBTSxHQUFJSSxXQUFnQyxDQUFoQ0EsZUFBZSxFQUFZSCxLQUFLLElBQzlCRyxlQUFlLEdBQ2QsQ0FBQ0E7UUFBQUEsZUFBZTtJQUFBLENBQUM7SUFFcENuQyxJQUFJLENBQUM4QixNQUFNLEVBQUVDLE1BQU07QUFDckIsQ0FBQztTQUVlNUIsS0FBSyxDQUFDc0IsS0FBSyxFQUFFLENBQUM7SUFDNUIsR0FBSyxDQUFDVyxLQUFLLEdBQUcsQ0FBQztJQUVmLE1BQU0sQ0FBQ1gsS0FBSyxDQUFDbkIsTUFBTSxDQUFDOEIsS0FBSztBQUMzQixDQUFDO1NBRWVoQyxJQUFJLENBQUMwQixNQUFNLEVBQUVDLE1BQU0sRUFBRSxDQUFDO0lBQ3BDLEdBQUssQ0FBQ0ssS0FBSyxHQUFHLENBQUMsRUFDVEMsV0FBVyxHQUFHTixNQUFNLENBQUNMLE1BQU0sQ0FBRyxDQUFHLEFBQUgsRUFBRyxBQUFILENBQUc7SUFFdkNwQixNQUFNLENBQUN3QixNQUFNLEVBQUVNLEtBQUssRUFBRUMsV0FBVyxFQUFFTixNQUFNO0FBQzNDLENBQUM7U0FFZTFCLEtBQUssQ0FBQ3lCLE1BQU0sRUFBRUMsTUFBTSxFQUFFLENBQUM7SUFBQ0MsS0FBSyxDQUFDQyxTQUFTLENBQUNqQyxJQUFJLENBQUNrQyxLQUFLLENBQUNKLE1BQU0sRUFBRUMsTUFBTTtBQUFHLENBQUM7U0FFckV6QixNQUFNLENBQUN3QixNQUFNLEVBQUVNLEtBQUssRUFBdUMsQ0FBQztRQUF0Q0MsV0FBVyxvRUFBR0MsUUFBUSxFQUFFUCxNQUFNLG9FQUFHLENBQUMsQ0FBQztJQUN2RSxHQUFLLENBQUNRLElBQUksR0FBRyxDQUFDSDtRQUFBQSxLQUFLO1FBQUVDLFdBQVc7SUFBVyxDQUFDLENBQS9CLE1BQStCLG9CQUFQTixNQUFNLElBQ3JDUyxpQkFBaUIsR0FBR1IsS0FBSyxDQUFDQyxTQUFTLENBQUMzQixNQUFNLENBQUM0QixLQUFLLENBQUNKLE1BQU0sRUFBRVMsSUFBSTtJQUVuRSxNQUFNLENBQUNDLGlCQUFpQjtBQUMxQixDQUFDO1NBRWVqQyxPQUFPLENBQUNrQixLQUFLLEVBQUVnQixRQUFPLEVBQUVDLFFBQVEsRUFBRSxDQUFDO0lBQ2pELEdBQUcsQ0FBQ04sS0FBSztJQUVULEdBQUssQ0FBQ08sS0FBSyxHQUFHbEIsS0FBSyxDQUFDbUIsSUFBSSxDQUFDLFFBQVEsQ0FBUEgsT0FBTyxFQUFFSSxLQUFLLEVBQUssQ0FBQztRQUM1QyxHQUFLLENBQUNDLE1BQU0sR0FBR0osUUFBUSxDQUFDRCxPQUFPLEVBQUVJLEtBQUs7UUFFdEMsRUFBRSxFQUFFQyxNQUFNLEVBQUUsQ0FBQztZQUNYVixLQUFLLEdBQUdTLEtBQUssQ0FBRyxDQUFHLEFBQUgsRUFBRyxBQUFILENBQUc7WUFFbkIsTUFBTSxDQUFDLElBQUk7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUVELEVBQUUsRUFBRUYsS0FBSyxFQUFFLENBQUM7UUFDVixHQUFLLENBQUNOLFdBQVcsR0FBRyxDQUFDO1FBRXJCWixLQUFLLENBQUNuQixNQUFNLENBQUM4QixLQUFLLEVBQUVDLFdBQVcsRUFBRUksUUFBTztJQUMxQyxDQUFDO0lBRUQsTUFBTSxDQUFDRSxLQUFLO0FBQ2QsQ0FBQztTQUVlbkMsTUFBTSxDQUFDaUIsS0FBSyxFQUFFaUIsUUFBUSxFQUFFLENBQUM7SUFDdkMsR0FBSyxDQUFDSyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7SUFFM0J2QixnQkFBZ0IsQ0FBQ0MsS0FBSyxFQUFFLFFBQVEsQ0FBUGdCLE9BQU8sRUFBRUksS0FBSyxFQUFLLENBQUM7UUFDM0MsR0FBSyxDQUFDQyxNQUFNLEdBQUdKLFFBQVEsQ0FBQ0QsT0FBTyxFQUFFSSxLQUFLO1FBRXRDLEVBQUUsR0FBR0MsTUFBTSxFQUFFLENBQUM7WUFDWixHQUFLLENBQUNWLEtBQUssR0FBR1MsS0FBSyxFQUNiUixXQUFXLEdBQUcsQ0FBQyxFQUNmVyxlQUFlLEdBQUd2QixLQUFLLENBQUNuQixNQUFNLENBQUM4QixLQUFLLEVBQUVDLFdBQVcsR0FDakRZLG1CQUFtQixHQUFHaEUsS0FBSyxDQUFDK0QsZUFBZTtZQUVqREQsZ0JBQWdCLENBQUM5QyxPQUFPLENBQUNnRCxtQkFBbUIsRUFBSSxDQUFHLEFBQUgsRUFBRyxBQUFILENBQUc7UUFDckQsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUNGLGdCQUFnQjtBQUN6QixDQUFDO1NBRWV0QyxJQUFJLENBQUNnQixLQUFLLEVBQUVpQixRQUFRLEVBQUUsQ0FBQztJQUNyQyxHQUFLLENBQUNRLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFbkIzQixlQUFlLENBQUNFLEtBQUssRUFBRSxRQUFRLENBQVBnQixPQUFPLEVBQUVJLEtBQUssRUFBSyxDQUFDO1FBQzFDLEdBQUssQ0FBQ0MsTUFBTSxHQUFHSixRQUFRLENBQUNELE9BQU8sRUFBRUksS0FBSztRQUV0QyxFQUFFLEVBQUVDLE1BQU0sRUFBRSxDQUFDO1lBQ1hJLFFBQVEsQ0FBQ2xELElBQUksQ0FBQ3lDLE9BQU87UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUNTLFFBQVE7QUFDakIsQ0FBQztTQUVleEMsS0FBSyxDQUFDZSxLQUFLLEVBQUVpQixRQUFRLEVBQUUsQ0FBQztJQUN0QyxHQUFHLENBQUNTLGFBQWEsR0FBR0MsU0FBUztJQUU3QjNCLEtBQUssQ0FBQ21CLElBQUksQ0FBQyxRQUFRLENBQVBILE9BQU8sRUFBRUksS0FBSyxFQUFLLENBQUM7UUFDOUIsR0FBSyxDQUFDQyxNQUFNLEdBQUdKLFFBQVEsQ0FBQ0QsT0FBTyxFQUFFSSxLQUFLO1FBRXRDLEVBQUUsR0FBR0MsTUFBTSxFQUFFLENBQUM7WUFDWixHQUFLLENBQUNWLEtBQUssR0FBR1MsS0FBSyxFQUNiUixXQUFXLEdBQUcsQ0FBQyxFQUNmVyxlQUFlLEdBQUd2QixLQUFLLENBQUNuQixNQUFNLENBQUM4QixLQUFLLEVBQUVDLFdBQVcsR0FDakRZLG1CQUFtQixHQUFHaEUsS0FBSyxDQUFDK0QsZUFBZTtZQUVqREcsYUFBYSxHQUFHRixtQkFBbUIsQ0FBRyxDQUFHLEFBQUgsRUFBRyxBQUFILENBQUc7WUFFekMsTUFBTSxDQUFDLElBQUk7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQ0UsYUFBYTtBQUN0QixDQUFDO1NBRWV4QyxLQUFLLENBQUNjLEtBQUssRUFBRWdCLFFBQU8sRUFBRUMsUUFBUSxFQUFFLENBQUM7SUFDL0MsR0FBSyxDQUFDQyxLQUFLLEdBQUdsQixLQUFLLENBQUNtQixJQUFJLENBQUMsUUFBUSxDQUFQSCxPQUFPLEVBQUVJLEtBQUssRUFBSyxDQUFDO1FBQzVDLEdBQUssQ0FBQ0MsTUFBTSxHQUFHSixRQUFRLENBQUNELE9BQU8sRUFBRUksS0FBSztRQUV0QyxFQUFFLEVBQUVDLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLElBQUk7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUdELEVBQUUsRUFBRUgsS0FBSyxFQUFFLENBQUM7UUFDVmxCLEtBQUssQ0FBQ3pCLElBQUksQ0FBQ3lDLFFBQU87SUFDcEIsQ0FBQztJQUVELE1BQU0sQ0FBQ0UsS0FBSztBQUNkLENBQUM7U0FFZS9CLFFBQVEsQ0FBQ2EsS0FBSyxFQUFFaUIsUUFBUSxFQUFFLENBQUM7SUFDekMsR0FBRyxDQUFDVyxNQUFNLEdBQUcsQ0FBQyxFQUNWM0IsTUFBTSxHQUFHRCxLQUFLLENBQUNDLE1BQU07VUFFbEIyQixNQUFNLEdBQUczQixNQUFNLENBQUUsQ0FBQztRQUN2QixHQUFLLENBQUM0QixRQUFRLEdBQUc3QixLQUFLLENBQUM0QixNQUFNO1FBRTdCLEdBQUcsQ0FBRSxHQUFHLENBQUNFLE1BQU0sR0FBRzdCLE1BQU0sR0FBRyxDQUFDLEVBQUU2QixNQUFNLEdBQUdGLE1BQU0sRUFBRUUsTUFBTSxHQUFJLENBQUM7WUFDeEQsR0FBSyxDQUFDQyxRQUFRLEdBQUcvQixLQUFLLENBQUM4QixNQUFNLEdBQ3ZCVCxNQUFNLEdBQUdKLFFBQVEsQ0FBQ2MsUUFBUSxFQUFFRixRQUFRO1lBRTFDLEVBQUUsRUFBRVIsTUFBTSxFQUFFLENBQUM7Z0JBQ1gsR0FBSyxDQUFDVixLQUFLLEdBQUdtQixNQUFNLEVBQ2RsQixXQUFXLEdBQUcsQ0FBQztnQkFFckJaLEtBQUssQ0FBQ25CLE1BQU0sQ0FBQzhCLEtBQUssRUFBRUMsV0FBVztZQUNqQyxDQUFDO1FBQ0gsQ0FBQztRQUVEZ0IsTUFBTTtRQUVOM0IsTUFBTSxHQUFHRCxLQUFLLENBQUNDLE1BQU07SUFDdkIsQ0FBQztBQUNILENBQUM7U0FFZWIsT0FBTyxDQUFDaUIsTUFBTSxFQUFFQyxNQUFNLEVBQUVXLFFBQVEsRUFBRSxDQUFDO0lBQ2pEWCxNQUFNLENBQUMwQixPQUFPLENBQUMsUUFBUSxDQUFQaEIsT0FBTyxFQUFFSSxLQUFLLEVBQUssQ0FBQztRQUNsQyxHQUFLLENBQUNDLE1BQU0sR0FBR0osUUFBUSxDQUFDRCxPQUFPLEVBQUVJLEtBQUs7UUFFdEMsRUFBRSxFQUFFQyxNQUFNLEVBQUUsQ0FBQztZQUNYaEIsTUFBTSxDQUFDOUIsSUFBSSxDQUFDeUMsT0FBTztRQUNyQixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7U0FFZTNCLFFBQVEsQ0FBQ1csS0FBSyxFQUFFSyxNQUFNLEVBQUVDLE1BQU0sRUFBRVcsUUFBUSxFQUFFLENBQUM7SUFDekRqQixLQUFLLENBQUNnQyxPQUFPLENBQUMsUUFBUSxDQUFQaEIsT0FBTyxFQUFFSSxLQUFLLEVBQUssQ0FBQztRQUNqQyxHQUFLLENBQUNDLE1BQU0sR0FBR0osUUFBUSxDQUFDRCxPQUFPLEVBQUVJLEtBQUs7UUFFdENDLE1BQU0sR0FDSmhCLE1BQU0sQ0FBQzlCLElBQUksQ0FBQ3lDLE9BQU8sSUFDakJWLE1BQU0sQ0FBQy9CLElBQUksQ0FBQ3lDLE9BQU87SUFDekIsQ0FBQztBQUNILENBQUM7U0FFZTFCLFlBQVksQ0FBQ1UsS0FBSyxFQUFFaUIsUUFBUSxFQUFFLENBQUM7SUFDN0MsR0FBSyxDQUFDZ0IsV0FBVyxHQUFHakMsS0FBSyxDQUFDQyxNQUFNO0lBRWhDLEdBQUcsQ0FBRSxHQUFHLENBQUNtQixLQUFLLEdBQUcsQ0FBQyxFQUFFQSxLQUFLLEdBQUdhLFdBQVcsRUFBRWIsS0FBSyxHQUFJLENBQUM7UUFDakQsR0FBSyxDQUFDSixPQUFPLEdBQUdoQixLQUFLLENBQUNvQixLQUFLLEdBQ3JCQyxNQUFNLEdBQUdKLFFBQVEsQ0FBQ0QsT0FBTyxFQUFFSSxLQUFLO1FBRXRDLEVBQUUsRUFBRUMsTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLENBQUNMLE9BQU87UUFDaEIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSztBQUNkLENBQUM7U0FFZXpCLGFBQWEsQ0FBQ1MsS0FBSyxFQUFFaUIsUUFBUSxFQUFFLENBQUM7SUFDOUMsR0FBSyxDQUFDZ0IsV0FBVyxHQUFHakMsS0FBSyxDQUFDQyxNQUFNO0lBRWhDLEdBQUcsQ0FBRSxHQUFHLENBQUNtQixLQUFLLEdBQUdhLFdBQVcsR0FBRyxDQUFDLEVBQUViLEtBQUssSUFBSSxDQUFDLEVBQUVBLEtBQUssR0FBSSxDQUFDO1FBQ3RELEdBQUssQ0FBQ0osT0FBTyxHQUFHaEIsS0FBSyxDQUFDb0IsS0FBSyxHQUNyQkMsTUFBTSxHQUFHSixRQUFRLENBQUNELE9BQU8sRUFBRUksS0FBSztRQUV0QyxFQUFFLEVBQUVDLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDTCxPQUFPO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7QUFDZCxDQUFDO1NBRWV4QixZQUFZLENBQUNRLEtBQUssRUFBRWlCLFFBQVEsRUFBRSxDQUFDO0lBQzdDLEdBQUssQ0FBQ2dCLFdBQVcsR0FBR2pDLEtBQUssQ0FBQ0MsTUFBTTtJQUVoQyxHQUFHLENBQUUsR0FBRyxDQUFDbUIsS0FBSyxHQUFHLENBQUMsRUFBRUEsS0FBSyxHQUFHYSxXQUFXLEVBQUViLEtBQUssR0FBSSxDQUFDO1FBQ2pELEdBQUssQ0FBQ0osT0FBTyxHQUFHaEIsS0FBSyxDQUFDb0IsS0FBSyxHQUNyQkMsTUFBTSxHQUFHSixRQUFRLENBQUNELE9BQU8sRUFBRUksS0FBSztRQUV0QyxFQUFFLEVBQUVDLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLElBQUk7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO0FBQ2QsQ0FBQztTQUVlNUIsYUFBYSxDQUFDTyxLQUFLLEVBQUVpQixRQUFRLEVBQUUsQ0FBQztJQUM5QyxHQUFLLENBQUNnQixXQUFXLEdBQUdqQyxLQUFLLENBQUNDLE1BQU07SUFFaEMsR0FBRyxDQUFFLEdBQUcsQ0FBQ21CLEtBQUssR0FBR2EsV0FBVyxHQUFHLENBQUMsRUFBRWIsS0FBSyxJQUFJLENBQUMsRUFBRUEsS0FBSyxHQUFJLENBQUM7UUFDdEQsR0FBSyxDQUFDSixPQUFPLEdBQUdoQixLQUFLLENBQUNvQixLQUFLLEdBQ3JCQyxNQUFNLEdBQUdKLFFBQVEsQ0FBQ0QsT0FBTyxFQUFFSSxLQUFLO1FBRXRDLEVBQUUsRUFBRUMsTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLENBQUMsSUFBSTtRQUNiLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7QUFDZCxDQUFDO1NBRWUzQixhQUFhLENBQUNNLEtBQUssRUFBRWlCLFFBQVEsRUFBRSxDQUFDO0lBQzlDLEdBQUssQ0FBQ2dCLFdBQVcsR0FBR2pDLEtBQUssQ0FBQ0MsTUFBTTtJQUVoQyxHQUFHLENBQUUsR0FBRyxDQUFDbUIsS0FBSyxHQUFHLENBQUMsRUFBRUEsS0FBSyxHQUFHYSxXQUFXLEVBQUViLEtBQUssR0FBSSxDQUFDO1FBQ2pELEdBQUssQ0FBQ0osT0FBTyxHQUFHaEIsS0FBSyxDQUFDb0IsS0FBSyxHQUNyQkMsTUFBTSxHQUFHSixRQUFRLENBQUNELE9BQU8sRUFBRUksS0FBSztRQUV0QyxFQUFFLEdBQUdDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxDQUFDLEtBQUs7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJO0FBQ2IsQ0FBQztTQUVlMUIsY0FBYyxDQUFDSyxLQUFLLEVBQUVpQixRQUFRLEVBQUUsQ0FBQztJQUMvQyxHQUFLLENBQUNnQixXQUFXLEdBQUdqQyxLQUFLLENBQUNDLE1BQU07SUFFaEMsR0FBRyxDQUFFLEdBQUcsQ0FBQ21CLEtBQUssR0FBR2EsV0FBVyxHQUFHLENBQUMsRUFBRWIsS0FBSyxJQUFJLENBQUMsRUFBRUEsS0FBSyxHQUFJLENBQUM7UUFDdEQsR0FBSyxDQUFDSixPQUFPLEdBQUdoQixLQUFLLENBQUNvQixLQUFLLEdBQ3JCQyxNQUFNLEdBQUdKLFFBQVEsQ0FBQ0QsT0FBTyxFQUFFSSxLQUFLO1FBRXRDLEVBQUUsR0FBR0MsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsS0FBSztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUk7QUFDYixDQUFDO1NBRWV6QixjQUFjLENBQUNJLEtBQUssRUFBRWlCLFFBQVEsRUFBRWlCLFlBQVksRUFBRSxDQUFDO0lBQzdELEdBQUcsQ0FBQ0MsS0FBSyxHQUFHRCxZQUFZLENBQUUsQ0FBRyxBQUFILEVBQUcsQUFBSCxDQUFHO0lBRTdCLEdBQUssQ0FBQ0QsV0FBVyxHQUFHakMsS0FBSyxDQUFDQyxNQUFNO0lBRWhDLEdBQUcsQ0FBRSxHQUFHLENBQUNtQixLQUFLLEdBQUcsQ0FBQyxFQUFFQSxLQUFLLEdBQUdhLFdBQVcsRUFBRWIsS0FBSyxHQUFJLENBQUM7UUFDakQsR0FBSyxDQUFDSixPQUFPLEdBQUdoQixLQUFLLENBQUNvQixLQUFLO1FBRTNCZSxLQUFLLEdBQUdsQixRQUFRLENBQUNrQixLQUFLLEVBQUVuQixPQUFPLEVBQUVJLEtBQUs7SUFDeEMsQ0FBQztJQUVELE1BQU0sQ0FBQ2UsS0FBSztBQUNkLENBQUM7U0FFZXRDLGVBQWUsQ0FBQ0csS0FBSyxFQUFFaUIsUUFBUSxFQUFFaUIsWUFBWSxFQUFFLENBQUM7SUFDOUQsR0FBRyxDQUFDQyxLQUFLLEdBQUdELFlBQVksQ0FBRSxDQUFHLEFBQUgsRUFBRyxBQUFILENBQUc7SUFFN0IsR0FBSyxDQUFDRCxXQUFXLEdBQUdqQyxLQUFLLENBQUNDLE1BQU07SUFFaEMsR0FBRyxDQUFFLEdBQUcsQ0FBQ21CLEtBQUssR0FBR2EsV0FBVyxHQUFHLENBQUMsRUFBRWIsS0FBSyxJQUFJLENBQUMsRUFBRUEsS0FBSyxHQUFJLENBQUM7UUFDdEQsR0FBSyxDQUFDSixPQUFPLEdBQUdoQixLQUFLLENBQUNvQixLQUFLO1FBRTNCZSxLQUFLLEdBQUdsQixRQUFRLENBQUNrQixLQUFLLEVBQUVuQixPQUFPLEVBQUVJLEtBQUs7SUFDeEMsQ0FBQztJQUVELE1BQU0sQ0FBQ2UsS0FBSztBQUNkLENBQUM7U0FFZXJDLGVBQWUsQ0FBQ0UsS0FBSyxFQUFFaUIsUUFBUSxFQUFFLENBQUM7SUFDaEQsR0FBSyxDQUFDZ0IsV0FBVyxHQUFHakMsS0FBSyxDQUFDQyxNQUFNO0lBRWhDLEdBQUcsQ0FBRSxHQUFHLENBQUNtQixLQUFLLEdBQUcsQ0FBQyxFQUFFQSxLQUFLLEdBQUdhLFdBQVcsRUFBRWIsS0FBSyxHQUFJLENBQUM7UUFDakQsR0FBSyxDQUFDSixPQUFPLEdBQUdoQixLQUFLLENBQUNvQixLQUFLO1FBRTNCSCxRQUFRLENBQUNELE9BQU8sRUFBRUksS0FBSztJQUN6QixDQUFDO0FBQ0gsQ0FBQztTQUVlckIsZ0JBQWdCLENBQUNDLEtBQUssRUFBRWlCLFFBQVEsRUFBRSxDQUFDO0lBQ2pELEdBQUssQ0FBQ2dCLFdBQVcsR0FBR2pDLEtBQUssQ0FBQ0MsTUFBTTtJQUVoQyxHQUFHLENBQUUsR0FBRyxDQUFDbUIsS0FBSyxHQUFHYSxXQUFXLEdBQUcsQ0FBQyxFQUFFYixLQUFLLElBQUksQ0FBQyxFQUFFQSxLQUFLLEdBQUksQ0FBQztRQUN0RCxHQUFLLENBQUNKLE9BQU8sR0FBR2hCLEtBQUssQ0FBQ29CLEtBQUs7UUFFM0JILFFBQVEsQ0FBQ0QsT0FBTyxFQUFFSSxLQUFLO0lBQ3pCLENBQUM7QUFDSCxDQUFDO2VBRWMsQ0FBQztJQUNkNUQsS0FBSyxFQUFMQSxLQUFLO0lBQ0xDLE1BQU0sRUFBTkEsTUFBTTtJQUNOQyxLQUFLLEVBQUxBLEtBQUs7SUFDTEMsTUFBTSxFQUFOQSxNQUFNO0lBQ05DLEtBQUssRUFBTEEsS0FBSztJQUNMQyxTQUFTLEVBQVRBLFNBQVM7SUFDVEMsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZDLFNBQVMsRUFBVEEsU0FBUztJQUNUQyxVQUFVLEVBQVZBLFVBQVU7SUFDVkMsU0FBUyxFQUFUQSxTQUFTO0lBQ1RDLElBQUksRUFBSkEsSUFBSTtJQUNKQyxJQUFJLEVBQUpBLElBQUk7SUFDSkMsSUFBSSxFQUFKQSxJQUFJO0lBQ0pDLElBQUksRUFBSkEsSUFBSTtJQUNKQyxLQUFLLEVBQUxBLEtBQUs7SUFDTEMsSUFBSSxFQUFKQSxJQUFJO0lBQ0pDLE9BQU8sRUFBUEEsT0FBTztJQUNQQyxNQUFNLEVBQU5BLE1BQU07SUFDTkMsS0FBSyxFQUFMQSxLQUFLO0lBQ0xDLElBQUksRUFBSkEsSUFBSTtJQUNKQyxLQUFLLEVBQUxBLEtBQUs7SUFDTEMsTUFBTSxFQUFOQSxNQUFNO0lBQ05DLE9BQU8sRUFBUEEsT0FBTztJQUNQQyxNQUFNLEVBQU5BLE1BQU07SUFDTkMsSUFBSSxFQUFKQSxJQUFJO0lBQ0pDLEtBQUssRUFBTEEsS0FBSztJQUNMQyxLQUFLLEVBQUxBLEtBQUs7SUFDTEMsUUFBUSxFQUFSQSxRQUFRO0lBQ1JDLE9BQU8sRUFBUEEsT0FBTztJQUNQQyxRQUFRLEVBQVJBLFFBQVE7SUFDUkMsWUFBWSxFQUFaQSxZQUFZO0lBQ1pDLGFBQWEsRUFBYkEsYUFBYTtJQUNiQyxZQUFZLEVBQVpBLFlBQVk7SUFDWkMsYUFBYSxFQUFiQSxhQUFhO0lBQ2JDLGFBQWEsRUFBYkEsYUFBYTtJQUNiQyxjQUFjLEVBQWRBLGNBQWM7SUFDZEMsY0FBYyxFQUFkQSxjQUFjO0lBQ2RDLGVBQWUsRUFBZkEsZUFBZTtJQUNmQyxlQUFlLEVBQWZBLGVBQWU7SUFDZkMsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7QUFDbEIsQ0FBQyJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "necessary",
3
3
  "author": "James Smith",
4
- "version": "11.2.7",
4
+ "version": "11.3.0",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/necessary",
7
7
  "description": "A collection of utility functions.",
package/src/keyCodes.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ export const TAB_KEY_CODE = 9;
3
4
  export const SHIFT_KEY_CODE = 16;
4
5
  export const ENTER_KEY_CODE = 13;
5
6
  export const ESCAPE_KEY_CODE = 27;
@@ -11,6 +12,7 @@ export const ARROW_LEFT_KEY_CODE = 37;
11
12
  export const ARROW_RIGHT_KEY_CODE = 39;
12
13
 
13
14
  export default {
15
+ TAB_KEY_CODE,
14
16
  SHIFT_KEY_CODE,
15
17
  ENTER_KEY_CODE,
16
18
  ESCAPE_KEY_CODE,
@@ -157,6 +157,31 @@ export function patch(array, element, callback) {
157
157
  return found;
158
158
  }
159
159
 
160
+ export function compress(array, callback) {
161
+ let index1 = 0,
162
+ length = array.length;
163
+
164
+ while (index1 < length) {
165
+ const element1 = array[index1];
166
+
167
+ for (let index2 = length - 1; index2 > index1; index2--) {
168
+ const element2 = array[index2],
169
+ passed = callback(element2, element1);
170
+
171
+ if (passed) {
172
+ const start = index2, ///
173
+ deleteCount = 1;
174
+
175
+ array.splice(start, deleteCount);
176
+ }
177
+ }
178
+
179
+ index1++;
180
+
181
+ length = array.length;
182
+ }
183
+ }
184
+
160
185
  export function augment(array1, array2, callback) {
161
186
  array2.forEach((element, index) => {
162
187
  const passed = callback(element, index);
@@ -343,6 +368,7 @@ export default {
343
368
  find,
344
369
  prune,
345
370
  patch,
371
+ compress,
346
372
  augment,
347
373
  separate,
348
374
  forwardsFind,