@pie-lib/graphing 4.0.24-beta.13 → 4.0.24-beta.15

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.
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
  var _typeof = require("@babel/runtime/helpers/typeof");
5
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
6
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
5
7
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
6
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
9
  var _react = _interopRequireDefault(require("react"));
@@ -924,4 +926,105 @@ describe('Graph', function () {
924
926
  });
925
927
  });
926
928
  });
927
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90ZXN0VXRpbHMiLCJfdXRpbHMiLCJfZ3JhcGgiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl90b29scyIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZXNjcmliZSIsIm1hcmtzIiwidHlwZSIsIngiLCJ5IiwibGFiZWwiLCJzaG93TGFiZWwiLCJmcm9tIiwidG8iLCJidWlsZGluZyIsIml0IiwiZXhwZWN0IiwicmVtb3ZlQnVpbGRpbmdUb29sSWZDdXJyZW50VG9vbERpZmZlcnMiLCJjdXJyZW50VG9vbCIsInRvRXF1YWwiLCJvbkNoYW5nZU1hcmtzIiwiamVzdCIsImZuIiwiZGVmYXVsdFByb3BzIiwiY2xhc3NOYW1lIiwidG9vbHMiLCJ0b29sc0FyciIsImRvbWFpbiIsIm1pbiIsIm1heCIsInN0ZXAiLCJyYW5nZSIsInNpemUiLCJ3aWR0aCIsImhlaWdodCIsImdyYXBoUHJvcHMiLCJiZWZvcmVFYWNoIiwibW9ja0NsZWFyIiwiX3JlbmRlciIsInJlbmRlciIsImNyZWF0ZUVsZW1lbnQiLCJjb250YWluZXIiLCJmaXJzdENoaWxkIiwidG9CZUluVGhlRG9jdW1lbnQiLCJwcm9wcyIsIl9yZW5kZXIyIiwiX3JlbmRlcjMiLCJfcmVuZGVyNCIsImxhYmVsTW9kZUVuYWJsZWQiLCJfcmVuZGVyNSIsIl9yZW5kZXI2IiwicmVyZW5kZXIiLCJuZXdNYXJrcyIsIl9leHRlbmRzMiIsIm5vdCIsInRvSGF2ZUJlZW5DYWxsZWQiLCJ1bmRlZmluZWQiLCJfcmVuZGVyNyIsIm1hcmtzV2l0aEJ1aWxkaW5nIiwiX3JlbmRlcjgiLCJ3cmFwcGVyIiwidXBkYXRlZE1hcmtzIiwiZHVwbGljYXRlZE1hcmtzIiwiX3JlbmRlcjkiLCJfcmVuZGVyMCIsIl9yZW5kZXIxIiwiX3JlbmRlcjEwIiwiX3JlbmRlcjExIiwiY29tcGxldGVkTWFya3MiLCJfcmVuZGVyMTIiLCJfcmVuZGVyMTMiLCJfcmVuZGVyMTQiLCJfcmVuZGVyMTUiLCJfcmVuZGVyMTYiLCJwcm9wc1dpdGhvdXRNYXJrcyIsIl9yZW5kZXIxNyIsImVtcHR5Q29udGFpbmVyIiwiX3JlbmRlcjE4IiwicHJvcHNXaXRoVW5kZWZpbmVkVG9vbHMiLCJncmFwaEluc3RhbmNlIiwiR3JhcGgiLCJtYXJrIiwiY29tcG9uZW50IiwiZ2V0Q29tcG9uZW50IiwidG9CZU51bGwiLCJwcm9wc1dpdGhFbXB0eVRvb2xzIiwidG9vbFdpdGhvdXRDb21wb25lbnQiLCJwcm9wc1dpdGhDdXN0b21Ub29sIiwidG9CZVRydXRoeSIsInBvaW50TWFyayIsImxpbmVNYXJrIiwiY2lyY2xlTWFyayIsImNlbnRlciIsImVkZ2UiLCJwb2ludENvbXBvbmVudCIsImxpbmVDb21wb25lbnQiLCJjaXJjbGVDb21wb25lbnQiLCJleGlzdGluZyIsInVwZGF0ZU1hcmtzIiwidXBkYXRlZCIsInRvSGF2ZUJlZW5DYWxsZWRUaW1lcyIsIm1vY2siLCJjYWxscyIsInRvQmUiLCJpbml0aWFsTWFya3MiLCJfcmVuZGVyMTkiLCJxdWVyeVNlbGVjdG9yIiwiX3JlbmRlcjIwIiwiX3JlbmRlcjIxIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9ncmFwaC50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSAnQHBpZS1saWIvdGVzdC11dGlscyc7XG5pbXBvcnQgeyBncmFwaFByb3BzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgR3JhcGgsIHsgcmVtb3ZlQnVpbGRpbmdUb29sSWZDdXJyZW50VG9vbERpZmZlcnMgfSBmcm9tICcuLi9ncmFwaCc7XG5pbXBvcnQgeyB0b29sc0FyciB9IGZyb20gJy4uL3Rvb2xzJztcblxuZGVzY3JpYmUoJ3JlbW92ZUJ1aWxkaW5nVG9vbElmQ3VycmVudFRvb2xEaWZmZXJzJywgKCkgPT4ge1xuICBsZXQgbWFya3MgPSBbXG4gICAge1xuICAgICAgdHlwZTogJ3BvaW50JyxcbiAgICAgIHg6IDIsXG4gICAgICB5OiAyLFxuICAgICAgbGFiZWw6ICdQb2ludCcsXG4gICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICB0eXBlOiAnbGluZScsXG4gICAgICBmcm9tOiB7IHg6IDAsIHk6IDAgfSxcbiAgICAgIHRvOiB7IHg6IDEsIHk6IDEgfSxcbiAgICAgIGxhYmVsOiAnTGluZScsXG4gICAgICBidWlsZGluZzogdHJ1ZSxcbiAgICB9LFxuICBdO1xuXG4gIGl0KCdrZWVwcyBhbGwgbWFya3MgaWYgY3VycmVudFRvb2wgaXMgdGhlIHNhbWUnLCAoKSA9PiB7XG4gICAgZXhwZWN0KHJlbW92ZUJ1aWxkaW5nVG9vbElmQ3VycmVudFRvb2xEaWZmZXJzKHsgbWFya3MsIGN1cnJlbnRUb29sOiB7IHR5cGU6ICdsaW5lJyB9IH0pKS50b0VxdWFsKG1hcmtzKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbW92ZXMgYnVpbGRpbmcgbWFya3MgaWYgY3VycmVudFRvb2wgaXMgZGlmZmVyZW50JywgKCkgPT4ge1xuICAgIGV4cGVjdChyZW1vdmVCdWlsZGluZ1Rvb2xJZkN1cnJlbnRUb29sRGlmZmVycyh7IG1hcmtzLCBjdXJyZW50VG9vbDogeyB0eXBlOiAnZGlmZmVyZW50JyB9IH0pKS50b0VxdWFsKFttYXJrc1swXV0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnR3JhcGgnLCAoKSA9PiB7XG4gIGxldCBvbkNoYW5nZU1hcmtzID0gamVzdC5mbigpO1xuXG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjbGFzc05hbWU6ICdjbGFzc05hbWUnLFxuICAgIG9uQ2hhbmdlTWFya3MsXG4gICAgdG9vbHM6IHRvb2xzQXJyLFxuICAgIGRvbWFpbjogeyBtaW46IDAsIG1heDogMSwgc3RlcDogMSB9LFxuICAgIHJhbmdlOiB7IG1pbjogMCwgbWF4OiAxLCBzdGVwOiAxIH0sXG4gICAgc2l6ZTogeyB3aWR0aDogNDAwLCBoZWlnaHQ6IDQwMCB9LFxuICAgIG1hcmtzOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgIHg6IDIsXG4gICAgICAgIHk6IDIsXG4gICAgICAgIGxhYmVsOiAnUG9pbnQnLFxuICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgIGZyb206IHsgeDogMCwgeTogMCB9LFxuICAgICAgICB0bzogeyB4OiAxLCB5OiAxIH0sXG4gICAgICAgIGxhYmVsOiAnTGluZScsXG4gICAgICB9LFxuICAgIF0sXG4gICAgLi4uZ3JhcGhQcm9wcygpLFxuICB9O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG9uQ2hhbmdlTWFya3MubW9ja0NsZWFyKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgd2l0aG91dCBjcmFzaGluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggY3VycmVudFRvb2wnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxuICAgICAgICBjdXJyZW50VG9vbDogdG9vbHNBcnJbMF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLnByb3BzfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIG1hcmtzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aCBlbXB0eSBtYXJrcyBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXG4gICAgICAgIG1hcmtzOiBbXSxcbiAgICAgIH07XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxHcmFwaCB7Li4ucHJvcHN9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggbGFiZWxNb2RlRW5hYmxlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXG4gICAgICAgIGxhYmVsTW9kZUVuYWJsZWQ6IHRydWUsXG4gICAgICB9O1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLnByb3BzfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdwcm9wcyBoYW5kbGluZycsICgpID0+IHtcbiAgICBpdCgnY2FsbHMgb25DaGFuZ2VNYXJrcyB3aGVuIG1hcmtzIHByb3AgY2hhbmdlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVyZW5kZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuXG4gICAgICBjb25zdCBuZXdNYXJrcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgICAgeDogMyxcbiAgICAgICAgICB5OiAzLFxuICAgICAgICAgIGxhYmVsOiAnTmV3IFBvaW50JyxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICByZXJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gbWFya3M9e25ld01hcmtzfSAvPik7XG5cbiAgICAgIC8vIENvbXBvbmVudCBzaG91bGQgcmVuZGVyIHdpdGggbmV3IG1hcmtzXG4gICAgICAvLyBOb3RlOiBvbkNoYW5nZU1hcmtzIGlzIGNhbGxlZCBpbnRlcm5hbGx5IHdoZW4gbWFya3MgYXJlIGNoYW5nZWQgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLFxuICAgICAgLy8gbm90IHdoZW4gcHJvcHMgY2hhbmdlLCBzbyB3ZSBqdXN0IHZlcmlmeSB0aGUgY29tcG9uZW50IHJlbmRlcnMgY29ycmVjdGx5XG4gICAgICBleHBlY3Qob25DaGFuZ2VNYXJrcykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVzIHVuZGVmaW5lZCBvbkNoYW5nZU1hcmtzIGdyYWNlZnVsbHknLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxuICAgICAgICBvbkNoYW5nZU1hcmtzOiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLnByb3BzfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW1vdmVCdWlsZGluZ1Rvb2xJZkN1cnJlbnRUb29sRGlmZmVycyBpbnRlZ3JhdGlvbicsICgpID0+IHtcbiAgICBpdCgncmVtb3ZlcyBidWlsZGluZyBtYXJrcyB3aGVuIGN1cnJlbnRUb29sIGNoYW5nZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXJrc1dpdGhCdWlsZGluZyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgICAgeDogMixcbiAgICAgICAgICB5OiAyLFxuICAgICAgICAgIGxhYmVsOiAnUG9pbnQnLFxuICAgICAgICAgIHNob3dMYWJlbDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgICAgICBmcm9tOiB7IHg6IDAsIHk6IDAgfSxcbiAgICAgICAgICB0bzogeyB4OiAxLCB5OiAxIH0sXG4gICAgICAgICAgYnVpbGRpbmc6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxuICAgICAgICBtYXJrczogbWFya3NXaXRoQnVpbGRpbmcsXG4gICAgICAgIGN1cnJlbnRUb29sOiB7IHR5cGU6ICdwb2ludCcgfSwgLy8gRGlmZmVyZW50IGZyb20gYnVpbGRpbmcgbWFyayB0eXBlXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxHcmFwaCB7Li4ucHJvcHN9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3VwZGF0ZU1hcmtzIG1ldGhvZCcsICgpID0+IHtcbiAgICBpdCgndXBkYXRlcyBhbiBleGlzdGluZyBtYXJrJywgKCkgPT4ge1xuICAgICAgY29uc3Qgd3JhcHBlciA9IHJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuXG4gICAgICBjb25zdCB7IHJlcmVuZGVyIH0gPSB3cmFwcGVyO1xuXG4gICAgICBjb25zdCB1cGRhdGVkTWFya3MgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICAgIHg6IDMsXG4gICAgICAgICAgeTogMyxcbiAgICAgICAgICBsYWJlbDogJ1VwZGF0ZWQgUG9pbnQnLFxuICAgICAgICAgIHNob3dMYWJlbDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgICAgICBmcm9tOiB7IHg6IDAsIHk6IDAgfSxcbiAgICAgICAgICB0bzogeyB4OiAxLCB5OiAxIH0sXG4gICAgICAgICAgbGFiZWw6ICdMaW5lJyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIHJlcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSBtYXJrcz17dXBkYXRlZE1hcmtzfSAvPik7XG5cbiAgICAgIC8vIENvbXBvbmVudCBzaG91bGQgcmVuZGVyIHdpdGggdXBkYXRlZCBtYXJrc1xuICAgICAgZXhwZWN0KHdyYXBwZXIuY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgdXBkYXRlIGlmIG1hcmsgaXMgZHVwbGljYXRlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGR1cGxpY2F0ZWRNYXJrcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgICAgeDogMixcbiAgICAgICAgICB5OiAyLFxuICAgICAgICAgIGxhYmVsOiAnUG9pbnQnLFxuICAgICAgICAgIHNob3dMYWJlbDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgICAgeDogMixcbiAgICAgICAgICB5OiAyLFxuICAgICAgICAgIGxhYmVsOiAnUG9pbnQnLFxuICAgICAgICAgIHNob3dMYWJlbDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IG1hcmtzPXtkdXBsaWNhdGVkTWFya3N9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdhZGRzIG1hcmsgaWYgYWRkSWZNaXNzaW5nIGlzIHRydWUgYW5kIG1hcmsgZG9lcyBub3QgZXhpc3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG5cbiAgICAgIC8vIFRoZSBjb21wb25lbnQgc2hvdWxkIGhhbmRsZSBhZGRpbmcgbmV3IG1hcmtzIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHVwZGF0ZSBpZiBtYXJrIGhhcyBubyBidWlsZGluZyBmbGFnIGFuZCBpcyBkdXBsaWNhdGVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWFya3MgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICAgIHg6IDIsXG4gICAgICAgICAgeTogMixcbiAgICAgICAgICBsYWJlbDogJ1BvaW50JyxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSBtYXJrcz17bWFya3N9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVzIGJ1aWxkaW5nIG1hcmtzIGNvcnJlY3RseScsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmtzV2l0aEJ1aWxkaW5nID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICAgIGZyb206IHsgeDogMCwgeTogMCB9LFxuICAgICAgICAgIGJ1aWxkaW5nOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gbWFya3M9e21hcmtzV2l0aEJ1aWxkaW5nfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgndXBkYXRlcyBidWlsZGluZyBtYXJrIHRvIGNvbXBsZXRlZCBtYXJrJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWFya3NXaXRoQnVpbGRpbmcgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgICAgZnJvbTogeyB4OiAwLCB5OiAwIH0sXG4gICAgICAgICAgYnVpbGRpbmc6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCB7IHJlcmVuZGVyLCBjb250YWluZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gbWFya3M9e21hcmtzV2l0aEJ1aWxkaW5nfSAvPik7XG5cbiAgICAgIGNvbnN0IGNvbXBsZXRlZE1hcmtzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICAgIGZyb206IHsgeDogMCwgeTogMCB9LFxuICAgICAgICAgIHRvOiB7IHg6IDEsIHk6IDEgfSxcbiAgICAgICAgICBidWlsZGluZzogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICByZXJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gbWFya3M9e2NvbXBsZXRlZE1hcmtzfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgY2FsbCBvbkNoYW5nZU1hcmtzIGlmIHVwZGF0ZSBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG5cbiAgICAgIC8vIElmIHVwZGF0ZSBpcyB1bmRlZmluZWQsIG9uQ2hhbmdlTWFya3Mgc2hvdWxkIG5vdCBiZSBjYWxsZWRcbiAgICAgIC8vIFRoaXMgaXMgaGFuZGxlZCBpbnRlcm5hbGx5IGJ5IHRoZSBjb21wb25lbnRcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCBhZGQgbWFyayBpZiBleGlzdGluZyBpcyBub3QgZm91bmQgYW5kIGFkZElmTWlzc2luZyBpcyBmYWxzZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcblxuICAgICAgLy8gQnkgZGVmYXVsdCwgbWFya3MgYXJlIG5vdCBhZGRlZCBpZiB0aGV5IGRvbid0IGV4aXN0IGFuZCBhZGRJZk1pc3NpbmcgaXMgZmFsc2VcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBvbkNoYW5nZU1hcmtzIHdpdGggY29ycmVjdCBtYXJrcyB3aGVuIHVwZGF0aW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWFya3MgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICAgIHg6IDIsXG4gICAgICAgICAgeTogMixcbiAgICAgICAgICBsYWJlbDogJ1BvaW50JyxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCB7IHJlcmVuZGVyIH0gPSByZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IG1hcmtzPXttYXJrc30gLz4pO1xuXG4gICAgICBjb25zdCB1cGRhdGVkTWFya3MgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICAgIHg6IDMsXG4gICAgICAgICAgeTogMyxcbiAgICAgICAgICBsYWJlbDogJ1VwZGF0ZWQgUG9pbnQnLFxuICAgICAgICAgIHNob3dMYWJlbDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIHJlcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSBtYXJrcz17dXBkYXRlZE1hcmtzfSAvPik7XG5cbiAgICAgIC8vIFRoZSBjb21wb25lbnQgaGFuZGxlcyBtYXJrIHVwZGF0ZXMgaW50ZXJuYWxseVxuICAgICAgLy8gb25DaGFuZ2VNYXJrcyBpcyBjYWxsZWQgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uc1xuICAgIH0pO1xuXG4gICAgaXQoJ3ByZXNlcnZlcyBvdGhlciBtYXJrcyB3aGVuIHVwZGF0aW5nIGEgc3BlY2lmaWMgbWFyaycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmtzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ3BvaW50JyxcbiAgICAgICAgICB4OiAyLFxuICAgICAgICAgIHk6IDIsXG4gICAgICAgICAgbGFiZWw6ICdQb2ludCAxJyxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICAgIHg6IDMsXG4gICAgICAgICAgeTogMyxcbiAgICAgICAgICBsYWJlbDogJ1BvaW50IDInLFxuICAgICAgICAgIHNob3dMYWJlbDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IG1hcmtzPXttYXJrc30gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0Q29tcG9uZW50IG1ldGhvZCcsICgpID0+IHtcbiAgICBpdCgncmV0dXJucyBudWxsIGlmIG1hcmsgaXMgbnVsbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcblxuICAgICAgLy8gZ2V0Q29tcG9uZW50IHJldHVybnMgbnVsbCBmb3IgbnVsbCBtYXJrc1xuICAgICAgLy8gVGhpcyBpcyB0ZXN0ZWQgYnkgcmVuZGVyaW5nIHdpdGggdW5kZWZpbmVkIG1hcmtzXG4gICAgICBjb25zdCBwcm9wc1dpdGhvdXRNYXJrcyA9IHsgLi4uZGVmYXVsdFByb3BzLCBtYXJrczogW10gfTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyOiBlbXB0eUNvbnRhaW5lciB9ID0gcmVuZGVyKDxHcmFwaCB7Li4ucHJvcHNXaXRob3V0TWFya3N9IC8+KTtcbiAgICAgIGV4cGVjdChlbXB0eUNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgbnVsbCBpZiBtYXJrIGlzIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIG51bGwgaWYgdG9vbHMgaXMgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHNXaXRoVW5kZWZpbmVkVG9vbHMgPSB7IC4uLmRlZmF1bHRQcm9wcywgdG9vbHM6IHVuZGVmaW5lZCB9O1xuICAgICAgY29uc3QgZ3JhcGhJbnN0YW5jZSA9IG5ldyBHcmFwaChwcm9wc1dpdGhVbmRlZmluZWRUb29scyk7XG4gICAgICBjb25zdCBtYXJrID0geyB0eXBlOiAncG9pbnQnLCB4OiAxLCB5OiAxIH07XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBncmFwaEluc3RhbmNlLmdldENvbXBvbmVudChtYXJrKTtcbiAgICAgIGV4cGVjdChjb21wb25lbnQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBudWxsIGlmIHRvb2xzIGlzIGVtcHR5IGFycmF5JywgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHNXaXRoRW1wdHlUb29scyA9IHsgLi4uZGVmYXVsdFByb3BzLCB0b29sczogW10gfTtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgocHJvcHNXaXRoRW1wdHlUb29scyk7XG4gICAgICBjb25zdCBtYXJrID0geyB0eXBlOiAncG9pbnQnLCB4OiAxLCB5OiAxIH07XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBncmFwaEluc3RhbmNlLmdldENvbXBvbmVudChtYXJrKTtcbiAgICAgIGV4cGVjdChjb21wb25lbnQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBudWxsIGlmIG1hcmsgdHlwZSBpcyBub3QgZm91bmQgaW4gdG9vbHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKGRlZmF1bHRQcm9wcyk7XG4gICAgICBjb25zdCBtYXJrID0geyB0eXBlOiAnbm9uZXhpc3RlbnQtdHlwZScsIHg6IDEsIHk6IDEgfTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGdyYXBoSW5zdGFuY2UuZ2V0Q29tcG9uZW50KG1hcmspO1xuICAgICAgZXhwZWN0KGNvbXBvbmVudCkudG9CZU51bGwoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGNvbXBvbmVudCBpZiB0b29sIGhhcyBubyBDb21wb25lbnQgcHJvcGVydHknLCAoKSA9PiB7XG4gICAgICBjb25zdCB0b29sV2l0aG91dENvbXBvbmVudCA9IFt7IHR5cGU6ICdjdXN0b20nLCBsYWJlbDogJ0N1c3RvbScgfV07XG4gICAgICBjb25zdCBwcm9wc1dpdGhDdXN0b21Ub29sID0geyAuLi5kZWZhdWx0UHJvcHMsIHRvb2xzOiB0b29sV2l0aG91dENvbXBvbmVudCB9O1xuICAgICAgY29uc3QgZ3JhcGhJbnN0YW5jZSA9IG5ldyBHcmFwaChwcm9wc1dpdGhDdXN0b21Ub29sKTtcbiAgICAgIGNvbnN0IG1hcmsgPSB7IHR5cGU6ICdjdXN0b20nLCB4OiAxLCB5OiAxIH07XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBncmFwaEluc3RhbmNlLmdldENvbXBvbmVudChtYXJrKTtcbiAgICAgIGV4cGVjdChjb21wb25lbnQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBjb3JyZWN0IGNvbXBvbmVudCBmb3IgcG9pbnQgbWFyaycsICgpID0+IHtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgoZGVmYXVsdFByb3BzKTtcbiAgICAgIGNvbnN0IG1hcmsgPSB7IHR5cGU6ICdwb2ludCcsIHg6IDEsIHk6IDEgfTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGdyYXBoSW5zdGFuY2UuZ2V0Q29tcG9uZW50KG1hcmspO1xuICAgICAgZXhwZWN0KGNvbXBvbmVudCkudG9CZVRydXRoeSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgY29ycmVjdCBjb21wb25lbnQgZm9yIGxpbmUgbWFyaycsICgpID0+IHtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgoZGVmYXVsdFByb3BzKTtcbiAgICAgIGNvbnN0IG1hcmsgPSB7IHR5cGU6ICdsaW5lJywgZnJvbTogeyB4OiAwLCB5OiAwIH0sIHRvOiB7IHg6IDEsIHk6IDEgfSB9O1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQobWFyayk7XG4gICAgICBleHBlY3QoY29tcG9uZW50KS50b0JlVHJ1dGh5KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBjb3JyZWN0IGNvbXBvbmVudCBmb3IgZGlmZmVyZW50IG1hcmsgdHlwZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKGRlZmF1bHRQcm9wcyk7XG5cbiAgICAgIGNvbnN0IHBvaW50TWFyayA9IHsgdHlwZTogJ3BvaW50JywgeDogMSwgeTogMSB9O1xuICAgICAgY29uc3QgbGluZU1hcmsgPSB7IHR5cGU6ICdsaW5lJywgZnJvbTogeyB4OiAwLCB5OiAwIH0sIHRvOiB7IHg6IDEsIHk6IDEgfSB9O1xuICAgICAgY29uc3QgY2lyY2xlTWFyayA9IHsgdHlwZTogJ2NpcmNsZScsIGNlbnRlcjogeyB4OiAwLCB5OiAwIH0sIGVkZ2U6IHsgeDogMSwgeTogMSB9IH07XG5cbiAgICAgIGNvbnN0IHBvaW50Q29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQocG9pbnRNYXJrKTtcbiAgICAgIGNvbnN0IGxpbmVDb21wb25lbnQgPSBncmFwaEluc3RhbmNlLmdldENvbXBvbmVudChsaW5lTWFyayk7XG4gICAgICBjb25zdCBjaXJjbGVDb21wb25lbnQgPSBncmFwaEluc3RhbmNlLmdldENvbXBvbmVudChjaXJjbGVNYXJrKTtcblxuICAgICAgZXhwZWN0KHBvaW50Q29tcG9uZW50KS50b0JlVHJ1dGh5KCk7XG4gICAgICBleHBlY3QobGluZUNvbXBvbmVudCkudG9CZVRydXRoeSgpO1xuICAgICAgZXhwZWN0KGNpcmNsZUNvbXBvbmVudCkudG9CZVRydXRoeSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0Q29tcG9uZW50IG1ldGhvZCAtIHVuaXQgdGVzdHMnLCAoKSA9PiB7XG4gICAgaXQoJ3JldHVybnMgbnVsbCBpZiBtYXJrIGlzIG51bGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKGRlZmF1bHRQcm9wcyk7XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBncmFwaEluc3RhbmNlLmdldENvbXBvbmVudChudWxsKTtcbiAgICAgIGV4cGVjdChjb21wb25lbnQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBudWxsIGlmIG1hcmsgaXMgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgZ3JhcGhJbnN0YW5jZSA9IG5ldyBHcmFwaChkZWZhdWx0UHJvcHMpO1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQodW5kZWZpbmVkKTtcbiAgICAgIGV4cGVjdChjb21wb25lbnQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBudWxsIGlmIHRvb2xzIGlzIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzV2l0aFVuZGVmaW5lZFRvb2xzID0geyAuLi5kZWZhdWx0UHJvcHMsIHRvb2xzOiB1bmRlZmluZWQgfTtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgocHJvcHNXaXRoVW5kZWZpbmVkVG9vbHMpO1xuICAgICAgY29uc3QgbWFyayA9IHsgdHlwZTogJ3BvaW50JywgeDogMSwgeTogMSB9O1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQobWFyayk7XG4gICAgICBleHBlY3QoY29tcG9uZW50KS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgbnVsbCBpZiB0b29scyBpcyBlbXB0eSBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzV2l0aEVtcHR5VG9vbHMgPSB7IC4uLmRlZmF1bHRQcm9wcywgdG9vbHM6IFtdIH07XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKHByb3BzV2l0aEVtcHR5VG9vbHMpO1xuICAgICAgY29uc3QgbWFyayA9IHsgdHlwZTogJ3BvaW50JywgeDogMSwgeTogMSB9O1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQobWFyayk7XG4gICAgICBleHBlY3QoY29tcG9uZW50KS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgbnVsbCBpZiBtYXJrIHR5cGUgaXMgbm90IGZvdW5kIGluIHRvb2xzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZ3JhcGhJbnN0YW5jZSA9IG5ldyBHcmFwaChkZWZhdWx0UHJvcHMpO1xuICAgICAgY29uc3QgbWFyayA9IHsgdHlwZTogJ25vbmV4aXN0ZW50LXR5cGUnLCB4OiAxLCB5OiAxIH07XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBncmFwaEluc3RhbmNlLmdldENvbXBvbmVudChtYXJrKTtcbiAgICAgIGV4cGVjdChjb21wb25lbnQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBjb21wb25lbnQgaWYgdG9vbCBoYXMgbm8gQ29tcG9uZW50IHByb3BlcnR5JywgKCkgPT4ge1xuICAgICAgY29uc3QgdG9vbFdpdGhvdXRDb21wb25lbnQgPSBbeyB0eXBlOiAnY3VzdG9tJywgbGFiZWw6ICdDdXN0b20nIH1dO1xuICAgICAgY29uc3QgcHJvcHNXaXRoQ3VzdG9tVG9vbCA9IHsgLi4uZGVmYXVsdFByb3BzLCB0b29sczogdG9vbFdpdGhvdXRDb21wb25lbnQgfTtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgocHJvcHNXaXRoQ3VzdG9tVG9vbCk7XG4gICAgICBjb25zdCBtYXJrID0geyB0eXBlOiAnY3VzdG9tJywgeDogMSwgeTogMSB9O1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQobWFyayk7XG4gICAgICBleHBlY3QoY29tcG9uZW50KS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgY29ycmVjdCBjb21wb25lbnQgZm9yIHBvaW50IG1hcmsnLCAoKSA9PiB7XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKGRlZmF1bHRQcm9wcyk7XG4gICAgICBjb25zdCBtYXJrID0geyB0eXBlOiAncG9pbnQnLCB4OiAxLCB5OiAxIH07XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBncmFwaEluc3RhbmNlLmdldENvbXBvbmVudChtYXJrKTtcbiAgICAgIGV4cGVjdChjb21wb25lbnQpLnRvQmVUcnV0aHkoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGNvcnJlY3QgY29tcG9uZW50IGZvciBsaW5lIG1hcmsnLCAoKSA9PiB7XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKGRlZmF1bHRQcm9wcyk7XG4gICAgICBjb25zdCBtYXJrID0geyB0eXBlOiAnbGluZScsIGZyb206IHsgeDogMCwgeTogMCB9LCB0bzogeyB4OiAxLCB5OiAxIH0gfTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGdyYXBoSW5zdGFuY2UuZ2V0Q29tcG9uZW50KG1hcmspO1xuICAgICAgZXhwZWN0KGNvbXBvbmVudCkudG9CZVRydXRoeSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgY29ycmVjdCBjb21wb25lbnQgZm9yIGRpZmZlcmVudCBtYXJrIHR5cGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZ3JhcGhJbnN0YW5jZSA9IG5ldyBHcmFwaChkZWZhdWx0UHJvcHMpO1xuXG4gICAgICBjb25zdCBwb2ludE1hcmsgPSB7IHR5cGU6ICdwb2ludCcsIHg6IDEsIHk6IDEgfTtcbiAgICAgIGNvbnN0IGxpbmVNYXJrID0geyB0eXBlOiAnbGluZScsIGZyb206IHsgeDogMCwgeTogMCB9LCB0bzogeyB4OiAxLCB5OiAxIH0gfTtcbiAgICAgIGNvbnN0IGNpcmNsZU1hcmsgPSB7IHR5cGU6ICdjaXJjbGUnLCBjZW50ZXI6IHsgeDogMCwgeTogMCB9LCBlZGdlOiB7IHg6IDEsIHk6IDEgfSB9O1xuXG4gICAgICBjb25zdCBwb2ludENvbXBvbmVudCA9IGdyYXBoSW5zdGFuY2UuZ2V0Q29tcG9uZW50KHBvaW50TWFyayk7XG4gICAgICBjb25zdCBsaW5lQ29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQobGluZU1hcmspO1xuICAgICAgY29uc3QgY2lyY2xlQ29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQoY2lyY2xlTWFyayk7XG5cbiAgICAgIGV4cGVjdChwb2ludENvbXBvbmVudCkudG9CZVRydXRoeSgpO1xuICAgICAgZXhwZWN0KGxpbmVDb21wb25lbnQpLnRvQmVUcnV0aHkoKTtcbiAgICAgIGV4cGVjdChjaXJjbGVDb21wb25lbnQpLnRvQmVUcnV0aHkoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3VwZGF0ZU1hcmtzIG1ldGhvZCAtIHVuaXQgdGVzdHMnLCAoKSA9PiB7XG4gICAgaXQoJ2RvZXMgbm90IHVwZGF0ZSBpZiB1cGRhdGUgcGFyYW1ldGVyIGlzIG51bGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvbkNoYW5nZU1hcmtzID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgbWFya3MgPSBbeyB0eXBlOiAncG9pbnQnLCB4OiAxLCB5OiAxIH1dO1xuICAgICAgY29uc3QgcHJvcHMgPSB7IC4uLmRlZmF1bHRQcm9wcywgb25DaGFuZ2VNYXJrcywgbWFya3MgfTtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgocHJvcHMpO1xuXG4gICAgICBjb25zdCBleGlzdGluZyA9IG1hcmtzWzBdO1xuICAgICAgZ3JhcGhJbnN0YW5jZS51cGRhdGVNYXJrcyhleGlzdGluZywgbnVsbCk7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZU1hcmtzKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHVwZGF0ZSBpZiB1cGRhdGUgcGFyYW1ldGVyIGlzIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uQ2hhbmdlTWFya3MgPSBqZXN0LmZuKCk7XG4gICAgICBjb25zdCBtYXJrcyA9IFt7IHR5cGU6ICdwb2ludCcsIHg6IDEsIHk6IDEgfV07XG4gICAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdFByb3BzLCBvbkNoYW5nZU1hcmtzLCBtYXJrcyB9O1xuICAgICAgY29uc3QgZ3JhcGhJbnN0YW5jZSA9IG5ldyBHcmFwaChwcm9wcyk7XG5cbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gbWFya3NbMF07XG4gICAgICBncmFwaEluc3RhbmNlLnVwZGF0ZU1hcmtzKGV4aXN0aW5nLCB1bmRlZmluZWQpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2VNYXJrcykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCd1cGRhdGVzIGV4aXN0aW5nIG1hcmsgd2hlbiBmb3VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uQ2hhbmdlTWFya3MgPSBqZXN0LmZuKCk7XG4gICAgICBjb25zdCBtYXJrcyA9IFtcbiAgICAgICAgeyB0eXBlOiAncG9pbnQnLCB4OiAxLCB5OiAxIH0sXG4gICAgICAgIHsgdHlwZTogJ3BvaW50JywgeDogMiwgeTogMiB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0UHJvcHMsIG9uQ2hhbmdlTWFya3MsIG1hcmtzIH07XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKHByb3BzKTtcblxuICAgICAgY29uc3QgZXhpc3RpbmcgPSBtYXJrc1swXTtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSB7IHR5cGU6ICdwb2ludCcsIHg6IDEsIHk6IDMgfTtcblxuICAgICAgZ3JhcGhJbnN0YW5jZS51cGRhdGVNYXJrcyhleGlzdGluZywgdXBkYXRlZCk7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZU1hcmtzKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgICBjb25zdCB1cGRhdGVkTWFya3MgPSBvbkNoYW5nZU1hcmtzLm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QodXBkYXRlZE1hcmtzWzBdKS50b0VxdWFsKHVwZGF0ZWQpO1xuICAgICAgZXhwZWN0KHVwZGF0ZWRNYXJrc1sxXSkudG9FcXVhbChtYXJrc1sxXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkcyBtYXJrIGlmIGFkZElmTWlzc2luZyBpcyB0cnVlIGFuZCBtYXJrIG5vdCBmb3VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uQ2hhbmdlTWFya3MgPSBqZXN0LmZuKCk7XG4gICAgICBjb25zdCBtYXJrcyA9IFt7IHR5cGU6ICdwb2ludCcsIHg6IDEsIHk6IDEgfV07XG4gICAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdFByb3BzLCBvbkNoYW5nZU1hcmtzLCBtYXJrcyB9O1xuICAgICAgY29uc3QgZ3JhcGhJbnN0YW5jZSA9IG5ldyBHcmFwaChwcm9wcyk7XG5cbiAgICAgIGNvbnN0IGV4aXN0aW5nID0geyB0eXBlOiAncG9pbnQnLCB4OiA1LCB5OiA1IH07XG4gICAgICBjb25zdCB1cGRhdGVkID0geyB0eXBlOiAncG9pbnQnLCB4OiAyLCB5OiAyIH07XG5cbiAgICAgIGdyYXBoSW5zdGFuY2UudXBkYXRlTWFya3MoZXhpc3RpbmcsIHVwZGF0ZWQsIHRydWUpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2VNYXJrcykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgY29uc3QgdXBkYXRlZE1hcmtzID0gb25DaGFuZ2VNYXJrcy5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KHVwZGF0ZWRNYXJrcy5sZW5ndGgpLnRvQmUoMik7XG4gICAgICBleHBlY3QodXBkYXRlZE1hcmtzWzFdKS50b0VxdWFsKHVwZGF0ZWQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IGFkZCBtYXJrIGlmIGFkZElmTWlzc2luZyBpcyBmYWxzZSBhbmQgbWFyayBub3QgZm91bmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvbkNoYW5nZU1hcmtzID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgbWFya3MgPSBbeyB0eXBlOiAncG9pbnQnLCB4OiAxLCB5OiAxIH1dO1xuICAgICAgY29uc3QgcHJvcHMgPSB7IC4uLmRlZmF1bHRQcm9wcywgb25DaGFuZ2VNYXJrcywgbWFya3MgfTtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgocHJvcHMpO1xuXG4gICAgICBjb25zdCBleGlzdGluZyA9IHsgdHlwZTogJ3BvaW50JywgeDogNSwgeTogNSB9O1xuICAgICAgY29uc3QgdXBkYXRlZCA9IHsgdHlwZTogJ3BvaW50JywgeDogMiwgeTogMiB9O1xuXG4gICAgICBncmFwaEluc3RhbmNlLnVwZGF0ZU1hcmtzKGV4aXN0aW5nLCB1cGRhdGVkLCBmYWxzZSk7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZU1hcmtzKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHVwZGF0ZSBpZiBtYXJrIGlzIHN0aWxsIGJ1aWxkaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25DaGFuZ2VNYXJrcyA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IG1hcmtzID0gW3sgdHlwZTogJ3BvaW50JywgeDogMSwgeTogMSwgYnVpbGRpbmc6IHRydWUgfV07XG4gICAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdFByb3BzLCBvbkNoYW5nZU1hcmtzLCBtYXJrcyB9O1xuICAgICAgY29uc3QgZ3JhcGhJbnN0YW5jZSA9IG5ldyBHcmFwaChwcm9wcyk7XG5cbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gbWFya3NbMF07XG4gICAgICBjb25zdCB1cGRhdGVkID0geyB0eXBlOiAncG9pbnQnLCB4OiAyLCB5OiAyIH07XG5cbiAgICAgIGdyYXBoSW5zdGFuY2UudXBkYXRlTWFya3MoZXhpc3RpbmcsIHVwZGF0ZWQpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2VNYXJrcykudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ByZXNlcnZlcyBtYXJrIG9yZGVyIHdoZW4gdXBkYXRpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvbkNoYW5nZU1hcmtzID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgbWFya3MgPSBbXG4gICAgICAgIHsgdHlwZTogJ3BvaW50JywgeDogMSwgeTogMSB9LFxuICAgICAgICB7IHR5cGU6ICdwb2ludCcsIHg6IDIsIHk6IDIgfSxcbiAgICAgICAgeyB0eXBlOiAncG9pbnQnLCB4OiAzLCB5OiAzIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgcHJvcHMgPSB7IC4uLmRlZmF1bHRQcm9wcywgb25DaGFuZ2VNYXJrcywgbWFya3MgfTtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgocHJvcHMpO1xuXG4gICAgICBjb25zdCBleGlzdGluZyA9IG1hcmtzWzFdO1xuICAgICAgY29uc3QgdXBkYXRlZCA9IHsgdHlwZTogJ3BvaW50JywgeDogMiwgeTogNSB9O1xuXG4gICAgICBncmFwaEluc3RhbmNlLnVwZGF0ZU1hcmtzKGV4aXN0aW5nLCB1cGRhdGVkKTtcblxuICAgICAgY29uc3QgdXBkYXRlZE1hcmtzID0gb25DaGFuZ2VNYXJrcy5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KHVwZGF0ZWRNYXJrc1swXSkudG9FcXVhbChtYXJrc1swXSk7XG4gICAgICBleHBlY3QodXBkYXRlZE1hcmtzWzFdKS50b0VxdWFsKHVwZGF0ZWQpO1xuICAgICAgZXhwZWN0KHVwZGF0ZWRNYXJrc1syXSkudG9FcXVhbChtYXJrc1syXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyBlbXB0eSBtYXJrcyBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uQ2hhbmdlTWFya3MgPSBqZXN0LmZuKCk7XG4gICAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdFByb3BzLCBvbkNoYW5nZU1hcmtzLCBtYXJrczogW10gfTtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgocHJvcHMpO1xuXG4gICAgICBjb25zdCBleGlzdGluZyA9IHsgdHlwZTogJ3BvaW50JywgeDogMSwgeTogMSB9O1xuICAgICAgY29uc3QgdXBkYXRlZCA9IHsgdHlwZTogJ3BvaW50JywgeDogMiwgeTogMiB9O1xuXG4gICAgICBncmFwaEluc3RhbmNlLnVwZGF0ZU1hcmtzKGV4aXN0aW5nLCB1cGRhdGVkLCB0cnVlKTtcblxuICAgICAgZXhwZWN0KG9uQ2hhbmdlTWFya3MpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRNYXJrcyA9IG9uQ2hhbmdlTWFya3MubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGV4cGVjdCh1cGRhdGVkTWFya3MubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgZXhwZWN0KHVwZGF0ZWRNYXJrc1swXSkudG9FcXVhbCh1cGRhdGVkKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3VwZGF0ZU1hcmtzIGFuZCBnZXRDb21wb25lbnQgaW50ZWdyYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3VwZGF0ZXMgbWFya3MgYW5kIHJlbmRlcnMgd2l0aCBjb3JyZWN0IGNvbXBvbmVudHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbml0aWFsTWFya3MgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICAgIHg6IDIsXG4gICAgICAgICAgeTogMixcbiAgICAgICAgICBsYWJlbDogJ1BvaW50JyxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCB7IHJlcmVuZGVyLCBjb250YWluZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gbWFya3M9e2luaXRpYWxNYXJrc30gLz4pO1xuXG4gICAgICBjb25zdCB1cGRhdGVkTWFya3MgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgICAgZnJvbTogeyB4OiAwLCB5OiAwIH0sXG4gICAgICAgICAgdG86IHsgeDogMSwgeTogMSB9LFxuICAgICAgICAgIGxhYmVsOiAnTGluZScsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICByZXJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gbWFya3M9e3VwZGF0ZWRNYXJrc30gLz4pO1xuXG4gICAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJyNtYXJrcycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgYWRkaW5nIG5ldyBtYXJrcyB3aXRoIGRpZmZlcmVudCB0eXBlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGluaXRpYWxNYXJrcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgICAgeDogMixcbiAgICAgICAgICB5OiAyLFxuICAgICAgICAgIGxhYmVsOiAnUG9pbnQnLFxuICAgICAgICAgIHNob3dMYWJlbDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IHsgcmVyZW5kZXIsIGNvbnRhaW5lciB9ID0gcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSBtYXJrcz17aW5pdGlhbE1hcmtzfSAvPik7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWRNYXJrcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgICAgeDogMixcbiAgICAgICAgICB5OiAyLFxuICAgICAgICAgIGxhYmVsOiAnUG9pbnQnLFxuICAgICAgICAgIHNob3dMYWJlbDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgICAgICBmcm9tOiB7IHg6IDAsIHk6IDAgfSxcbiAgICAgICAgICB0bzogeyB4OiAxLCB5OiAxIH0sXG4gICAgICAgICAgbGFiZWw6ICdMaW5lJyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIHJlcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSBtYXJrcz17dXBkYXRlZE1hcmtzfSAvPik7XG5cbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcignI21hcmtzJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyByZW1vdmluZyBtYXJrcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGluaXRpYWxNYXJrcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgICAgeDogMixcbiAgICAgICAgICB5OiAyLFxuICAgICAgICAgIGxhYmVsOiAnUG9pbnQnLFxuICAgICAgICAgIHNob3dMYWJlbDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgICAgICBmcm9tOiB7IHg6IDAsIHk6IDAgfSxcbiAgICAgICAgICB0bzogeyB4OiAxLCB5OiAxIH0sXG4gICAgICAgICAgbGFiZWw6ICdMaW5lJyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IHsgcmVyZW5kZXIsIGNvbnRhaW5lciB9ID0gcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSBtYXJrcz17aW5pdGlhbE1hcmtzfSAvPik7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWRNYXJrcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgICAgeDogMixcbiAgICAgICAgICB5OiAyLFxuICAgICAgICAgIGxhYmVsOiAnUG9pbnQnLFxuICAgICAgICAgIHNob3dMYWJlbDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIHJlcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSBtYXJrcz17dXBkYXRlZE1hcmtzfSAvPik7XG5cbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcignI21hcmtzJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUFvQyxTQUFBSSx3QkFBQUUsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUosdUJBQUEsWUFBQUEsd0JBQUFFLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxtQkFBQVQsQ0FBQSxpQkFBQUEsQ0FBQSxnQkFBQVUsT0FBQSxDQUFBVixDQUFBLDBCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFBQUYsQ0FBQSxHQUFBTCxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRyxDQUFBLENBQUFLLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTSxDQUFBLENBQUFNLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTSxDQUFBLENBQUFPLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUSxDQUFBLGNBQUFNLEVBQUEsSUFBQWQsQ0FBQSxnQkFBQWMsRUFBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsRUFBQSxPQUFBUCxDQUFBLElBQUFELENBQUEsR0FBQVcsTUFBQSxDQUFBQyxjQUFBLEtBQUFELE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQW5CLENBQUEsRUFBQWMsRUFBQSxPQUFBUCxDQUFBLENBQUFLLEdBQUEsSUFBQUwsQ0FBQSxDQUFBTSxHQUFBLElBQUFQLENBQUEsQ0FBQUUsQ0FBQSxFQUFBTSxFQUFBLEVBQUFQLENBQUEsSUFBQUMsQ0FBQSxDQUFBTSxFQUFBLElBQUFkLENBQUEsQ0FBQWMsRUFBQSxXQUFBTixDQUFBLEtBQUFSLENBQUEsRUFBQUMsQ0FBQTtBQUFBLFNBQUFtQixRQUFBcEIsQ0FBQSxFQUFBRyxDQUFBLFFBQUFGLENBQUEsR0FBQWdCLE1BQUEsQ0FBQUksSUFBQSxDQUFBckIsQ0FBQSxPQUFBaUIsTUFBQSxDQUFBSyxxQkFBQSxRQUFBaEIsQ0FBQSxHQUFBVyxNQUFBLENBQUFLLHFCQUFBLENBQUF0QixDQUFBLEdBQUFHLENBQUEsS0FBQUcsQ0FBQSxHQUFBQSxDQUFBLENBQUFpQixNQUFBLFdBQUFwQixDQUFBLFdBQUFjLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQW5CLENBQUEsRUFBQUcsQ0FBQSxFQUFBcUIsVUFBQSxPQUFBdkIsQ0FBQSxDQUFBd0IsSUFBQSxDQUFBQyxLQUFBLENBQUF6QixDQUFBLEVBQUFLLENBQUEsWUFBQUwsQ0FBQTtBQUFBLFNBQUEwQixjQUFBM0IsQ0FBQSxhQUFBRyxDQUFBLE1BQUFBLENBQUEsR0FBQXlCLFNBQUEsQ0FBQUMsTUFBQSxFQUFBMUIsQ0FBQSxVQUFBRixDQUFBLFdBQUEyQixTQUFBLENBQUF6QixDQUFBLElBQUF5QixTQUFBLENBQUF6QixDQUFBLFFBQUFBLENBQUEsT0FBQWlCLE9BQUEsQ0FBQUgsTUFBQSxDQUFBaEIsQ0FBQSxPQUFBNkIsT0FBQSxXQUFBM0IsQ0FBQSxRQUFBNEIsZ0JBQUEsYUFBQS9CLENBQUEsRUFBQUcsQ0FBQSxFQUFBRixDQUFBLENBQUFFLENBQUEsU0FBQWMsTUFBQSxDQUFBZSx5QkFBQSxHQUFBZixNQUFBLENBQUFnQixnQkFBQSxDQUFBakMsQ0FBQSxFQUFBaUIsTUFBQSxDQUFBZSx5QkFBQSxDQUFBL0IsQ0FBQSxLQUFBbUIsT0FBQSxDQUFBSCxNQUFBLENBQUFoQixDQUFBLEdBQUE2QixPQUFBLFdBQUEzQixDQUFBLElBQUFjLE1BQUEsQ0FBQUMsY0FBQSxDQUFBbEIsQ0FBQSxFQUFBRyxDQUFBLEVBQUFjLE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWxCLENBQUEsRUFBQUUsQ0FBQSxpQkFBQUgsQ0FBQTtBQUVwQ2tDLFFBQVEsQ0FBQyx3Q0FBd0MsRUFBRSxZQUFNO0VBQ3ZELElBQUlDLEtBQUssR0FBRyxDQUNWO0lBQ0VDLElBQUksRUFBRSxPQUFPO0lBQ2JDLENBQUMsRUFBRSxDQUFDO0lBQ0pDLENBQUMsRUFBRSxDQUFDO0lBQ0pDLEtBQUssRUFBRSxPQUFPO0lBQ2RDLFNBQVMsRUFBRTtFQUNiLENBQUMsRUFDRDtJQUNFSixJQUFJLEVBQUUsTUFBTTtJQUNaSyxJQUFJLEVBQUU7TUFBRUosQ0FBQyxFQUFFLENBQUM7TUFBRUMsQ0FBQyxFQUFFO0lBQUUsQ0FBQztJQUNwQkksRUFBRSxFQUFFO01BQUVMLENBQUMsRUFBRSxDQUFDO01BQUVDLENBQUMsRUFBRTtJQUFFLENBQUM7SUFDbEJDLEtBQUssRUFBRSxNQUFNO0lBQ2JJLFFBQVEsRUFBRTtFQUNaLENBQUMsQ0FDRjtFQUVEQyxFQUFFLENBQUMsNENBQTRDLEVBQUUsWUFBTTtJQUNyREMsTUFBTSxDQUFDLElBQUFDLDZDQUFzQyxFQUFDO01BQUVYLEtBQUssRUFBTEEsS0FBSztNQUFFWSxXQUFXLEVBQUU7UUFBRVgsSUFBSSxFQUFFO01BQU87SUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDWSxPQUFPLENBQUNiLEtBQUssQ0FBQztFQUN6RyxDQUFDLENBQUM7RUFFRlMsRUFBRSxDQUFDLG9EQUFvRCxFQUFFLFlBQU07SUFDN0RDLE1BQU0sQ0FBQyxJQUFBQyw2Q0FBc0MsRUFBQztNQUFFWCxLQUFLLEVBQUxBLEtBQUs7TUFBRVksV0FBVyxFQUFFO1FBQUVYLElBQUksRUFBRTtNQUFZO0lBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQ1ksT0FBTyxDQUFDLENBQUNiLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ25ILENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGRCxRQUFRLENBQUMsT0FBTyxFQUFFLFlBQU07RUFDdEIsSUFBSWUsYUFBYSxHQUFHQyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0VBRTdCLElBQU1DLFlBQVksR0FBQXpCLGFBQUE7SUFDaEIwQixTQUFTLEVBQUUsV0FBVztJQUN0QkosYUFBYSxFQUFiQSxhQUFhO0lBQ2JLLEtBQUssRUFBRUMsZUFBUTtJQUNmQyxNQUFNLEVBQUU7TUFBRUMsR0FBRyxFQUFFLENBQUM7TUFBRUMsR0FBRyxFQUFFLENBQUM7TUFBRUMsSUFBSSxFQUFFO0lBQUUsQ0FBQztJQUNuQ0MsS0FBSyxFQUFFO01BQUVILEdBQUcsRUFBRSxDQUFDO01BQUVDLEdBQUcsRUFBRSxDQUFDO01BQUVDLElBQUksRUFBRTtJQUFFLENBQUM7SUFDbENFLElBQUksRUFBRTtNQUFFQyxLQUFLLEVBQUUsR0FBRztNQUFFQyxNQUFNLEVBQUU7SUFBSSxDQUFDO0lBQ2pDNUIsS0FBSyxFQUFFLENBQ0w7TUFDRUMsSUFBSSxFQUFFLE9BQU87TUFDYkMsQ0FBQyxFQUFFLENBQUM7TUFDSkMsQ0FBQyxFQUFFLENBQUM7TUFDSkMsS0FBSyxFQUFFLE9BQU87TUFDZEMsU0FBUyxFQUFFO0lBQ2IsQ0FBQyxFQUNEO01BQ0VKLElBQUksRUFBRSxNQUFNO01BQ1pLLElBQUksRUFBRTtRQUFFSixDQUFDLEVBQUUsQ0FBQztRQUFFQyxDQUFDLEVBQUU7TUFBRSxDQUFDO01BQ3BCSSxFQUFFLEVBQUU7UUFBRUwsQ0FBQyxFQUFFLENBQUM7UUFBRUMsQ0FBQyxFQUFFO01BQUUsQ0FBQztNQUNsQkMsS0FBSyxFQUFFO0lBQ1QsQ0FBQztFQUNGLEdBQ0UsSUFBQXlCLGlCQUFVLEVBQUMsQ0FBQyxDQUNoQjtFQUVEQyxVQUFVLENBQUMsWUFBTTtJQUNmaEIsYUFBYSxDQUFDaUIsU0FBUyxDQUFDLENBQUM7RUFDM0IsQ0FBQyxDQUFDO0VBRUZoQyxRQUFRLENBQUMsV0FBVyxFQUFFLFlBQU07SUFDMUJVLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxZQUFNO01BQ25DLElBQUF1QixPQUFBLEdBQXNCLElBQUFDLGlCQUFNLGVBQUM1RSxNQUFBLFlBQUE2RSxhQUFBLENBQUN4RSxNQUFBLFdBQUssRUFBS3VELFlBQWUsQ0FBQyxDQUFDO1FBQWpEa0IsU0FBUyxHQUFBSCxPQUFBLENBQVRHLFNBQVM7TUFDakJ6QixNQUFNLENBQUN5QixTQUFTLENBQUNDLFVBQVUsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQztJQUVGNUIsRUFBRSxDQUFDLDBCQUEwQixFQUFFLFlBQU07TUFDbkMsSUFBTTZCLEtBQUssR0FBQTlDLGFBQUEsQ0FBQUEsYUFBQSxLQUNOeUIsWUFBWTtRQUNmTCxXQUFXLEVBQUVRLGVBQVEsQ0FBQyxDQUFDO01BQUMsRUFDekI7TUFDRCxJQUFBbUIsUUFBQSxHQUFzQixJQUFBTixpQkFBTSxlQUFDNUUsTUFBQSxZQUFBNkUsYUFBQSxDQUFDeEUsTUFBQSxXQUFLLEVBQUs0RSxLQUFRLENBQUMsQ0FBQztRQUExQ0gsU0FBUyxHQUFBSSxRQUFBLENBQVRKLFNBQVM7TUFDakJ6QixNQUFNLENBQUN5QixTQUFTLENBQUNDLFVBQVUsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQztJQUVGNUIsRUFBRSxDQUFDLG9CQUFvQixFQUFFLFlBQU07TUFDN0IsSUFBQStCLFFBQUEsR0FBc0IsSUFBQVAsaUJBQU0sZUFBQzVFLE1BQUEsWUFBQTZFLGFBQUEsQ0FBQ3hFLE1BQUEsV0FBSyxFQUFLdUQsWUFBZSxDQUFDLENBQUM7UUFBakRrQixTQUFTLEdBQUFLLFFBQUEsQ0FBVEwsU0FBUztNQUNqQnpCLE1BQU0sQ0FBQ3lCLFNBQVMsQ0FBQ0MsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0lBRUY1QixFQUFFLENBQUMsZ0NBQWdDLEVBQUUsWUFBTTtNQUN6QyxJQUFNNkIsS0FBSyxHQUFBOUMsYUFBQSxDQUFBQSxhQUFBLEtBQ055QixZQUFZO1FBQ2ZqQixLQUFLLEVBQUU7TUFBRSxFQUNWO01BQ0QsSUFBQXlDLFFBQUEsR0FBc0IsSUFBQVIsaUJBQU0sZUFBQzVFLE1BQUEsWUFBQTZFLGFBQUEsQ0FBQ3hFLE1BQUEsV0FBSyxFQUFLNEUsS0FBUSxDQUFDLENBQUM7UUFBMUNILFNBQVMsR0FBQU0sUUFBQSxDQUFUTixTQUFTO01BQ2pCekIsTUFBTSxDQUFDeUIsU0FBUyxDQUFDQyxVQUFVLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUNsRCxDQUFDLENBQUM7SUFFRjVCLEVBQUUsQ0FBQywrQkFBK0IsRUFBRSxZQUFNO01BQ3hDLElBQU02QixLQUFLLEdBQUE5QyxhQUFBLENBQUFBLGFBQUEsS0FDTnlCLFlBQVk7UUFDZnlCLGdCQUFnQixFQUFFO01BQUksRUFDdkI7TUFDRCxJQUFBQyxRQUFBLEdBQXNCLElBQUFWLGlCQUFNLGVBQUM1RSxNQUFBLFlBQUE2RSxhQUFBLENBQUN4RSxNQUFBLFdBQUssRUFBSzRFLEtBQVEsQ0FBQyxDQUFDO1FBQTFDSCxTQUFTLEdBQUFRLFFBQUEsQ0FBVFIsU0FBUztNQUNqQnpCLE1BQU0sQ0FBQ3lCLFNBQVMsQ0FBQ0MsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0VBRUZ0QyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsWUFBTTtJQUMvQlUsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLFlBQU07TUFDdEQsSUFBQW1DLFFBQUEsR0FBcUIsSUFBQVgsaUJBQU0sZUFBQzVFLE1BQUEsWUFBQTZFLGFBQUEsQ0FBQ3hFLE1BQUEsV0FBSyxFQUFLdUQsWUFBZSxDQUFDLENBQUM7UUFBaEQ0QixRQUFRLEdBQUFELFFBQUEsQ0FBUkMsUUFBUTtNQUVoQixJQUFNQyxRQUFRLEdBQUcsQ0FDZjtRQUNFN0MsSUFBSSxFQUFFLE9BQU87UUFDYkMsQ0FBQyxFQUFFLENBQUM7UUFDSkMsQ0FBQyxFQUFFLENBQUM7UUFDSkMsS0FBSyxFQUFFLFdBQVc7UUFDbEJDLFNBQVMsRUFBRTtNQUNiLENBQUMsQ0FDRjtNQUVEd0MsUUFBUSxjQUFDeEYsTUFBQSxZQUFBNkUsYUFBQSxDQUFDeEUsTUFBQSxXQUFLLE1BQUFxRixTQUFBLGlCQUFLOUIsWUFBWTtRQUFFakIsS0FBSyxFQUFFOEM7TUFBUyxFQUFFLENBQUMsQ0FBQzs7TUFFdEQ7TUFDQTtNQUNBO01BQ0FwQyxNQUFNLENBQUNJLGFBQWEsQ0FBQyxDQUFDa0MsR0FBRyxDQUFDQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQztJQUVGeEMsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLFlBQU07TUFDckQsSUFBTTZCLEtBQUssR0FBQTlDLGFBQUEsQ0FBQUEsYUFBQSxLQUNOeUIsWUFBWTtRQUNmSCxhQUFhLEVBQUVvQztNQUFTLEVBQ3pCO01BQ0QsSUFBQUMsUUFBQSxHQUFzQixJQUFBbEIsaUJBQU0sZUFBQzVFLE1BQUEsWUFBQTZFLGFBQUEsQ0FBQ3hFLE1BQUEsV0FBSyxFQUFLNEUsS0FBUSxDQUFDLENBQUM7UUFBMUNILFNBQVMsR0FBQWdCLFFBQUEsQ0FBVGhCLFNBQVM7TUFDakJ6QixNQUFNLENBQUN5QixTQUFTLENBQUNDLFVBQVUsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztFQUVGdEMsUUFBUSxDQUFDLG9EQUFvRCxFQUFFLFlBQU07SUFDbkVVLEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxZQUFNO01BQzFELElBQU0yQyxpQkFBaUIsR0FBRyxDQUN4QjtRQUNFbkQsSUFBSSxFQUFFLE9BQU87UUFDYkMsQ0FBQyxFQUFFLENBQUM7UUFDSkMsQ0FBQyxFQUFFLENBQUM7UUFDSkMsS0FBSyxFQUFFLE9BQU87UUFDZEMsU0FBUyxFQUFFO01BQ2IsQ0FBQyxFQUNEO1FBQ0VKLElBQUksRUFBRSxNQUFNO1FBQ1pLLElBQUksRUFBRTtVQUFFSixDQUFDLEVBQUUsQ0FBQztVQUFFQyxDQUFDLEVBQUU7UUFBRSxDQUFDO1FBQ3BCSSxFQUFFLEVBQUU7VUFBRUwsQ0FBQyxFQUFFLENBQUM7VUFBRUMsQ0FBQyxFQUFFO1FBQUUsQ0FBQztRQUNsQkssUUFBUSxFQUFFO01BQ1osQ0FBQyxDQUNGO01BRUQsSUFBTThCLEtBQUssR0FBQTlDLGFBQUEsQ0FBQUEsYUFBQSxLQUNOeUIsWUFBWTtRQUNmakIsS0FBSyxFQUFFb0QsaUJBQWlCO1FBQ3hCeEMsV0FBVyxFQUFFO1VBQUVYLElBQUksRUFBRTtRQUFRLENBQUMsQ0FBRTtNQUFBLEVBQ2pDO01BRUQsSUFBQW9ELFFBQUEsR0FBc0IsSUFBQXBCLGlCQUFNLGVBQUM1RSxNQUFBLFlBQUE2RSxhQUFBLENBQUN4RSxNQUFBLFdBQUssRUFBSzRFLEtBQVEsQ0FBQyxDQUFDO1FBQTFDSCxTQUFTLEdBQUFrQixRQUFBLENBQVRsQixTQUFTO01BQ2pCekIsTUFBTSxDQUFDeUIsU0FBUyxDQUFDQyxVQUFVLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUNsRCxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7RUFFRnRDLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxZQUFNO0lBQ25DVSxFQUFFLENBQUMsMEJBQTBCLEVBQUUsWUFBTTtNQUNuQyxJQUFNNkMsT0FBTyxHQUFHLElBQUFyQixpQkFBTSxlQUFDNUUsTUFBQSxZQUFBNkUsYUFBQSxDQUFDeEUsTUFBQSxXQUFLLEVBQUt1RCxZQUFlLENBQUMsQ0FBQztNQUVuRCxJQUFRNEIsUUFBUSxHQUFLUyxPQUFPLENBQXBCVCxRQUFRO01BRWhCLElBQU1VLFlBQVksR0FBRyxDQUNuQjtRQUNFdEQsSUFBSSxFQUFFLE9BQU87UUFDYkMsQ0FBQyxFQUFFLENBQUM7UUFDSkMsQ0FBQyxFQUFFLENBQUM7UUFDSkMsS0FBSyxFQUFFLGVBQWU7UUFDdEJDLFNBQVMsRUFBRTtNQUNiLENBQUMsRUFDRDtRQUNFSixJQUFJLEVBQUUsTUFBTTtRQUNaSyxJQUFJLEVBQUU7VUFBRUosQ0FBQyxFQUFFLENBQUM7VUFBRUMsQ0FBQyxFQUFFO1FBQUUsQ0FBQztRQUNwQkksRUFBRSxFQUFFO1VBQUVMLENBQUMsRUFBRSxDQUFDO1VBQUVDLENBQUMsRUFBRTtRQUFFLENBQUM7UUFDbEJDLEtBQUssRUFBRTtNQUNULENBQUMsQ0FDRjtNQUVEeUMsUUFBUSxjQUFDeEYsTUFBQSxZQUFBNkUsYUFBQSxDQUFDeEUsTUFBQSxXQUFLLE1BQUFxRixTQUFBLGlCQUFLOUIsWUFBWTtRQUFFakIsS0FBSyxFQUFFdUQ7TUFBYSxFQUFFLENBQUMsQ0FBQzs7TUFFMUQ7TUFDQTdDLE1BQU0sQ0FBQzRDLE9BQU8sQ0FBQ25CLFNBQVMsQ0FBQ0MsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDO0lBRUY1QixFQUFFLENBQUMsdUNBQXVDLEVBQUUsWUFBTTtNQUNoRCxJQUFNK0MsZUFBZSxHQUFHLENBQ3RCO1FBQ0V2RCxJQUFJLEVBQUUsT0FBTztRQUNiQyxDQUFDLEVBQUUsQ0FBQztRQUNKQyxDQUFDLEVBQUUsQ0FBQztRQUNKQyxLQUFLLEVBQUUsT0FBTztRQUNkQyxTQUFTLEVBQUU7TUFDYixDQUFDLEVBQ0Q7UUFDRUosSUFBSSxFQUFFLE9BQU87UUFDYkMsQ0FBQyxFQUFFLENBQUM7UUFDSkMsQ0FBQyxFQUFFLENBQUM7UUFDSkMsS0FBSyxFQUFFLE9BQU87UUFDZEMsU0FBUyxFQUFFO01BQ2IsQ0FBQyxDQUNGO01BRUQsSUFBQW9ELFFBQUEsR0FBc0IsSUFBQXhCLGlCQUFNLGVBQUM1RSxNQUFBLFlBQUE2RSxhQUFBLENBQUN4RSxNQUFBLFdBQUssTUFBQXFGLFNBQUEsaUJBQUs5QixZQUFZO1VBQUVqQixLQUFLLEVBQUV3RDtRQUFnQixFQUFFLENBQUMsQ0FBQztRQUF6RXJCLFNBQVMsR0FBQXNCLFFBQUEsQ0FBVHRCLFNBQVM7TUFDakJ6QixNQUFNLENBQUN5QixTQUFTLENBQUNDLFVBQVUsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQztJQUVGNUIsRUFBRSxDQUFDLDJEQUEyRCxFQUFFLFlBQU07TUFDcEUsSUFBQWlELFFBQUEsR0FBc0IsSUFBQXpCLGlCQUFNLGVBQUM1RSxNQUFBLFlBQUE2RSxhQUFBLENBQUN4RSxNQUFBLFdBQUssRUFBS3VELFlBQWUsQ0FBQyxDQUFDO1FBQWpEa0IsU0FBUyxHQUFBdUIsUUFBQSxDQUFUdkIsU0FBUzs7TUFFakI7TUFDQXpCLE1BQU0sQ0FBQ3lCLFNBQVMsQ0FBQ0MsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0lBRUY1QixFQUFFLENBQUMsZ0VBQWdFLEVBQUUsWUFBTTtNQUN6RSxJQUFNVCxLQUFLLEdBQUcsQ0FDWjtRQUNFQyxJQUFJLEVBQUUsT0FBTztRQUNiQyxDQUFDLEVBQUUsQ0FBQztRQUNKQyxDQUFDLEVBQUUsQ0FBQztRQUNKQyxLQUFLLEVBQUUsT0FBTztRQUNkQyxTQUFTLEVBQUU7TUFDYixDQUFDLENBQ0Y7TUFFRCxJQUFBc0QsUUFBQSxHQUFzQixJQUFBMUIsaUJBQU0sZUFBQzVFLE1BQUEsWUFBQTZFLGFBQUEsQ0FBQ3hFLE1BQUEsV0FBSyxNQUFBcUYsU0FBQSxpQkFBSzlCLFlBQVk7VUFBRWpCLEtBQUssRUFBRUE7UUFBTSxFQUFFLENBQUMsQ0FBQztRQUEvRG1DLFNBQVMsR0FBQXdCLFFBQUEsQ0FBVHhCLFNBQVM7TUFDakJ6QixNQUFNLENBQUN5QixTQUFTLENBQUNDLFVBQVUsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQztJQUVGNUIsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLFlBQU07TUFDM0MsSUFBTTJDLGlCQUFpQixHQUFHLENBQ3hCO1FBQ0VuRCxJQUFJLEVBQUUsTUFBTTtRQUNaSyxJQUFJLEVBQUU7VUFBRUosQ0FBQyxFQUFFLENBQUM7VUFBRUMsQ0FBQyxFQUFFO1FBQUUsQ0FBQztRQUNwQkssUUFBUSxFQUFFO01BQ1osQ0FBQyxDQUNGO01BRUQsSUFBQW9ELFNBQUEsR0FBc0IsSUFBQTNCLGlCQUFNLGVBQUM1RSxNQUFBLFlBQUE2RSxhQUFBLENBQUN4RSxNQUFBLFdBQUssTUFBQXFGLFNBQUEsaUJBQUs5QixZQUFZO1VBQUVqQixLQUFLLEVBQUVvRDtRQUFrQixFQUFFLENBQUMsQ0FBQztRQUEzRWpCLFNBQVMsR0FBQXlCLFNBQUEsQ0FBVHpCLFNBQVM7TUFDakJ6QixNQUFNLENBQUN5QixTQUFTLENBQUNDLFVBQVUsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xELENBQUMsQ0FBQztJQUVGNUIsRUFBRSxDQUFDLHlDQUF5QyxFQUFFLFlBQU07TUFDbEQsSUFBTTJDLGlCQUFpQixHQUFHLENBQ3hCO1FBQ0VuRCxJQUFJLEVBQUUsTUFBTTtRQUNaSyxJQUFJLEVBQUU7VUFBRUosQ0FBQyxFQUFFLENBQUM7VUFBRUMsQ0FBQyxFQUFFO1FBQUUsQ0FBQztRQUNwQkssUUFBUSxFQUFFO01BQ1osQ0FBQyxDQUNGO01BRUQsSUFBQXFELFNBQUEsR0FBZ0MsSUFBQTVCLGlCQUFNLGVBQUM1RSxNQUFBLFlBQUE2RSxhQUFBLENBQUN4RSxNQUFBLFdBQUssTUFBQXFGLFNBQUEsaUJBQUs5QixZQUFZO1VBQUVqQixLQUFLLEVBQUVvRDtRQUFrQixFQUFFLENBQUMsQ0FBQztRQUFyRlAsUUFBUSxHQUFBZ0IsU0FBQSxDQUFSaEIsUUFBUTtRQUFFVixTQUFTLEdBQUEwQixTQUFBLENBQVQxQixTQUFTO01BRTNCLElBQU0yQixjQUFjLEdBQUcsQ0FDckI7UUFDRTdELElBQUksRUFBRSxNQUFNO1FBQ1pLLElBQUksRUFBRTtVQUFFSixDQUFDLEVBQUUsQ0FBQztVQUFFQyxDQUFDLEVBQUU7UUFBRSxDQUFDO1FBQ3BCSSxFQUFFLEVBQUU7VUFBRUwsQ0FBQyxFQUFFLENBQUM7VUFBRUMsQ0FBQyxFQUFFO1FBQUUsQ0FBQztRQUNsQkssUUFBUSxFQUFFO01BQ1osQ0FBQyxDQUNGO01BRURxQyxRQUFRLGNBQUN4RixNQUFBLFlBQUE2RSxhQUFBLENBQUN4RSxNQUFBLFdBQUssTUFBQXFGLFNBQUEsaUJBQUs5QixZQUFZO1FBQUVqQixLQUFLLEVBQUU4RDtNQUFlLEVBQUUsQ0FBQyxDQUFDO01BQzVEcEQsTUFBTSxDQUFDeUIsU0FBUyxDQUFDQyxVQUFVLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUNsRCxDQUFDLENBQUM7SUFFRjVCLEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxZQUFNO01BQzdELElBQUFzRCxTQUFBLEdBQXNCLElBQUE5QixpQkFBTSxlQUFDNUUsTUFBQSxZQUFBNkUsYUFBQSxDQUFDeEUsTUFBQSxXQUFLLEVBQUt1RCxZQUFlLENBQUMsQ0FBQztRQUFqRGtCLFNBQVMsR0FBQTRCLFNBQUEsQ0FBVDVCLFNBQVM7O01BRWpCO01BQ0E7TUFDQXpCLE1BQU0sQ0FBQ3lCLFNBQVMsQ0FBQ0MsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0lBRUY1QixFQUFFLENBQUMsc0VBQXNFLEVBQUUsWUFBTTtNQUMvRSxJQUFBdUQsU0FBQSxHQUFzQixJQUFBL0IsaUJBQU0sZUFBQzVFLE1BQUEsWUFBQTZFLGFBQUEsQ0FBQ3hFLE1BQUEsV0FBSyxFQUFLdUQsWUFBZSxDQUFDLENBQUM7UUFBakRrQixTQUFTLEdBQUE2QixTQUFBLENBQVQ3QixTQUFTOztNQUVqQjtNQUNBekIsTUFBTSxDQUFDeUIsU0FBUyxDQUFDQyxVQUFVLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUNsRCxDQUFDLENBQUM7SUFFRjVCLEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxZQUFNO01BQy9ELElBQU1ULEtBQUssR0FBRyxDQUNaO1FBQ0VDLElBQUksRUFBRSxPQUFPO1FBQ2JDLENBQUMsRUFBRSxDQUFDO1FBQ0pDLENBQUMsRUFBRSxDQUFDO1FBQ0pDLEtBQUssRUFBRSxPQUFPO1FBQ2RDLFNBQVMsRUFBRTtNQUNiLENBQUMsQ0FDRjtNQUVELElBQUE0RCxTQUFBLEdBQXFCLElBQUFoQyxpQkFBTSxlQUFDNUUsTUFBQSxZQUFBNkUsYUFBQSxDQUFDeEUsTUFBQSxXQUFLLE1BQUFxRixTQUFBLGlCQUFLOUIsWUFBWTtVQUFFakIsS0FBSyxFQUFFQTtRQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQTlENkMsUUFBUSxHQUFBb0IsU0FBQSxDQUFScEIsUUFBUTtNQUVoQixJQUFNVSxZQUFZLEdBQUcsQ0FDbkI7UUFDRXRELElBQUksRUFBRSxPQUFPO1FBQ2JDLENBQUMsRUFBRSxDQUFDO1FBQ0pDLENBQUMsRUFBRSxDQUFDO1FBQ0pDLEtBQUssRUFBRSxlQUFlO1FBQ3RCQyxTQUFTLEVBQUU7TUFDYixDQUFDLENBQ0Y7TUFFRHdDLFFBQVEsY0FBQ3hGLE1BQUEsWUFBQTZFLGFBQUEsQ0FBQ3hFLE1BQUEsV0FBSyxNQUFBcUYsU0FBQSxpQkFBSzlCLFlBQVk7UUFBRWpCLEtBQUssRUFBRXVEO01BQWEsRUFBRSxDQUFDLENBQUM7O01BRTFEO01BQ0E7SUFDRixDQUFDLENBQUM7SUFFRjlDLEVBQUUsQ0FBQyxxREFBcUQsRUFBRSxZQUFNO01BQzlELElBQU1ULEtBQUssR0FBRyxDQUNaO1FBQ0VDLElBQUksRUFBRSxPQUFPO1FBQ2JDLENBQUMsRUFBRSxDQUFDO1FBQ0pDLENBQUMsRUFBRSxDQUFDO1FBQ0pDLEtBQUssRUFBRSxTQUFTO1FBQ2hCQyxTQUFTLEVBQUU7TUFDYixDQUFDLEVBQ0Q7UUFDRUosSUFBSSxFQUFFLE9BQU87UUFDYkMsQ0FBQyxFQUFFLENBQUM7UUFDSkMsQ0FBQyxFQUFFLENBQUM7UUFDSkMsS0FBSyxFQUFFLFNBQVM7UUFDaEJDLFNBQVMsRUFBRTtNQUNiLENBQUMsQ0FDRjtNQUVELElBQUE2RCxTQUFBLEdBQXNCLElBQUFqQyxpQkFBTSxlQUFDNUUsTUFBQSxZQUFBNkUsYUFBQSxDQUFDeEUsTUFBQSxXQUFLLE1BQUFxRixTQUFBLGlCQUFLOUIsWUFBWTtVQUFFakIsS0FBSyxFQUFFQTtRQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQS9EbUMsU0FBUyxHQUFBK0IsU0FBQSxDQUFUL0IsU0FBUztNQUNqQnpCLE1BQU0sQ0FBQ3lCLFNBQVMsQ0FBQ0MsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0VBRUZ0QyxRQUFRLENBQUMscUJBQXFCLEVBQUUsWUFBTTtJQUNwQ1UsRUFBRSxDQUFDLDhCQUE4QixFQUFFLFlBQU07TUFDdkMsSUFBQTBELFNBQUEsR0FBc0IsSUFBQWxDLGlCQUFNLGVBQUM1RSxNQUFBLFlBQUE2RSxhQUFBLENBQUN4RSxNQUFBLFdBQUssRUFBS3VELFlBQWUsQ0FBQyxDQUFDO1FBQWpEa0IsU0FBUyxHQUFBZ0MsU0FBQSxDQUFUaEMsU0FBUzs7TUFFakI7TUFDQTtNQUNBLElBQU1pQyxpQkFBaUIsR0FBQTVFLGFBQUEsQ0FBQUEsYUFBQSxLQUFReUIsWUFBWTtRQUFFakIsS0FBSyxFQUFFO01BQUUsRUFBRTtNQUN4RCxJQUFBcUUsU0FBQSxHQUFzQyxJQUFBcEMsaUJBQU0sZUFBQzVFLE1BQUEsWUFBQTZFLGFBQUEsQ0FBQ3hFLE1BQUEsV0FBSyxFQUFLMEcsaUJBQW9CLENBQUMsQ0FBQztRQUEzREUsY0FBYyxHQUFBRCxTQUFBLENBQXpCbEMsU0FBUztNQUNqQnpCLE1BQU0sQ0FBQzRELGNBQWMsQ0FBQ2xDLFVBQVUsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZELENBQUMsQ0FBQztJQUVGNUIsRUFBRSxDQUFDLG1DQUFtQyxFQUFFLFlBQU07TUFDNUMsSUFBQThELFNBQUEsR0FBc0IsSUFBQXRDLGlCQUFNLGVBQUM1RSxNQUFBLFlBQUE2RSxhQUFBLENBQUN4RSxNQUFBLFdBQUssRUFBS3VELFlBQWUsQ0FBQyxDQUFDO1FBQWpEa0IsU0FBUyxHQUFBb0MsU0FBQSxDQUFUcEMsU0FBUztNQUNqQnpCLE1BQU0sQ0FBQ3lCLFNBQVMsQ0FBQ0MsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0lBRUY1QixFQUFFLENBQUMsb0NBQW9DLEVBQUUsWUFBTTtNQUM3QyxJQUFNK0QsdUJBQXVCLEdBQUFoRixhQUFBLENBQUFBLGFBQUEsS0FBUXlCLFlBQVk7UUFBRUUsS0FBSyxFQUFFK0I7TUFBUyxFQUFFO01BQ3JFLElBQU11QixhQUFhLEdBQUcsSUFBSUMsaUJBQUssQ0FBQ0YsdUJBQXVCLENBQUM7TUFDeEQsSUFBTUcsSUFBSSxHQUFHO1FBQUUxRSxJQUFJLEVBQUUsT0FBTztRQUFFQyxDQUFDLEVBQUUsQ0FBQztRQUFFQyxDQUFDLEVBQUU7TUFBRSxDQUFDO01BQzFDLElBQU15RSxTQUFTLEdBQUdILGFBQWEsQ0FBQ0ksWUFBWSxDQUFDRixJQUFJLENBQUM7TUFDbERqRSxNQUFNLENBQUNrRSxTQUFTLENBQUMsQ0FBQ0UsUUFBUSxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDO0lBRUZyRSxFQUFFLENBQUMsc0NBQXNDLEVBQUUsWUFBTTtNQUMvQyxJQUFNc0UsbUJBQW1CLEdBQUF2RixhQUFBLENBQUFBLGFBQUEsS0FBUXlCLFlBQVk7UUFBRUUsS0FBSyxFQUFFO01BQUUsRUFBRTtNQUMxRCxJQUFNc0QsYUFBYSxHQUFHLElBQUlDLGlCQUFLLENBQUNLLG1CQUFtQixDQUFDO01BQ3BELElBQU1KLElBQUksR0FBRztRQUFFMUUsSUFBSSxFQUFFLE9BQU87UUFBRUMsQ0FBQyxFQUFFLENBQUM7UUFBRUMsQ0FBQyxFQUFFO01BQUUsQ0FBQztNQUMxQyxJQUFNeUUsU0FBUyxHQUFHSCxhQUFhLENBQUNJLFlBQVksQ0FBQ0YsSUFBSSxDQUFDO01BQ2xEakUsTUFBTSxDQUFDa0UsU0FBUyxDQUFDLENBQUNFLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQztJQUVGckUsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLFlBQU07TUFDMUQsSUFBTWdFLGFBQWEsR0FBRyxJQUFJQyxpQkFBSyxDQUFDekQsWUFBWSxDQUFDO01BQzdDLElBQU0wRCxJQUFJLEdBQUc7UUFBRTFFLElBQUksRUFBRSxrQkFBa0I7UUFBRUMsQ0FBQyxFQUFFLENBQUM7UUFBRUMsQ0FBQyxFQUFFO01BQUUsQ0FBQztNQUNyRCxJQUFNeUUsU0FBUyxHQUFHSCxhQUFhLENBQUNJLFlBQVksQ0FBQ0YsSUFBSSxDQUFDO01BQ2xEakUsTUFBTSxDQUFDa0UsU0FBUyxDQUFDLENBQUNFLFFBQVEsQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQztJQUVGckUsRUFBRSxDQUFDLHFEQUFxRCxFQUFFLFlBQU07TUFDOUQsSUFBTXVFLG9CQUFvQixHQUFHLENBQUM7UUFBRS9FLElBQUksRUFBRSxRQUFRO1FBQUVHLEtBQUssRUFBRTtNQUFTLENBQUMsQ0FBQztNQUNsRSxJQUFNNkUsbUJBQW1CLEdBQUF6RixhQUFBLENBQUFBLGFBQUEsS0FBUXlCLFlBQVk7UUFBRUUsS0FBSyxFQUFFNkQ7TUFBb0IsRUFBRTtNQUM1RSxJQUFNUCxhQUFhLEdBQUcsSUFBSUMsaUJBQUssQ0FBQ08sbUJBQW1CLENBQUM7TUFDcEQsSUFBTU4sSUFBSSxHQUFHO1FBQUUxRSxJQUFJLEVBQUUsUUFBUTtRQUFFQyxDQUFDLEVBQUUsQ0FBQztRQUFFQyxDQUFDLEVBQUU7TUFBRSxDQUFDO01BQzNDLElBQU15RSxTQUFTLEdBQUdILGFBQWEsQ0FBQ0ksWUFBWSxDQUFDRixJQUFJLENBQUM7TUFDbERqRSxNQUFNLENBQUNrRSxTQUFTLENBQUMsQ0FBQ0UsUUFBUSxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDO0lBRUZyRSxFQUFFLENBQUMsMENBQTBDLEVBQUUsWUFBTTtNQUNuRCxJQUFNZ0UsYUFBYSxHQUFHLElBQUlDLGlCQUFLLENBQUN6RCxZQUFZLENBQUM7TUFDN0MsSUFBTTBELElBQUksR0FBRztRQUFFMUUsSUFBSSxFQUFFLE9BQU87UUFBRUMsQ0FBQyxFQUFFLENBQUM7UUFBRUMsQ0FBQyxFQUFFO01BQUUsQ0FBQztNQUMxQyxJQUFNeUUsU0FBUyxHQUFHSCxhQUFhLENBQUNJLFlBQVksQ0FBQ0YsSUFBSSxDQUFDO01BQ2xEakUsTUFBTSxDQUFDa0UsU0FBUyxDQUFDLENBQUNNLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQztJQUVGekUsRUFBRSxDQUFDLHlDQUF5QyxFQUFFLFlBQU07TUFDbEQsSUFBTWdFLGFBQWEsR0FBRyxJQUFJQyxpQkFBSyxDQUFDekQsWUFBWSxDQUFDO01BQzdDLElBQU0wRCxJQUFJLEdBQUc7UUFBRTFFLElBQUksRUFBRSxNQUFNO1FBQUVLLElBQUksRUFBRTtVQUFFSixDQUFDLEVBQUUsQ0FBQztVQUFFQyxDQUFDLEVBQUU7UUFBRSxDQUFDO1FBQUVJLEVBQUUsRUFBRTtVQUFFTCxDQUFDLEVBQUUsQ0FBQztVQUFFQyxDQUFDLEVBQUU7UUFBRTtNQUFFLENBQUM7TUFDdkUsSUFBTXlFLFNBQVMsR0FBR0gsYUFBYSxDQUFDSSxZQUFZLENBQUNGLElBQUksQ0FBQztNQUNsRGpFLE1BQU0sQ0FBQ2tFLFNBQVMsQ0FBQyxDQUFDTSxVQUFVLENBQUMsQ0FBQztJQUNoQyxDQUFDLENBQUM7SUFFRnpFLEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxZQUFNO01BQzdELElBQU1nRSxhQUFhLEdBQUcsSUFBSUMsaUJBQUssQ0FBQ3pELFlBQVksQ0FBQztNQUU3QyxJQUFNa0UsU0FBUyxHQUFHO1FBQUVsRixJQUFJLEVBQUUsT0FBTztRQUFFQyxDQUFDLEVBQUUsQ0FBQztRQUFFQyxDQUFDLEVBQUU7TUFBRSxDQUFDO01BQy9DLElBQU1pRixRQUFRLEdBQUc7UUFBRW5GLElBQUksRUFBRSxNQUFNO1FBQUVLLElBQUksRUFBRTtVQUFFSixDQUFDLEVBQUUsQ0FBQztVQUFFQyxDQUFDLEVBQUU7UUFBRSxDQUFDO1FBQUVJLEVBQUUsRUFBRTtVQUFFTCxDQUFDLEVBQUUsQ0FBQztVQUFFQyxDQUFDLEVBQUU7UUFBRTtNQUFFLENBQUM7TUFDM0UsSUFBTWtGLFVBQVUsR0FBRztRQUFFcEYsSUFBSSxFQUFFLFFBQVE7UUFBRXFGLE1BQU0sRUFBRTtVQUFFcEYsQ0FBQyxFQUFFLENBQUM7VUFBRUMsQ0FBQyxFQUFFO1FBQUUsQ0FBQztRQUFFb0YsSUFBSSxFQUFFO1VBQUVyRixDQUFDLEVBQUUsQ0FBQztVQUFFQyxDQUFDLEVBQUU7UUFBRTtNQUFFLENBQUM7TUFFbkYsSUFBTXFGLGNBQWMsR0FBR2YsYUFBYSxDQUFDSSxZQUFZLENBQUNNLFNBQVMsQ0FBQztNQUM1RCxJQUFNTSxhQUFhLEdBQUdoQixhQUFhLENBQUNJLFlBQVksQ0FBQ08sUUFBUSxDQUFDO01BQzFELElBQU1NLGVBQWUsR0FBR2pCLGFBQWEsQ0FBQ0ksWUFBWSxDQUFDUSxVQUFVLENBQUM7TUFFOUQzRSxNQUFNLENBQUM4RSxjQUFjLENBQUMsQ0FBQ04sVUFBVSxDQUFDLENBQUM7TUFDbkN4RSxNQUFNLENBQUMrRSxhQUFhLENBQUMsQ0FBQ1AsVUFBVSxDQUFDLENBQUM7TUFDbEN4RSxNQUFNLENBQUNnRixlQUFlLENBQUMsQ0FBQ1IsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0VBRUZuRixRQUFRLENBQUMsa0NBQWtDLEVBQUUsWUFBTTtJQUNqRFUsRUFBRSxDQUFDLDhCQUE4QixFQUFFLFlBQU07TUFDdkMsSUFBTWdFLGFBQWEsR0FBRyxJQUFJQyxpQkFBSyxDQUFDekQsWUFBWSxDQUFDO01BQzdDLElBQU0yRCxTQUFTLEdBQUdILGFBQWEsQ0FBQ0ksWUFBWSxDQUFDLElBQUksQ0FBQztNQUNsRG5FLE1BQU0sQ0FBQ2tFLFNBQVMsQ0FBQyxDQUFDRSxRQUFRLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUM7SUFFRnJFLEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxZQUFNO01BQzVDLElBQU1nRSxhQUFhLEdBQUcsSUFBSUMsaUJBQUssQ0FBQ3pELFlBQVksQ0FBQztNQUM3QyxJQUFNMkQsU0FBUyxHQUFHSCxhQUFhLENBQUNJLFlBQVksQ0FBQzNCLFNBQVMsQ0FBQztNQUN2RHhDLE1BQU0sQ0FBQ2tFLFNBQVMsQ0FBQyxDQUFDRSxRQUFRLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUM7SUFFRnJFLEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxZQUFNO01BQzdDLElBQU0rRCx1QkFBdUIsR0FBQWhGLGFBQUEsQ0FBQUEsYUFBQSxLQUFReUIsWUFBWTtRQUFFRSxLQUFLLEVBQUUrQjtNQUFTLEVBQUU7TUFDckUsSUFBTXVCLGFBQWEsR0FBRyxJQUFJQyxpQkFBSyxDQUFDRix1QkFBdUIsQ0FBQztNQUN4RCxJQUFNRyxJQUFJLEdBQUc7UUFBRTFFLElBQUksRUFBRSxPQUFPO1FBQUVDLENBQUMsRUFBRSxDQUFDO1FBQUVDLENBQUMsRUFBRTtNQUFFLENBQUM7TUFDMUMsSUFBTXlFLFNBQVMsR0FBR0gsYUFBYSxDQUFDSSxZQUFZLENBQUNGLElBQUksQ0FBQztNQUNsRGpFLE1BQU0sQ0FBQ2tFLFNBQVMsQ0FBQyxDQUFDRSxRQUFRLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUM7SUFFRnJFLEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxZQUFNO01BQy9DLElBQU1zRSxtQkFBbUIsR0FBQXZGLGFBQUEsQ0FBQUEsYUFBQSxLQUFReUIsWUFBWTtRQUFFRSxLQUFLLEVBQUU7TUFBRSxFQUFFO01BQzFELElBQU1zRCxhQUFhLEdBQUcsSUFBSUMsaUJBQUssQ0FBQ0ssbUJBQW1CLENBQUM7TUFDcEQsSUFBTUosSUFBSSxHQUFHO1FBQUUxRSxJQUFJLEVBQUUsT0FBTztRQUFFQyxDQUFDLEVBQUUsQ0FBQztRQUFFQyxDQUFDLEVBQUU7TUFBRSxDQUFDO01BQzFDLElBQU15RSxTQUFTLEdBQUdILGFBQWEsQ0FBQ0ksWUFBWSxDQUFDRixJQUFJLENBQUM7TUFDbERqRSxNQUFNLENBQUNrRSxTQUFTLENBQUMsQ0FBQ0UsUUFBUSxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDO0lBRUZyRSxFQUFFLENBQUMsaURBQWlELEVBQUUsWUFBTTtNQUMxRCxJQUFNZ0UsYUFBYSxHQUFHLElBQUlDLGlCQUFLLENBQUN6RCxZQUFZLENBQUM7TUFDN0MsSUFBTTBELElBQUksR0FBRztRQUFFMUUsSUFBSSxFQUFFLGtCQUFrQjtRQUFFQyxDQUFDLEVBQUUsQ0FBQztRQUFFQyxDQUFDLEVBQUU7TUFBRSxDQUFDO01BQ3JELElBQU15RSxTQUFTLEdBQUdILGFBQWEsQ0FBQ0ksWUFBWSxDQUFDRixJQUFJLENBQUM7TUFDbERqRSxNQUFNLENBQUNrRSxTQUFTLENBQUMsQ0FBQ0UsUUFBUSxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDO0lBRUZyRSxFQUFFLENBQUMscURBQXFELEVBQUUsWUFBTTtNQUM5RCxJQUFNdUUsb0JBQW9CLEdBQUcsQ0FBQztRQUFFL0UsSUFBSSxFQUFFLFFBQVE7UUFBRUcsS0FBSyxFQUFFO01BQVMsQ0FBQyxDQUFDO01BQ2xFLElBQU02RSxtQkFBbUIsR0FBQXpGLGFBQUEsQ0FBQUEsYUFBQSxLQUFReUIsWUFBWTtRQUFFRSxLQUFLLEVBQUU2RDtNQUFvQixFQUFFO01BQzVFLElBQU1QLGFBQWEsR0FBRyxJQUFJQyxpQkFBSyxDQUFDTyxtQkFBbUIsQ0FBQztNQUNwRCxJQUFNTixJQUFJLEdBQUc7UUFBRTFFLElBQUksRUFBRSxRQUFRO1FBQUVDLENBQUMsRUFBRSxDQUFDO1FBQUVDLENBQUMsRUFBRTtNQUFFLENBQUM7TUFDM0MsSUFBTXlFLFNBQVMsR0FBR0gsYUFBYSxDQUFDSSxZQUFZLENBQUNGLElBQUksQ0FBQztNQUNsRGpFLE1BQU0sQ0FBQ2tFLFNBQVMsQ0FBQyxDQUFDRSxRQUFRLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUM7SUFFRnJFLEVBQUUsQ0FBQywwQ0FBMEMsRUFBRSxZQUFNO01BQ25ELElBQU1nRSxhQUFhLEdBQUcsSUFBSUMsaUJBQUssQ0FBQ3pELFlBQVksQ0FBQztNQUM3QyxJQUFNMEQsSUFBSSxHQUFHO1FBQUUxRSxJQUFJLEVBQUUsT0FBTztRQUFFQyxDQUFDLEVBQUUsQ0FBQztRQUFFQyxDQUFDLEVBQUU7TUFBRSxDQUFDO01BQzFDLElBQU15RSxTQUFTLEdBQUdILGFBQWEsQ0FBQ0ksWUFBWSxDQUFDRixJQUFJLENBQUM7TUFDbERqRSxNQUFNLENBQUNrRSxTQUFTLENBQUMsQ0FBQ00sVUFBVSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0lBRUZ6RSxFQUFFLENBQUMseUNBQXlDLEVBQUUsWUFBTTtNQUNsRCxJQUFNZ0UsYUFBYSxHQUFHLElBQUlDLGlCQUFLLENBQUN6RCxZQUFZLENBQUM7TUFDN0MsSUFBTTBELElBQUksR0FBRztRQUFFMUUsSUFBSSxFQUFFLE1BQU07UUFBRUssSUFBSSxFQUFFO1VBQUVKLENBQUMsRUFBRSxDQUFDO1VBQUVDLENBQUMsRUFBRTtRQUFFLENBQUM7UUFBRUksRUFBRSxFQUFFO1VBQUVMLENBQUMsRUFBRSxDQUFDO1VBQUVDLENBQUMsRUFBRTtRQUFFO01BQUUsQ0FBQztNQUN2RSxJQUFNeUUsU0FBUyxHQUFHSCxhQUFhLENBQUNJLFlBQVksQ0FBQ0YsSUFBSSxDQUFDO01BQ2xEakUsTUFBTSxDQUFDa0UsU0FBUyxDQUFDLENBQUNNLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQztJQUVGekUsRUFBRSxDQUFDLG9EQUFvRCxFQUFFLFlBQU07TUFDN0QsSUFBTWdFLGFBQWEsR0FBRyxJQUFJQyxpQkFBSyxDQUFDekQsWUFBWSxDQUFDO01BRTdDLElBQU1rRSxTQUFTLEdBQUc7UUFBRWxGLElBQUksRUFBRSxPQUFPO1FBQUVDLENBQUMsRUFBRSxDQUFDO1FBQUVDLENBQUMsRUFBRTtNQUFFLENBQUM7TUFDL0MsSUFBTWlGLFFBQVEsR0FBRztRQUFFbkYsSUFBSSxFQUFFLE1BQU07UUFBRUssSUFBSSxFQUFFO1VBQUVKLENBQUMsRUFBRSxDQUFDO1VBQUVDLENBQUMsRUFBRTtRQUFFLENBQUM7UUFBRUksRUFBRSxFQUFFO1VBQUVMLENBQUMsRUFBRSxDQUFDO1VBQUVDLENBQUMsRUFBRTtRQUFFO01BQUUsQ0FBQztNQUMzRSxJQUFNa0YsVUFBVSxHQUFHO1FBQUVwRixJQUFJLEVBQUUsUUFBUTtRQUFFcUYsTUFBTSxFQUFFO1VBQUVwRixDQUFDLEVBQUUsQ0FBQztVQUFFQyxDQUFDLEVBQUU7UUFBRSxDQUFDO1FBQUVvRixJQUFJLEVBQUU7VUFBRXJGLENBQUMsRUFBRSxDQUFDO1VBQUVDLENBQUMsRUFBRTtRQUFFO01BQUUsQ0FBQztNQUVuRixJQUFNcUYsY0FBYyxHQUFHZixhQUFhLENBQUNJLFlBQVksQ0FBQ00sU0FBUyxDQUFDO01BQzVELElBQU1NLGFBQWEsR0FBR2hCLGFBQWEsQ0FBQ0ksWUFBWSxDQUFDTyxRQUFRLENBQUM7TUFDMUQsSUFBTU0sZUFBZSxHQUFHakIsYUFBYSxDQUFDSSxZQUFZLENBQUNRLFVBQVUsQ0FBQztNQUU5RDNFLE1BQU0sQ0FBQzhFLGNBQWMsQ0FBQyxDQUFDTixVQUFVLENBQUMsQ0FBQztNQUNuQ3hFLE1BQU0sQ0FBQytFLGFBQWEsQ0FBQyxDQUFDUCxVQUFVLENBQUMsQ0FBQztNQUNsQ3hFLE1BQU0sQ0FBQ2dGLGVBQWUsQ0FBQyxDQUFDUixVQUFVLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7RUFFRm5GLFFBQVEsQ0FBQyxpQ0FBaUMsRUFBRSxZQUFNO0lBQ2hEVSxFQUFFLENBQUMsNkNBQTZDLEVBQUUsWUFBTTtNQUN0RCxJQUFNSyxhQUFhLEdBQUdDLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7TUFDL0IsSUFBTWhCLEtBQUssR0FBRyxDQUFDO1FBQUVDLElBQUksRUFBRSxPQUFPO1FBQUVDLENBQUMsRUFBRSxDQUFDO1FBQUVDLENBQUMsRUFBRTtNQUFFLENBQUMsQ0FBQztNQUM3QyxJQUFNbUMsS0FBSyxHQUFBOUMsYUFBQSxDQUFBQSxhQUFBLEtBQVF5QixZQUFZO1FBQUVILGFBQWEsRUFBYkEsYUFBYTtRQUFFZCxLQUFLLEVBQUxBO01BQUssRUFBRTtNQUN2RCxJQUFNeUUsYUFBYSxHQUFHLElBQUlDLGlCQUFLLENBQUNwQyxLQUFLLENBQUM7TUFFdEMsSUFBTXFELFFBQVEsR0FBRzNGLEtBQUssQ0FBQyxDQUFDLENBQUM7TUFDekJ5RSxhQUFhLENBQUNtQixXQUFXLENBQUNELFFBQVEsRUFBRSxJQUFJLENBQUM7TUFFekNqRixNQUFNLENBQUNJLGFBQWEsQ0FBQyxDQUFDa0MsR0FBRyxDQUFDQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQztJQUVGeEMsRUFBRSxDQUFDLGtEQUFrRCxFQUFFLFlBQU07TUFDM0QsSUFBTUssYUFBYSxHQUFHQyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO01BQy9CLElBQU1oQixLQUFLLEdBQUcsQ0FBQztRQUFFQyxJQUFJLEVBQUUsT0FBTztRQUFFQyxDQUFDLEVBQUUsQ0FBQztRQUFFQyxDQUFDLEVBQUU7TUFBRSxDQUFDLENBQUM7TUFDN0MsSUFBTW1DLEtBQUssR0FBQTlDLGFBQUEsQ0FBQUEsYUFBQSxLQUFReUIsWUFBWTtRQUFFSCxhQUFhLEVBQWJBLGFBQWE7UUFBRWQsS0FBSyxFQUFMQTtNQUFLLEVBQUU7TUFDdkQsSUFBTXlFLGFBQWEsR0FBRyxJQUFJQyxpQkFBSyxDQUFDcEMsS0FBSyxDQUFDO01BRXRDLElBQU1xRCxRQUFRLEdBQUczRixLQUFLLENBQUMsQ0FBQyxDQUFDO01BQ3pCeUUsYUFBYSxDQUFDbUIsV0FBVyxDQUFDRCxRQUFRLEVBQUV6QyxTQUFTLENBQUM7TUFFOUN4QyxNQUFNLENBQUNJLGFBQWEsQ0FBQyxDQUFDa0MsR0FBRyxDQUFDQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQztJQUVGeEMsRUFBRSxDQUFDLGtDQUFrQyxFQUFFLFlBQU07TUFDM0MsSUFBTUssYUFBYSxHQUFHQyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO01BQy9CLElBQU1oQixLQUFLLEdBQUcsQ0FDWjtRQUFFQyxJQUFJLEVBQUUsT0FBTztRQUFFQyxDQUFDLEVBQUUsQ0FBQztRQUFFQyxDQUFDLEVBQUU7TUFBRSxDQUFDLEVBQzdCO1FBQUVGLElBQUksRUFBRSxPQUFPO1FBQUVDLENBQUMsRUFBRSxDQUFDO1FBQUVDLENBQUMsRUFBRTtNQUFFLENBQUMsQ0FDOUI7TUFDRCxJQUFNbUMsS0FBSyxHQUFBOUMsYUFBQSxDQUFBQSxhQUFBLEtBQVF5QixZQUFZO1FBQUVILGFBQWEsRUFBYkEsYUFBYTtRQUFFZCxLQUFLLEVBQUxBO01BQUssRUFBRTtNQUN2RCxJQUFNeUUsYUFBYSxHQUFHLElBQUlDLGlCQUFLLENBQUNwQyxLQUFLLENBQUM7TUFFdEMsSUFBTXFELFFBQVEsR0FBRzNGLEtBQUssQ0FBQyxDQUFDLENBQUM7TUFDekIsSUFBTTZGLE9BQU8sR0FBRztRQUFFNUYsSUFBSSxFQUFFLE9BQU87UUFBRUMsQ0FBQyxFQUFFLENBQUM7UUFBRUMsQ0FBQyxFQUFFO01BQUUsQ0FBQztNQUU3Q3NFLGFBQWEsQ0FBQ21CLFdBQVcsQ0FBQ0QsUUFBUSxFQUFFRSxPQUFPLENBQUM7TUFFNUNuRixNQUFNLENBQUNJLGFBQWEsQ0FBQyxDQUFDZ0YscUJBQXFCLENBQUMsQ0FBQyxDQUFDO01BQzlDLElBQU12QyxZQUFZLEdBQUd6QyxhQUFhLENBQUNpRixJQUFJLENBQUNDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDbkR0RixNQUFNLENBQUM2QyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzFDLE9BQU8sQ0FBQ2dGLE9BQU8sQ0FBQztNQUN4Q25GLE1BQU0sQ0FBQzZDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDMUMsT0FBTyxDQUFDYixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQyxDQUFDO0lBRUZTLEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxZQUFNO01BQy9ELElBQU1LLGFBQWEsR0FBR0MsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztNQUMvQixJQUFNaEIsS0FBSyxHQUFHLENBQUM7UUFBRUMsSUFBSSxFQUFFLE9BQU87UUFBRUMsQ0FBQyxFQUFFLENBQUM7UUFBRUMsQ0FBQyxFQUFFO01BQUUsQ0FBQyxDQUFDO01BQzdDLElBQU1tQyxLQUFLLEdBQUE5QyxhQUFBLENBQUFBLGFBQUEsS0FBUXlCLFlBQVk7UUFBRUgsYUFBYSxFQUFiQSxhQUFhO1FBQUVkLEtBQUssRUFBTEE7TUFBSyxFQUFFO01BQ3ZELElBQU15RSxhQUFhLEdBQUcsSUFBSUMsaUJBQUssQ0FBQ3BDLEtBQUssQ0FBQztNQUV0QyxJQUFNcUQsUUFBUSxHQUFHO1FBQUUxRixJQUFJLEVBQUUsT0FBTztRQUFFQyxDQUFDLEVBQUUsQ0FBQztRQUFFQyxDQUFDLEVBQUU7TUFBRSxDQUFDO01BQzlDLElBQU0wRixPQUFPLEdBQUc7UUFBRTVGLElBQUksRUFBRSxPQUFPO1FBQUVDLENBQUMsRUFBRSxDQUFDO1FBQUVDLENBQUMsRUFBRTtNQUFFLENBQUM7TUFFN0NzRSxhQUFhLENBQUNtQixXQUFXLENBQUNELFFBQVEsRUFBRUUsT0FBTyxFQUFFLElBQUksQ0FBQztNQUVsRG5GLE1BQU0sQ0FBQ0ksYUFBYSxDQUFDLENBQUNnRixxQkFBcUIsQ0FBQyxDQUFDLENBQUM7TUFDOUMsSUFBTXZDLFlBQVksR0FBR3pDLGFBQWEsQ0FBQ2lGLElBQUksQ0FBQ0MsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUNuRHRGLE1BQU0sQ0FBQzZDLFlBQVksQ0FBQzdELE1BQU0sQ0FBQyxDQUFDdUcsSUFBSSxDQUFDLENBQUMsQ0FBQztNQUNuQ3ZGLE1BQU0sQ0FBQzZDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDMUMsT0FBTyxDQUFDZ0YsT0FBTyxDQUFDO0lBQzFDLENBQUMsQ0FBQztJQUVGcEYsRUFBRSxDQUFDLCtEQUErRCxFQUFFLFlBQU07TUFDeEUsSUFBTUssYUFBYSxHQUFHQyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO01BQy9CLElBQU1oQixLQUFLLEdBQUcsQ0FBQztRQUFFQyxJQUFJLEVBQUUsT0FBTztRQUFFQyxDQUFDLEVBQUUsQ0FBQztRQUFFQyxDQUFDLEVBQUU7TUFBRSxDQUFDLENBQUM7TUFDN0MsSUFBTW1DLEtBQUssR0FBQTlDLGFBQUEsQ0FBQUEsYUFBQSxLQUFReUIsWUFBWTtRQUFFSCxhQUFhLEVBQWJBLGFBQWE7UUFBRWQsS0FBSyxFQUFMQTtNQUFLLEVBQUU7TUFDdkQsSUFBTXlFLGFBQWEsR0FBRyxJQUFJQyxpQkFBSyxDQUFDcEMsS0FBSyxDQUFDO01BRXRDLElBQU1xRCxRQUFRLEdBQUc7UUFBRTFGLElBQUksRUFBRSxPQUFPO1FBQUVDLENBQUMsRUFBRSxDQUFDO1FBQUVDLENBQUMsRUFBRTtNQUFFLENBQUM7TUFDOUMsSUFBTTBGLE9BQU8sR0FBRztRQUFFNUYsSUFBSSxFQUFFLE9BQU87UUFBRUMsQ0FBQyxFQUFFLENBQUM7UUFBRUMsQ0FBQyxFQUFFO01BQUUsQ0FBQztNQUU3Q3NFLGFBQWEsQ0FBQ21CLFdBQVcsQ0FBQ0QsUUFBUSxFQUFFRSxPQUFPLEVBQUUsS0FBSyxDQUFDO01BRW5EbkYsTUFBTSxDQUFDSSxhQUFhLENBQUMsQ0FBQ2tDLEdBQUcsQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUM7SUFFRnhDLEVBQUUsQ0FBQywyQ0FBMkMsRUFBRSxZQUFNO01BQ3BELElBQU1LLGFBQWEsR0FBR0MsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztNQUMvQixJQUFNaEIsS0FBSyxHQUFHLENBQUM7UUFBRUMsSUFBSSxFQUFFLE9BQU87UUFBRUMsQ0FBQyxFQUFFLENBQUM7UUFBRUMsQ0FBQyxFQUFFLENBQUM7UUFBRUssUUFBUSxFQUFFO01BQUssQ0FBQyxDQUFDO01BQzdELElBQU04QixLQUFLLEdBQUE5QyxhQUFBLENBQUFBLGFBQUEsS0FBUXlCLFlBQVk7UUFBRUgsYUFBYSxFQUFiQSxhQUFhO1FBQUVkLEtBQUssRUFBTEE7TUFBSyxFQUFFO01BQ3ZELElBQU15RSxhQUFhLEdBQUcsSUFBSUMsaUJBQUssQ0FBQ3BDLEtBQUssQ0FBQztNQUV0QyxJQUFNcUQsUUFBUSxHQUFHM0YsS0FBSyxDQUFDLENBQUMsQ0FBQztNQUN6QixJQUFNNkYsT0FBTyxHQUFHO1FBQUU1RixJQUFJLEVBQUUsT0FBTztRQUFFQyxDQUFDLEVBQUUsQ0FBQztRQUFFQyxDQUFDLEVBQUU7TUFBRSxDQUFDO01BRTdDc0UsYUFBYSxDQUFDbUIsV0FBVyxDQUFDRCxRQUFRLEVBQUVFLE9BQU8sQ0FBQztNQUU1Q25GLE1BQU0sQ0FBQ0ksYUFBYSxDQUFDLENBQUNtQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzFDLENBQUMsQ0FBQztJQUVGeEMsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLFlBQU07TUFDN0MsSUFBTUssYUFBYSxHQUFHQyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO01BQy9CLElBQU1oQixLQUFLLEdBQUcsQ0FDWjtRQUFFQyxJQUFJLEVBQUUsT0FBTztRQUFFQyxDQUFDLEVBQUUsQ0FBQztRQUFFQyxDQUFDLEVBQUU7TUFBRSxDQUFDLEVBQzdCO1FBQUVGLElBQUksRUFBRSxPQUFPO1FBQUVDLENBQUMsRUFBRSxDQUFDO1FBQUVDLENBQUMsRUFBRTtNQUFFLENBQUMsRUFDN0I7UUFBRUYsSUFBSSxFQUFFLE9BQU87UUFBRUMsQ0FBQyxFQUFFLENBQUM7UUFBRUMsQ0FBQyxFQUFFO01BQUUsQ0FBQyxDQUM5QjtNQUNELElBQU1tQyxLQUFLLEdBQUE5QyxhQUFBLENBQUFBLGFBQUEsS0FBUXlCLFlBQVk7UUFBRUgsYUFBYSxFQUFiQSxhQUFhO1FBQUVkLEtBQUssRUFBTEE7TUFBSyxFQUFFO01BQ3ZELElBQU15RSxhQUFhLEdBQUcsSUFBSUMsaUJBQUssQ0FBQ3BDLEtBQUssQ0FBQztNQUV0QyxJQUFNcUQsUUFBUSxHQUFHM0YsS0FBSyxDQUFDLENBQUMsQ0FBQztNQUN6QixJQUFNNkYsT0FBTyxHQUFHO1FBQUU1RixJQUFJLEVBQUUsT0FBTztRQUFFQyxDQUFDLEVBQUUsQ0FBQztRQUFFQyxDQUFDLEVBQUU7TUFBRSxDQUFDO01BRTdDc0UsYUFBYSxDQUFDbUIsV0FBVyxDQUFDRCxRQUFRLEVBQUVFLE9BQU8sQ0FBQztNQUU1QyxJQUFNdEMsWUFBWSxHQUFHekMsYUFBYSxDQUFDaUYsSUFBSSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ25EdEYsTUFBTSxDQUFDNkMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMxQyxPQUFPLENBQUNiLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUN6Q1UsTUFBTSxDQUFDNkMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMxQyxPQUFPLENBQUNnRixPQUFPLENBQUM7TUFDeENuRixNQUFNLENBQUM2QyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzFDLE9BQU8sQ0FBQ2IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQztJQUVGUyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsWUFBTTtNQUNwQyxJQUFNSyxhQUFhLEdBQUdDLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7TUFDL0IsSUFBTXNCLEtBQUssR0FBQTlDLGFBQUEsQ0FBQUEsYUFBQSxLQUFReUIsWUFBWTtRQUFFSCxhQUFhLEVBQWJBLGFBQWE7UUFBRWQsS0FBSyxFQUFFO01BQUUsRUFBRTtNQUMzRCxJQUFNeUUsYUFBYSxHQUFHLElBQUlDLGlCQUFLLENBQUNwQyxLQUFLLENBQUM7TUFFdEMsSUFBTXFELFFBQVEsR0FBRztRQUFFMUYsSUFBSSxFQUFFLE9BQU87UUFBRUMsQ0FBQyxFQUFFLENBQUM7UUFBRUMsQ0FBQyxFQUFFO01BQUUsQ0FBQztNQUM5QyxJQUFNMEYsT0FBTyxHQUFHO1FBQUU1RixJQUFJLEVBQUUsT0FBTztRQUFFQyxDQUFDLEVBQUUsQ0FBQztRQUFFQyxDQUFDLEVBQUU7TUFBRSxDQUFDO01BRTdDc0UsYUFBYSxDQUFDbUIsV0FBVyxDQUFDRCxRQUFRLEVBQUVFLE9BQU8sRUFBRSxJQUFJLENBQUM7TUFFbERuRixNQUFNLENBQUNJLGFBQWEsQ0FBQyxDQUFDZ0YscUJBQXFCLENBQUMsQ0FBQyxDQUFDO01BQzlDLElBQU12QyxZQUFZLEdBQUd6QyxhQUFhLENBQUNpRixJQUFJLENBQUNDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDbkR0RixNQUFNLENBQUM2QyxZQUFZLENBQUM3RCxNQUFNLENBQUMsQ0FBQ3VHLElBQUksQ0FBQyxDQUFDLENBQUM7TUFDbkN2RixNQUFNLENBQUM2QyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzFDLE9BQU8sQ0FBQ2dGLE9BQU8sQ0FBQztJQUMxQyxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7RUFFRjlGLFFBQVEsQ0FBQywwQ0FBMEMsRUFBRSxZQUFNO0lBQ3pEVSxFQUFFLENBQUMsbURBQW1ELEVBQUUsWUFBTTtNQUM1RCxJQUFNeUYsWUFBWSxHQUFHLENBQ25CO1FBQ0VqRyxJQUFJLEVBQUUsT0FBTztRQUNiQyxDQUFDLEVBQUUsQ0FBQztRQUNKQyxDQUFDLEVBQUUsQ0FBQztRQUNKQyxLQUFLLEVBQUUsT0FBTztRQUNkQyxTQUFTLEVBQUU7TUFDYixDQUFDLENBQ0Y7TUFFRCxJQUFBOEYsU0FBQSxHQUFnQyxJQUFBbEUsaUJBQU0sZUFBQzVFLE1BQUEsWUFBQTZFLGFBQUEsQ0FBQ3hFLE1BQUEsV0FBSyxNQUFBcUYsU0FBQSxpQkFBSzlCLFlBQVk7VUFBRWpCLEtBQUssRUFBRWtHO1FBQWEsRUFBRSxDQUFDLENBQUM7UUFBaEZyRCxRQUFRLEdBQUFzRCxTQUFBLENBQVJ0RCxRQUFRO1FBQUVWLFNBQVMsR0FBQWdFLFNBQUEsQ0FBVGhFLFNBQVM7TUFFM0IsSUFBTW9CLFlBQVksR0FBRyxDQUNuQjtRQUNFdEQsSUFBSSxFQUFFLE1BQU07UUFDWkssSUFBSSxFQUFFO1VBQUVKLENBQUMsRUFBRSxDQUFDO1VBQUVDLENBQUMsRUFBRTtRQUFFLENBQUM7UUFDcEJJLEVBQUUsRUFBRTtVQUFFTCxDQUFDLEVBQUUsQ0FBQztVQUFFQyxDQUFDLEVBQUU7UUFBRSxDQUFDO1FBQ2xCQyxLQUFLLEVBQUU7TUFDVCxDQUFDLENBQ0Y7TUFFRHlDLFFBQVEsY0FBQ3hGLE1BQUEsWUFBQTZFLGFBQUEsQ0FBQ3hFLE1BQUEsV0FBSyxNQUFBcUYsU0FBQSxpQkFBSzlCLFlBQVk7UUFBRWpCLEtBQUssRUFBRXVEO01BQWEsRUFBRSxDQUFDLENBQUM7TUFFMUQ3QyxNQUFNLENBQUN5QixTQUFTLENBQUNpRSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQy9ELGlCQUFpQixDQUFDLENBQUM7SUFDL0QsQ0FBQyxDQUFDO0lBRUY1QixFQUFFLENBQUMsK0NBQStDLEVBQUUsWUFBTTtNQUN4RCxJQUFNeUYsWUFBWSxHQUFHLENBQ25CO1FBQ0VqRyxJQUFJLEVBQUUsT0FBTztRQUNiQyxDQUFDLEVBQUUsQ0FBQztRQUNKQyxDQUFDLEVBQUUsQ0FBQztRQUNKQyxLQUFLLEVBQUUsT0FBTztRQUNkQyxTQUFTLEVBQUU7TUFDYixDQUFDLENBQ0Y7TUFFRCxJQUFBZ0csU0FBQSxHQUFnQyxJQUFBcEUsaUJBQU0sZUFBQzVFLE1BQUEsWUFBQTZFLGFBQUEsQ0FBQ3hFLE1BQUEsV0FBSyxNQUFBcUYsU0FBQSxpQkFBSzlCLFlBQVk7VUFBRWpCLEtBQUssRUFBRWtHO1FBQWEsRUFBRSxDQUFDLENBQUM7UUFBaEZyRCxRQUFRLEdBQUF3RCxTQUFBLENBQVJ4RCxRQUFRO1FBQUVWLFNBQVMsR0FBQWtFLFNBQUEsQ0FBVGxFLFNBQVM7TUFFM0IsSUFBTW9CLFlBQVksR0FBRyxDQUNuQjtRQUNFdEQsSUFBSSxFQUFFLE9BQU87UUFDYkMsQ0FBQyxFQUFFLENBQUM7UUFDSkMsQ0FBQyxFQUFFLENBQUM7UUFDSkMsS0FBSyxFQUFFLE9BQU87UUFDZEMsU0FBUyxFQUFFO01BQ2IsQ0FBQyxFQUNEO1FBQ0VKLElBQUksRUFBRSxNQUFNO1FBQ1pLLElBQUksRUFBRTtVQUFFSixDQUFDLEVBQUUsQ0FBQztVQUFFQyxDQUFDLEVBQUU7UUFBRSxDQUFDO1FBQ3BCSSxFQUFFLEVBQUU7VUFBRUwsQ0FBQyxFQUFFLENBQUM7VUFBRUMsQ0FBQyxFQUFFO1FBQUUsQ0FBQztRQUNsQkMsS0FBSyxFQUFFO01BQ1QsQ0FBQyxDQUNGO01BRUR5QyxRQUFRLGNBQUN4RixNQUFBLFlBQUE2RSxhQUFBLENBQUN4RSxNQUFBLFdBQUssTUFBQXFGLFNBQUEsaUJBQUs5QixZQUFZO1FBQUVqQixLQUFLLEVBQUV1RDtNQUFhLEVBQUUsQ0FBQyxDQUFDO01BRTFEN0MsTUFBTSxDQUFDeUIsU0FBUyxDQUFDaUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMvRCxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9ELENBQUMsQ0FBQztJQUVGNUIsRUFBRSxDQUFDLHdCQUF3QixFQUFFLFlBQU07TUFDakMsSUFBTXlGLFlBQVksR0FBRyxDQUNuQjtRQUNFakcsSUFBSSxFQUFFLE9BQU87UUFDYkMsQ0FBQyxFQUFFLENBQUM7UUFDSkMsQ0FBQyxFQUFFLENBQUM7UUFDSkMsS0FBSyxFQUFFLE9BQU87UUFDZEMsU0FBUyxFQUFFO01BQ2IsQ0FBQyxFQUNEO1FBQ0VKLElBQUksRUFBRSxNQUFNO1FBQ1pLLElBQUksRUFBRTtVQUFFSixDQUFDLEVBQUUsQ0FBQztVQUFFQyxDQUFDLEVBQUU7UUFBRSxDQUFDO1FBQ3BCSSxFQUFFLEVBQUU7VUFBRUwsQ0FBQyxFQUFFLENBQUM7VUFBRUMsQ0FBQyxFQUFFO1FBQUUsQ0FBQztRQUNsQkMsS0FBSyxFQUFFO01BQ1QsQ0FBQyxDQUNGO01BRUQsSUFBQWtHLFNBQUEsR0FBZ0MsSUFBQXJFLGlCQUFNLGVBQUM1RSxNQUFBLFlBQUE2RSxhQUFBLENBQUN4RSxNQUFBLFdBQUssTUFBQXFGLFNBQUEsaUJBQUs5QixZQUFZO1VBQUVqQixLQUFLLEVBQUVrRztRQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQWhGckQsUUFBUSxHQUFBeUQsU0FBQSxDQUFSekQsUUFBUTtRQUFFVixTQUFTLEdBQUFtRSxTQUFBLENBQVRuRSxTQUFTO01BRTNCLElBQU1vQixZQUFZLEdBQUcsQ0FDbkI7UUFDRXRELElBQUksRUFBRSxPQUFPO1FBQ2JDLENBQUMsRUFBRSxDQUFDO1FBQ0pDLENBQUMsRUFBRSxDQUFDO1FBQ0pDLEtBQUssRUFBRSxPQUFPO1FBQ2RDLFNBQVMsRUFBRTtNQUNiLENBQUMsQ0FDRjtNQUVEd0MsUUFBUSxjQUFDeEYsTUFBQSxZQUFBNkUsYUFBQSxDQUFDeEUsTUFBQSxXQUFLLE1BQUFxRixTQUFBLGlCQUFLOUIsWUFBWTtRQUFFakIsS0FBSyxFQUFFdUQ7TUFBYSxFQUFFLENBQUMsQ0FBQztNQUUxRDdDLE1BQU0sQ0FBQ3lCLFNBQVMsQ0FBQ2lFLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDL0QsaUJBQWlCLENBQUMsQ0FBQztJQUMvRCxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
929
+ describe('label focus', function () {
930
+ // the marks are owned by the host and come back from a model save asynchronously; a mark that
931
+ // shows up in front of the labelled one changes its key, so the tool that handled the click is
932
+ // remounted and the editingLabel it set is gone before the label input ever renders
933
+ var Host = function Host(_ref) {
934
+ var shiftMarks = _ref.shiftMarks;
935
+ var _React$useState = _react["default"].useState([{
936
+ type: 'point',
937
+ x: 2,
938
+ y: 2
939
+ }]),
940
+ _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
941
+ marks = _React$useState2[0],
942
+ setMarks = _React$useState2[1];
943
+ return /*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({
944
+ tools: _tools.toolsArr,
945
+ marks: marks,
946
+ labelModeEnabled: true,
947
+ onChangeMarks: function onChangeMarks(next) {
948
+ return setTimeout(function () {
949
+ return setMarks(shiftMarks ? [{
950
+ type: 'point',
951
+ x: 5,
952
+ y: 5
953
+ }].concat((0, _toConsumableArray2["default"])(next)) : next);
954
+ }, 30);
955
+ },
956
+ domain: {
957
+ min: 0,
958
+ max: 10,
959
+ step: 1
960
+ },
961
+ range: {
962
+ min: 0,
963
+ max: 10,
964
+ step: 1
965
+ },
966
+ size: {
967
+ width: 400,
968
+ height: 400
969
+ }
970
+ }, (0, _utils.graphProps)(0, 10, 0, 10)));
971
+ };
972
+ var clickPoint = function clickPoint(container) {
973
+ var circle = container.querySelector('circle');
974
+ _testUtils.fireEvent.mouseDown(circle, {
975
+ button: 0
976
+ });
977
+ _testUtils.fireEvent.mouseUp(circle, {
978
+ button: 0
979
+ });
980
+ _testUtils.fireEvent.click(circle, {
981
+ button: 0
982
+ });
983
+ (0, _testUtils.act)(function () {
984
+ return jest.advanceTimersByTime(200);
985
+ });
986
+ };
987
+ beforeEach(function () {
988
+ return jest.useFakeTimers();
989
+ });
990
+ afterEach(function () {
991
+ return jest.useRealTimers();
992
+ });
993
+ it('focuses the label that was just added', function () {
994
+ var _render22 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(Host, null)),
995
+ container = _render22.container;
996
+ clickPoint(container);
997
+ var input = container.querySelector('foreignObject input');
998
+ expect(input).not.toBe(null);
999
+ expect(document.activeElement).toBe(input);
1000
+ });
1001
+
1002
+ // in the DNA env the focus is moved while the model save is handled, after the last render
1003
+ it('takes the focus back when something steals it while the model is saved', function () {
1004
+ var _render23 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(Host, null)),
1005
+ container = _render23.container;
1006
+ clickPoint(container);
1007
+ var input = container.querySelector('foreignObject input');
1008
+ expect(document.activeElement).toBe(input);
1009
+ var elsewhere = document.createElement('input');
1010
+ document.body.appendChild(elsewhere);
1011
+ elsewhere.focus();
1012
+ expect(document.activeElement).toBe(elsewhere);
1013
+ (0, _testUtils.act)(function () {
1014
+ return jest.advanceTimersByTime(300);
1015
+ });
1016
+ expect(document.activeElement).toBe(input);
1017
+ elsewhere.remove();
1018
+ });
1019
+ it('focuses the label even if the tool was remounted before it rendered', function () {
1020
+ var _render24 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(Host, {
1021
+ shiftMarks: true
1022
+ })),
1023
+ container = _render24.container;
1024
+ clickPoint(container);
1025
+ var input = container.querySelector('foreignObject input');
1026
+ expect(input).not.toBe(null);
1027
+ expect(document.activeElement).toBe(input);
1028
+ });
1029
+ });
1030
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90ZXN0VXRpbHMiLCJfdXRpbHMiLCJfZ3JhcGgiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl90b29scyIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZXNjcmliZSIsIm1hcmtzIiwidHlwZSIsIngiLCJ5IiwibGFiZWwiLCJzaG93TGFiZWwiLCJmcm9tIiwidG8iLCJidWlsZGluZyIsIml0IiwiZXhwZWN0IiwicmVtb3ZlQnVpbGRpbmdUb29sSWZDdXJyZW50VG9vbERpZmZlcnMiLCJjdXJyZW50VG9vbCIsInRvRXF1YWwiLCJvbkNoYW5nZU1hcmtzIiwiamVzdCIsImZuIiwiZGVmYXVsdFByb3BzIiwiY2xhc3NOYW1lIiwidG9vbHMiLCJ0b29sc0FyciIsImRvbWFpbiIsIm1pbiIsIm1heCIsInN0ZXAiLCJyYW5nZSIsInNpemUiLCJ3aWR0aCIsImhlaWdodCIsImdyYXBoUHJvcHMiLCJiZWZvcmVFYWNoIiwibW9ja0NsZWFyIiwiX3JlbmRlciIsInJlbmRlciIsImNyZWF0ZUVsZW1lbnQiLCJjb250YWluZXIiLCJmaXJzdENoaWxkIiwidG9CZUluVGhlRG9jdW1lbnQiLCJwcm9wcyIsIl9yZW5kZXIyIiwiX3JlbmRlcjMiLCJfcmVuZGVyNCIsImxhYmVsTW9kZUVuYWJsZWQiLCJfcmVuZGVyNSIsIl9yZW5kZXI2IiwicmVyZW5kZXIiLCJuZXdNYXJrcyIsIl9leHRlbmRzMiIsIm5vdCIsInRvSGF2ZUJlZW5DYWxsZWQiLCJ1bmRlZmluZWQiLCJfcmVuZGVyNyIsIm1hcmtzV2l0aEJ1aWxkaW5nIiwiX3JlbmRlcjgiLCJ3cmFwcGVyIiwidXBkYXRlZE1hcmtzIiwiZHVwbGljYXRlZE1hcmtzIiwiX3JlbmRlcjkiLCJfcmVuZGVyMCIsIl9yZW5kZXIxIiwiX3JlbmRlcjEwIiwiX3JlbmRlcjExIiwiY29tcGxldGVkTWFya3MiLCJfcmVuZGVyMTIiLCJfcmVuZGVyMTMiLCJfcmVuZGVyMTQiLCJfcmVuZGVyMTUiLCJfcmVuZGVyMTYiLCJwcm9wc1dpdGhvdXRNYXJrcyIsIl9yZW5kZXIxNyIsImVtcHR5Q29udGFpbmVyIiwiX3JlbmRlcjE4IiwicHJvcHNXaXRoVW5kZWZpbmVkVG9vbHMiLCJncmFwaEluc3RhbmNlIiwiR3JhcGgiLCJtYXJrIiwiY29tcG9uZW50IiwiZ2V0Q29tcG9uZW50IiwidG9CZU51bGwiLCJwcm9wc1dpdGhFbXB0eVRvb2xzIiwidG9vbFdpdGhvdXRDb21wb25lbnQiLCJwcm9wc1dpdGhDdXN0b21Ub29sIiwidG9CZVRydXRoeSIsInBvaW50TWFyayIsImxpbmVNYXJrIiwiY2lyY2xlTWFyayIsImNlbnRlciIsImVkZ2UiLCJwb2ludENvbXBvbmVudCIsImxpbmVDb21wb25lbnQiLCJjaXJjbGVDb21wb25lbnQiLCJleGlzdGluZyIsInVwZGF0ZU1hcmtzIiwidXBkYXRlZCIsInRvSGF2ZUJlZW5DYWxsZWRUaW1lcyIsIm1vY2siLCJjYWxscyIsInRvQmUiLCJpbml0aWFsTWFya3MiLCJfcmVuZGVyMTkiLCJxdWVyeVNlbGVjdG9yIiwiX3JlbmRlcjIwIiwiX3JlbmRlcjIxIiwiSG9zdCIsIl9yZWYiLCJzaGlmdE1hcmtzIiwiX1JlYWN0JHVzZVN0YXRlIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzZXRNYXJrcyIsIm5leHQiLCJzZXRUaW1lb3V0IiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImNsaWNrUG9pbnQiLCJjaXJjbGUiLCJmaXJlRXZlbnQiLCJtb3VzZURvd24iLCJidXR0b24iLCJtb3VzZVVwIiwiY2xpY2siLCJhY3QiLCJhZHZhbmNlVGltZXJzQnlUaW1lIiwidXNlRmFrZVRpbWVycyIsImFmdGVyRWFjaCIsInVzZVJlYWxUaW1lcnMiLCJfcmVuZGVyMjIiLCJpbnB1dCIsImRvY3VtZW50IiwiYWN0aXZlRWxlbWVudCIsIl9yZW5kZXIyMyIsImVsc2V3aGVyZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImZvY3VzIiwicmVtb3ZlIiwiX3JlbmRlcjI0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9ncmFwaC50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYWN0LCBmaXJlRXZlbnQsIHJlbmRlciB9IGZyb20gJ0BwaWUtbGliL3Rlc3QtdXRpbHMnO1xuaW1wb3J0IHsgZ3JhcGhQcm9wcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEdyYXBoLCB7IHJlbW92ZUJ1aWxkaW5nVG9vbElmQ3VycmVudFRvb2xEaWZmZXJzIH0gZnJvbSAnLi4vZ3JhcGgnO1xuaW1wb3J0IHsgdG9vbHNBcnIgfSBmcm9tICcuLi90b29scyc7XG5cbmRlc2NyaWJlKCdyZW1vdmVCdWlsZGluZ1Rvb2xJZkN1cnJlbnRUb29sRGlmZmVycycsICgpID0+IHtcbiAgbGV0IG1hcmtzID0gW1xuICAgIHtcbiAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICB4OiAyLFxuICAgICAgeTogMixcbiAgICAgIGxhYmVsOiAnUG9pbnQnLFxuICAgICAgc2hvd0xhYmVsOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgZnJvbTogeyB4OiAwLCB5OiAwIH0sXG4gICAgICB0bzogeyB4OiAxLCB5OiAxIH0sXG4gICAgICBsYWJlbDogJ0xpbmUnLFxuICAgICAgYnVpbGRpbmc6IHRydWUsXG4gICAgfSxcbiAgXTtcblxuICBpdCgna2VlcHMgYWxsIG1hcmtzIGlmIGN1cnJlbnRUb29sIGlzIHRoZSBzYW1lJywgKCkgPT4ge1xuICAgIGV4cGVjdChyZW1vdmVCdWlsZGluZ1Rvb2xJZkN1cnJlbnRUb29sRGlmZmVycyh7IG1hcmtzLCBjdXJyZW50VG9vbDogeyB0eXBlOiAnbGluZScgfSB9KSkudG9FcXVhbChtYXJrcyk7XG4gIH0pO1xuXG4gIGl0KCdyZW1vdmVzIGJ1aWxkaW5nIG1hcmtzIGlmIGN1cnJlbnRUb29sIGlzIGRpZmZlcmVudCcsICgpID0+IHtcbiAgICBleHBlY3QocmVtb3ZlQnVpbGRpbmdUb29sSWZDdXJyZW50VG9vbERpZmZlcnMoeyBtYXJrcywgY3VycmVudFRvb2w6IHsgdHlwZTogJ2RpZmZlcmVudCcgfSB9KSkudG9FcXVhbChbbWFya3NbMF1dKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0dyYXBoJywgKCkgPT4ge1xuICBsZXQgb25DaGFuZ2VNYXJrcyA9IGplc3QuZm4oKTtcblxuICBjb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gICAgY2xhc3NOYW1lOiAnY2xhc3NOYW1lJyxcbiAgICBvbkNoYW5nZU1hcmtzLFxuICAgIHRvb2xzOiB0b29sc0FycixcbiAgICBkb21haW46IHsgbWluOiAwLCBtYXg6IDEsIHN0ZXA6IDEgfSxcbiAgICByYW5nZTogeyBtaW46IDAsIG1heDogMSwgc3RlcDogMSB9LFxuICAgIHNpemU6IHsgd2lkdGg6IDQwMCwgaGVpZ2h0OiA0MDAgfSxcbiAgICBtYXJrczogW1xuICAgICAge1xuICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICB4OiAyLFxuICAgICAgICB5OiAyLFxuICAgICAgICBsYWJlbDogJ1BvaW50JyxcbiAgICAgICAgc2hvd0xhYmVsOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICBmcm9tOiB7IHg6IDAsIHk6IDAgfSxcbiAgICAgICAgdG86IHsgeDogMSwgeTogMSB9LFxuICAgICAgICBsYWJlbDogJ0xpbmUnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIC4uLmdyYXBoUHJvcHMoKSxcbiAgfTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBvbkNoYW5nZU1hcmtzLm1vY2tDbGVhcigpO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGN1cnJlbnRUb29sJywgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcbiAgICAgICAgY3VycmVudFRvb2w6IHRvb2xzQXJyWzBdLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyYXBoIHsuLi5wcm9wc30gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aCBtYXJrcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggZW1wdHkgbWFya3MgYXJyYXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxuICAgICAgICBtYXJrczogW10sXG4gICAgICB9O1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLnByb3BzfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGxhYmVsTW9kZUVuYWJsZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxuICAgICAgICBsYWJlbE1vZGVFbmFibGVkOiB0cnVlLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyYXBoIHsuLi5wcm9wc30gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncHJvcHMgaGFuZGxpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ2NhbGxzIG9uQ2hhbmdlTWFya3Mgd2hlbiBtYXJrcyBwcm9wIGNoYW5nZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHJlcmVuZGVyIH0gPSByZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcblxuICAgICAgY29uc3QgbmV3TWFya3MgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICAgIHg6IDMsXG4gICAgICAgICAgeTogMyxcbiAgICAgICAgICBsYWJlbDogJ05ldyBQb2ludCcsXG4gICAgICAgICAgc2hvd0xhYmVsOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgcmVyZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IG1hcmtzPXtuZXdNYXJrc30gLz4pO1xuXG4gICAgICAvLyBDb21wb25lbnQgc2hvdWxkIHJlbmRlciB3aXRoIG5ldyBtYXJrc1xuICAgICAgLy8gTm90ZTogb25DaGFuZ2VNYXJrcyBpcyBjYWxsZWQgaW50ZXJuYWxseSB3aGVuIG1hcmtzIGFyZSBjaGFuZ2VkIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbixcbiAgICAgIC8vIG5vdCB3aGVuIHByb3BzIGNoYW5nZSwgc28gd2UganVzdCB2ZXJpZnkgdGhlIGNvbXBvbmVudCByZW5kZXJzIGNvcnJlY3RseVxuICAgICAgZXhwZWN0KG9uQ2hhbmdlTWFya3MpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyB1bmRlZmluZWQgb25DaGFuZ2VNYXJrcyBncmFjZWZ1bGx5JywgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcbiAgICAgICAgb25DaGFuZ2VNYXJrczogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyYXBoIHsuLi5wcm9wc30gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVtb3ZlQnVpbGRpbmdUb29sSWZDdXJyZW50VG9vbERpZmZlcnMgaW50ZWdyYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3JlbW92ZXMgYnVpbGRpbmcgbWFya3Mgd2hlbiBjdXJyZW50VG9vbCBjaGFuZ2VzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWFya3NXaXRoQnVpbGRpbmcgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICAgIHg6IDIsXG4gICAgICAgICAgeTogMixcbiAgICAgICAgICBsYWJlbDogJ1BvaW50JyxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgICAgZnJvbTogeyB4OiAwLCB5OiAwIH0sXG4gICAgICAgICAgdG86IHsgeDogMSwgeTogMSB9LFxuICAgICAgICAgIGJ1aWxkaW5nOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcbiAgICAgICAgbWFya3M6IG1hcmtzV2l0aEJ1aWxkaW5nLFxuICAgICAgICBjdXJyZW50VG9vbDogeyB0eXBlOiAncG9pbnQnIH0sIC8vIERpZmZlcmVudCBmcm9tIGJ1aWxkaW5nIG1hcmsgdHlwZVxuICAgICAgfTtcblxuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLnByb3BzfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd1cGRhdGVNYXJrcyBtZXRob2QnLCAoKSA9PiB7XG4gICAgaXQoJ3VwZGF0ZXMgYW4gZXhpc3RpbmcgbWFyaycsICgpID0+IHtcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSByZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcblxuICAgICAgY29uc3QgeyByZXJlbmRlciB9ID0gd3JhcHBlcjtcblxuICAgICAgY29uc3QgdXBkYXRlZE1hcmtzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ3BvaW50JyxcbiAgICAgICAgICB4OiAzLFxuICAgICAgICAgIHk6IDMsXG4gICAgICAgICAgbGFiZWw6ICdVcGRhdGVkIFBvaW50JyxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgICAgZnJvbTogeyB4OiAwLCB5OiAwIH0sXG4gICAgICAgICAgdG86IHsgeDogMSwgeTogMSB9LFxuICAgICAgICAgIGxhYmVsOiAnTGluZScsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICByZXJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gbWFya3M9e3VwZGF0ZWRNYXJrc30gLz4pO1xuXG4gICAgICAvLyBDb21wb25lbnQgc2hvdWxkIHJlbmRlciB3aXRoIHVwZGF0ZWQgbWFya3NcbiAgICAgIGV4cGVjdCh3cmFwcGVyLmNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHVwZGF0ZSBpZiBtYXJrIGlzIGR1cGxpY2F0ZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkdXBsaWNhdGVkTWFya3MgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICAgIHg6IDIsXG4gICAgICAgICAgeTogMixcbiAgICAgICAgICBsYWJlbDogJ1BvaW50JyxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICAgIHg6IDIsXG4gICAgICAgICAgeTogMixcbiAgICAgICAgICBsYWJlbDogJ1BvaW50JyxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSBtYXJrcz17ZHVwbGljYXRlZE1hcmtzfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkcyBtYXJrIGlmIGFkZElmTWlzc2luZyBpcyB0cnVlIGFuZCBtYXJrIGRvZXMgbm90IGV4aXN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuXG4gICAgICAvLyBUaGUgY29tcG9uZW50IHNob3VsZCBoYW5kbGUgYWRkaW5nIG5ldyBtYXJrcyB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb25cbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCB1cGRhdGUgaWYgbWFyayBoYXMgbm8gYnVpbGRpbmcgZmxhZyBhbmQgaXMgZHVwbGljYXRlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmtzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ3BvaW50JyxcbiAgICAgICAgICB4OiAyLFxuICAgICAgICAgIHk6IDIsXG4gICAgICAgICAgbGFiZWw6ICdQb2ludCcsXG4gICAgICAgICAgc2hvd0xhYmVsOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gbWFya3M9e21hcmtzfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyBidWlsZGluZyBtYXJrcyBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXJrc1dpdGhCdWlsZGluZyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgICAgICBmcm9tOiB7IHg6IDAsIHk6IDAgfSxcbiAgICAgICAgICBidWlsZGluZzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IG1hcmtzPXttYXJrc1dpdGhCdWlsZGluZ30gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3VwZGF0ZXMgYnVpbGRpbmcgbWFyayB0byBjb21wbGV0ZWQgbWFyaycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmtzV2l0aEJ1aWxkaW5nID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICAgIGZyb206IHsgeDogMCwgeTogMCB9LFxuICAgICAgICAgIGJ1aWxkaW5nOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgY29uc3QgeyByZXJlbmRlciwgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IG1hcmtzPXttYXJrc1dpdGhCdWlsZGluZ30gLz4pO1xuXG4gICAgICBjb25zdCBjb21wbGV0ZWRNYXJrcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdsaW5lJyxcbiAgICAgICAgICBmcm9tOiB7IHg6IDAsIHk6IDAgfSxcbiAgICAgICAgICB0bzogeyB4OiAxLCB5OiAxIH0sXG4gICAgICAgICAgYnVpbGRpbmc6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgcmVyZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IG1hcmtzPXtjb21wbGV0ZWRNYXJrc30gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IGNhbGwgb25DaGFuZ2VNYXJrcyBpZiB1cGRhdGUgaXMgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuXG4gICAgICAvLyBJZiB1cGRhdGUgaXMgdW5kZWZpbmVkLCBvbkNoYW5nZU1hcmtzIHNob3VsZCBub3QgYmUgY2FsbGVkXG4gICAgICAvLyBUaGlzIGlzIGhhbmRsZWQgaW50ZXJuYWxseSBieSB0aGUgY29tcG9uZW50XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgYWRkIG1hcmsgaWYgZXhpc3RpbmcgaXMgbm90IGZvdW5kIGFuZCBhZGRJZk1pc3NpbmcgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG5cbiAgICAgIC8vIEJ5IGRlZmF1bHQsIG1hcmtzIGFyZSBub3QgYWRkZWQgaWYgdGhleSBkb24ndCBleGlzdCBhbmQgYWRkSWZNaXNzaW5nIGlzIGZhbHNlXG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2FsbHMgb25DaGFuZ2VNYXJrcyB3aXRoIGNvcnJlY3QgbWFya3Mgd2hlbiB1cGRhdGluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmtzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ3BvaW50JyxcbiAgICAgICAgICB4OiAyLFxuICAgICAgICAgIHk6IDIsXG4gICAgICAgICAgbGFiZWw6ICdQb2ludCcsXG4gICAgICAgICAgc2hvd0xhYmVsOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgY29uc3QgeyByZXJlbmRlciB9ID0gcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSBtYXJrcz17bWFya3N9IC8+KTtcblxuICAgICAgY29uc3QgdXBkYXRlZE1hcmtzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ3BvaW50JyxcbiAgICAgICAgICB4OiAzLFxuICAgICAgICAgIHk6IDMsXG4gICAgICAgICAgbGFiZWw6ICdVcGRhdGVkIFBvaW50JyxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICByZXJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gbWFya3M9e3VwZGF0ZWRNYXJrc30gLz4pO1xuXG4gICAgICAvLyBUaGUgY29tcG9uZW50IGhhbmRsZXMgbWFyayB1cGRhdGVzIGludGVybmFsbHlcbiAgICAgIC8vIG9uQ2hhbmdlTWFya3MgaXMgY2FsbGVkIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbnNcbiAgICB9KTtcblxuICAgIGl0KCdwcmVzZXJ2ZXMgb3RoZXIgbWFya3Mgd2hlbiB1cGRhdGluZyBhIHNwZWNpZmljIG1hcmsnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXJrcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgICAgeDogMixcbiAgICAgICAgICB5OiAyLFxuICAgICAgICAgIGxhYmVsOiAnUG9pbnQgMScsXG4gICAgICAgICAgc2hvd0xhYmVsOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ3BvaW50JyxcbiAgICAgICAgICB4OiAzLFxuICAgICAgICAgIHk6IDMsXG4gICAgICAgICAgbGFiZWw6ICdQb2ludCAyJyxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSBtYXJrcz17bWFya3N9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldENvbXBvbmVudCBtZXRob2QnLCAoKSA9PiB7XG4gICAgaXQoJ3JldHVybnMgbnVsbCBpZiBtYXJrIGlzIG51bGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG5cbiAgICAgIC8vIGdldENvbXBvbmVudCByZXR1cm5zIG51bGwgZm9yIG51bGwgbWFya3NcbiAgICAgIC8vIFRoaXMgaXMgdGVzdGVkIGJ5IHJlbmRlcmluZyB3aXRoIHVuZGVmaW5lZCBtYXJrc1xuICAgICAgY29uc3QgcHJvcHNXaXRob3V0TWFya3MgPSB7IC4uLmRlZmF1bHRQcm9wcywgbWFya3M6IFtdIH07XG4gICAgICBjb25zdCB7IGNvbnRhaW5lcjogZW1wdHlDb250YWluZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLnByb3BzV2l0aG91dE1hcmtzfSAvPik7XG4gICAgICBleHBlY3QoZW1wdHlDb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIG51bGwgaWYgbWFyayBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxHcmFwaCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBudWxsIGlmIHRvb2xzIGlzIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzV2l0aFVuZGVmaW5lZFRvb2xzID0geyAuLi5kZWZhdWx0UHJvcHMsIHRvb2xzOiB1bmRlZmluZWQgfTtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgocHJvcHNXaXRoVW5kZWZpbmVkVG9vbHMpO1xuICAgICAgY29uc3QgbWFyayA9IHsgdHlwZTogJ3BvaW50JywgeDogMSwgeTogMSB9O1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQobWFyayk7XG4gICAgICBleHBlY3QoY29tcG9uZW50KS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgbnVsbCBpZiB0b29scyBpcyBlbXB0eSBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzV2l0aEVtcHR5VG9vbHMgPSB7IC4uLmRlZmF1bHRQcm9wcywgdG9vbHM6IFtdIH07XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKHByb3BzV2l0aEVtcHR5VG9vbHMpO1xuICAgICAgY29uc3QgbWFyayA9IHsgdHlwZTogJ3BvaW50JywgeDogMSwgeTogMSB9O1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQobWFyayk7XG4gICAgICBleHBlY3QoY29tcG9uZW50KS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgbnVsbCBpZiBtYXJrIHR5cGUgaXMgbm90IGZvdW5kIGluIHRvb2xzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZ3JhcGhJbnN0YW5jZSA9IG5ldyBHcmFwaChkZWZhdWx0UHJvcHMpO1xuICAgICAgY29uc3QgbWFyayA9IHsgdHlwZTogJ25vbmV4aXN0ZW50LXR5cGUnLCB4OiAxLCB5OiAxIH07XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBncmFwaEluc3RhbmNlLmdldENvbXBvbmVudChtYXJrKTtcbiAgICAgIGV4cGVjdChjb21wb25lbnQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBjb21wb25lbnQgaWYgdG9vbCBoYXMgbm8gQ29tcG9uZW50IHByb3BlcnR5JywgKCkgPT4ge1xuICAgICAgY29uc3QgdG9vbFdpdGhvdXRDb21wb25lbnQgPSBbeyB0eXBlOiAnY3VzdG9tJywgbGFiZWw6ICdDdXN0b20nIH1dO1xuICAgICAgY29uc3QgcHJvcHNXaXRoQ3VzdG9tVG9vbCA9IHsgLi4uZGVmYXVsdFByb3BzLCB0b29sczogdG9vbFdpdGhvdXRDb21wb25lbnQgfTtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgocHJvcHNXaXRoQ3VzdG9tVG9vbCk7XG4gICAgICBjb25zdCBtYXJrID0geyB0eXBlOiAnY3VzdG9tJywgeDogMSwgeTogMSB9O1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQobWFyayk7XG4gICAgICBleHBlY3QoY29tcG9uZW50KS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgY29ycmVjdCBjb21wb25lbnQgZm9yIHBvaW50IG1hcmsnLCAoKSA9PiB7XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKGRlZmF1bHRQcm9wcyk7XG4gICAgICBjb25zdCBtYXJrID0geyB0eXBlOiAncG9pbnQnLCB4OiAxLCB5OiAxIH07XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBncmFwaEluc3RhbmNlLmdldENvbXBvbmVudChtYXJrKTtcbiAgICAgIGV4cGVjdChjb21wb25lbnQpLnRvQmVUcnV0aHkoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGNvcnJlY3QgY29tcG9uZW50IGZvciBsaW5lIG1hcmsnLCAoKSA9PiB7XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKGRlZmF1bHRQcm9wcyk7XG4gICAgICBjb25zdCBtYXJrID0geyB0eXBlOiAnbGluZScsIGZyb206IHsgeDogMCwgeTogMCB9LCB0bzogeyB4OiAxLCB5OiAxIH0gfTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGdyYXBoSW5zdGFuY2UuZ2V0Q29tcG9uZW50KG1hcmspO1xuICAgICAgZXhwZWN0KGNvbXBvbmVudCkudG9CZVRydXRoeSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgY29ycmVjdCBjb21wb25lbnQgZm9yIGRpZmZlcmVudCBtYXJrIHR5cGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZ3JhcGhJbnN0YW5jZSA9IG5ldyBHcmFwaChkZWZhdWx0UHJvcHMpO1xuXG4gICAgICBjb25zdCBwb2ludE1hcmsgPSB7IHR5cGU6ICdwb2ludCcsIHg6IDEsIHk6IDEgfTtcbiAgICAgIGNvbnN0IGxpbmVNYXJrID0geyB0eXBlOiAnbGluZScsIGZyb206IHsgeDogMCwgeTogMCB9LCB0bzogeyB4OiAxLCB5OiAxIH0gfTtcbiAgICAgIGNvbnN0IGNpcmNsZU1hcmsgPSB7IHR5cGU6ICdjaXJjbGUnLCBjZW50ZXI6IHsgeDogMCwgeTogMCB9LCBlZGdlOiB7IHg6IDEsIHk6IDEgfSB9O1xuXG4gICAgICBjb25zdCBwb2ludENvbXBvbmVudCA9IGdyYXBoSW5zdGFuY2UuZ2V0Q29tcG9uZW50KHBvaW50TWFyayk7XG4gICAgICBjb25zdCBsaW5lQ29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQobGluZU1hcmspO1xuICAgICAgY29uc3QgY2lyY2xlQ29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQoY2lyY2xlTWFyayk7XG5cbiAgICAgIGV4cGVjdChwb2ludENvbXBvbmVudCkudG9CZVRydXRoeSgpO1xuICAgICAgZXhwZWN0KGxpbmVDb21wb25lbnQpLnRvQmVUcnV0aHkoKTtcbiAgICAgIGV4cGVjdChjaXJjbGVDb21wb25lbnQpLnRvQmVUcnV0aHkoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldENvbXBvbmVudCBtZXRob2QgLSB1bml0IHRlc3RzJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIG51bGwgaWYgbWFyayBpcyBudWxsJywgKCkgPT4ge1xuICAgICAgY29uc3QgZ3JhcGhJbnN0YW5jZSA9IG5ldyBHcmFwaChkZWZhdWx0UHJvcHMpO1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQobnVsbCk7XG4gICAgICBleHBlY3QoY29tcG9uZW50KS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgbnVsbCBpZiBtYXJrIGlzIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgoZGVmYXVsdFByb3BzKTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGdyYXBoSW5zdGFuY2UuZ2V0Q29tcG9uZW50KHVuZGVmaW5lZCk7XG4gICAgICBleHBlY3QoY29tcG9uZW50KS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgbnVsbCBpZiB0b29scyBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wc1dpdGhVbmRlZmluZWRUb29scyA9IHsgLi4uZGVmYXVsdFByb3BzLCB0b29sczogdW5kZWZpbmVkIH07XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKHByb3BzV2l0aFVuZGVmaW5lZFRvb2xzKTtcbiAgICAgIGNvbnN0IG1hcmsgPSB7IHR5cGU6ICdwb2ludCcsIHg6IDEsIHk6IDEgfTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGdyYXBoSW5zdGFuY2UuZ2V0Q29tcG9uZW50KG1hcmspO1xuICAgICAgZXhwZWN0KGNvbXBvbmVudCkudG9CZU51bGwoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIG51bGwgaWYgdG9vbHMgaXMgZW1wdHkgYXJyYXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wc1dpdGhFbXB0eVRvb2xzID0geyAuLi5kZWZhdWx0UHJvcHMsIHRvb2xzOiBbXSB9O1xuICAgICAgY29uc3QgZ3JhcGhJbnN0YW5jZSA9IG5ldyBHcmFwaChwcm9wc1dpdGhFbXB0eVRvb2xzKTtcbiAgICAgIGNvbnN0IG1hcmsgPSB7IHR5cGU6ICdwb2ludCcsIHg6IDEsIHk6IDEgfTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGdyYXBoSW5zdGFuY2UuZ2V0Q29tcG9uZW50KG1hcmspO1xuICAgICAgZXhwZWN0KGNvbXBvbmVudCkudG9CZU51bGwoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIG51bGwgaWYgbWFyayB0eXBlIGlzIG5vdCBmb3VuZCBpbiB0b29scycsICgpID0+IHtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgoZGVmYXVsdFByb3BzKTtcbiAgICAgIGNvbnN0IG1hcmsgPSB7IHR5cGU6ICdub25leGlzdGVudC10eXBlJywgeDogMSwgeTogMSB9O1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQobWFyayk7XG4gICAgICBleHBlY3QoY29tcG9uZW50KS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgY29tcG9uZW50IGlmIHRvb2wgaGFzIG5vIENvbXBvbmVudCBwcm9wZXJ0eScsICgpID0+IHtcbiAgICAgIGNvbnN0IHRvb2xXaXRob3V0Q29tcG9uZW50ID0gW3sgdHlwZTogJ2N1c3RvbScsIGxhYmVsOiAnQ3VzdG9tJyB9XTtcbiAgICAgIGNvbnN0IHByb3BzV2l0aEN1c3RvbVRvb2wgPSB7IC4uLmRlZmF1bHRQcm9wcywgdG9vbHM6IHRvb2xXaXRob3V0Q29tcG9uZW50IH07XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKHByb3BzV2l0aEN1c3RvbVRvb2wpO1xuICAgICAgY29uc3QgbWFyayA9IHsgdHlwZTogJ2N1c3RvbScsIHg6IDEsIHk6IDEgfTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGdyYXBoSW5zdGFuY2UuZ2V0Q29tcG9uZW50KG1hcmspO1xuICAgICAgZXhwZWN0KGNvbXBvbmVudCkudG9CZU51bGwoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGNvcnJlY3QgY29tcG9uZW50IGZvciBwb2ludCBtYXJrJywgKCkgPT4ge1xuICAgICAgY29uc3QgZ3JhcGhJbnN0YW5jZSA9IG5ldyBHcmFwaChkZWZhdWx0UHJvcHMpO1xuICAgICAgY29uc3QgbWFyayA9IHsgdHlwZTogJ3BvaW50JywgeDogMSwgeTogMSB9O1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gZ3JhcGhJbnN0YW5jZS5nZXRDb21wb25lbnQobWFyayk7XG4gICAgICBleHBlY3QoY29tcG9uZW50KS50b0JlVHJ1dGh5KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBjb3JyZWN0IGNvbXBvbmVudCBmb3IgbGluZSBtYXJrJywgKCkgPT4ge1xuICAgICAgY29uc3QgZ3JhcGhJbnN0YW5jZSA9IG5ldyBHcmFwaChkZWZhdWx0UHJvcHMpO1xuICAgICAgY29uc3QgbWFyayA9IHsgdHlwZTogJ2xpbmUnLCBmcm9tOiB7IHg6IDAsIHk6IDAgfSwgdG86IHsgeDogMSwgeTogMSB9IH07XG4gICAgICBjb25zdCBjb21wb25lbnQgPSBncmFwaEluc3RhbmNlLmdldENvbXBvbmVudChtYXJrKTtcbiAgICAgIGV4cGVjdChjb21wb25lbnQpLnRvQmVUcnV0aHkoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGNvcnJlY3QgY29tcG9uZW50IGZvciBkaWZmZXJlbnQgbWFyayB0eXBlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgoZGVmYXVsdFByb3BzKTtcblxuICAgICAgY29uc3QgcG9pbnRNYXJrID0geyB0eXBlOiAncG9pbnQnLCB4OiAxLCB5OiAxIH07XG4gICAgICBjb25zdCBsaW5lTWFyayA9IHsgdHlwZTogJ2xpbmUnLCBmcm9tOiB7IHg6IDAsIHk6IDAgfSwgdG86IHsgeDogMSwgeTogMSB9IH07XG4gICAgICBjb25zdCBjaXJjbGVNYXJrID0geyB0eXBlOiAnY2lyY2xlJywgY2VudGVyOiB7IHg6IDAsIHk6IDAgfSwgZWRnZTogeyB4OiAxLCB5OiAxIH0gfTtcblxuICAgICAgY29uc3QgcG9pbnRDb21wb25lbnQgPSBncmFwaEluc3RhbmNlLmdldENvbXBvbmVudChwb2ludE1hcmspO1xuICAgICAgY29uc3QgbGluZUNvbXBvbmVudCA9IGdyYXBoSW5zdGFuY2UuZ2V0Q29tcG9uZW50KGxpbmVNYXJrKTtcbiAgICAgIGNvbnN0IGNpcmNsZUNvbXBvbmVudCA9IGdyYXBoSW5zdGFuY2UuZ2V0Q29tcG9uZW50KGNpcmNsZU1hcmspO1xuXG4gICAgICBleHBlY3QocG9pbnRDb21wb25lbnQpLnRvQmVUcnV0aHkoKTtcbiAgICAgIGV4cGVjdChsaW5lQ29tcG9uZW50KS50b0JlVHJ1dGh5KCk7XG4gICAgICBleHBlY3QoY2lyY2xlQ29tcG9uZW50KS50b0JlVHJ1dGh5KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd1cGRhdGVNYXJrcyBtZXRob2QgLSB1bml0IHRlc3RzJywgKCkgPT4ge1xuICAgIGl0KCdkb2VzIG5vdCB1cGRhdGUgaWYgdXBkYXRlIHBhcmFtZXRlciBpcyBudWxsJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25DaGFuZ2VNYXJrcyA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IG1hcmtzID0gW3sgdHlwZTogJ3BvaW50JywgeDogMSwgeTogMSB9XTtcbiAgICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0UHJvcHMsIG9uQ2hhbmdlTWFya3MsIG1hcmtzIH07XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKHByb3BzKTtcblxuICAgICAgY29uc3QgZXhpc3RpbmcgPSBtYXJrc1swXTtcbiAgICAgIGdyYXBoSW5zdGFuY2UudXBkYXRlTWFya3MoZXhpc3RpbmcsIG51bGwpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2VNYXJrcykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCB1cGRhdGUgaWYgdXBkYXRlIHBhcmFtZXRlciBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvbkNoYW5nZU1hcmtzID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgbWFya3MgPSBbeyB0eXBlOiAncG9pbnQnLCB4OiAxLCB5OiAxIH1dO1xuICAgICAgY29uc3QgcHJvcHMgPSB7IC4uLmRlZmF1bHRQcm9wcywgb25DaGFuZ2VNYXJrcywgbWFya3MgfTtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgocHJvcHMpO1xuXG4gICAgICBjb25zdCBleGlzdGluZyA9IG1hcmtzWzBdO1xuICAgICAgZ3JhcGhJbnN0YW5jZS51cGRhdGVNYXJrcyhleGlzdGluZywgdW5kZWZpbmVkKTtcblxuICAgICAgZXhwZWN0KG9uQ2hhbmdlTWFya3MpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgndXBkYXRlcyBleGlzdGluZyBtYXJrIHdoZW4gZm91bmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvbkNoYW5nZU1hcmtzID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgbWFya3MgPSBbXG4gICAgICAgIHsgdHlwZTogJ3BvaW50JywgeDogMSwgeTogMSB9LFxuICAgICAgICB7IHR5cGU6ICdwb2ludCcsIHg6IDIsIHk6IDIgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdFByb3BzLCBvbkNoYW5nZU1hcmtzLCBtYXJrcyB9O1xuICAgICAgY29uc3QgZ3JhcGhJbnN0YW5jZSA9IG5ldyBHcmFwaChwcm9wcyk7XG5cbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gbWFya3NbMF07XG4gICAgICBjb25zdCB1cGRhdGVkID0geyB0eXBlOiAncG9pbnQnLCB4OiAxLCB5OiAzIH07XG5cbiAgICAgIGdyYXBoSW5zdGFuY2UudXBkYXRlTWFya3MoZXhpc3RpbmcsIHVwZGF0ZWQpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2VNYXJrcykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgY29uc3QgdXBkYXRlZE1hcmtzID0gb25DaGFuZ2VNYXJrcy5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KHVwZGF0ZWRNYXJrc1swXSkudG9FcXVhbCh1cGRhdGVkKTtcbiAgICAgIGV4cGVjdCh1cGRhdGVkTWFya3NbMV0pLnRvRXF1YWwobWFya3NbMV0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FkZHMgbWFyayBpZiBhZGRJZk1pc3NpbmcgaXMgdHJ1ZSBhbmQgbWFyayBub3QgZm91bmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvbkNoYW5nZU1hcmtzID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgbWFya3MgPSBbeyB0eXBlOiAncG9pbnQnLCB4OiAxLCB5OiAxIH1dO1xuICAgICAgY29uc3QgcHJvcHMgPSB7IC4uLmRlZmF1bHRQcm9wcywgb25DaGFuZ2VNYXJrcywgbWFya3MgfTtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgocHJvcHMpO1xuXG4gICAgICBjb25zdCBleGlzdGluZyA9IHsgdHlwZTogJ3BvaW50JywgeDogNSwgeTogNSB9O1xuICAgICAgY29uc3QgdXBkYXRlZCA9IHsgdHlwZTogJ3BvaW50JywgeDogMiwgeTogMiB9O1xuXG4gICAgICBncmFwaEluc3RhbmNlLnVwZGF0ZU1hcmtzKGV4aXN0aW5nLCB1cGRhdGVkLCB0cnVlKTtcblxuICAgICAgZXhwZWN0KG9uQ2hhbmdlTWFya3MpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRNYXJrcyA9IG9uQ2hhbmdlTWFya3MubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGV4cGVjdCh1cGRhdGVkTWFya3MubGVuZ3RoKS50b0JlKDIpO1xuICAgICAgZXhwZWN0KHVwZGF0ZWRNYXJrc1sxXSkudG9FcXVhbCh1cGRhdGVkKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCBhZGQgbWFyayBpZiBhZGRJZk1pc3NpbmcgaXMgZmFsc2UgYW5kIG1hcmsgbm90IGZvdW5kJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25DaGFuZ2VNYXJrcyA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IG1hcmtzID0gW3sgdHlwZTogJ3BvaW50JywgeDogMSwgeTogMSB9XTtcbiAgICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0UHJvcHMsIG9uQ2hhbmdlTWFya3MsIG1hcmtzIH07XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKHByb3BzKTtcblxuICAgICAgY29uc3QgZXhpc3RpbmcgPSB7IHR5cGU6ICdwb2ludCcsIHg6IDUsIHk6IDUgfTtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSB7IHR5cGU6ICdwb2ludCcsIHg6IDIsIHk6IDIgfTtcblxuICAgICAgZ3JhcGhJbnN0YW5jZS51cGRhdGVNYXJrcyhleGlzdGluZywgdXBkYXRlZCwgZmFsc2UpO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2VNYXJrcykubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCB1cGRhdGUgaWYgbWFyayBpcyBzdGlsbCBidWlsZGluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uQ2hhbmdlTWFya3MgPSBqZXN0LmZuKCk7XG4gICAgICBjb25zdCBtYXJrcyA9IFt7IHR5cGU6ICdwb2ludCcsIHg6IDEsIHk6IDEsIGJ1aWxkaW5nOiB0cnVlIH1dO1xuICAgICAgY29uc3QgcHJvcHMgPSB7IC4uLmRlZmF1bHRQcm9wcywgb25DaGFuZ2VNYXJrcywgbWFya3MgfTtcbiAgICAgIGNvbnN0IGdyYXBoSW5zdGFuY2UgPSBuZXcgR3JhcGgocHJvcHMpO1xuXG4gICAgICBjb25zdCBleGlzdGluZyA9IG1hcmtzWzBdO1xuICAgICAgY29uc3QgdXBkYXRlZCA9IHsgdHlwZTogJ3BvaW50JywgeDogMiwgeTogMiB9O1xuXG4gICAgICBncmFwaEluc3RhbmNlLnVwZGF0ZU1hcmtzKGV4aXN0aW5nLCB1cGRhdGVkKTtcblxuICAgICAgZXhwZWN0KG9uQ2hhbmdlTWFya3MpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdwcmVzZXJ2ZXMgbWFyayBvcmRlciB3aGVuIHVwZGF0aW5nJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25DaGFuZ2VNYXJrcyA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IG1hcmtzID0gW1xuICAgICAgICB7IHR5cGU6ICdwb2ludCcsIHg6IDEsIHk6IDEgfSxcbiAgICAgICAgeyB0eXBlOiAncG9pbnQnLCB4OiAyLCB5OiAyIH0sXG4gICAgICAgIHsgdHlwZTogJ3BvaW50JywgeDogMywgeTogMyB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0UHJvcHMsIG9uQ2hhbmdlTWFya3MsIG1hcmtzIH07XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKHByb3BzKTtcblxuICAgICAgY29uc3QgZXhpc3RpbmcgPSBtYXJrc1sxXTtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSB7IHR5cGU6ICdwb2ludCcsIHg6IDIsIHk6IDUgfTtcblxuICAgICAgZ3JhcGhJbnN0YW5jZS51cGRhdGVNYXJrcyhleGlzdGluZywgdXBkYXRlZCk7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWRNYXJrcyA9IG9uQ2hhbmdlTWFya3MubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGV4cGVjdCh1cGRhdGVkTWFya3NbMF0pLnRvRXF1YWwobWFya3NbMF0pO1xuICAgICAgZXhwZWN0KHVwZGF0ZWRNYXJrc1sxXSkudG9FcXVhbCh1cGRhdGVkKTtcbiAgICAgIGV4cGVjdCh1cGRhdGVkTWFya3NbMl0pLnRvRXF1YWwobWFya3NbMl0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgZW1wdHkgbWFya3MgYXJyYXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBvbkNoYW5nZU1hcmtzID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgcHJvcHMgPSB7IC4uLmRlZmF1bHRQcm9wcywgb25DaGFuZ2VNYXJrcywgbWFya3M6IFtdIH07XG4gICAgICBjb25zdCBncmFwaEluc3RhbmNlID0gbmV3IEdyYXBoKHByb3BzKTtcblxuICAgICAgY29uc3QgZXhpc3RpbmcgPSB7IHR5cGU6ICdwb2ludCcsIHg6IDEsIHk6IDEgfTtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSB7IHR5cGU6ICdwb2ludCcsIHg6IDIsIHk6IDIgfTtcblxuICAgICAgZ3JhcGhJbnN0YW5jZS51cGRhdGVNYXJrcyhleGlzdGluZywgdXBkYXRlZCwgdHJ1ZSk7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZU1hcmtzKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgICBjb25zdCB1cGRhdGVkTWFya3MgPSBvbkNoYW5nZU1hcmtzLm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBleHBlY3QodXBkYXRlZE1hcmtzLmxlbmd0aCkudG9CZSgxKTtcbiAgICAgIGV4cGVjdCh1cGRhdGVkTWFya3NbMF0pLnRvRXF1YWwodXBkYXRlZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd1cGRhdGVNYXJrcyBhbmQgZ2V0Q29tcG9uZW50IGludGVncmF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCd1cGRhdGVzIG1hcmtzIGFuZCByZW5kZXJzIHdpdGggY29ycmVjdCBjb21wb25lbnRzJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5pdGlhbE1hcmtzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ3BvaW50JyxcbiAgICAgICAgICB4OiAyLFxuICAgICAgICAgIHk6IDIsXG4gICAgICAgICAgbGFiZWw6ICdQb2ludCcsXG4gICAgICAgICAgc2hvd0xhYmVsOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgY29uc3QgeyByZXJlbmRlciwgY29udGFpbmVyIH0gPSByZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IG1hcmtzPXtpbml0aWFsTWFya3N9IC8+KTtcblxuICAgICAgY29uc3QgdXBkYXRlZE1hcmtzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2xpbmUnLFxuICAgICAgICAgIGZyb206IHsgeDogMCwgeTogMCB9LFxuICAgICAgICAgIHRvOiB7IHg6IDEsIHk6IDEgfSxcbiAgICAgICAgICBsYWJlbDogJ0xpbmUnLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgcmVyZW5kZXIoPEdyYXBoIHsuLi5kZWZhdWx0UHJvcHN9IG1hcmtzPXt1cGRhdGVkTWFya3N9IC8+KTtcblxuICAgICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcjbWFya3MnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVzIGFkZGluZyBuZXcgbWFya3Mgd2l0aCBkaWZmZXJlbnQgdHlwZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbml0aWFsTWFya3MgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICAgIHg6IDIsXG4gICAgICAgICAgeTogMixcbiAgICAgICAgICBsYWJlbDogJ1BvaW50JyxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCB7IHJlcmVuZGVyLCBjb250YWluZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gbWFya3M9e2luaXRpYWxNYXJrc30gLz4pO1xuXG4gICAgICBjb25zdCB1cGRhdGVkTWFya3MgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICAgIHg6IDIsXG4gICAgICAgICAgeTogMixcbiAgICAgICAgICBsYWJlbDogJ1BvaW50JyxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgICAgZnJvbTogeyB4OiAwLCB5OiAwIH0sXG4gICAgICAgICAgdG86IHsgeDogMSwgeTogMSB9LFxuICAgICAgICAgIGxhYmVsOiAnTGluZScsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICByZXJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gbWFya3M9e3VwZGF0ZWRNYXJrc30gLz4pO1xuXG4gICAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJyNtYXJrcycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgcmVtb3ZpbmcgbWFya3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbml0aWFsTWFya3MgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICAgIHg6IDIsXG4gICAgICAgICAgeTogMixcbiAgICAgICAgICBsYWJlbDogJ1BvaW50JyxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnbGluZScsXG4gICAgICAgICAgZnJvbTogeyB4OiAwLCB5OiAwIH0sXG4gICAgICAgICAgdG86IHsgeDogMSwgeTogMSB9LFxuICAgICAgICAgIGxhYmVsOiAnTGluZScsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCB7IHJlcmVuZGVyLCBjb250YWluZXIgfSA9IHJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gbWFya3M9e2luaXRpYWxNYXJrc30gLz4pO1xuXG4gICAgICBjb25zdCB1cGRhdGVkTWFya3MgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICAgIHg6IDIsXG4gICAgICAgICAgeTogMixcbiAgICAgICAgICBsYWJlbDogJ1BvaW50JyxcbiAgICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICByZXJlbmRlcig8R3JhcGggey4uLmRlZmF1bHRQcm9wc30gbWFya3M9e3VwZGF0ZWRNYXJrc30gLz4pO1xuXG4gICAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJyNtYXJrcycpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnbGFiZWwgZm9jdXMnLCAoKSA9PiB7XG4gIC8vIHRoZSBtYXJrcyBhcmUgb3duZWQgYnkgdGhlIGhvc3QgYW5kIGNvbWUgYmFjayBmcm9tIGEgbW9kZWwgc2F2ZSBhc3luY2hyb25vdXNseTsgYSBtYXJrIHRoYXRcbiAgLy8gc2hvd3MgdXAgaW4gZnJvbnQgb2YgdGhlIGxhYmVsbGVkIG9uZSBjaGFuZ2VzIGl0cyBrZXksIHNvIHRoZSB0b29sIHRoYXQgaGFuZGxlZCB0aGUgY2xpY2sgaXNcbiAgLy8gcmVtb3VudGVkIGFuZCB0aGUgZWRpdGluZ0xhYmVsIGl0IHNldCBpcyBnb25lIGJlZm9yZSB0aGUgbGFiZWwgaW5wdXQgZXZlciByZW5kZXJzXG4gIGNvbnN0IEhvc3QgPSAoeyBzaGlmdE1hcmtzIH0pID0+IHtcbiAgICBjb25zdCBbbWFya3MsIHNldE1hcmtzXSA9IFJlYWN0LnVzZVN0YXRlKFt7IHR5cGU6ICdwb2ludCcsIHg6IDIsIHk6IDIgfV0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxHcmFwaFxuICAgICAgICB0b29scz17dG9vbHNBcnJ9XG4gICAgICAgIG1hcmtzPXttYXJrc31cbiAgICAgICAgbGFiZWxNb2RlRW5hYmxlZD17dHJ1ZX1cbiAgICAgICAgb25DaGFuZ2VNYXJrcz17KG5leHQpID0+XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRNYXJrcyhzaGlmdE1hcmtzID8gW3sgdHlwZTogJ3BvaW50JywgeDogNSwgeTogNSB9LCAuLi5uZXh0XSA6IG5leHQpLCAzMClcbiAgICAgICAgfVxuICAgICAgICBkb21haW49e3sgbWluOiAwLCBtYXg6IDEwLCBzdGVwOiAxIH19XG4gICAgICAgIHJhbmdlPXt7IG1pbjogMCwgbWF4OiAxMCwgc3RlcDogMSB9fVxuICAgICAgICBzaXplPXt7IHdpZHRoOiA0MDAsIGhlaWdodDogNDAwIH19XG4gICAgICAgIHsuLi5ncmFwaFByb3BzKDAsIDEwLCAwLCAxMCl9XG4gICAgICAvPlxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgY2xpY2tQb2ludCA9IChjb250YWluZXIpID0+IHtcbiAgICBjb25zdCBjaXJjbGUgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignY2lyY2xlJyk7XG5cbiAgICBmaXJlRXZlbnQubW91c2VEb3duKGNpcmNsZSwgeyBidXR0b246IDAgfSk7XG4gICAgZmlyZUV2ZW50Lm1vdXNlVXAoY2lyY2xlLCB7IGJ1dHRvbjogMCB9KTtcbiAgICBmaXJlRXZlbnQuY2xpY2soY2lyY2xlLCB7IGJ1dHRvbjogMCB9KTtcbiAgICBhY3QoKCkgPT4gamVzdC5hZHZhbmNlVGltZXJzQnlUaW1lKDIwMCkpO1xuICB9O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4gamVzdC51c2VGYWtlVGltZXJzKCkpO1xuICBhZnRlckVhY2goKCkgPT4gamVzdC51c2VSZWFsVGltZXJzKCkpO1xuXG4gIGl0KCdmb2N1c2VzIHRoZSBsYWJlbCB0aGF0IHdhcyBqdXN0IGFkZGVkJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEhvc3QgLz4pO1xuXG4gICAgY2xpY2tQb2ludChjb250YWluZXIpO1xuXG4gICAgY29uc3QgaW5wdXQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignZm9yZWlnbk9iamVjdCBpbnB1dCcpO1xuICAgIGV4cGVjdChpbnB1dCkubm90LnRvQmUobnVsbCk7XG4gICAgZXhwZWN0KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpLnRvQmUoaW5wdXQpO1xuICB9KTtcblxuICAvLyBpbiB0aGUgRE5BIGVudiB0aGUgZm9jdXMgaXMgbW92ZWQgd2hpbGUgdGhlIG1vZGVsIHNhdmUgaXMgaGFuZGxlZCwgYWZ0ZXIgdGhlIGxhc3QgcmVuZGVyXG4gIGl0KCd0YWtlcyB0aGUgZm9jdXMgYmFjayB3aGVuIHNvbWV0aGluZyBzdGVhbHMgaXQgd2hpbGUgdGhlIG1vZGVsIGlzIHNhdmVkJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEhvc3QgLz4pO1xuXG4gICAgY2xpY2tQb2ludChjb250YWluZXIpO1xuICAgIGNvbnN0IGlucHV0ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2ZvcmVpZ25PYmplY3QgaW5wdXQnKTtcbiAgICBleHBlY3QoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkudG9CZShpbnB1dCk7XG5cbiAgICBjb25zdCBlbHNld2hlcmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxzZXdoZXJlKTtcbiAgICBlbHNld2hlcmUuZm9jdXMoKTtcbiAgICBleHBlY3QoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkudG9CZShlbHNld2hlcmUpO1xuXG4gICAgYWN0KCgpID0+IGplc3QuYWR2YW5jZVRpbWVyc0J5VGltZSgzMDApKTtcblxuICAgIGV4cGVjdChkb2N1bWVudC5hY3RpdmVFbGVtZW50KS50b0JlKGlucHV0KTtcbiAgICBlbHNld2hlcmUucmVtb3ZlKCk7XG4gIH0pO1xuXG4gIGl0KCdmb2N1c2VzIHRoZSBsYWJlbCBldmVuIGlmIHRoZSB0b29sIHdhcyByZW1vdW50ZWQgYmVmb3JlIGl0IHJlbmRlcmVkJywgKCkgPT4ge1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPEhvc3Qgc2hpZnRNYXJrcz17dHJ1ZX0gLz4pO1xuXG4gICAgY2xpY2tQb2ludChjb250YWluZXIpO1xuXG4gICAgY29uc3QgaW5wdXQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignZm9yZWlnbk9iamVjdCBpbnB1dCcpO1xuICAgIGV4cGVjdChpbnB1dCkubm90LnRvQmUobnVsbCk7XG4gICAgZXhwZWN0KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpLnRvQmUoaW5wdXQpO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FB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