necessary 11.0.49 → 11.1.3

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
@@ -587,6 +587,16 @@ pathWithoutTopmostDirectoryNameFromPath("root/etc/init.conf"); // returns 'etc/i
587
587
  - `patch()`
588
588
  - `augment()`
589
589
  - `separate()`
590
+ - `forwardsFind()`
591
+ - `backwardsFind()`
592
+ - `forwardsSome()`
593
+ - `backwardsSome()`
594
+ - `forwardsEvery()`
595
+ - `backwardsEvery()`
596
+ - `forwardsReduce()`
597
+ - `backwardsReduce()`
598
+ - `forwardsForEach()`
599
+ - `backwardsForEach()`
590
600
 
591
601
  Note that none of these functions take or pass on a `thisArg` argument when they might otherwise have done. Use `bind()`.
592
602
 
@@ -688,6 +698,8 @@ separate([1, -1, -2, 2, 3, -3], [], [], (element, index) => {
688
698
  }); // the second and third array arguments become [1, 2, 3] and [-1, -2, 3], respectively.
689
699
  ```
690
700
 
701
+ The `forwardsXXX()` and `backwardsXXX()`functions do as their names suggest. The `fowardsXXX()` function take an array for their first argument but otherwise behave identically to their native counterparts. The `backwardsXXX()` functions behave similarly, only backwards.
702
+
691
703
  ## HTTP utilities
692
704
 
693
705
  - `overwrite()`
@@ -31,6 +31,8 @@ exports.prune = prune;
31
31
  exports.patch = patch;
32
32
  exports.augment = augment;
33
33
  exports.separate = separate;
34
+ exports.forwardsFind = forwardsFind;
35
+ exports.backwardsFind = backwardsFind;
34
36
  exports.forwardsSome = forwardsSome;
35
37
  exports.backwardsSome = backwardsSome;
36
38
  exports.forwardsEvery = forwardsEvery;
@@ -222,6 +224,26 @@ function separate(array, array1, array2, test) {
222
224
  passed ? array1.push(element) : array2.push(element);
223
225
  });
224
226
  }
227
+ function forwardsFind(array, callback) {
228
+ var arrayLength = array.length;
229
+ for(var index = 0; index < arrayLength; index++){
230
+ var element = array[index], result = callback(element, index);
231
+ if (result) {
232
+ return element;
233
+ }
234
+ }
235
+ return false;
236
+ }
237
+ function backwardsFind(array, callback) {
238
+ var arrayLength = array.length;
239
+ for(var index = arrayLength - 1; index >= 0; index--){
240
+ var element = array[index], result = callback(element, index);
241
+ if (result) {
242
+ return element;
243
+ }
244
+ }
245
+ return false;
246
+ }
225
247
  function forwardsSome(array, callback) {
226
248
  var arrayLength = array.length;
227
249
  for(var index = 0; index < arrayLength; index++){
@@ -263,17 +285,21 @@ function backwardsEvery(array, callback) {
263
285
  return true;
264
286
  }
265
287
  function forwardsReduce(array, callback, initialValue) {
266
- var value = initialValue;
267
- forwardsForEach(array, function(element, index) {
288
+ var value = initialValue; ///
289
+ var arrayLength = array.length;
290
+ for(var index = 0; index < arrayLength; index++){
291
+ var element = array[index];
268
292
  value = callback(value, element, index);
269
- });
293
+ }
270
294
  return value;
271
295
  }
272
296
  function backwardsReduce(array, callback, initialValue) {
273
- var value = initialValue;
274
- backwardsForEach(array, function(element, index) {
297
+ var value = initialValue; ///
298
+ var arrayLength = array.length;
299
+ for(var index = arrayLength - 1; index >= 0; index--){
300
+ var element = array[index];
275
301
  value = callback(value, element, index);
276
- });
302
+ }
277
303
  return value;
278
304
  }
279
305
  function forwardsForEach(array, callback) {
@@ -320,6 +346,8 @@ var _default = {
320
346
  patch: patch,
321
347
  augment: augment,
322
348
  separate: separate,
349
+ forwardsFind: forwardsFind,
350
+ backwardsFind: backwardsFind,
323
351
  forwardsSome: forwardsSome,
324
352
  backwardsSome: backwardsSome,
325
353
  forwardsEvery: forwardsEvery,
@@ -331,4 +359,4 @@ var _default = {
331
359
  };
332
360
  exports.default = _default;
333
361
 
334
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbMF07fVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kKGFycmF5KSB7IHJldHVybiBhcnJheVsxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gdGhpcmQoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzJdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3VydGgoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWZ0aChhcnJheSkgeyByZXR1cm4gYXJyYXlbNF07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZnRoTGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gNV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJ0aExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDRdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGlyZExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAyXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gbGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHsgcmV0dXJuIGFycmF5LnNsaWNlKDAsIDEpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWlsKGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gYmFjayhhcnJheSkgeyByZXR1cm4gYXJyYXkuc2xpY2UoYXJyYXkubGVuZ3RoIC0gMSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb250KGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgwLCBhcnJheS5sZW5ndGggLSAxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcHVzaChhcnJheTEsIGFycmF5MikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheTEsIGFycmF5Mik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuc2hpZnQoYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jYXQoYXJyYXkxLCBlbGVtZW50T3JBcnJheTIpIHtcbiAgY29uc3QgYXJyYXkyID0gKGVsZW1lbnRPckFycmF5MiBpbnN0YW5jZW9mIEFycmF5KSA/XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRPckFycmF5MiA6XG4gICAgICAgICAgICAgICAgICAgICBbZWxlbWVudE9yQXJyYXkyXTtcbiAgXG4gIHB1c2goYXJyYXkxLCBhcnJheTIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoYXJyYXkpIHtcbiAgY29uc3Qgc3RhcnQgPSAwO1xuICBcbiAgcmV0dXJuIGFycmF5LnNwbGljZShzdGFydCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KGFycmF5MSwgYXJyYXkyKSB7XG4gIGNvbnN0IHN0YXJ0ID0gMCxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBhcnJheTIubGVuZ3RoOyAgLy8vXG4gIFxuICBzcGxpY2UoYXJyYXkxLCBzdGFydCwgZGVsZXRlQ291bnQsIGFycmF5Mik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShhcnJheTEsIGFycmF5MikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheTEsIGFycmF5Mik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGljZShhcnJheTEsIHN0YXJ0LCBkZWxldGVDb3VudCA9IEluZmluaXR5LCBhcnJheTIgPSBbXSkge1xuICBjb25zdCBhcmdzID0gW3N0YXJ0LCBkZWxldGVDb3VudCwgLi4uYXJyYXkyXSxcbiAgICAgICAgZGVsZXRlZEl0ZW1zQXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGFycmF5MSwgYXJncyk7XG5cbiAgcmV0dXJuIGRlbGV0ZWRJdGVtc0FycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZShhcnJheSwgZWxlbWVudCwgdGVzdCkge1xuICBsZXQgc3RhcnQ7XG4gIFxuICBjb25zdCBmb3VuZCA9IGFycmF5LnNvbWUoKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gdGVzdChlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBzdGFydCA9IGluZGV4OyAgLy8vXG4gICAgICBcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG4gIFxuICBpZiAoZm91bmQpIHtcbiAgICBjb25zdCBkZWxldGVDb3VudCA9IDE7XG5cbiAgICBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCBlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcihhcnJheSwgdGVzdCkge1xuICBjb25zdCBmaWx0ZXJlZEVsZW1lbnRzID0gW107XG4gIFxuICBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSB0ZXN0KGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcGFzc2VkKSB7XG4gICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICBkZWxldGVkRWxlbWVudHMgPSBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KSxcbiAgICAgICAgICAgIGZpcnN0RGVsZXRlZEVsZW1lbnQgPSBmaXJzdChkZWxldGVkRWxlbWVudHMpO1xuICAgICAgXG4gICAgICBmaWx0ZXJlZEVsZW1lbnRzLnVuc2hpZnQoZmlyc3REZWxldGVkRWxlbWVudCk7ICAvLy9cbiAgICB9XG4gIH0pO1xuICBcbiAgcmV0dXJuIGZpbHRlcmVkRWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kKGFycmF5LCB0ZXN0KSB7XG4gIGNvbnN0IGVsZW1lbnRzID0gW107XG5cbiAgZm9yd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSB0ZXN0KGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZShhcnJheSwgdGVzdCkge1xuICBsZXQgcHJ1bmVkRWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgXG4gIGFycmF5LnNvbWUoKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gdGVzdChlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gZmlyc3QoZGVsZXRlZEVsZW1lbnRzKTtcbiAgICAgIFxuICAgICAgcHJ1bmVkRWxlbWVudCA9IGZpcnN0RGVsZXRlZEVsZW1lbnQ7ICAvLy9cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbiAgXG4gIHJldHVybiBwcnVuZWRFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2goYXJyYXksIGVsZW1lbnQsIHRlc3QpIHtcbiAgY29uc3QgZm91bmQgPSBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IHRlc3QoZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuXG4gIGlmIChmb3VuZCkge1xuICAgIGFycmF5LnB1c2goZWxlbWVudCk7XG4gIH1cblxuICByZXR1cm4gZm91bmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdWdtZW50KGFycmF5MSwgYXJyYXkyLCB0ZXN0KSB7XG4gIGFycmF5Mi5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IHRlc3QoZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgYXJyYXkxLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcGFyYXRlKGFycmF5LCBhcnJheTEsIGFycmF5MiwgdGVzdCkge1xuICBhcnJheS5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IHRlc3QoZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgcGFzc2VkID9cbiAgICAgIGFycmF5MS5wdXNoKGVsZW1lbnQpIDpcbiAgICAgICAgYXJyYXkyLnB1c2goZWxlbWVudCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNTb21lKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcbiAgICBcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNTb21lKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5TGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFja3dhcmRzRXZlcnkoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNSZWR1Y2UoYXJyYXksIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlO1xuXG4gIGZvcndhcmRzRm9yRWFjaChhcnJheSwgKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgdmFsdWUgPSBjYWxsYmFjayh2YWx1ZSwgZWxlbWVudCwgaW5kZXgpO1xuICB9KTtcblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNSZWR1Y2UoYXJyYXksIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlO1xuXG4gIGJhY2t3YXJkc0ZvckVhY2goYXJyYXksIChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIHZhbHVlID0gY2FsbGJhY2sodmFsdWUsIGVsZW1lbnQsIGluZGV4KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBmaXJzdCxcbiAgc2Vjb25kLFxuICB0aGlyZCxcbiAgZm91cnRoLFxuICBmaWZ0aCxcbiAgZmlmdGhMYXN0LFxuICBmb3VydGhMYXN0LFxuICB0aGlyZExhc3QsXG4gIHNlY29uZExhc3QsXG4gIGZpcnN0TGFzdCxcbiAgbGFzdCxcbiAgaGVhZCxcbiAgdGFpbCxcbiAgYmFjayxcbiAgZnJvbnQsXG4gIHB1c2gsXG4gIHVuc2hpZnQsXG4gIGNvbmNhdCxcbiAgY2xlYXIsXG4gIGNvcHksXG4gIG1lcmdlLFxuICBzcGxpY2UsXG4gIHJlcGxhY2UsXG4gIGZpbHRlcixcbiAgZmluZCxcbiAgcHJ1bmUsXG4gIHBhdGNoLFxuICBhdWdtZW50LFxuICBzZXBhcmF0ZSxcbiAgZm9yd2FyZHNTb21lLFxuICBiYWNrd2FyZHNTb21lLFxuICBmb3J3YXJkc0V2ZXJ5LFxuICBiYWNrd2FyZHNFdmVyeSxcbiAgZm9yd2FyZHNSZWR1Y2UsXG4gIGJhY2t3YXJkc1JlZHVjZSxcbiAgZm9yd2FyZHNGb3JFYWNoLFxuICBiYWNrd2FyZHNGb3JFYWNoXG59O1xuIl0sIm5hbWVzIjpbImZpcnN0Iiwic2Vjb25kIiwidGhpcmQiLCJmb3VydGgiLCJmaWZ0aCIsImZpZnRoTGFzdCIsImZvdXJ0aExhc3QiLCJ0aGlyZExhc3QiLCJzZWNvbmRMYXN0IiwiZmlyc3RMYXN0IiwibGFzdCIsImhlYWQiLCJ0YWlsIiwiYmFjayIsImZyb250IiwicHVzaCIsInVuc2hpZnQiLCJjb25jYXQiLCJjbGVhciIsImNvcHkiLCJtZXJnZSIsInNwbGljZSIsInJlcGxhY2UiLCJmaWx0ZXIiLCJmaW5kIiwicHJ1bmUiLCJwYXRjaCIsImF1Z21lbnQiLCJzZXBhcmF0ZSIsImZvcndhcmRzU29tZSIsImJhY2t3YXJkc1NvbWUiLCJmb3J3YXJkc0V2ZXJ5IiwiYmFja3dhcmRzRXZlcnkiLCJmb3J3YXJkc1JlZHVjZSIsImJhY2t3YXJkc1JlZHVjZSIsImZvcndhcmRzRm9yRWFjaCIsImJhY2t3YXJkc0ZvckVhY2giLCJhcnJheSIsImxlbmd0aCIsInNsaWNlIiwiYXJyYXkxIiwiYXJyYXkyIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJhcHBseSIsImVsZW1lbnRPckFycmF5MiIsInN0YXJ0IiwiZGVsZXRlQ291bnQiLCJJbmZpbml0eSIsImFyZ3MiLCJkZWxldGVkSXRlbXNBcnJheSIsImVsZW1lbnQiLCJ0ZXN0IiwiZm91bmQiLCJzb21lIiwiaW5kZXgiLCJwYXNzZWQiLCJmaWx0ZXJlZEVsZW1lbnRzIiwiZGVsZXRlZEVsZW1lbnRzIiwiZmlyc3REZWxldGVkRWxlbWVudCIsImVsZW1lbnRzIiwicHJ1bmVkRWxlbWVudCIsInVuZGVmaW5lZCIsImZvckVhY2giLCJjYWxsYmFjayIsImFycmF5TGVuZ3RoIiwicmVzdWx0IiwiaW5pdGlhbFZhbHVlIiwidmFsdWUiXSwibWFwcGluZ3MiOiJBQUFBLENBQVk7Ozs7UUFFSUEsS0FBSyxHQUFMQSxLQUFLO1FBRUxDLE1BQU0sR0FBTkEsTUFBTTtRQUVOQyxLQUFLLEdBQUxBLEtBQUs7UUFFTEMsTUFBTSxHQUFOQSxNQUFNO1FBRU5DLEtBQUssR0FBTEEsS0FBSztRQUVMQyxTQUFTLEdBQVRBLFNBQVM7UUFFVEMsVUFBVSxHQUFWQSxVQUFVO1FBRVZDLFNBQVMsR0FBVEEsU0FBUztRQUVUQyxVQUFVLEdBQVZBLFVBQVU7UUFFVkMsU0FBUyxHQUFUQSxTQUFTO1FBRVRDLElBQUksR0FBSkEsSUFBSTtRQUVKQyxJQUFJLEdBQUpBLElBQUk7UUFFSkMsSUFBSSxHQUFKQSxJQUFJO1FBRUpDLElBQUksR0FBSkEsSUFBSTtRQUVKQyxLQUFLLEdBQUxBLEtBQUs7UUFFTEMsSUFBSSxHQUFKQSxJQUFJO1FBRUpDLE9BQU8sR0FBUEEsT0FBTztRQUVQQyxNQUFNLEdBQU5BLE1BQU07UUFRTkMsS0FBSyxHQUFMQSxLQUFLO1FBTUxDLElBQUksR0FBSkEsSUFBSTtRQU9KQyxLQUFLLEdBQUxBLEtBQUs7UUFFTEMsTUFBTSxHQUFOQSxNQUFNO1FBT05DLE9BQU8sR0FBUEEsT0FBTztRQXNCUEMsTUFBTSxHQUFOQSxNQUFNO1FBbUJOQyxJQUFJLEdBQUpBLElBQUk7UUFjSkMsS0FBSyxHQUFMQSxLQUFLO1FBcUJMQyxLQUFLLEdBQUxBLEtBQUs7UUFpQkxDLE9BQU8sR0FBUEEsT0FBTztRQVVQQyxRQUFRLEdBQVJBLFFBQVE7UUFVUkMsWUFBWSxHQUFaQSxZQUFZO1FBZVpDLGFBQWEsR0FBYkEsYUFBYTtRQWViQyxhQUFhLEdBQWJBLGFBQWE7UUFlYkMsY0FBYyxHQUFkQSxjQUFjO1FBZWRDLGNBQWMsR0FBZEEsY0FBYztRQVVkQyxlQUFlLEdBQWZBLGVBQWU7UUFVZkMsZUFBZSxHQUFmQSxlQUFlO1FBVWZDLGdCQUFnQixHQUFoQkEsZ0JBQWdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBM1FoQnBDLEtBQUssQ0FBQ3FDLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDQSxLQUFLLENBQUMsQ0FBQztBQUFFLENBQUM7U0FFaENwQyxNQUFNLENBQUNvQyxLQUFLLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQ0EsS0FBSyxDQUFDLENBQUM7QUFBRyxDQUFDO1NBRWxDbkMsS0FBSyxDQUFDbUMsS0FBSyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUNBLEtBQUssQ0FBQyxDQUFDO0FBQUcsQ0FBQztTQUVqQ2xDLE1BQU0sQ0FBQ2tDLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDQSxLQUFLLENBQUMsQ0FBQztBQUFHLENBQUM7U0FFbENqQyxLQUFLLENBQUNpQyxLQUFLLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQ0EsS0FBSyxDQUFDLENBQUM7QUFBRyxDQUFDO1NBRWpDaEMsU0FBUyxDQUFDZ0MsS0FBSyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUNBLEtBQUssQ0FBQ0EsS0FBSyxDQUFDQyxNQUFNLEdBQUcsQ0FBQztBQUFHLENBQUM7U0FFcERoQyxVQUFVLENBQUMrQixLQUFLLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQ0EsS0FBSyxDQUFDQSxLQUFLLENBQUNDLE1BQU0sR0FBRyxDQUFDO0FBQUcsQ0FBQztTQUVyRC9CLFNBQVMsQ0FBQzhCLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDQSxLQUFLLENBQUNBLEtBQUssQ0FBQ0MsTUFBTSxHQUFHLENBQUM7QUFBRyxDQUFDO1NBRXBEOUIsVUFBVSxDQUFDNkIsS0FBSyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUNBLEtBQUssQ0FBQ0EsS0FBSyxDQUFDQyxNQUFNLEdBQUcsQ0FBQztBQUFHLENBQUM7U0FFckQ3QixTQUFTLENBQUM0QixLQUFLLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQ0EsS0FBSyxDQUFDQSxLQUFLLENBQUNDLE1BQU0sR0FBRyxDQUFDO0FBQUcsQ0FBQztTQUVwRDVCLElBQUksQ0FBQzJCLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDQSxLQUFLLENBQUNBLEtBQUssQ0FBQ0MsTUFBTSxHQUFHLENBQUM7QUFBRyxDQUFDO1NBRS9DM0IsSUFBSSxDQUFDMEIsS0FBSyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUNBLEtBQUssQ0FBQ0UsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQUcsQ0FBQztTQUV6QzNCLElBQUksQ0FBQ3lCLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDQSxLQUFLLENBQUNFLEtBQUssQ0FBQyxDQUFDO0FBQUcsQ0FBQztTQUV0QzFCLElBQUksQ0FBQ3dCLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDQSxLQUFLLENBQUNFLEtBQUssQ0FBQ0YsS0FBSyxDQUFDQyxNQUFNLEdBQUcsQ0FBQztBQUFHLENBQUM7U0FFckR4QixLQUFLLENBQUN1QixLQUFLLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQ0EsS0FBSyxDQUFDRSxLQUFLLENBQUMsQ0FBQyxFQUFFRixLQUFLLENBQUNDLE1BQU0sR0FBRyxDQUFDO0FBQUcsQ0FBQztTQUV6RHZCLElBQUksQ0FBQ3lCLE1BQU0sRUFBRUMsTUFBTSxFQUFFLENBQUM7SUFBQ0MsS0FBSyxDQUFDQyxTQUFTLENBQUM1QixJQUFJLENBQUM2QixLQUFLLENBQUNKLE1BQU0sRUFBRUMsTUFBTTtBQUFHLENBQUM7U0FFcEV6QixPQUFPLENBQUN3QixNQUFNLEVBQUVDLE1BQU0sRUFBRSxDQUFDO0lBQUNDLEtBQUssQ0FBQ0MsU0FBUyxDQUFDM0IsT0FBTyxDQUFDNEIsS0FBSyxDQUFDSixNQUFNLEVBQUVDLE1BQU07QUFBRyxDQUFDO1NBRTFFeEIsTUFBTSxDQUFDdUIsTUFBTSxFQUFFSyxlQUFlLEVBQUUsQ0FBQztJQUMvQyxHQUFLLENBQUNKLE1BQU0sR0FBSUksV0FBZ0MsQ0FBaENBLGVBQWUsRUFBWUgsS0FBSyxJQUM5QkcsZUFBZSxHQUNkLENBQUNBO1FBQUFBLGVBQWU7SUFBQSxDQUFDO0lBRXBDOUIsSUFBSSxDQUFDeUIsTUFBTSxFQUFFQyxNQUFNO0FBQ3JCLENBQUM7U0FFZXZCLEtBQUssQ0FBQ21CLEtBQUssRUFBRSxDQUFDO0lBQzVCLEdBQUssQ0FBQ1MsS0FBSyxHQUFHLENBQUM7SUFFZixNQUFNLENBQUNULEtBQUssQ0FBQ2hCLE1BQU0sQ0FBQ3lCLEtBQUs7QUFDM0IsQ0FBQztTQUVlM0IsSUFBSSxDQUFDcUIsTUFBTSxFQUFFQyxNQUFNLEVBQUUsQ0FBQztJQUNwQyxHQUFLLENBQUNLLEtBQUssR0FBRyxDQUFDLEVBQ1RDLFdBQVcsR0FBR04sTUFBTSxDQUFDSCxNQUFNLENBQUcsQ0FBRyxBQUFILEVBQUcsQUFBSCxDQUFHO0lBRXZDakIsTUFBTSxDQUFDbUIsTUFBTSxFQUFFTSxLQUFLLEVBQUVDLFdBQVcsRUFBRU4sTUFBTTtBQUMzQyxDQUFDO1NBRWVyQixLQUFLLENBQUNvQixNQUFNLEVBQUVDLE1BQU0sRUFBRSxDQUFDO0lBQUNDLEtBQUssQ0FBQ0MsU0FBUyxDQUFDNUIsSUFBSSxDQUFDNkIsS0FBSyxDQUFDSixNQUFNLEVBQUVDLE1BQU07QUFBRyxDQUFDO1NBRXJFcEIsTUFBTSxDQUFDbUIsTUFBTSxFQUFFTSxLQUFLLEVBQXVDLENBQUM7UUFBdENDLFdBQVcsb0VBQUdDLFFBQVEsRUFBRVAsTUFBTSxvRUFBRyxDQUFDLENBQUM7SUFDdkUsR0FBSyxDQUFDUSxJQUFJLEdBQUcsQ0FBQ0g7UUFBQUEsS0FBSztRQUFFQyxXQUFXO0lBQVcsQ0FBQyxDQUEvQixNQUErQixvQkFBUE4sTUFBTSxJQUNyQ1MsaUJBQWlCLEdBQUdSLEtBQUssQ0FBQ0MsU0FBUyxDQUFDdEIsTUFBTSxDQUFDdUIsS0FBSyxDQUFDSixNQUFNLEVBQUVTLElBQUk7SUFFbkUsTUFBTSxDQUFDQyxpQkFBaUI7QUFDMUIsQ0FBQztTQUVlNUIsT0FBTyxDQUFDZSxLQUFLLEVBQUVjLFFBQU8sRUFBRUMsSUFBSSxFQUFFLENBQUM7SUFDN0MsR0FBRyxDQUFDTixLQUFLO0lBRVQsR0FBSyxDQUFDTyxLQUFLLEdBQUdoQixLQUFLLENBQUNpQixJQUFJLENBQUMsUUFBUSxDQUFQSCxPQUFPLEVBQUVJLEtBQUssRUFBSyxDQUFDO1FBQzVDLEdBQUssQ0FBQ0MsTUFBTSxHQUFHSixJQUFJLENBQUNELE9BQU8sRUFBRUksS0FBSztRQUVsQyxFQUFFLEVBQUVDLE1BQU0sRUFBRSxDQUFDO1lBQ1hWLEtBQUssR0FBR1MsS0FBSyxDQUFHLENBQUcsQUFBSCxFQUFHLEFBQUgsQ0FBRztZQUVuQixNQUFNLENBQUMsSUFBSTtRQUNiLENBQUM7SUFDSCxDQUFDO0lBRUQsRUFBRSxFQUFFRixLQUFLLEVBQUUsQ0FBQztRQUNWLEdBQUssQ0FBQ04sV0FBVyxHQUFHLENBQUM7UUFFckJWLEtBQUssQ0FBQ2hCLE1BQU0sQ0FBQ3lCLEtBQUssRUFBRUMsV0FBVyxFQUFFSSxRQUFPO0lBQzFDLENBQUM7SUFFRCxNQUFNLENBQUNFLEtBQUs7QUFDZCxDQUFDO1NBRWU5QixNQUFNLENBQUNjLEtBQUssRUFBRWUsSUFBSSxFQUFFLENBQUM7SUFDbkMsR0FBSyxDQUFDSyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7SUFFM0JyQixnQkFBZ0IsQ0FBQ0MsS0FBSyxFQUFFLFFBQVEsQ0FBUGMsT0FBTyxFQUFFSSxLQUFLLEVBQUssQ0FBQztRQUMzQyxHQUFLLENBQUNDLE1BQU0sR0FBR0osSUFBSSxDQUFDRCxPQUFPLEVBQUVJLEtBQUs7UUFFbEMsRUFBRSxHQUFHQyxNQUFNLEVBQUUsQ0FBQztZQUNaLEdBQUssQ0FBQ1YsS0FBSyxHQUFHUyxLQUFLLEVBQ2JSLFdBQVcsR0FBRyxDQUFDLEVBQ2ZXLGVBQWUsR0FBR3JCLEtBQUssQ0FBQ2hCLE1BQU0sQ0FBQ3lCLEtBQUssRUFBRUMsV0FBVyxHQUNqRFksbUJBQW1CLEdBQUczRCxLQUFLLENBQUMwRCxlQUFlO1lBRWpERCxnQkFBZ0IsQ0FBQ3pDLE9BQU8sQ0FBQzJDLG1CQUFtQixFQUFJLENBQUcsQUFBSCxFQUFHLEFBQUgsQ0FBRztRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQ0YsZ0JBQWdCO0FBQ3pCLENBQUM7U0FFZWpDLElBQUksQ0FBQ2EsS0FBSyxFQUFFZSxJQUFJLEVBQUUsQ0FBQztJQUNqQyxHQUFLLENBQUNRLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFbkJ6QixlQUFlLENBQUNFLEtBQUssRUFBRSxRQUFRLENBQVBjLE9BQU8sRUFBRUksS0FBSyxFQUFLLENBQUM7UUFDMUMsR0FBSyxDQUFDQyxNQUFNLEdBQUdKLElBQUksQ0FBQ0QsT0FBTyxFQUFFSSxLQUFLO1FBRWxDLEVBQUUsRUFBRUMsTUFBTSxFQUFFLENBQUM7WUFDWEksUUFBUSxDQUFDN0MsSUFBSSxDQUFDb0MsT0FBTztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQ1MsUUFBUTtBQUNqQixDQUFDO1NBRWVuQyxLQUFLLENBQUNZLEtBQUssRUFBRWUsSUFBSSxFQUFFLENBQUM7SUFDbEMsR0FBRyxDQUFDUyxhQUFhLEdBQUdDLFNBQVM7SUFFN0J6QixLQUFLLENBQUNpQixJQUFJLENBQUMsUUFBUSxDQUFQSCxPQUFPLEVBQUVJLEtBQUssRUFBSyxDQUFDO1FBQzlCLEdBQUssQ0FBQ0MsTUFBTSxHQUFHSixJQUFJLENBQUNELE9BQU8sRUFBRUksS0FBSztRQUVsQyxFQUFFLEdBQUdDLE1BQU0sRUFBRSxDQUFDO1lBQ1osR0FBSyxDQUFDVixLQUFLLEdBQUdTLEtBQUssRUFDYlIsV0FBVyxHQUFHLENBQUMsRUFDZlcsZUFBZSxHQUFHckIsS0FBSyxDQUFDaEIsTUFBTSxDQUFDeUIsS0FBSyxFQUFFQyxXQUFXLEdBQ2pEWSxtQkFBbUIsR0FBRzNELEtBQUssQ0FBQzBELGVBQWU7WUFFakRHLGFBQWEsR0FBR0YsbUJBQW1CLENBQUcsQ0FBRyxBQUFILEVBQUcsQUFBSCxDQUFHO1lBRXpDLE1BQU0sQ0FBQyxJQUFJO1FBQ2IsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUNFLGFBQWE7QUFDdEIsQ0FBQztTQUVlbkMsS0FBSyxDQUFDVyxLQUFLLEVBQUVjLFFBQU8sRUFBRUMsSUFBSSxFQUFFLENBQUM7SUFDM0MsR0FBSyxDQUFDQyxLQUFLLEdBQUdoQixLQUFLLENBQUNpQixJQUFJLENBQUMsUUFBUSxDQUFQSCxPQUFPLEVBQUVJLEtBQUssRUFBSyxDQUFDO1FBQzVDLEdBQUssQ0FBQ0MsTUFBTSxHQUFHSixJQUFJLENBQUNELE9BQU8sRUFBRUksS0FBSztRQUVsQyxFQUFFLEVBQUVDLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLElBQUk7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUdELEVBQUUsRUFBRUgsS0FBSyxFQUFFLENBQUM7UUFDVmhCLEtBQUssQ0FBQ3RCLElBQUksQ0FBQ29DLFFBQU87SUFDcEIsQ0FBQztJQUVELE1BQU0sQ0FBQ0UsS0FBSztBQUNkLENBQUM7U0FFZTFCLE9BQU8sQ0FBQ2EsTUFBTSxFQUFFQyxNQUFNLEVBQUVXLElBQUksRUFBRSxDQUFDO0lBQzdDWCxNQUFNLENBQUNzQixPQUFPLENBQUMsUUFBUSxDQUFQWixPQUFPLEVBQUVJLEtBQUssRUFBSyxDQUFDO1FBQ2xDLEdBQUssQ0FBQ0MsTUFBTSxHQUFHSixJQUFJLENBQUNELE9BQU8sRUFBRUksS0FBSztRQUVsQyxFQUFFLEVBQUVDLE1BQU0sRUFBRSxDQUFDO1lBQ1hoQixNQUFNLENBQUN6QixJQUFJLENBQUNvQyxPQUFPO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztTQUVldkIsUUFBUSxDQUFDUyxLQUFLLEVBQUVHLE1BQU0sRUFBRUMsTUFBTSxFQUFFVyxJQUFJLEVBQUUsQ0FBQztJQUNyRGYsS0FBSyxDQUFDMEIsT0FBTyxDQUFDLFFBQVEsQ0FBUFosT0FBTyxFQUFFSSxLQUFLLEVBQUssQ0FBQztRQUNqQyxHQUFLLENBQUNDLE1BQU0sR0FBR0osSUFBSSxDQUFDRCxPQUFPLEVBQUVJLEtBQUs7UUFFbENDLE1BQU0sR0FDSmhCLE1BQU0sQ0FBQ3pCLElBQUksQ0FBQ29DLE9BQU8sSUFDakJWLE1BQU0sQ0FBQzFCLElBQUksQ0FBQ29DLE9BQU87SUFDekIsQ0FBQztBQUNILENBQUM7U0FFZXRCLFlBQVksQ0FBQ1EsS0FBSyxFQUFFMkIsUUFBUSxFQUFFLENBQUM7SUFDN0MsR0FBSyxDQUFDQyxXQUFXLEdBQUc1QixLQUFLLENBQUNDLE1BQU07SUFFaEMsR0FBRyxDQUFFLEdBQUcsQ0FBQ2lCLEtBQUssR0FBRyxDQUFDLEVBQUVBLEtBQUssR0FBR1UsV0FBVyxFQUFFVixLQUFLLEdBQUksQ0FBQztRQUNqRCxHQUFLLENBQUNKLE9BQU8sR0FBR2QsS0FBSyxDQUFDa0IsS0FBSyxHQUNyQlcsTUFBTSxHQUFHRixRQUFRLENBQUNiLE9BQU8sRUFBRUksS0FBSztRQUV0QyxFQUFFLEVBQUVXLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLElBQUk7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO0FBQ2QsQ0FBQztTQUVlcEMsYUFBYSxDQUFDTyxLQUFLLEVBQUUyQixRQUFRLEVBQUUsQ0FBQztJQUM5QyxHQUFLLENBQUNDLFdBQVcsR0FBRzVCLEtBQUssQ0FBQ0MsTUFBTTtJQUVoQyxHQUFHLENBQUUsR0FBRyxDQUFDaUIsS0FBSyxHQUFHVSxXQUFXLEdBQUcsQ0FBQyxFQUFFVixLQUFLLElBQUksQ0FBQyxFQUFFQSxLQUFLLEdBQUksQ0FBQztRQUN0RCxHQUFLLENBQUNKLE9BQU8sR0FBR2QsS0FBSyxDQUFDa0IsS0FBSyxHQUNyQlcsTUFBTSxHQUFHRixRQUFRLENBQUNiLE9BQU8sRUFBRUksS0FBSztRQUV0QyxFQUFFLEVBQUVXLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLElBQUk7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO0FBQ2QsQ0FBQztTQUVlbkMsYUFBYSxDQUFDTSxLQUFLLEVBQUUyQixRQUFRLEVBQUUsQ0FBQztJQUM5QyxHQUFLLENBQUNDLFdBQVcsR0FBRzVCLEtBQUssQ0FBQ0MsTUFBTTtJQUVoQyxHQUFHLENBQUUsR0FBRyxDQUFDaUIsS0FBSyxHQUFHLENBQUMsRUFBRUEsS0FBSyxHQUFHVSxXQUFXLEVBQUVWLEtBQUssR0FBSSxDQUFDO1FBQ2pELEdBQUssQ0FBQ0osT0FBTyxHQUFHZCxLQUFLLENBQUNrQixLQUFLLEdBQ3JCVyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ2IsT0FBTyxFQUFFSSxLQUFLO1FBRXRDLEVBQUUsR0FBR1csTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsS0FBSztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUk7QUFDYixDQUFDO1NBRWVsQyxjQUFjLENBQUNLLEtBQUssRUFBRTJCLFFBQVEsRUFBRSxDQUFDO0lBQy9DLEdBQUssQ0FBQ0MsV0FBVyxHQUFHNUIsS0FBSyxDQUFDQyxNQUFNO0lBRWhDLEdBQUcsQ0FBRSxHQUFHLENBQUNpQixLQUFLLEdBQUdVLFdBQVcsR0FBRyxDQUFDLEVBQUVWLEtBQUssSUFBSSxDQUFDLEVBQUVBLEtBQUssR0FBSSxDQUFDO1FBQ3RELEdBQUssQ0FBQ0osT0FBTyxHQUFHZCxLQUFLLENBQUNrQixLQUFLLEdBQ3JCVyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ2IsT0FBTyxFQUFFSSxLQUFLO1FBRXRDLEVBQUUsR0FBR1csTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsS0FBSztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUk7QUFDYixDQUFDO1NBRWVqQyxjQUFjLENBQUNJLEtBQUssRUFBRTJCLFFBQVEsRUFBRUcsWUFBWSxFQUFFLENBQUM7SUFDN0QsR0FBRyxDQUFDQyxLQUFLLEdBQUdELFlBQVk7SUFFeEJoQyxlQUFlLENBQUNFLEtBQUssRUFBRSxRQUFRLENBQVBjLE9BQU8sRUFBRUksS0FBSyxFQUFLLENBQUM7UUFDMUNhLEtBQUssR0FBR0osUUFBUSxDQUFDSSxLQUFLLEVBQUVqQixPQUFPLEVBQUVJLEtBQUs7SUFDeEMsQ0FBQztJQUVELE1BQU0sQ0FBQ2EsS0FBSztBQUNkLENBQUM7U0FFZWxDLGVBQWUsQ0FBQ0csS0FBSyxFQUFFMkIsUUFBUSxFQUFFRyxZQUFZLEVBQUUsQ0FBQztJQUM5RCxHQUFHLENBQUNDLEtBQUssR0FBR0QsWUFBWTtJQUV4Qi9CLGdCQUFnQixDQUFDQyxLQUFLLEVBQUUsUUFBUSxDQUFQYyxPQUFPLEVBQUVJLEtBQUssRUFBSyxDQUFDO1FBQzNDYSxLQUFLLEdBQUdKLFFBQVEsQ0FBQ0ksS0FBSyxFQUFFakIsT0FBTyxFQUFFSSxLQUFLO0lBQ3hDLENBQUM7SUFFRCxNQUFNLENBQUNhLEtBQUs7QUFDZCxDQUFDO1NBRWVqQyxlQUFlLENBQUNFLEtBQUssRUFBRTJCLFFBQVEsRUFBRSxDQUFDO0lBQ2hELEdBQUssQ0FBQ0MsV0FBVyxHQUFHNUIsS0FBSyxDQUFDQyxNQUFNO0lBRWhDLEdBQUcsQ0FBRSxHQUFHLENBQUNpQixLQUFLLEdBQUcsQ0FBQyxFQUFFQSxLQUFLLEdBQUdVLFdBQVcsRUFBRVYsS0FBSyxHQUFJLENBQUM7UUFDakQsR0FBSyxDQUFDSixPQUFPLEdBQUdkLEtBQUssQ0FBQ2tCLEtBQUs7UUFFM0JTLFFBQVEsQ0FBQ2IsT0FBTyxFQUFFSSxLQUFLO0lBQ3pCLENBQUM7QUFDSCxDQUFDO1NBRWVuQixnQkFBZ0IsQ0FBQ0MsS0FBSyxFQUFFMkIsUUFBUSxFQUFFLENBQUM7SUFDakQsR0FBSyxDQUFDQyxXQUFXLEdBQUc1QixLQUFLLENBQUNDLE1BQU07SUFFaEMsR0FBRyxDQUFFLEdBQUcsQ0FBQ2lCLEtBQUssR0FBR1UsV0FBVyxHQUFHLENBQUMsRUFBRVYsS0FBSyxJQUFJLENBQUMsRUFBRUEsS0FBSyxHQUFJLENBQUM7UUFDdEQsR0FBSyxDQUFDSixPQUFPLEdBQUdkLEtBQUssQ0FBQ2tCLEtBQUs7UUFFM0JTLFFBQVEsQ0FBQ2IsT0FBTyxFQUFFSSxLQUFLO0lBQ3pCLENBQUM7QUFDSCxDQUFDO2VBRWMsQ0FBQztJQUNkdkQsS0FBSyxFQUFMQSxLQUFLO0lBQ0xDLE1BQU0sRUFBTkEsTUFBTTtJQUNOQyxLQUFLLEVBQUxBLEtBQUs7SUFDTEMsTUFBTSxFQUFOQSxNQUFNO0lBQ05DLEtBQUssRUFBTEEsS0FBSztJQUNMQyxTQUFTLEVBQVRBLFNBQVM7SUFDVEMsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZDLFNBQVMsRUFBVEEsU0FBUztJQUNUQyxVQUFVLEVBQVZBLFVBQVU7SUFDVkMsU0FBUyxFQUFUQSxTQUFTO0lBQ1RDLElBQUksRUFBSkEsSUFBSTtJQUNKQyxJQUFJLEVBQUpBLElBQUk7SUFDSkMsSUFBSSxFQUFKQSxJQUFJO0lBQ0pDLElBQUksRUFBSkEsSUFBSTtJQUNKQyxLQUFLLEVBQUxBLEtBQUs7SUFDTEMsSUFBSSxFQUFKQSxJQUFJO0lBQ0pDLE9BQU8sRUFBUEEsT0FBTztJQUNQQyxNQUFNLEVBQU5BLE1BQU07SUFDTkMsS0FBSyxFQUFMQSxLQUFLO0lBQ0xDLElBQUksRUFBSkEsSUFBSTtJQUNKQyxLQUFLLEVBQUxBLEtBQUs7SUFDTEMsTUFBTSxFQUFOQSxNQUFNO0lBQ05DLE9BQU8sRUFBUEEsT0FBTztJQUNQQyxNQUFNLEVBQU5BLE1BQU07SUFDTkMsSUFBSSxFQUFKQSxJQUFJO0lBQ0pDLEtBQUssRUFBTEEsS0FBSztJQUNMQyxLQUFLLEVBQUxBLEtBQUs7SUFDTEMsT0FBTyxFQUFQQSxPQUFPO0lBQ1BDLFFBQVEsRUFBUkEsUUFBUTtJQUNSQyxZQUFZLEVBQVpBLFlBQVk7SUFDWkMsYUFBYSxFQUFiQSxhQUFhO0lBQ2JDLGFBQWEsRUFBYkEsYUFBYTtJQUNiQyxjQUFjLEVBQWRBLGNBQWM7SUFDZEMsY0FBYyxFQUFkQSxjQUFjO0lBQ2RDLGVBQWUsRUFBZkEsZUFBZTtJQUNmQyxlQUFlLEVBQWZBLGVBQWU7SUFDZkMsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7QUFDbEIsQ0FBQyJ9
362
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXJyYXkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXJzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbMF07fVxuXG5leHBvcnQgZnVuY3Rpb24gc2Vjb25kKGFycmF5KSB7IHJldHVybiBhcnJheVsxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gdGhpcmQoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzJdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3VydGgoYXJyYXkpIHsgcmV0dXJuIGFycmF5WzNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWZ0aChhcnJheSkgeyByZXR1cm4gYXJyYXlbNF07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpZnRoTGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gNV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvdXJ0aExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDRdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGlyZExhc3QoYXJyYXkpIHsgcmV0dXJuIGFycmF5W2FycmF5Lmxlbmd0aCAtIDNdOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNvbmRMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAyXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RMYXN0KGFycmF5KSB7IHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gbGFzdChhcnJheSkgeyByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGhlYWQoYXJyYXkpIHsgcmV0dXJuIGFycmF5LnNsaWNlKDAsIDEpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWlsKGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gYmFjayhhcnJheSkgeyByZXR1cm4gYXJyYXkuc2xpY2UoYXJyYXkubGVuZ3RoIC0gMSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb250KGFycmF5KSB7IHJldHVybiBhcnJheS5zbGljZSgwLCBhcnJheS5sZW5ndGggLSAxKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcHVzaChhcnJheTEsIGFycmF5MikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheTEsIGFycmF5Mik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuc2hpZnQoYXJyYXkxLCBhcnJheTIpIHsgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoYXJyYXkxLCBhcnJheTIpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jYXQoYXJyYXkxLCBlbGVtZW50T3JBcnJheTIpIHtcbiAgY29uc3QgYXJyYXkyID0gKGVsZW1lbnRPckFycmF5MiBpbnN0YW5jZW9mIEFycmF5KSA/XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRPckFycmF5MiA6XG4gICAgICAgICAgICAgICAgICAgICBbZWxlbWVudE9yQXJyYXkyXTtcbiAgXG4gIHB1c2goYXJyYXkxLCBhcnJheTIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoYXJyYXkpIHtcbiAgY29uc3Qgc3RhcnQgPSAwO1xuICBcbiAgcmV0dXJuIGFycmF5LnNwbGljZShzdGFydCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3B5KGFycmF5MSwgYXJyYXkyKSB7XG4gIGNvbnN0IHN0YXJ0ID0gMCxcbiAgICAgICAgZGVsZXRlQ291bnQgPSBhcnJheTIubGVuZ3RoOyAgLy8vXG4gIFxuICBzcGxpY2UoYXJyYXkxLCBzdGFydCwgZGVsZXRlQ291bnQsIGFycmF5Mik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShhcnJheTEsIGFycmF5MikgeyBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcnJheTEsIGFycmF5Mik7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGljZShhcnJheTEsIHN0YXJ0LCBkZWxldGVDb3VudCA9IEluZmluaXR5LCBhcnJheTIgPSBbXSkge1xuICBjb25zdCBhcmdzID0gW3N0YXJ0LCBkZWxldGVDb3VudCwgLi4uYXJyYXkyXSxcbiAgICAgICAgZGVsZXRlZEl0ZW1zQXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGFycmF5MSwgYXJncyk7XG5cbiAgcmV0dXJuIGRlbGV0ZWRJdGVtc0FycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZShhcnJheSwgZWxlbWVudCwgdGVzdCkge1xuICBsZXQgc3RhcnQ7XG4gIFxuICBjb25zdCBmb3VuZCA9IGFycmF5LnNvbWUoKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gdGVzdChlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocGFzc2VkKSB7XG4gICAgICBzdGFydCA9IGluZGV4OyAgLy8vXG4gICAgICBcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG4gIFxuICBpZiAoZm91bmQpIHtcbiAgICBjb25zdCBkZWxldGVDb3VudCA9IDE7XG5cbiAgICBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCBlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBmb3VuZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcihhcnJheSwgdGVzdCkge1xuICBjb25zdCBmaWx0ZXJlZEVsZW1lbnRzID0gW107XG4gIFxuICBiYWNrd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSB0ZXN0KGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcGFzc2VkKSB7XG4gICAgICBjb25zdCBzdGFydCA9IGluZGV4LCAgLy8vXG4gICAgICAgICAgICBkZWxldGVDb3VudCA9IDEsXG4gICAgICAgICAgICBkZWxldGVkRWxlbWVudHMgPSBhcnJheS5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KSxcbiAgICAgICAgICAgIGZpcnN0RGVsZXRlZEVsZW1lbnQgPSBmaXJzdChkZWxldGVkRWxlbWVudHMpO1xuICAgICAgXG4gICAgICBmaWx0ZXJlZEVsZW1lbnRzLnVuc2hpZnQoZmlyc3REZWxldGVkRWxlbWVudCk7ICAvLy9cbiAgICB9XG4gIH0pO1xuICBcbiAgcmV0dXJuIGZpbHRlcmVkRWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kKGFycmF5LCB0ZXN0KSB7XG4gIGNvbnN0IGVsZW1lbnRzID0gW107XG5cbiAgZm9yd2FyZHNGb3JFYWNoKGFycmF5LCAoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBwYXNzZWQgPSB0ZXN0KGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChwYXNzZWQpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZWxlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcnVuZShhcnJheSwgdGVzdCkge1xuICBsZXQgcHJ1bmVkRWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgXG4gIGFycmF5LnNvbWUoKGVsZW1lbnQsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgcGFzc2VkID0gdGVzdChlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgY29uc3Qgc3RhcnQgPSBpbmRleCwgIC8vL1xuICAgICAgICAgICAgZGVsZXRlQ291bnQgPSAxLFxuICAgICAgICAgICAgZGVsZXRlZEVsZW1lbnRzID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCksXG4gICAgICAgICAgICBmaXJzdERlbGV0ZWRFbGVtZW50ID0gZmlyc3QoZGVsZXRlZEVsZW1lbnRzKTtcbiAgICAgIFxuICAgICAgcHJ1bmVkRWxlbWVudCA9IGZpcnN0RGVsZXRlZEVsZW1lbnQ7ICAvLy9cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbiAgXG4gIHJldHVybiBwcnVuZWRFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2goYXJyYXksIGVsZW1lbnQsIHRlc3QpIHtcbiAgY29uc3QgZm91bmQgPSBhcnJheS5zb21lKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IHRlc3QoZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuXG4gIGlmIChmb3VuZCkge1xuICAgIGFycmF5LnB1c2goZWxlbWVudCk7XG4gIH1cblxuICByZXR1cm4gZm91bmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdWdtZW50KGFycmF5MSwgYXJyYXkyLCB0ZXN0KSB7XG4gIGFycmF5Mi5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IHRlc3QoZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgaWYgKHBhc3NlZCkge1xuICAgICAgYXJyYXkxLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcGFyYXRlKGFycmF5LCBhcnJheTEsIGFycmF5MiwgdGVzdCkge1xuICBhcnJheS5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHBhc3NlZCA9IHRlc3QoZWxlbWVudCwgaW5kZXgpO1xuXG4gICAgcGFzc2VkID9cbiAgICAgIGFycmF5MS5wdXNoKGVsZW1lbnQpIDpcbiAgICAgICAgYXJyYXkyLnB1c2goZWxlbWVudCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yd2FyZHNGaW5kKGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0ZpbmQoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc1NvbWUoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2soZWxlbWVudCwgaW5kZXgpO1xuICAgIFxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc1NvbWUoYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG5cbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0V2ZXJ5KGFycmF5LCBjYWxsYmFjaykge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlMZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNFdmVyeShhcnJheSwgY2FsbGJhY2spIHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaW5kZXggPSBhcnJheUxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc1JlZHVjZShhcnJheSwgY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkge1xuICBsZXQgdmFsdWUgPSBpbml0aWFsVmFsdWU7IC8vL1xuXG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICB2YWx1ZSA9IGNhbGxiYWNrKHZhbHVlLCBlbGVtZW50LCBpbmRleCk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYWNrd2FyZHNSZWR1Y2UoYXJyYXksIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgbGV0IHZhbHVlID0gaW5pdGlhbFZhbHVlOyAvLy9cblxuICBjb25zdCBhcnJheUxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpbmRleCA9IGFycmF5TGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICB2YWx1ZSA9IGNhbGxiYWNrKHZhbHVlLCBlbGVtZW50LCBpbmRleCk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhcnJheVtpbmRleF07XG5cbiAgICBjYWxsYmFjayhlbGVtZW50LCBpbmRleCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0ZvckVhY2goYXJyYXksIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGZvciAobGV0IGluZGV4ID0gYXJyYXlMZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcblxuICAgIGNhbGxiYWNrKGVsZW1lbnQsIGluZGV4KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGZpcnN0LFxuICBzZWNvbmQsXG4gIHRoaXJkLFxuICBmb3VydGgsXG4gIGZpZnRoLFxuICBmaWZ0aExhc3QsXG4gIGZvdXJ0aExhc3QsXG4gIHRoaXJkTGFzdCxcbiAgc2Vjb25kTGFzdCxcbiAgZmlyc3RMYXN0LFxuICBsYXN0LFxuICBoZWFkLFxuICB0YWlsLFxuICBiYWNrLFxuICBmcm9udCxcbiAgcHVzaCxcbiAgdW5zaGlmdCxcbiAgY29uY2F0LFxuICBjbGVhcixcbiAgY29weSxcbiAgbWVyZ2UsXG4gIHNwbGljZSxcbiAgcmVwbGFjZSxcbiAgZmlsdGVyLFxuICBmaW5kLFxuICBwcnVuZSxcbiAgcGF0Y2gsXG4gIGF1Z21lbnQsXG4gIHNlcGFyYXRlLFxuICBmb3J3YXJkc0ZpbmQsXG4gIGJhY2t3YXJkc0ZpbmQsXG4gIGZvcndhcmRzU29tZSxcbiAgYmFja3dhcmRzU29tZSxcbiAgZm9yd2FyZHNFdmVyeSxcbiAgYmFja3dhcmRzRXZlcnksXG4gIGZvcndhcmRzUmVkdWNlLFxuICBiYWNrd2FyZHNSZWR1Y2UsXG4gIGZvcndhcmRzRm9yRWFjaCxcbiAgYmFja3dhcmRzRm9yRWFjaFxufTtcbiJdLCJuYW1lcyI6WyJmaXJzdCIsInNlY29uZCIsInRoaXJkIiwiZm91cnRoIiwiZmlmdGgiLCJmaWZ0aExhc3QiLCJmb3VydGhMYXN0IiwidGhpcmRMYXN0Iiwic2Vjb25kTGFzdCIsImZpcnN0TGFzdCIsImxhc3QiLCJoZWFkIiwidGFpbCIsImJhY2siLCJmcm9udCIsInB1c2giLCJ1bnNoaWZ0IiwiY29uY2F0IiwiY2xlYXIiLCJjb3B5IiwibWVyZ2UiLCJzcGxpY2UiLCJyZXBsYWNlIiwiZmlsdGVyIiwiZmluZCIsInBydW5lIiwicGF0Y2giLCJhdWdtZW50Iiwic2VwYXJhdGUiLCJmb3J3YXJkc0ZpbmQiLCJiYWNrd2FyZHNGaW5kIiwiZm9yd2FyZHNTb21lIiwiYmFja3dhcmRzU29tZSIsImZvcndhcmRzRXZlcnkiLCJiYWNrd2FyZHNFdmVyeSIsImZvcndhcmRzUmVkdWNlIiwiYmFja3dhcmRzUmVkdWNlIiwiZm9yd2FyZHNGb3JFYWNoIiwiYmFja3dhcmRzRm9yRWFjaCIsImFycmF5IiwibGVuZ3RoIiwic2xpY2UiLCJhcnJheTEiLCJhcnJheTIiLCJBcnJheSIsInByb3RvdHlwZSIsImFwcGx5IiwiZWxlbWVudE9yQXJyYXkyIiwic3RhcnQiLCJkZWxldGVDb3VudCIsIkluZmluaXR5IiwiYXJncyIsImRlbGV0ZWRJdGVtc0FycmF5IiwiZWxlbWVudCIsInRlc3QiLCJmb3VuZCIsInNvbWUiLCJpbmRleCIsInBhc3NlZCIsImZpbHRlcmVkRWxlbWVudHMiLCJkZWxldGVkRWxlbWVudHMiLCJmaXJzdERlbGV0ZWRFbGVtZW50IiwiZWxlbWVudHMiLCJwcnVuZWRFbGVtZW50IiwidW5kZWZpbmVkIiwiZm9yRWFjaCIsImNhbGxiYWNrIiwiYXJyYXlMZW5ndGgiLCJyZXN1bHQiLCJpbml0aWFsVmFsdWUiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7OztRQUVJQSxLQUFLLEdBQUxBLEtBQUs7UUFFTEMsTUFBTSxHQUFOQSxNQUFNO1FBRU5DLEtBQUssR0FBTEEsS0FBSztRQUVMQyxNQUFNLEdBQU5BLE1BQU07UUFFTkMsS0FBSyxHQUFMQSxLQUFLO1FBRUxDLFNBQVMsR0FBVEEsU0FBUztRQUVUQyxVQUFVLEdBQVZBLFVBQVU7UUFFVkMsU0FBUyxHQUFUQSxTQUFTO1FBRVRDLFVBQVUsR0FBVkEsVUFBVTtRQUVWQyxTQUFTLEdBQVRBLFNBQVM7UUFFVEMsSUFBSSxHQUFKQSxJQUFJO1FBRUpDLElBQUksR0FBSkEsSUFBSTtRQUVKQyxJQUFJLEdBQUpBLElBQUk7UUFFSkMsSUFBSSxHQUFKQSxJQUFJO1FBRUpDLEtBQUssR0FBTEEsS0FBSztRQUVMQyxJQUFJLEdBQUpBLElBQUk7UUFFSkMsT0FBTyxHQUFQQSxPQUFPO1FBRVBDLE1BQU0sR0FBTkEsTUFBTTtR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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "necessary",
3
3
  "author": "James Smith",
4
- "version": "11.0.49",
4
+ "version": "11.1.3",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/necessary",
7
7
  "description": "A collection of utility functions.",
@@ -177,6 +177,36 @@ export function separate(array, array1, array2, test) {
177
177
  });
178
178
  }
179
179
 
180
+ export function forwardsFind(array, callback) {
181
+ const arrayLength = array.length;
182
+
183
+ for (let index = 0; index < arrayLength; index++) {
184
+ const element = array[index],
185
+ result = callback(element, index);
186
+
187
+ if (result) {
188
+ return element;
189
+ }
190
+ }
191
+
192
+ return false;
193
+ }
194
+
195
+ export function backwardsFind(array, callback) {
196
+ const arrayLength = array.length;
197
+
198
+ for (let index = arrayLength - 1; index >= 0; index--) {
199
+ const element = array[index],
200
+ result = callback(element, index);
201
+
202
+ if (result) {
203
+ return element;
204
+ }
205
+ }
206
+
207
+ return false;
208
+ }
209
+
180
210
  export function forwardsSome(array, callback) {
181
211
  const arrayLength = array.length;
182
212
 
@@ -238,21 +268,29 @@ export function backwardsEvery(array, callback) {
238
268
  }
239
269
 
240
270
  export function forwardsReduce(array, callback, initialValue) {
241
- let value = initialValue;
271
+ let value = initialValue; ///
272
+
273
+ const arrayLength = array.length;
274
+
275
+ for (let index = 0; index < arrayLength; index++) {
276
+ const element = array[index];
242
277
 
243
- forwardsForEach(array, (element, index) => {
244
278
  value = callback(value, element, index);
245
- });
279
+ }
246
280
 
247
281
  return value;
248
282
  }
249
283
 
250
284
  export function backwardsReduce(array, callback, initialValue) {
251
- let value = initialValue;
285
+ let value = initialValue; ///
286
+
287
+ const arrayLength = array.length;
288
+
289
+ for (let index = arrayLength - 1; index >= 0; index--) {
290
+ const element = array[index];
252
291
 
253
- backwardsForEach(array, (element, index) => {
254
292
  value = callback(value, element, index);
255
- });
293
+ }
256
294
 
257
295
  return value;
258
296
  }
@@ -307,6 +345,8 @@ export default {
307
345
  patch,
308
346
  augment,
309
347
  separate,
348
+ forwardsFind,
349
+ backwardsFind,
310
350
  forwardsSome,
311
351
  backwardsSome,
312
352
  forwardsEvery,