single-scripture-rcl 3.4.2 → 3.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1362,7 +1362,7 @@ export default function ScriptureCard(_ref2) {
1362
1362
  hideMarkdownToggle: true,
1363
1363
  onMenuClose: onMenuClose,
1364
1364
  onMinimize: onMinimize ? function () {
1365
- return onMinimize(id);
1365
+ return onMinimize(id, scriptureTitle);
1366
1366
  } : null,
1367
1367
  editable: enableEdit || enableAlignment,
1368
1368
  saved: startSave || !haveUnsavedChanges,
@@ -1511,4 +1511,4 @@ ScriptureCard.propTypes = {
1511
1511
  /** use method for using local storage specific for user */
1512
1512
  useUserLocalStorage: PropTypes.func.isRequired
1513
1513
  };
1514
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsImxlbmd0aCIsIkpTT04iLCJzdHJpbmdpZnkiLCJhcmVWZXJzZXNTYW1lIiwidmVyc2VzRm9yUmVmMSIsInZlcnNlc0ZvclJlZjIiLCJhcmVTYW1lIiwiaSIsImwiLCJ2ZXJzZTEiLCJ2ZXJzZTIiLCJTY3JpcHR1cmVDYXJkIiwiYXBwUmVmIiwiYXV0aGVudGljYXRpb24iLCJib29rSW5kZXgiLCJjYXJkTnVtIiwiY2xhc3NlcyIsImRpc2FibGVXb3JkUG9wb3ZlciIsImdldExhbmd1YWdlIiwiZ2V0TGV4aWNvbkRhdGEiLCJncmVla1JlcG9VcmwiLCJoZWJyZXdSZXBvVXJsIiwiaHR0cENvbmZpZyIsImlkIiwiaXNOVCIsImxvZ2dlZEluVXNlciIsIm9uTWluaW1pemUiLCJvblJlc291cmNlRXJyb3IiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwicmVmZXJlbmNlIiwicmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwicmVzb3VyY2VMaW5rIiwic2VsZWN0ZWRRdW90ZSIsInNlcnZlciIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidHJhbnNsYXRlIiwidGl0bGUiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwidXBkYXRlTWVyZ2VTdGF0ZSIsInNldENhcmRzTG9hZGluZ1VwZGF0ZSIsInNldENhcmRzTG9hZGluZ01lcmdlIiwic2V0Q2FyZHNTYXZpbmciLCJib29rSWQiLCJwcm9qZWN0SWQiLCJ1c2VTdGF0ZSIsImNoZWNrRm9yRWRpdEJyYW5jaCIsImN1cnJlbnRSZWZlcmVuY2UiLCJlZGl0QnJhbmNoUmVhZHkiLCJoYXZlVW5zYXZlZENoYW5nZXMiLCJsYXN0U2VsZWN0ZWRRdW90ZSIsInJlYWR5Rm9yRmV0Y2giLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2VsZWN0aW9ucyIsIk1hcCIsInNoYSIsInNob3dBbGlnbm1lbnRQb3B1cCIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzQWxpZ25tZW50U3RhdHVzIiwidmVyc2VzRm9yUmVmIiwidmVyc2VPYmplY3RzTWFwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsInN0YXRlIiwic2V0U3RhdGVfIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwibm9DYWNoZSIsInNldFVybEVycm9yIiwiZXJyb3IiLCJ3aG9sZUJvb2siLCJpc05ld1Rlc3RhbWVudCIsInNjcmlwdHVyZUNvbmZpZyIsInNldFNjcmlwdHVyZSIsInNjcmlwdHVyZVNldHRpbmdzIiwic2NyaXB0dXJlVmVyc2lvbkhpc3QiLCJmZXRjaFJlc3BfIiwiZmV0Y2hSZXNwb25zZSIsInJlcG8iLCJyZWZlcmVuY2VfIiwidXNlRWZmZWN0IiwiX3NoYSIsImRhdGEiLCJ1cmwiLCJkb3dubG9hZF91cmwiLCJ2YWxpZEJyYW5jaCIsInBhcnRzIiwic3BsaXQiLCJmZXRjaEJyYW5jaCIsImNvbnNvbGUiLCJsb2ciLCJjYXJkUmVzb3VyY2VJZCIsInJlZl8iLCJjYW5Vc2VFZGl0QnJhbmNoIiwiaW5jbHVkZXMiLCJjYXJkSWQiLCJicmFuY2hEZXRlcm1pbmVkIiwidXNlckVkaXRCcmFuY2hOYW1lIiwiX3VzaW5nVXNlckJyYW5jaCIsIndvcmtpbmdSZXNvdXJjZUJyYW5jaCIsImFjdGlvbnMiLCJzdGFydEVkaXRCcmFuY2giLCJzdGFydEVkaXQiLCJmaW5pc2hFZGl0IiwiX3VzZUJyYW5jaE1lcmdlciIsInVzZXJCcmFuY2giLCJ0b2tlbmlkIiwidG9rZW4iLCJzaGExIiwibWVyZ2VUb01hc3RlciIsIm1lcmdlU3RhdHVzIiwibWVyZ2VGcm9tTWFzdGVyIiwidXBkYXRlU3RhdHVzIiwidXBkYXRlQnV0dG9uUHJvcHMiLCJpc1NhdmluZyIsIm9uVXBkYXRlIiwidGhlbiIsInJlbG9hZFJlc291cmNlIiwiY2FsbFVwZGF0ZVVzZXJCcmFuY2giLCJpc0Vycm9yRGlhbG9nT3BlbiIsIm9uQ2xvc2VFcnJvckRpYWxvZyIsImlzVXBkYXRlTG9hZGluZyIsImlzTG9hZGluZyIsImRpYWxvZ01lc3NhZ2UiLCJkaWFsb2dUaXRsZSIsImRpYWxvZ0xpbmsiLCJkaWFsb2dMaW5rVG9vbHRpcCIsIm9uTWVyZ2UiLCJpc01lcmdlTG9hZGluZyIsImNhbGxNZXJnZVVzZXJCcmFuY2giLCJwcmV2Q2FyZHNMb2FkaW5nIiwiZmlsdGVyIiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiX3JlZmVyZW5jZSIsImlzSGVicmV3IiwiZm9udEZhY3RvciIsInNjYWxlZEZvbnRTaXplIiwiaXRlbXMiLCJoZWFkZXJzIiwiZmlsdGVycyIsIml0ZW1JbmRleCIsIm1hcmtkb3duVmlldyIsInNldEZpbHRlcnMiLCJzZXRJdGVtSW5kZXgiLCJzZXRNYXJrZG93blZpZXciLCJyZWZTdHlsZSIsInVzZU1lbW8iLCJmb250RmFtaWx5IiwiTWF0aCIsInJvdW5kIiwiY29udGVudFN0eWxlIiwic2NyaXB0dXJlTGFiZWwiLCJkaXNhYmxlV29yZFBvcG92ZXJfIiwidXNpbmdPcmlnaW5hbEJpYmxlIiwidW5kZWZpbmVkIiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiZ2V0Q2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJPYmplY3QiLCJrZXlzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwiY29udGVudCIsImNvbmZpZyIsInRpbWVvdXQiLCJzZXJ2ZXJUaW1lT3V0IiwiYXV0aG9yIiwiYnJhbmNoIiwic2F2ZUVycm9yIiwiaXNTYXZlRXJyb3IiLCJpc0Vycm9yIiwib25TYXZlRWRpdCIsIl9zYXZlRWRpdCIsImluZm8iLCJzdWNjZXNzIiwicHJldkNhcmRzU2F2aW5nIiwidW5zYXZlZENhcmRJbmRpY2VzIiwiY2FyZEluZGV4IiwibWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtIiwiYmlibGVVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsIm5ld1VzZm0iLCJjaGFwdGVyQ2h1bmtzIiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJuZXdWZXJzZVVzZm0iLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwib2xkVmVyc2UiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVhZHlGb3JTYXZlIiwiY3JlYXRlRWRpdEJyYW5jaCIsIndhcm4iLCJnZXRSZXNwb25zZURhdGEiLCJtZXJnZUZhaWwiLCJwYXJzZUludCIsIm5ld1ZlcnNlVGV4dCIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlT2JqZWN0cyIsIm5ld0Jvb2tKc29uIiwidXBkYXRlVmVyc2UiLCJ0b1VTRk0iLCJmb3JjZWROZXdMaW5lcyIsIl92ZXJzZXNGb3JSZWYiLCJuZXdTZWxlY3Rpb25zIiwidXBkYXRlU2VsZWN0aW9ucyIsIl9tYXAiLCJvcmlnaW5hbEJvb2tJZCIsImJvb2tWZXJzZU9iamVjdCIsImNoYXB0ZXJzIiwibmV3U2VsZWN0ZWRRdW90ZSIsInF1b3RlIiwib3JpZ2luYWxWZXJzZXMiLCJzdWJzdGl0dXRlIiwic3RhcnRWZXJzZSIsImxhc3RWZXJzZSIsIl92ZXJzZSIsInZlcnNlcyIsInZlcnNlSXRlbSIsInZvIiwiY29uY2F0Iiwic2V0Iiwic3ViUmVmIiwicXVvdGVNYXRjaGVzIiwiYm9va09iamVjdCIsIm9jY3VycmVuY2UiLCJzaXplIiwiZm9yRWFjaCIsIndvcmRzIiwia2V5IiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwiYm9va3NOb3RTYW1lIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwiYWxpZ25lZCIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJfY3VycmVudFZlcnNlRGF0YSIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsImhhbmRsZUFsaWduQnV0dG9uQ2xpY2siLCJvblJlbmRlclRvb2xiYXIiLCJuZXdJdGVtcyIsImFsbFZlcnNlc0FsaWduZWQiLCJ2YWx1ZXMiLCJldmVyeSIsImFsaWduU3RhdHVzIiwiYWxpZ25JY29uIiwiYWxpZ25CdXR0b25UZXh0IiwicHVzaCIsImN1cnNvciIsInByb3BUeXBlcyIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJvYmplY3QiLCJudW1iZXIiLCJib29sIiwiZnVuYyIsInNoYXBlIiwib25lT2ZUeXBlIiwiYW55Iiwic2V0QXJlUmVzb3VyY2VzTG9hZGluZyIsInNldEFyZVJlc291cmNlc1NhdmluZyIsInNldENhcmRzTG9hZGluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7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QVJoQixHQUFoQixDQS9DYzs7QUF5RHhCO0FBQ0FuUixFQUFBQSxZQUFZLEVBQUVyRixTQUFTLENBQUMrVyxHQTFEQTs7QUEyRHhCO0FBQ0F6UixFQUFBQSxhQUFhLEVBQUV0RixTQUFTLENBQUN5VyxNQTVERDs7QUE2RHhCO0FBQ0FsUixFQUFBQSxNQUFNLEVBQUV2RixTQUFTLENBQUN1VyxNQUFWLENBQWlCQyxVQTlERDs7QUErRHhCO0FBQ0FRLEVBQUFBLHNCQUFzQixFQUFFaFgsU0FBUyxDQUFDNFcsSUFoRVY7O0FBaUV4QjtBQUNBSyxFQUFBQSxxQkFBcUIsRUFBRWpYLFNBQVMsQ0FBQzRXLElBbEVUOztBQW1FeEI7QUFDQU0sRUFBQUEsZUFBZSxFQUFFbFgsU0FBUyxDQUFDNFcsSUFwRUg7O0FBcUV4QjtBQUNBNVEsRUFBQUEsY0FBYyxFQUFFaEcsU0FBUyxDQUFDNFcsSUF0RUY7O0FBdUV4QjtBQUNBcFIsRUFBQUEsZUFBZSxFQUFFeEYsU0FBUyxDQUFDNFcsSUF4RUg7O0FBeUV4QjtBQUNBblIsRUFBQUEsb0JBQW9CLEVBQUV6RixTQUFTLENBQUM0VyxJQTFFUjs7QUEyRXhCO0FBQ0FqUixFQUFBQSxLQUFLLEVBQUUzRixTQUFTLENBQUN1VyxNQUFWLENBQWlCQyxVQTVFQTs7QUE2RXhCO0FBQ0E5USxFQUFBQSxTQUFTLEVBQUUxRixTQUFTLENBQUM0VyxJQTlFRzs7QUErRXhCO0FBQ0EvUSxFQUFBQSxnQkFBZ0IsRUFBRTdGLFNBQVMsQ0FBQzRXLElBaEZKOztBQWlGeEI7QUFDQWhSLEVBQUFBLG1CQUFtQixFQUFFNUYsU0FBUyxDQUFDNFcsSUFBVixDQUFlSjtBQWxGWixDQUExQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5pbXBvcnQge1xuICBDYXJkLFxuICBFcnJvckRpYWxvZyxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFVwZGF0ZUJyYW5jaEJ1dHRvbixcbiAgdXNlQnJhbmNoTWVyZ2VyLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZUNvbnRlbnRVcGRhdGVQcm9wcyxcbiAgdXNlTWFzdGVyTWVyZ2VQcm9wcyxcbiAgdXNlVXNlckJyYW5jaCxcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIH0gZnJvbSAndXctcXVvdGUtaGVscGVycydcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0ICogYXMgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxuICBmaXhPY2N1cnJlbmNlLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIGdldFJlc291cmNlTWVzc2FnZSxcbiAgZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzLFxuICBpc09yaWdpbmFsQmlibGUsXG59IGZyb20gJy4uLy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICcuLi8uLi91dGlscy9kZWxheSdcbmltcG9ydCB7IGFyZU1hcHNUaGVTYW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWFwcydcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnLi4vU2NyaXB0dXJlUGFuZS9zdHlsZWQnXG5pbXBvcnQge1xuICBOVF9PUklHX0xBTkcsXG4gIE9SSUdJTkFMX1NPVVJDRSxcbiAgT1RfT1JJR19MQU5HLFxufSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IFZlcnNlU2VsZWN0b3JQb3B1cCB9IGZyb20gJy4uL1ZlcnNlU2VsZWN0b3JQb3B1cCdcblxuY29uc3QgS0VZX0ZPTlRfU0laRV9CQVNFID0gJ3NjcmlwdHVyZVBhbmVGb250U2l6ZV8nXG5jb25zdCBsYWJlbCA9ICdWZXJzaW9uJ1xuY29uc3Qgc3R5bGUgPSB7IG1hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzUwMHB4JyB9XG5cbi8qKlxuICogY3JlYXRlIGEgc2hvcnQgY29tcGFyaXNvbiB2ZXJzZSByZWYgb2JqZWN0IHdpdGhvdXQgYWxsIHRoZSB2ZXJzZURhdGFcbiAqIEBwYXJhbSB2ZXJzZVJlZlxuICovXG5mdW5jdGlvbiBjb21wYXJlT2JqZWN0KHZlcnNlUmVmKSB7XG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlRGF0YSxcbiAgfSA9IHZlcnNlUmVmIHx8IHt9XG4gIGNvbnN0IHZlcnNlT2JqZWN0cyA9IHZlcnNlRGF0YT8udmVyc2VPYmplY3RzPy5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2ZXJzZURhdGEudmVyc2VPYmplY3RzKSA6IFwiXCJcbiAgcmV0dXJuIHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlT2JqZWN0cyxcbiAgfVxufVxuXG4vKipcbiAqIGNvbXBhcmUgdHdvIHZlcnNlIHJlZnMgdG8gc2VlIGlmIHRoZXkgYXJlIHN1YnN0YW50aWFsbHkgc2ltaWxhclxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjFcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYyXG4gKi9cbmZ1bmN0aW9uIGFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmMTogYW55W10sIHZlcnNlc0ZvclJlZjI6IGFueVtdKSB7XG4gIHZlcnNlc0ZvclJlZjEgPSB2ZXJzZXNGb3JSZWYxIHx8IFtdXG4gIHZlcnNlc0ZvclJlZjIgPSB2ZXJzZXNGb3JSZWYyIHx8IFtdXG4gIGxldCBhcmVTYW1lID0gZmFsc2VcblxuICBpZiAodmVyc2VzRm9yUmVmMS5sZW5ndGggPT09IHZlcnNlc0ZvclJlZjIubGVuZ3RoKSB7XG4gICAgYXJlU2FtZSA9IHRydWVcblxuICAgIGZvciAobGV0IGkgPSAwLCBsPSB2ZXJzZXNGb3JSZWYxLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgdmVyc2UxID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYxW2ldKVxuICAgICAgY29uc3QgdmVyc2UyID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYyW2ldKVxuICAgICAgYXJlU2FtZSA9IGlzRXF1YWwodmVyc2UxLCB2ZXJzZTIpXG5cbiAgICAgIGlmICghYXJlU2FtZSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmVTYW1lXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcmlwdHVyZUNhcmQoe1xuICBhcHBSZWYsXG4gIGF1dGhlbnRpY2F0aW9uLFxuICBib29rSW5kZXgsXG4gIGNhcmROdW0sXG4gIGNsYXNzZXMsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgZ2V0TGFuZ3VhZ2UsXG4gIGdldExleGljb25EYXRhLFxuICBncmVla1JlcG9VcmwsXG4gIGhlYnJld1JlcG9VcmwsXG4gIGh0dHBDb25maWcsXG4gIGlkLFxuICBpc05ULFxuICBsb2dnZWRJblVzZXIsXG4gIG9uTWluaW1pemUsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgcmVmZXJlbmNlLFxuICByZXNvdXJjZToge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgc2VsZWN0ZWRRdW90ZSxcbiAgc2VydmVyLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzLFxuICB0cmFuc2xhdGUsXG4gIHRpdGxlLFxuICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB1cGRhdGVNZXJnZVN0YXRlLFxuICBzZXRDYXJkc0xvYWRpbmdVcGRhdGUsXG4gIHNldENhcmRzTG9hZGluZ01lcmdlLFxuICBzZXRDYXJkc1NhdmluZ1xufSkge1xuICBjb25zdCBib29rSWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoOiAwLFxuICAgIGN1cnJlbnRSZWZlcmVuY2U6IG51bGwsXG4gICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlOiBudWxsLFxuICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgIHJlZjogYXBwUmVmLFxuICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICBzZWxlY3Rpb25zOiBuZXcgTWFwKCksXG4gICAgc2hhOiBudWxsLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UsXG4gICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICB1cmxFcnJvcjogbnVsbCxcbiAgICB1c2luZ1VzZXJCcmFuY2g6IGZhbHNlLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgIHZlcnNlc0ZvclJlZjogbnVsbCxcbiAgICB2ZXJzZU9iamVjdHNNYXA6IG5ldyBNYXAoKSxcbiAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsLFxuICB9KVxuICBjb25zdCB7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGN1cnJlbnRSZWZlcmVuY2UsXG4gICAgZWRpdEJyYW5jaFJlYWR5LFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlcyxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZSxcbiAgICByZWFkeUZvckZldGNoLFxuICAgIHJlZixcbiAgICBzYXZlQ2xpY2tlZCxcbiAgICBzYXZlQ29udGVudCxcbiAgICBzZWxlY3Rpb25zLFxuICAgIHNoYSxcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgdmVyc2VPYmplY3RzTWFwLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGh0dHBDb25maWcgPSB7XG4gICAgLi4uaHR0cENvbmZpZyxcbiAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICBub0NhY2hlOiB0cnVlLFxuICB9IC8vIGRpc2FibGUgaHR0cCBjYWNoaW5nXG5cbiAgY29uc3Qge1xuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzZXRTY3JpcHR1cmUsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XG4gICAgYXBwUmVmOiByZWYsXG4gICAgY2FyZE51bSxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgZ3JlZWtSZXBvVXJsLFxuICAgIGhlYnJld1JlcG9VcmwsXG4gICAgaHR0cENvbmZpZyxcbiAgICBpc05ULFxuICAgIGxhbmd1YWdlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIG93bmVyLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmZXJlbmNlOiBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZSxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICBzZXJ2ZXIsXG4gICAgdGl0bGUsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gIH0pXG5cbiAgY29uc3QgZmV0Y2hSZXNwXyA9IHNjcmlwdHVyZUNvbmZpZz8uZmV0Y2hSZXNwb25zZVxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHJlcG8gPSBgJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkfV8ke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZH1gXG4gIGNvbnN0IHJlZmVyZW5jZV8gPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZSB8fCBudWxsXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZ2V0IHRoZSBfc2hhIGZyb20gbGFzdCBzY3JpcHR1cmUgZG93bmxvYWRcbiAgICBjb25zdCBfc2hhID0gZmV0Y2hSZXNwXz8uZGF0YT8uc2hhIHx8IG51bGxcbiAgICBjb25zdCB1cmwgPSBmZXRjaFJlc3BfPy5kYXRhPy5kb3dubG9hZF91cmwgfHwgbnVsbFxuICAgIGxldCB2YWxpZEJyYW5jaCA9IHRydWVcblxuICAgIGlmIChfc2hhKSB7IC8vIFRSSUNLWTogc2luY2UgdGhpcyBmZXRjaCBtYXkgYmUgZGVsYXllZCAtIG1ha2Ugc3VyZSBpdCB3YXMgZm9yIHRoZSBjdXJyZW50IGJyYW5jaCBiZWZvcmUgdXNpbmcgdGhlIHNoYVxuICAgICAgY29uc3QgcGFydHMgPSAodXJsIHx8ICcnKS5zcGxpdCgnLycpXG4gICAgICBjb25zdCBmZXRjaEJyYW5jaCA9IHBhcnRzLmxlbmd0aCA+IDcgPyBwYXJ0c1s3XSA6ICcnXG4gICAgICB2YWxpZEJyYW5jaCA9IGZldGNoQnJhbmNoID09PSByZWZcbiAgICB9XG5cbiAgICBpZiAodmFsaWRCcmFuY2ggJiYgX3NoYSAhPT0gc2hhKSB7XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZDogZm9yICR7dXJsfSAke0pTT04uc3RyaW5naWZ5KHJlZmVyZW5jZV8pfSBuZXcgc2hhIGlzICR7X3NoYX1gKVxuICAgICAgc2V0U3RhdGUoeyBzaGE6IF9zaGEgfSlcbiAgICB9XG4gIH0sIFtmZXRjaFJlc3BfXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNhcmRSZXNvdXJjZUlkID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkIHx8IHJlc291cmNlSWRcbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcbiAgY29uc3QgY2FuVXNlRWRpdEJyYW5jaCA9ICEhKGxvZ2dlZEluVXNlciAmJiBhdXRoZW50aWNhdGlvbiAmJiAocmVzb3VyY2VJZCAhPT0gT1JJR0lOQUxfU09VUkNFKSAmJiAvLyBUUklDS1kgaWYgbm90IG9yaWdpbmFsIGxhbmd1YWdlIGFuZCB3ZSBoYXZlIGxvZ2luIGRhdGEsIHRoZW4gd2UgY2FuIHVzZSB0aGUgZWRpdCBicmFuY2hcbiAgICAoKHJlZl8gPT09ICdtYXN0ZXInKSB8fCAocmVmXy5pbmNsdWRlcyhsb2dnZWRJblVzZXIpKSkpIC8vIGFsc28gbWFrZSBzdXJlIG5vdCBhIHZlcnNpb24gdGFnXG5cbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBicmFuY2hEZXRlcm1pbmVkLFxuICAgICAgdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoLFxuICAgICAgd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc3RhcnRFZGl0OiBzdGFydEVkaXRCcmFuY2gsXG4gICAgICBmaW5pc2hFZGl0LFxuICAgIH0sXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcbiAgICBhcHBSZWYsXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0lkLFxuICAgIGNhcmRJZDogaWQsXG4gICAgY2FyZFJlc291cmNlSWQsXG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvd25lcixcbiAgICBvblJlc291cmNlRXJyb3IsXG4gICAgc2VydmVyLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIH0pXG5cbiAgY29uc3QgX3VzZUJyYW5jaE1lcmdlciA9IHVzZUJyYW5jaE1lcmdlcih7IHNlcnZlciwgb3duZXIsIHJlcG8sIHVzZXJCcmFuY2g6IHVzZXJFZGl0QnJhbmNoTmFtZSwgdG9rZW5pZDogYXV0aGVudGljYXRpb24/LnRva2VuPy5zaGExIH0pO1xuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIG1lcmdlU3RhdHVzOiBtZXJnZVRvTWFzdGVyLFxuICAgICAgdXBkYXRlU3RhdHVzOiBtZXJnZUZyb21NYXN0ZXIsXG4gICAgfSxcbiAgfSA9IF91c2VCcmFuY2hNZXJnZXI7XG5cbiAgY29uc3QgdXBkYXRlQnV0dG9uUHJvcHMgPSB1c2VDb250ZW50VXBkYXRlUHJvcHMoe1xuICAgIGlzU2F2aW5nOiBzdGFydFNhdmUsXG4gICAgdXNlQnJhbmNoTWVyZ2VyOiBfdXNlQnJhbmNoTWVyZ2VyLFxuICAgIG9uVXBkYXRlOiAoKSA9PiB7XG4gICAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4gc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZShzaGEpKVxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHtcbiAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICBpc0Vycm9yRGlhbG9nT3BlbixcbiAgICBvbkNsb3NlRXJyb3JEaWFsb2csXG4gICAgaXNMb2FkaW5nOiBpc1VwZGF0ZUxvYWRpbmcsXG4gICAgZGlhbG9nTWVzc2FnZSxcbiAgICBkaWFsb2dUaXRsZSxcbiAgICBkaWFsb2dMaW5rLFxuICAgIGRpYWxvZ0xpbmtUb29sdGlwLFxuICB9ID0gdXBkYXRlQnV0dG9uUHJvcHNcblxuICBjb25zdCBvbk1lcmdlID0gKCkgPT4ge1xuICAgIGZpbmlzaEVkaXQoKVxuICAgIHNldFN0YXRlKHsgcmVmOiBhcHBSZWYgfSlcbiAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4ge1xuICAgICAgc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZSgpXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHsgaXNMb2FkaW5nOiBpc01lcmdlTG9hZGluZywgY2FsbE1lcmdlVXNlckJyYW5jaCB9ID0gdXNlTWFzdGVyTWVyZ2VQcm9wcyh7XG4gICAgaXNTYXZpbmc6IHN0YXJ0U2F2ZSxcbiAgICB1c2VCcmFuY2hNZXJnZXI6IF91c2VCcmFuY2hNZXJnZXIsXG4gICAgb25NZXJnZSxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXJkUmVzb3VyY2VJZCkge1xuICAgICAgdXBkYXRlTWVyZ2VTdGF0ZSAmJiB1cGRhdGVNZXJnZVN0YXRlKFxuICAgICAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICAgICAgbWVyZ2VGcm9tTWFzdGVyLFxuICAgICAgICBtZXJnZVRvTWFzdGVyLFxuICAgICAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICAgICAgY2FsbE1lcmdlVXNlckJyYW5jaCxcbiAgICAgIClcbiAgICB9XG4gIH0sW2NhcmRSZXNvdXJjZUlkLCBtZXJnZUZyb21NYXN0ZXIsIG1lcmdlVG9NYXN0ZXJdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVXBkYXRlTG9hZGluZykge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBbLi4ucHJldkNhcmRzTG9hZGluZywgY2FyZFJlc291cmNlSWRdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IHByZXZDYXJkc0xvYWRpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICB9XG4gIH0sIFtpc1VwZGF0ZUxvYWRpbmddKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzTWVyZ2VMb2FkaW5nKSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gWy4uLnByZXZDYXJkc0xvYWRpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U/LihwcmV2Q2FyZHNMb2FkaW5nID0+IHByZXZDYXJkc0xvYWRpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICB9XG4gIH0sIFtpc01lcmdlTG9hZGluZ10pXG5cbiAgY29uc3Qgd29ya2luZ1JlZiA9IGNhblVzZUVkaXRCcmFuY2ggPyB3b3JraW5nUmVzb3VyY2VCcmFuY2ggOiBhcHBSZWZcbiAgbGV0IHNjcmlwdHVyZVRpdGxlXG5cbiAgaWYgKCFjYW5Vc2VFZGl0QnJhbmNoICYmICFyZWFkeUZvckZldGNoKSB7IC8vIGlmIGJpYmxlIG5vdCBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIG1ha2Ugc3VyZSBpdCdzIHJlYWR5XG4gICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlIH0pXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIGJvb2sgY2hhbmdlZGAsIHsgYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZCB9KVxuXG4gICAgaWYgKGNhblVzZUVkaXRCcmFuY2gpIHsgLy8gaWYgYmlibGUgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCByZWZyZXNoIGl0XG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLCBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEgfSlcbiAgICB9XG4gIH0sIFtib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFcXVhbChyZWZlcmVuY2UsIGN1cnJlbnRSZWZlcmVuY2UpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCByZWZlcmVuY2UgY2hhbmdlZGAsIHJlZmVyZW5jZSlcbiAgICAgIHNldFN0YXRlKHsgY3VycmVudFJlZmVyZW5jZTogcmVmZXJlbmNlIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3YWl0aW5nIGZvciBicmFuY2ggZmV0Y2ggdG8gY29tcGxldGVcbiAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBicmFuY2hEZXRlcm1pbmVkIGlzICR7YnJhbmNoRGV0ZXJtaW5lZH0gYW5kIHdvcmtpbmdSZWYgaXMgJHt3b3JraW5nUmVmfSBhbmQgcmVhZHlGb3JGZXRjaCBpcyAke3JlYWR5Rm9yRmV0Y2h9YClcblxuICAgIGlmICghcmVhZHlGb3JGZXRjaCAmJiBicmFuY2hEZXRlcm1pbmVkICkge1xuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlLCByZWY6IHdvcmtpbmdSZWYgfSlcbiAgICB9XG4gIH0sIFticmFuY2hEZXRlcm1pbmVkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBpZiAoX3VzaW5nVXNlckJyYW5jaCAhPT0gdXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCB9KVxuICAgIH1cbiAgfSwgW191c2luZ1VzZXJCcmFuY2gsIHVzaW5nVXNlckJyYW5jaF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGRpc3BsYXkgc3RhdHVzIGlmIGVycm9yXG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXG5cbiAgICBpZiAoZXJyb3IpIHsgLy8gaWYgZXJyb3Igd2FzIGZvdW5kIGRvIGNhbGxiYWNrXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcbiAgICAgIGNvbnN0IHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVDb25maWcpXG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVF8pXG4gICAgICBjb25zdCBpc0FjY2Vzc0Vycm9yID0gcmVzb3VyY2VTdGF0dXNbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl1cbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobWVzc2FnZSwgaXNBY2Nlc3NFcnJvciwgcmVzb3VyY2VTdGF0dXMpXG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXV0pXG5cbiAgaWYgKHNjcmlwdHVyZUNvbmZpZy50aXRsZSAmJiBzY3JpcHR1cmVDb25maWcudmVyc2lvbikge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYCR7c2NyaXB0dXJlQ29uZmlnLnRpdGxlfSB2JHtzY3JpcHR1cmVDb25maWcudmVyc2lvbn1gXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QudXBkYXRlVGl0bGUoc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluaywgc2NyaXB0dXJlVGl0bGUpXG4gIH0gZWxzZSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgVGl0bGUgbWlzc2luZyBmcm9tIHByb2plY3QgbWFuaWZlc3RgXG4gIH1cblxuICAvKiogRHluYW1pY2FsbHkgY3JlYXRlcyB0aGUgc2NyaXB0dXJlIHNlbGVjdGlvbiBkcm9wZG93biB0byBiZSBpbnNlcnRlZCBpbnRvIGNhcmQgc2V0dGluZ3MgKi9cbiAgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlU2VsZWN0b3IoKSB7XG4gICAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnID0gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgICAgIGxhYmVsLFxuICAgICAgcmVzb3VyY2VMaW5rOiBzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLFxuICAgICAgc2V0U2NyaXB0dXJlLFxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gICAgfSlcblxuICAgIHJldHVybiA8U2NyaXB0dXJlU2VsZWN0b3Igey4uLnNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZ30gc3R5bGU9e3N0eWxlfSBlcnJvck1lc3NhZ2U9e3VybEVycm9yfSAvPlxuICB9XG5cbiAgZnVuY3Rpb24gb25NZW51Q2xvc2UoKSB7XG4gICAgLy8gY29uc29sZS5sb2coYG9uTWVudUNsb3NlKClgKVxuICAgIHNldFN0YXRlKHsgdXJsRXJyb3I6IG51bGwgfSlcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbGFuZ3VhZ2VJZF8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UoeyBsYW5ndWFnZUlkOiBsYW5ndWFnZUlkXyB9KVxuICBjb25zdCBkaXJlY3Rpb24gPSAobGFuZ3VhZ2U/LmRpcmVjdGlvbikgfHwgJ2x0cidcbiAgY29uc3QgX3JlZmVyZW5jZSA9IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlXG5cbiAgY29uc3QgaXNIZWJyZXcgPSAobGFuZ3VhZ2VJZF8gPT09ICdoYm8nKVxuICBjb25zdCBmb250RmFjdG9yID0gaXNIZWJyZXcgPyAxLjQgOiAxIC8vIHdlIGF1dG9tYXRpY2FsbHkgc2NhbGUgdXAgZm9udCBzaXplIGZvciBIZWJyZXdcbiAgY29uc3Qgc2NhbGVkRm9udFNpemUgPSBmb250U2l6ZSAqIGZvbnRGYWN0b3JcblxuICBjb25zdCBpdGVtcyA9IG51bGxcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBoZWFkZXJzLCBmaWx0ZXJzLCBpdGVtSW5kZXgsIG1hcmtkb3duVmlldyxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHNldEZpbHRlcnMsIHNldEl0ZW1JbmRleCwgc2V0TWFya2Rvd25WaWV3LFxuICAgIH0sXG4gIH0gPSB1c2VDYXJkU3RhdGUoeyBpdGVtcyB9KVxuXG4gIGNvbnN0IHJlZlN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtNYXRoLnJvdW5kKHNjYWxlZEZvbnRTaXplICogMC45KX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3QgY29udGVudFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtzY2FsZWRGb250U2l6ZX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3Qgc2NyaXB0dXJlTGFiZWwgPSA8VGl0bGU+e3NjcmlwdHVyZVRpdGxlfTwvVGl0bGU+XG4gIGxldCBkaXNhYmxlV29yZFBvcG92ZXJfID0gZGlzYWJsZVdvcmRQb3BvdmVyXG4gIGNvbnN0IHVzaW5nT3JpZ2luYWxCaWJsZSA9IGlzT3JpZ2luYWxCaWJsZShzY3JpcHR1cmVDb25maWdbJ3Jlc291cmNlJ10/LnByb2plY3RJZClcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgY29uc3QgZW5hYmxlRWRpdCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3QgZW5hYmxlQWxpZ25tZW50ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcbiAgY29uc3Qgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSW5kZXgsXG4gICAgY3VycmVudFZlcnNlUmVmOiBfcmVmZXJlbmNlLFxuICAgIGVuYWJsZUVkaXQsXG4gICAgZW5hYmxlQWxpZ25tZW50LFxuICAgIGh0dHBDb25maWcsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW5hbFJlcG9VcmwsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBzZXRTYXZlZENoYW5nZXM6IF9zZXRTYXZlZENoYW5nZXMsXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxuICAgIHRhcmdldExhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICB0aXRsZTogc2NyaXB0dXJlVGl0bGUsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gIH1cblxuICAvKipcbiAgICogdGhpcyBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIHNjcmlwdHVyZSBwYW5lIGhhcyBhIGNoYW5nZSBpbiBzYXZlIHN0YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZXRDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlciBjbGlja3Mgc2F2ZSBidXR0b25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2xlYXJDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgc2F2ZSBoYXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxuICAgKi9cbiAgZnVuY3Rpb24gX3NldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsIHNhdmVkLCB7IGdldENoYW5nZXMgPSBudWxsLCBjbGVhckNoYW5nZXMgPSBudWxsLCBzdGF0ZSA9IG51bGwgfSkge1xuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgZGVsZXRlIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF0gPSB7IGdldENoYW5nZXMsIGNsZWFyQ2hhbmdlcywgc3RhdGUgfSAvLyB1cGRhdGUgd2l0aCBsYXRlc3RcbiAgICB9XG5cbiAgICBjb25zdCBfaGF2ZVVuc2F2ZWRDaGFuZ2VzID0gISFPYmplY3Qua2V5cyhfdW5zYXZlZENoYW5nZXNMaXN0KS5sZW5ndGhcblxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhyZXNvdXJjZUlkLCAhX2hhdmVVbnNhdmVkQ2hhbmdlcylcbiAgICAgIHNldFN0YXRlKHsgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBfaGF2ZVVuc2F2ZWRDaGFuZ2VzIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF91bnNhdmVkQ2hhbmdlc0xpc3QsIHVuc2F2ZWRDaGFuZ2VzTGlzdCkpIHtcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNlYXJjaCBjaGFwdGVyIG9yIHZlcnNlIGNodW5rIHRvIGxpbmUgdGhhdCBzdGFydHMgd2l0aCBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNodW5rc1xuICAgKi9cbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xuICAgIGNvbnN0IHJlZl8gPSBmaW5kSXRlbSArICcnXG4gICAgY29uc3QgcmVmTGVuID0gcmVmXy5sZW5ndGhcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwKSB7XG4gICAgICAgIGlmIChjaHVuay5zdWJzdHJpbmcoMCwgcmVmTGVuKSA9PT0gcmVmXykge1xuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxuXG4gICAgICAgICAgaWYgKChuZXh0Q2hhciA+ICc5JykgfHwgKG5leHRDaGFyIDwgJzAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgYm9va0NhcHMgPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZT8ucHJvamVjdElkID8gc2NyaXB0dXJlQ29uZmlnLnJlZmVyZW5jZS5wcm9qZWN0SWQudG9VcHBlckNhc2UoKSA6ICcnXG4gICAgcmV0dXJuIGAke2Jvb2tJbmRleH0tJHtib29rQ2Fwc30udXNmbWBcbiAgfVxuXG4gIGNvbnN0IGZpbGVwYXRoID0gZ2V0Qm9va05hbWUoKVxuXG4gIC8vIGtlZXAgdHJhY2sgb2YgdmVyc2UgZWRpdCBzdGF0ZVxuICBjb25zdCB7XG4gICAgZXJyb3I6IHNhdmVFcnJvcixcbiAgICBpc0Vycm9yOiBpc1NhdmVFcnJvcixcbiAgICBvblNhdmVFZGl0LFxuICB9ID0gdXNlRWRpdCh7XG4gICAgc2hhLFxuICAgIG93bmVyLFxuICAgIGNvbnRlbnQ6IHNhdmVDb250ZW50LFxuICAgIGNvbmZpZzoge1xuICAgICAgY2FjaGU6IHsgbWF4QWdlOiAwIH0sXG4gICAgICAuLi5hdXRoZW50aWNhdGlvbj8uY29uZmlnLFxuICAgICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRpbWVvdXQ6IGh0dHBDb25maWc/LnNlcnZlclRpbWVPdXQgfHwgaHR0cENvbmZpZz8udGltZW91dCB8fCAxMDAwMCxcbiAgICAgIHNlcnZlcixcbiAgICB9LFxuICAgIGF1dGhvcjogbG9nZ2VkSW5Vc2VyLFxuICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgYnJhbmNoOiB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgZmlsZXBhdGgsXG4gICAgcmVwbyxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHdlIGdldCBhIHNhdmUgc2F2ZUVycm9yXG4gICAgaWYgKHNhdmVFcnJvciAmJiBpc1NhdmVFcnJvcikge1xuICAgICAgY29uc29sZS5sb2coYHNhdmUgZXJyb3JgLCBzYXZlRXJyb3IpXG4gICAgICAvLyBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3Igc2F2aW5nICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH0gJHtzYXZlRXJyb3J9YCwgdHJ1ZSlcbiAgICB9XG4gIH0sIFtzYXZlRXJyb3IsIGlzU2F2ZUVycm9yXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHN0YXJ0U2F2ZSBnb2VzIHRydWUsIHNhdmUgZWRpdHMgdG8gdXNlciBicmFuY2ggYW5kIHRoZW4gY2xlYXIgc3RhcnRTYXZlXG4gICAgY29uc3QgX3NhdmVFZGl0ID0gYXN5bmMgKCkgPT4geyAvLyBiZWdpbiB1cGxvYWRpbmcgbmV3IFVTRk1cbiAgICAgIGNvbnNvbGUuaW5mbyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBVc2luZyBzaGE6ICR7c2hhfWApXG4gICAgICBhd2FpdCBvblNhdmVFZGl0KHVzZXJFZGl0QnJhbmNoTmFtZSkudGhlbigoc3VjY2VzcykgPT4geyAvLyBwdXNoIGNoYW5nZWQgdG8gc2VydmVyXG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzY3JpcHR1cmUgZWRpdHMgc3VjY2Vzc2ApXG4gICAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY2xlYXJDaGFuZ2VzIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZEluZGV4XVxuICAgICAgICAgICAgICBjbGVhckNoYW5nZXMgJiYgY2xlYXJDaGFuZ2VzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmluZm8oJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gUmVsb2FkaW5nIHJlc291cmNlJylcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgIHJlZjogdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgICAgIHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2Uoc2hhKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkJylcbiAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICAgICAgc2V0U3RhdGUoeyBzdGFydFNhdmU6IGZhbHNlIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0U2F2ZSkge1xuICAgICAgaWYgKCFlZGl0QnJhbmNoUmVhZHkpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIG5vdCB5ZXQgY3JlYXRlZGApXG4gICAgICB9IGVsc2UgaWYgKCFzaGEpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHNhdmUgc2hhIG5vdCB5ZXQgcmVhZHlgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNhbGxpbmcgX3NhdmVFZGl0KClgKVxuICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gWy4uLnByZXZDYXJkc1NhdmluZywgY2FyZFJlc291cmNlSWRdKVxuICAgICAgICBfc2F2ZUVkaXQoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3N0YXJ0U2F2ZSwgZWRpdEJyYW5jaFJlYWR5LCBzaGFdKVxuXG4gIC8qKlxuICAgKiBjb252ZXJ0IHVwZGF0ZWRWZXJzZU9iamVjdHMgdG8gVVNGTSBhbmQgbWVyZ2UgaW50byB0aGUgYmlibGVVc2ZtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZVVzZm0gLSBVU0ZNIG9mIGJpYmxlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWYgLSByZWZlcmVuY2Ugb2YgdmVyc2UgdG8gbWVyZ2UgaW5cbiAgICogQHBhcmFtIHtvYmplY3RbXX0gdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG5ldyB2ZXJzZSBpbiB2ZXJzZU9iamVjdCBmb3JtYXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhcmROdW1cbiAgICovXG4gIGZ1bmN0aW9uIG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm0sIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bTogbnVtYmVyKSB7XG4gICAgbGV0IG5ld1VzZm1cbiAgICBjb25zdCBjaGFwdGVyQ2h1bmtzID0gYmlibGVVc2ZtPy5zcGxpdCgnXFxcXGMgJylcbiAgICBjb25zdCBjaGFwdGVySW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LmNoYXB0ZXIsIGNoYXB0ZXJDaHVua3MpXG5cbiAgICBpZiAoY2hhcHRlckluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyID0gY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdXG4gICAgICBjb25zdCB2ZXJzZUNodW5rcyA9IGN1cnJlbnRDaGFwdGVyLnNwbGl0KCdcXFxcdiAnKVxuICAgICAgY29uc3QgdmVyc2VJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8udmVyc2UsIHZlcnNlQ2h1bmtzKVxuXG4gICAgICBpZiAodmVyc2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTSh1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gbmV3IFVTRk0gZm9yIGNhcmQ6fSAtICR7bmV3VmVyc2VVc2ZtLnN1YnN0cmluZygwLCAxMDApfWApXG4gICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbdmVyc2VJbmRleF1cbiAgICAgICAgY29uc3QgdmVyc2VOdW1MZW4gPSAocmVmPy52ZXJzZSArICcnKS5sZW5ndGhcbiAgICAgICAgdmVyc2VDaHVua3NbdmVyc2VJbmRleF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgdmVyc2VOdW1MZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICBjb25zdCBuZXdDaGFwdGVyID0gdmVyc2VDaHVua3Muam9pbignXFxcXHYgJylcbiAgICAgICAgY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdID0gbmV3Q2hhcHRlclxuICAgICAgICBuZXdVc2ZtID0gY2hhcHRlckNodW5rcy5qb2luKCdcXFxcYyAnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3VXNmbVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZm9yIGVhY2ggdW5zYXZlZCBjaGFuZ2UsIGNhbGwgaW50byBzY3JpcHR1cmVQYW5lIHRvIGdldCBsYXRlc3QgY2hhbmdlcyBmb3IgdmVyc2UgdG8gc2F2ZVxuICAgIGFzeW5jIGZ1bmN0aW9uIGdldFJlYWR5Rm9yU2F2ZSgpIHtcbiAgICAgIGlmIChzYXZlQ2xpY2tlZCkge1xuICAgICAgICBsZXQgY3JlYXRlRWRpdEJyYW5jaCA9ICFfdXNpbmdVc2VyQnJhbmNoXG5cbiAgICAgICAgaWYgKCFjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIGFscmVhZHkgdXNpbmcgdGhlIHVzZXIgYnJhbmNoXG4gICAgICAgICAgaWYgKHdvcmtpbmdSZXNvdXJjZUJyYW5jaCAhPT0gdXNlckVkaXRCcmFuY2hOYW1lKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHN0YXRlIGNvbmZsaWN0IC0gc2hvdWxkIGJlIGluIHVzZXIgYnJhbmNoICR7dXNlckVkaXRCcmFuY2hOYW1lfSwgYnV0IGFjdHVhbGx5IHVzaW5nICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgICBjcmVhdGVFZGl0QnJhbmNoID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gYWxyZWFkeSB1c2luZyBlZGl0IGJyYW5jaDogJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIHNldFN0YXRlKHsgZWRpdEJyYW5jaFJlYWR5OiB0cnVlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgbm90IHlldCB1c2luZyB0aGUgdXNlciBicmFuY2gsIGNyZWF0ZSBpdFxuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjcmVhdGluZyBlZGl0IGJyYW5jaGApXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgICAgICAgc2hhOiBudWxsLFxuICAgICAgICAgIH0pIC8vIHdlIHdpbGwgbmVlZCBhIG5ldyBzaGEgZm9yIGJvb2svYnJhbmNoXG5cbiAgICAgICAgICBjb25zdCBicmFuY2ggPSBhd2FpdCBzdGFydEVkaXRCcmFuY2goKVxuXG4gICAgICAgICAgaWYgKGJyYW5jaCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIGNyZWF0ZWRgKVxuICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IHRydWUsXG4gICAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgICAgICAgIHJlZjogYnJhbmNoLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGZhaWxlZCB0byBjcmVhdGUgZWRpdCBicmFuY2hgKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBnZXR0aW5nIHZlcnNlIGNoYW5nZXNgKVxuICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgbGV0IGJpYmxlVXNmbSA9IGNvcmUuZ2V0UmVzcG9uc2VEYXRhKHNjcmlwdHVyZUNvbmZpZz8uZmV0Y2hSZXNwb25zZSlcbiAgICAgICAgICBsZXQgbWVyZ2VGYWlsID0gZmFsc2VcbiAgICAgICAgICBsZXQgY2FyZE51bSA9IDBcblxuICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmIGJpYmxlVXNmbSkgeyAvLyBqdXN0IHJlcGxhY2UgdmVyc2VcbiAgICAgICAgICAgICAgICBuZXdVc2ZtID0gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKG5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICBiaWJsZVVzZm0gPSBuZXdVc2ZtXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbWVyZ2VGYWlsID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobWVyZ2VGYWlsKSB7IC8vIGlmIHdlIGZhaWxlZCB0byBtZXJnZSwgZmFsbGJhY2sgdG8gYnJ1dGUgZm9yY2UgdmVyc2Ugb2JqZWN0cyB0byBVU0ZNXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gdmVyc2Ugbm90IGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gaW5zZXJ0aW5nIHZlcnNlIG9iamVjdGApXG4gICAgICAgICAgICBsZXQgbmV3Qm9va0pzb25cblxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIW5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICAgIGxldCB0YXJnZXRWZXJzZU9iamVjdHNfID0gbnVsbFxuXG4gICAgICAgICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWZXJzZVRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSh1cGRhdGVkVmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV3Qm9va0pzb24gPSB0YXJnZXRWZXJzZU9iamVjdHNfICYmIHNjcmlwdHVyZUNvbmZpZz8udXBkYXRlVmVyc2UocmVmLmNoYXB0ZXIsIHJlZi52ZXJzZSwge3ZlcnNlT2JqZWN0czogdGFyZ2V0VmVyc2VPYmplY3RzX30pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJpYmxlVXNmbSA9IHVzZm1qcy50b1VTRk0obmV3Qm9va0pzb24sIHtmb3JjZWROZXdMaW5lczogdHJ1ZX0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIG5ldyBVU0ZNOiAke2JpYmxlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKVxuICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgICAgc2V0U3RhdGUoe3NhdmVDb250ZW50OiBiaWJsZVVzZm0sIHN0YXJ0U2F2ZTogdHJ1ZSwgc2F2ZUNsaWNrZWQ6IGZhbHNlfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGdldFJlYWR5Rm9yU2F2ZSgpXG4gIH0sIFtzYXZlQ2xpY2tlZF0pXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCB7IGNoYXB0ZXIgfSA9IF9yZWZlcmVuY2UgfHwge31cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuICAgIGxldCBuZXdTZWxlY3Rpb25zID0gbmV3IE1hcCgpXG4gICAgbGV0IHVwZGF0ZVNlbGVjdGlvbnMgPSBmYWxzZVxuICAgIGNvbnN0IF9tYXAgPSBuZXdTZWxlY3Rpb25zXG4gICAgY29uc3Qgb3JpZ2luYWxCb29rSWQgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5jaGFwdGVyc1xuICAgIGxldCBuZXdTZWxlY3RlZFF1b3RlID0gbnVsbFxuXG4gICAgLy8gaWYgd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHNlbGVjdGlvbnNcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoICYmXG4gICAgICBib29rVmVyc2VPYmplY3QgJiZcbiAgICAgIChib29rSWQgPT09IG9yaWdpbmFsQm9va0lkKSAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdICYmIC8vIHdlIG5lZWQgdG8gaGF2ZSBkYXRhIGZvciBjaGFwdGVyXG4gICAgICBzZWxlY3RlZFF1b3RlPy5xdW90ZVxuICAgICkge1xuICAgICAgLy8gaWYgcXVvdGUgaXMgZGlmZmVyZW50IHRoYW4gbGFzdFxuICAgICAgaWYgKCFpc0VxdWFsKGxhc3RTZWxlY3RlZFF1b3RlLCBzZWxlY3RlZFF1b3RlKSB8fFxuICAgICAgICAhaXNFcXVhbCh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVmVyc2VzID0ge31cbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZSA9IHt9IC8vIGtlZXAgdHJhY2sgb2YgdmVyc2Ugc3Vic3RpdHV0aW9uc1xuICAgICAgICBsZXQgc3RhcnRWZXJzZSA9IF92ZXJzZXNGb3JSZWZbMF0udmVyc2VcblxuICAgICAgICBpZiAodHlwZW9mIHN0YXJ0VmVyc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgc3RhcnRWZXJzZSA9IHBhcnNlSW50KHN0YXJ0VmVyc2UpXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGFzdFZlcnNlID0gc3RhcnRWZXJzZVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gX3ZlcnNlc0ZvclJlZi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBjb25zdCB2ZXJzZVJlZiA9IF92ZXJzZXNGb3JSZWZbaV1cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjaGFwdGVyLFxuICAgICAgICAgICAgdmVyc2UsXG4gICAgICAgICAgfSA9IHZlcnNlUmVmXG4gICAgICAgICAgLy8gVFJJQ0tZIC0gd2UgcmVtYXAgdmVyc2VzIGluIHJlZmVyZW5jZSByYW5nZSB0byBhIGxpbmVhciBzZXJpZXMgb2YgdmVyc2VzIHNvIHZlcnNlIHNwYW5zIGRvbid0IGNob2tlIGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZlxuICAgICAgICAgIGxldCBfdmVyc2UgPSBzdGFydFZlcnNlICsgaVxuICAgICAgICAgIGxhc3RWZXJzZSA9IF92ZXJzZVxuICAgICAgICAgIHN1YnN0aXR1dGVbYCR7Y2hhcHRlcn06JHtfdmVyc2V9YF0gPSBgJHtjaGFwdGVyfToke3ZlcnNlfWBcblxuICAgICAgICAgIGlmICghb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0pIHtcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgICAgIGlmICgodHlwZW9mIHZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va1ZlcnNlT2JqZWN0LCBgJHtjaGFwdGVyfToke3ZlcnNlfWApXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdmVyc2VJdGVtIG9mIHZlcnNlcykge1xuICAgICAgICAgICAgICBjb25zdCB2byA9IHZlcnNlSXRlbS52ZXJzZURhdGEudmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQodm8pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXVt2ZXJzZV0/LnZlcnNlT2JqZWN0c1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl1bX3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzIH1cbiAgICAgICAgICAgIF9tYXAuc2V0KGAke2NoYXB0ZXJ9OiR7dmVyc2V9YCwgdmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgcmVmZXJlbmNlIHJhbmdlIGZvciBuZXcgbGluZWFyIHZlcnNlIHJhbmdlXG4gICAgICAgIGNvbnN0IFtjaGFwdGVyXSA9IHNlbGVjdGVkUXVvdGU/LnJlZmVyZW5jZT8uc3BsaXQoJzonKVxuICAgICAgICBsZXQgc3ViUmVmID0gYCR7Y2hhcHRlcn06JHtzdGFydFZlcnNlfWBcblxuICAgICAgICBpZiAobGFzdFZlcnNlICE9IHN0YXJ0VmVyc2UpIHtcbiAgICAgICAgICBzdWJSZWYgKz0gYC0ke2xhc3RWZXJzZX1gXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdW90ZU1hdGNoZXMgPSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYoe1xuICAgICAgICAgIGJvb2tPYmplY3Q6IG9yaWdpbmFsVmVyc2VzLFxuICAgICAgICAgIHJlZjogc3ViUmVmLFxuICAgICAgICAgIHF1b3RlOiBzZWxlY3RlZFF1b3RlPy5xdW90ZSxcbiAgICAgICAgICBvY2N1cnJlbmNlOiBzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBuZXcgTWFwKClcblxuICAgICAgICBpZiAocXVvdGVNYXRjaGVzPy5zaXplKSB7XG4gICAgICAgICAgcXVvdGVNYXRjaGVzLmZvckVhY2goKHdvcmRzLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9rZXkgPSBzdWJzdGl0dXRlW2tleV1cblxuICAgICAgICAgICAgc2VsZWN0aW9ucy5zZXQoX2tleSwgd29yZHMubWFwKHdvcmQgPT4gKFxuICAgICAgICAgICAgICB7IC4uLndvcmQsIHRleHQ6IGNvcmUubm9ybWFsaXplU3RyaW5nKHdvcmQudGV4dCkgfVxuICAgICAgICAgICAgKSkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBuZXdTZWxlY3Rpb25zID0gc2VsZWN0aW9uc1xuICAgICAgICBuZXdTZWxlY3RlZFF1b3RlID0gc2VsZWN0ZWRRdW90ZVxuICAgICAgICB1cGRhdGVTZWxlY3Rpb25zID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5ld1N0YXRlOiBhbnkgPSB7fVxuXG4gICAgLy8gdXBkYXRlIHN0YXRlcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgIGlmICghYXJlTWFwc1RoZVNhbWUodmVyc2VPYmplY3RzTWFwLCBfbWFwKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VPYmplY3RzTWFwID0gX21hcFxuICAgIH1cblxuICAgIGNvbnN0IGJvb2tzTm90U2FtZSA9IHJlZmVyZW5jZT8ucHJvamVjdElkICE9PSBjdXJyZW50UmVmZXJlbmNlPy5wcm9qZWN0SWRcblxuICAgIGlmIChib29rc05vdFNhbWUgfHwgIWFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VzRm9yUmVmID0gX3ZlcnNlc0ZvclJlZlxuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgIH1cblxuICAgIGlmIChuZXdTZWxlY3RlZFF1b3RlKSB7XG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlU2VsZWN0aW9ucykge1xuICAgICAgaWYgKCFhcmVNYXBzVGhlU2FtZShzZWxlY3Rpb25zIHx8IChuZXcgTWFwKCkpLCBuZXdTZWxlY3Rpb25zKSkge1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhuZXdTdGF0ZSkubGVuZ3RoKSB7XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICB9XG4gIH0sIFtcbiAgICBvd25lcixcbiAgICByZXNvdXJjZUlkLFxuICAgIGJvb2tJZCxcbiAgICBsYW5ndWFnZUlkXyxcbiAgICBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZixcbiAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICAgIHNlbGVjdGVkUXVvdGUsXG4gIF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gY2xlYXIgc2V0dGluZ3Mgb24gdmVyc2UgY2hhbmdlXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgfSlcbiAgfSwgW19yZWZlcmVuY2VdKVxuXG4gIGNvbnN0IHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyA9IChyZWZlcmVuY2UsIGFsaWduZWQpID0+IHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7XG4gICAgICAuLi5wcmV2U3RhdGUsXG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IHsgLi4ucHJldlN0YXRlLnZlcnNlc0FsaWdubWVudFN0YXR1cywgW2Ake3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gXTogYWxpZ25lZCB9LFxuICAgIH0pKVxuICB9XG5cbiAgbGV0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9ID0gc2NyaXB0dXJlQ29uZmlnIHx8IHt9XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZC5fdmVyc2VzRm9yUmVmIGNoYW5nZWRgLCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0pXG4gICAgfVxuICB9LCBbX3ZlcnNlc0ZvclJlZl0pXG5cbiAgaWYgKCFfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHsgLy8gaWYgZW1wdHkgb2YgcmVmZXJlbmNlcywgY3JlYXRlIHNpbmdsZSBlbXB0eSByZWZlcmVuY2VcbiAgICBfdmVyc2VzRm9yUmVmID0gW3sgLi4ucmVmZXJlbmNlIH1dXG4gIH1cblxuICBjb25zdCByZW5kZXJlZFNjcmlwdHVyZVBhbmVzID0gdmVyc2VzRm9yUmVmPy5tYXAoKF9jdXJyZW50VmVyc2VEYXRhLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWZXJzZU9iamVjdHMgPSBfY3VycmVudFZlcnNlRGF0YT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHMgfHwgbnVsbFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBfY3VycmVudFZlcnNlRGF0YSB8fCB7fVxuICAgIGNvbnN0IHByb2plY3RJZCA9IGN1cnJlbnRSZWZlcmVuY2U/LnByb2plY3RJZCB8fCByZWZlcmVuY2U/LnByb2plY3RJZFxuICAgIGNvbnN0IF9yZWZlcmVuY2UgPSB7XG4gICAgICAuLi5fdmVyc2VzRm9yUmVmLFxuICAgICAgY2hhcHRlcixcbiAgICAgIHByb2plY3RJZCxcbiAgICAgIHZlcnNlLFxuICAgIH1cbiAgICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgICBjdXJyZW50SW5kZXg6IGluZGV4LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIHJlZmVyZW5jZTogX3JlZmVyZW5jZSxcbiAgICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIH1cblxuICAgIGxldCBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSBmYWxzZVxuXG4gICAgaWYgKHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQpIHtcbiAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQuY2hhcHRlciA9PSBjaGFwdGVyICYmIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQudmVyc2UgPT0gdmVyc2VcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgey4uLnNjcmlwdHVyZUNvbmZpZ31cbiAgICAgICAgY29udGVudFN0eWxlPXtjb250ZW50U3R5bGV9XG4gICAgICAgIGN1cnJlbnRJbmRleD17aW5kZXh9XG4gICAgICAgIGRldGVybWluaW5nQnJhbmNoPXshcmVhZHlGb3JGZXRjaH1cbiAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyX31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgIGlzTlQ9e2lzTlRffVxuICAgICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ9e2lzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudH1cbiAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgb25BbGlnbm1lbnRGaW5pc2g9eygpID0+IHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCB9KX1cbiAgICAgICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz17b3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0c31cbiAgICAgICAgcmVmU3R5bGU9e3JlZlN0eWxlfVxuICAgICAgICByZWZlcmVuY2U9e19yZWZlcmVuY2V9XG4gICAgICAgIHNhdmluZz17c3RhcnRTYXZlfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc9e19zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnfVxuICAgICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cz17c2V0V29yZEFsaWduZXJTdGF0dXN9XG4gICAgICAgIHNlcnZlcj17c2VydmVyfVxuICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzPXt1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAvPlxuICAgIClcbiAgfSlcblxuICBjb25zdCBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA+IDEpIHtcbiAgICAgIHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiB0cnVlIH0pXG4gICAgfSBlbHNlIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZXNGb3JSZWZbMF0gfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBvblJlbmRlclRvb2xiYXIgPSAoeyBpdGVtcyB9KSA9PiB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSBbLi4uaXRlbXNdXG5cbiAgICBsZXQgYWxsVmVyc2VzQWxpZ25lZCA9IGZhbHNlXG5cbiAgICAvLyBDaGVjayBpZiBhbGwgdmFsdWVzIGluIHZlcnNlc0FsaWdubWVudFN0YXR1cyBhcmUgdHJ1ZVxuICAgIGlmICh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpIHtcbiAgICAgIGFsbFZlcnNlc0FsaWduZWQgPSBPYmplY3QudmFsdWVzKHZlcnNlc0FsaWdubWVudFN0YXR1cykuZXZlcnkoYWxpZ25TdGF0dXMgPT4gYWxpZ25TdGF0dXMgPT09IHRydWUpXG4gICAgfVxuXG4gICAgbGV0IGFsaWduSWNvbiA9IG51bGxcbiAgICBsZXQgYWxpZ25CdXR0b25UZXh0ID0gJydcblxuICAgIGlmIChhbGxWZXJzZXNBbGlnbmVkKSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rMiBpZD17YHZhbGlkX2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjQkJCJyAvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBWYWxpZCdcbiAgICB9IGVsc2Uge1xuICAgICAgYWxpZ25JY29uID0gPFJ4TGlua0JyZWFrMiBpZD17YGludmFsaWRfYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjMDAwJyAvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBJbnZhbGlkJ1xuICAgIH1cblxuICAgIGlmIChzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiByZXNvdXJjZUlkICE9PSAnT1JJR0lOQUxfU09VUkNFJykge1xuICAgICAgbmV3SXRlbXMucHVzaChcbiAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICBpZD17YGFsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfVxuICAgICAgICAgIGtleT0nY2hlY2tpbmctYnV0dG9uJ1xuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFsaWduQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgdGl0bGU9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBhcmlhLWxhYmVsPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHthbGlnbkljb259XG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIClcbiAgICB9XG5cbiAgICBuZXdJdGVtcy5wdXNoKFxuICAgICAgPD5cbiAgICAgICAgPFVwZGF0ZUJyYW5jaEJ1dHRvbiB7Li4udXBkYXRlQnV0dG9uUHJvcHN9IGlzTG9hZGluZz17aXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZX0vPlxuICAgICAgICA8RXJyb3JEaWFsb2cgdGl0bGU9e2RpYWxvZ1RpdGxlfSBjb250ZW50PXtkaWFsb2dNZXNzYWdlfSBvcGVuPXtpc0Vycm9yRGlhbG9nT3Blbn0gb25DbG9zZT17b25DbG9zZUVycm9yRGlhbG9nfSBpc0xvYWRpbmc9eyBpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlIH0gbGluaz17ZGlhbG9nTGlua30gbGlua1Rvb2x0aXA9e2RpYWxvZ0xpbmtUb29sdGlwfSAvPlxuICAgICAgPC8+XG4gICAgKVxuXG4gICAgcmV0dXJuIG5ld0l0ZW1zO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0aW9uc0NvbnRleHRQcm92aWRlclxuICAgICAgc2VsZWN0aW9ucz17c2VsZWN0aW9uc31cbiAgICAgIG9uU2VsZWN0aW9ucz17bmV3U2VsZWN0aW9ucyA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvblNlbGVjdGlvbnMnLCBuZXdTZWxlY3Rpb25zKVxuICAgICAgfX1cbiAgICAgIHF1b3RlPXtzZWxlY3RlZFF1b3RlPy5xdW90ZX1cbiAgICAgIG9jY3VycmVuY2U9e2ZpeE9jY3VycmVuY2Uoc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSl9XG4gICAgICB2ZXJzZU9iamVjdHNNYXA9e3ZlcnNlT2JqZWN0c01hcH1cbiAgICA+XG4gICAgICA8Q2FyZFxuICAgICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgICB0aXRsZT17c2NyaXB0dXJlTGFiZWx9XG4gICAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgICAgc2V0Rm9udFNpemU9e3NldEZvbnRTaXplfVxuICAgICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICAgIHNldE1hcmtkb3duVmlldz17c2V0TWFya2Rvd25WaWV3fVxuICAgICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCkgOiBudWxsfVxuICAgICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICAgIHNhdmVkPXtzdGFydFNhdmUgfHwgIWhhdmVVbnNhdmVkQ2hhbmdlc31cbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgICAgb25SZW5kZXJUb29sYmFyPXtvblJlbmRlclRvb2xiYXJ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkPlxuICAgICAgPFZlcnNlU2VsZWN0b3JQb3B1cFxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxuICAgICAgICBvcGVuPXtzaG93QWxpZ25tZW50UG9wdXB9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSB9KX1cbiAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XG4gICAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1cz17dmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgICBvblZlcnNlU2VsZWN0PXsodmVyc2UpID0+IHNldFN0YXRlKHtcbiAgICAgICAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZSxcbiAgICAgICAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlXG4gICAgICAgIH0pfVxuICAgICAgLz5cbiAgICA8L1NlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlQ2FyZC5wcm9wVHlwZXMgPSB7XG4gIC8qKiByZXBvIGJyYW5jaCBvciB0YWcgc3VjaCBhcyBtYXN0ZXIgKi9cbiAgYXBwUmVmOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBhdXRoZW50aWNhdGlvbiBpbmZvICovXG4gIGF1dGhlbnRpY2F0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaW5kZXggZm9yIGN1cnJlbnQgYm9vayAoZS5nLiAnMDEnIGZvciAnZ2VuJykqL1xuICBib29rSW5kZXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBzY3JpcHR1cmUgY2FyZCBudW1iZXIgKDAgdG8gMiBmb3IgZXhhbXBsZSkgKi9cbiAgY2FyZE51bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAvKiogQ1NTIGNsYXNzZXMgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGlmIHRydWUgdGhlbiB3b3JkIGRhdGEgaG92ZXIgaXMgc2hvd24gKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqIGdldCBsYW5ndWFnZSBkZXRhaWxzICovXG4gIGdldExhbmd1YWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogZnVuY3Rpb24gdG8gZ2V0IGxhdGVzdCBsZXhpY29uIGRhdGEgKi9cbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBncmVlayByZXBvICovXG4gIGdyZWVrUmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgaGVicmV3IHJlcG8gKi9cbiAgaGVicmV3UmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIGh0dHAgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGZldGNoaW5nIHJlc291cmNlcywgZGVmYXVsdCBpcyAwICh2ZXJ5IGxvbmcgd2FpdCkgKi9cbiAgaHR0cENvbmZpZzogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGh0bWwgaWRlbnRpZmllciB0byB1c2UgZm9yIGNhcmQgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBtZXRob2QgdG8gZGV0ZXJtaW5lIGlmIE5UIG9yIE9UICovXG4gIGlzTlQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiB1c2VyLW5hbWUgKi9cbiAgbG9nZ2VkSW5Vc2VyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogZnVuY3Rpb24gdG8gbWluaW1pemUgdGhlIGNhcmQgKG9wdGlvbmFsKSAqL1xuICBvbk1pbmltaXplOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIGNhbGxiYWNrIGlmIGVycm9yIGxvYWRpbmcgcmVzb3VyY2UsIHBhcmFtZXRlciByZXR1cm5lZCBhcmU6XG4gICAqICAgICh7c3RyaW5nfSBlcnJvck1lc3NhZ2UsIHtib29sZWFufSBpc0FjY2Vzc0Vycm9yLCB7b2JqZWN0fSByZXNvdXJjZVN0YXR1cylcbiAgICogICAgICAtIGlzQWNjZXNzRXJyb3IgLSBpcyB0cnVlIGlmIHRoaXMgd2FzIGFuIGVycm9yIHRyeWluZyB0byBhY2Nlc3MgZmlsZVxuICAgKiAgICAgIC0gcmVzb3VyY2VTdGF0dXMgLSBpcyBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHByb2JsZW1zIGZldGNoaW5nIHJlc291cmNlICovXG4gIG9uUmVzb3VyY2VFcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB0aGUgb3JpZ2luYWwgc2NyaXB0dXJlIGJvb2tPYmplY3RzIGZvciBjdXJyZW50IGJvb2sgKi9cbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0czogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVmZXJlbmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiBwcm9qZWN0SWQgKGJvb2tJRCkgdG8gdXNlICovXG4gICAgcHJvamVjdElkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgY2hhcHRlciBudW1iZXIgKi9cbiAgICBjaGFwdGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCB2ZXJzZSBudW1iZXIgKi9cbiAgICB2ZXJzZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2Ugb2JqZWN0ICovXG4gIHJlc291cmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiByZXNvdXJjZSBsYW5ndWFnZSB0byB1c2UgKi9cbiAgICBsYW5ndWFnZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVzb3VyY2VJZCB0byB1c2UgKGUuZy4gdWdudCkgKi9cbiAgICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgZm9yIG9yaWdpbmFsIGxhbmd1YWdlcyBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiByZXNvdXJjZUxpbmsgKi9cbiAgcmVzb3VyY2VMaW5rOiBQcm9wVHlwZXMuYW55LFxuICAvKipUaGlzIGlzIGN1cnJlbnRseSBzZWxlY3RlZCBxdW90ZSAqL1xuICBzZWxlY3RlZFF1b3RlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogc2VydmVyIChlLmcuICdodHRwczovL2dpdC5kb29yNDMub3JnJykgKi9cbiAgc2VydmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgbG9hZGluZyBzdGF0ZSAqL1xuICBzZXRBcmVSZXNvdXJjZXNMb2FkaW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSBzYXZpbmcgc3RhdGUqL1xuICBzZXRBcmVSZXNvdXJjZXNTYXZpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgbG9hZGluZyBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNMb2FkaW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIHNhdmluZ2luZyBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNTYXZpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gc2V0IHN0YXRlIGluIGFwcCB0aGF0IHRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgKi9cbiAgc2V0U2F2ZWRDaGFuZ2VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSB3b3JkIGFsaWduZXIgc3RhdGUgKi9cbiAgc2V0V29yZEFsaWduZXJTdGF0dXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGl0bGUgZm9yIHNjcmlwdHVyZSBjYXJkICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgdGhlIGNhcmQncyBtZXJnZSBzdGF0ZSBpbiBhcHAgKi9cbiAgdXBkYXRlTWVyZ2VTdGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB1c2UgbWV0aG9kIGZvciB1c2luZyBsb2NhbCBzdG9yYWdlIHNwZWNpZmljIGZvciB1c2VyICovXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59XG4iXX0=
1514
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsImxlbmd0aCIsIkpTT04iLCJzdHJpbmdpZnkiLCJhcmVWZXJzZXNTYW1lIiwidmVyc2VzRm9yUmVmMSIsInZlcnNlc0ZvclJlZjIiLCJhcmVTYW1lIiwiaSIsImwiLCJ2ZXJzZTEiLCJ2ZXJzZTIiLCJTY3JpcHR1cmVDYXJkIiwiYXBwUmVmIiwiYXV0aGVudGljYXRpb24iLCJib29rSW5kZXgiLCJjYXJkTnVtIiwiY2xhc3NlcyIsImRpc2FibGVXb3JkUG9wb3ZlciIsImdldExhbmd1YWdlIiwiZ2V0TGV4aWNvbkRhdGEiLCJncmVla1JlcG9VcmwiLCJoZWJyZXdSZXBvVXJsIiwiaHR0cENvbmZpZyIsImlkIiwiaXNOVCIsImxvZ2dlZEluVXNlciIsIm9uTWluaW1pemUiLCJvblJlc291cmNlRXJyb3IiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwicmVmZXJlbmNlIiwicmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwicmVzb3VyY2VMaW5rIiwic2VsZWN0ZWRRdW90ZSIsInNlcnZlciIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidHJhbnNsYXRlIiwidGl0bGUiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwidXBkYXRlTWVyZ2VTdGF0ZSIsInNldENhcmRzTG9hZGluZ1VwZGF0ZSIsInNldENhcmRzTG9hZGluZ01lcmdlIiwic2V0Q2FyZHNTYXZpbmciLCJib29rSWQiLCJwcm9qZWN0SWQiLCJ1c2VTdGF0ZSIsImNoZWNrRm9yRWRpdEJyYW5jaCIsImN1cnJlbnRSZWZlcmVuY2UiLCJlZGl0QnJhbmNoUmVhZHkiLCJoYXZlVW5zYXZlZENoYW5nZXMiLCJsYXN0U2VsZWN0ZWRRdW90ZSIsInJlYWR5Rm9yRmV0Y2giLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2VsZWN0aW9ucyIsIk1hcCIsInNoYSIsInNob3dBbGlnbm1lbnRQb3B1cCIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzQWxpZ25tZW50U3RhdHVzIiwidmVyc2VzRm9yUmVmIiwidmVyc2VPYmplY3RzTWFwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsInN0YXRlIiwic2V0U3RhdGVfIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwibm9DYWNoZSIsInNldFVybEVycm9yIiwiZXJyb3IiLCJ3aG9sZUJvb2siLCJpc05ld1Rlc3RhbWVudCIsInNjcmlwdHVyZUNvbmZpZyIsInNldFNjcmlwdHVyZSIsInNjcmlwdHVyZVNldHRpbmdzIiwic2NyaXB0dXJlVmVyc2lvbkhpc3QiLCJmZXRjaFJlc3BfIiwiZmV0Y2hSZXNwb25zZSIsInJlcG8iLCJyZWZlcmVuY2VfIiwidXNlRWZmZWN0IiwiX3NoYSIsImRhdGEiLCJ1cmwiLCJkb3dubG9hZF91cmwiLCJ2YWxpZEJyYW5jaCIsInBhcnRzIiwic3BsaXQiLCJmZXRjaEJyYW5jaCIsImNvbnNvbGUiLCJsb2ciLCJjYXJkUmVzb3VyY2VJZCIsInJlZl8iLCJjYW5Vc2VFZGl0QnJhbmNoIiwiaW5jbHVkZXMiLCJjYXJkSWQiLCJicmFuY2hEZXRlcm1pbmVkIiwidXNlckVkaXRCcmFuY2hOYW1lIiwiX3VzaW5nVXNlckJyYW5jaCIsIndvcmtpbmdSZXNvdXJjZUJyYW5jaCIsImFjdGlvbnMiLCJzdGFydEVkaXRCcmFuY2giLCJzdGFydEVkaXQiLCJmaW5pc2hFZGl0IiwiX3VzZUJyYW5jaE1lcmdlciIsInVzZXJCcmFuY2giLCJ0b2tlbmlkIiwidG9rZW4iLCJzaGExIiwibWVyZ2VUb01hc3RlciIsIm1lcmdlU3RhdHVzIiwibWVyZ2VGcm9tTWFzdGVyIiwidXBkYXRlU3RhdHVzIiwidXBkYXRlQnV0dG9uUHJvcHMiLCJpc1NhdmluZyIsIm9uVXBkYXRlIiwidGhlbiIsInJlbG9hZFJlc291cmNlIiwiY2FsbFVwZGF0ZVVzZXJCcmFuY2giLCJpc0Vycm9yRGlhbG9nT3BlbiIsIm9uQ2xvc2VFcnJvckRpYWxvZyIsImlzVXBkYXRlTG9hZGluZyIsImlzTG9hZGluZyIsImRpYWxvZ01lc3NhZ2UiLCJkaWFsb2dUaXRsZSIsImRpYWxvZ0xpbmsiLCJkaWFsb2dMaW5rVG9vbHRpcCIsIm9uTWVyZ2UiLCJpc01lcmdlTG9hZGluZyIsImNhbGxNZXJnZVVzZXJCcmFuY2giLCJwcmV2Q2FyZHNMb2FkaW5nIiwiZmlsdGVyIiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiX3JlZmVyZW5jZSIsImlzSGVicmV3IiwiZm9udEZhY3RvciIsInNjYWxlZEZvbnRTaXplIiwiaXRlbXMiLCJoZWFkZXJzIiwiZmlsdGVycyIsIml0ZW1JbmRleCIsIm1hcmtkb3duVmlldyIsInNldEZpbHRlcnMiLCJzZXRJdGVtSW5kZXgiLCJzZXRNYXJrZG93blZpZXciLCJyZWZTdHlsZSIsInVzZU1lbW8iLCJmb250RmFtaWx5IiwiTWF0aCIsInJvdW5kIiwiY29udGVudFN0eWxlIiwic2NyaXB0dXJlTGFiZWwiLCJkaXNhYmxlV29yZFBvcG92ZXJfIiwidXNpbmdPcmlnaW5hbEJpYmxlIiwidW5kZWZpbmVkIiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiZ2V0Q2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJPYmplY3QiLCJrZXlzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwiY29udGVudCIsImNvbmZpZyIsInRpbWVvdXQiLCJzZXJ2ZXJUaW1lT3V0IiwiYXV0aG9yIiwiYnJhbmNoIiwic2F2ZUVycm9yIiwiaXNTYXZlRXJyb3IiLCJpc0Vycm9yIiwib25TYXZlRWRpdCIsIl9zYXZlRWRpdCIsImluZm8iLCJzdWNjZXNzIiwicHJldkNhcmRzU2F2aW5nIiwidW5zYXZlZENhcmRJbmRpY2VzIiwiY2FyZEluZGV4IiwibWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtIiwiYmlibGVVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsIm5ld1VzZm0iLCJjaGFwdGVyQ2h1bmtzIiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJuZXdWZXJzZVVzZm0iLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwib2xkVmVyc2UiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVhZHlGb3JTYXZlIiwiY3JlYXRlRWRpdEJyYW5jaCIsIndhcm4iLCJnZXRSZXNwb25zZURhdGEiLCJtZXJnZUZhaWwiLCJwYXJzZUludCIsIm5ld1ZlcnNlVGV4dCIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlT2JqZWN0cyIsIm5ld0Jvb2tKc29uIiwidXBkYXRlVmVyc2UiLCJ0b1VTRk0iLCJmb3JjZWROZXdMaW5lcyIsIl92ZXJzZXNGb3JSZWYiLCJuZXdTZWxlY3Rpb25zIiwidXBkYXRlU2VsZWN0aW9ucyIsIl9tYXAiLCJvcmlnaW5hbEJvb2tJZCIsImJvb2tWZXJzZU9iamVjdCIsImNoYXB0ZXJzIiwibmV3U2VsZWN0ZWRRdW90ZSIsInF1b3RlIiwib3JpZ2luYWxWZXJzZXMiLCJzdWJzdGl0dXRlIiwic3RhcnRWZXJzZSIsImxhc3RWZXJzZSIsIl92ZXJzZSIsInZlcnNlcyIsInZlcnNlSXRlbSIsInZvIiwiY29uY2F0Iiwic2V0Iiwic3ViUmVmIiwicXVvdGVNYXRjaGVzIiwiYm9va09iamVjdCIsIm9jY3VycmVuY2UiLCJzaXplIiwiZm9yRWFjaCIsIndvcmRzIiwia2V5IiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwiYm9va3NOb3RTYW1lIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwiYWxpZ25lZCIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJfY3VycmVudFZlcnNlRGF0YSIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsImhhbmRsZUFsaWduQnV0dG9uQ2xpY2siLCJvblJlbmRlclRvb2xiYXIiLCJuZXdJdGVtcyIsImFsbFZlcnNlc0FsaWduZWQiLCJ2YWx1ZXMiLCJldmVyeSIsImFsaWduU3RhdHVzIiwiYWxpZ25JY29uIiwiYWxpZ25CdXR0b25UZXh0IiwicHVzaCIsImN1cnNvciIsInByb3BUeXBlcyIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJvYmplY3QiLCJudW1iZXIiLCJib29sIiwiZnVuYyIsInNoYXBlIiwib25lT2ZUeXBlIiwiYW55Iiwic2V0QXJlUmVzb3VyY2VzTG9hZGluZyIsInNldEFyZVJlc291cmNlc1NhdmluZyIsInNldENhcmRzTG9hZGluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7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QUFWLENBQWlCQztBQVJoQixHQUFoQixDQS9DYzs7QUF5RHhCO0FBQ0FuUixFQUFBQSxZQUFZLEVBQUVyRixTQUFTLENBQUMrVyxHQTFEQTs7QUEyRHhCO0FBQ0F6UixFQUFBQSxhQUFhLEVBQUV0RixTQUFTLENBQUN5VyxNQTVERDs7QUE2RHhCO0FBQ0FsUixFQUFBQSxNQUFNLEVBQUV2RixTQUFTLENBQUN1VyxNQUFWLENBQWlCQyxVQTlERDs7QUErRHhCO0FBQ0FRLEVBQUFBLHNCQUFzQixFQUFFaFgsU0FBUyxDQUFDNFcsSUFoRVY7O0FBaUV4QjtBQUNBSyxFQUFBQSxxQkFBcUIsRUFBRWpYLFNBQVMsQ0FBQzRXLElBbEVUOztBQW1FeEI7QUFDQU0sRUFBQUEsZUFBZSxFQUFFbFgsU0FBUyxDQUFDNFcsSUFwRUg7O0FBcUV4QjtBQUNBNVEsRUFBQUEsY0FBYyxFQUFFaEcsU0FBUyxDQUFDNFcsSUF0RUY7O0FBdUV4QjtBQUNBcFIsRUFBQUEsZUFBZSxFQUFFeEYsU0FBUyxDQUFDNFcsSUF4RUg7O0FBeUV4QjtBQUNBblIsRUFBQUEsb0JBQW9CLEVBQUV6RixTQUFTLENBQUM0VyxJQTFFUjs7QUEyRXhCO0FBQ0FqUixFQUFBQSxLQUFLLEVBQUUzRixTQUFTLENBQUN1VyxNQUFWLENBQWlCQyxVQTVFQTs7QUE2RXhCO0FBQ0E5USxFQUFBQSxTQUFTLEVBQUUxRixTQUFTLENBQUM0VyxJQTlFRzs7QUErRXhCO0FBQ0EvUSxFQUFBQSxnQkFBZ0IsRUFBRTdGLFNBQVMsQ0FBQzRXLElBaEZKOztBQWlGeEI7QUFDQWhSLEVBQUFBLG1CQUFtQixFQUFFNUYsU0FBUyxDQUFDNFcsSUFBVixDQUFlSjtBQWxGWixDQUExQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5pbXBvcnQge1xuICBDYXJkLFxuICBFcnJvckRpYWxvZyxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFVwZGF0ZUJyYW5jaEJ1dHRvbixcbiAgdXNlQnJhbmNoTWVyZ2VyLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZUNvbnRlbnRVcGRhdGVQcm9wcyxcbiAgdXNlTWFzdGVyTWVyZ2VQcm9wcyxcbiAgdXNlVXNlckJyYW5jaCxcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIH0gZnJvbSAndXctcXVvdGUtaGVscGVycydcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0ICogYXMgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxuICBmaXhPY2N1cnJlbmNlLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIGdldFJlc291cmNlTWVzc2FnZSxcbiAgZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzLFxuICBpc09yaWdpbmFsQmlibGUsXG59IGZyb20gJy4uLy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICcuLi8uLi91dGlscy9kZWxheSdcbmltcG9ydCB7IGFyZU1hcHNUaGVTYW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWFwcydcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnLi4vU2NyaXB0dXJlUGFuZS9zdHlsZWQnXG5pbXBvcnQge1xuICBOVF9PUklHX0xBTkcsXG4gIE9SSUdJTkFMX1NPVVJDRSxcbiAgT1RfT1JJR19MQU5HLFxufSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IFZlcnNlU2VsZWN0b3JQb3B1cCB9IGZyb20gJy4uL1ZlcnNlU2VsZWN0b3JQb3B1cCdcblxuY29uc3QgS0VZX0ZPTlRfU0laRV9CQVNFID0gJ3NjcmlwdHVyZVBhbmVGb250U2l6ZV8nXG5jb25zdCBsYWJlbCA9ICdWZXJzaW9uJ1xuY29uc3Qgc3R5bGUgPSB7IG1hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzUwMHB4JyB9XG5cbi8qKlxuICogY3JlYXRlIGEgc2hvcnQgY29tcGFyaXNvbiB2ZXJzZSByZWYgb2JqZWN0IHdpdGhvdXQgYWxsIHRoZSB2ZXJzZURhdGFcbiAqIEBwYXJhbSB2ZXJzZVJlZlxuICovXG5mdW5jdGlvbiBjb21wYXJlT2JqZWN0KHZlcnNlUmVmKSB7XG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlRGF0YSxcbiAgfSA9IHZlcnNlUmVmIHx8IHt9XG4gIGNvbnN0IHZlcnNlT2JqZWN0cyA9IHZlcnNlRGF0YT8udmVyc2VPYmplY3RzPy5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2ZXJzZURhdGEudmVyc2VPYmplY3RzKSA6IFwiXCJcbiAgcmV0dXJuIHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlT2JqZWN0cyxcbiAgfVxufVxuXG4vKipcbiAqIGNvbXBhcmUgdHdvIHZlcnNlIHJlZnMgdG8gc2VlIGlmIHRoZXkgYXJlIHN1YnN0YW50aWFsbHkgc2ltaWxhclxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjFcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYyXG4gKi9cbmZ1bmN0aW9uIGFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmMTogYW55W10sIHZlcnNlc0ZvclJlZjI6IGFueVtdKSB7XG4gIHZlcnNlc0ZvclJlZjEgPSB2ZXJzZXNGb3JSZWYxIHx8IFtdXG4gIHZlcnNlc0ZvclJlZjIgPSB2ZXJzZXNGb3JSZWYyIHx8IFtdXG4gIGxldCBhcmVTYW1lID0gZmFsc2VcblxuICBpZiAodmVyc2VzRm9yUmVmMS5sZW5ndGggPT09IHZlcnNlc0ZvclJlZjIubGVuZ3RoKSB7XG4gICAgYXJlU2FtZSA9IHRydWVcblxuICAgIGZvciAobGV0IGkgPSAwLCBsPSB2ZXJzZXNGb3JSZWYxLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgdmVyc2UxID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYxW2ldKVxuICAgICAgY29uc3QgdmVyc2UyID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYyW2ldKVxuICAgICAgYXJlU2FtZSA9IGlzRXF1YWwodmVyc2UxLCB2ZXJzZTIpXG5cbiAgICAgIGlmICghYXJlU2FtZSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmVTYW1lXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcmlwdHVyZUNhcmQoe1xuICBhcHBSZWYsXG4gIGF1dGhlbnRpY2F0aW9uLFxuICBib29rSW5kZXgsXG4gIGNhcmROdW0sXG4gIGNsYXNzZXMsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgZ2V0TGFuZ3VhZ2UsXG4gIGdldExleGljb25EYXRhLFxuICBncmVla1JlcG9VcmwsXG4gIGhlYnJld1JlcG9VcmwsXG4gIGh0dHBDb25maWcsXG4gIGlkLFxuICBpc05ULFxuICBsb2dnZWRJblVzZXIsXG4gIG9uTWluaW1pemUsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgcmVmZXJlbmNlLFxuICByZXNvdXJjZToge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgc2VsZWN0ZWRRdW90ZSxcbiAgc2VydmVyLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzLFxuICB0cmFuc2xhdGUsXG4gIHRpdGxlLFxuICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB1cGRhdGVNZXJnZVN0YXRlLFxuICBzZXRDYXJkc0xvYWRpbmdVcGRhdGUsXG4gIHNldENhcmRzTG9hZGluZ01lcmdlLFxuICBzZXRDYXJkc1NhdmluZ1xufSkge1xuICBjb25zdCBib29rSWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoOiAwLFxuICAgIGN1cnJlbnRSZWZlcmVuY2U6IG51bGwsXG4gICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlOiBudWxsLFxuICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgIHJlZjogYXBwUmVmLFxuICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICBzZWxlY3Rpb25zOiBuZXcgTWFwKCksXG4gICAgc2hhOiBudWxsLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UsXG4gICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICB1cmxFcnJvcjogbnVsbCxcbiAgICB1c2luZ1VzZXJCcmFuY2g6IGZhbHNlLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgIHZlcnNlc0ZvclJlZjogbnVsbCxcbiAgICB2ZXJzZU9iamVjdHNNYXA6IG5ldyBNYXAoKSxcbiAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsLFxuICB9KVxuICBjb25zdCB7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGN1cnJlbnRSZWZlcmVuY2UsXG4gICAgZWRpdEJyYW5jaFJlYWR5LFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlcyxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZSxcbiAgICByZWFkeUZvckZldGNoLFxuICAgIHJlZixcbiAgICBzYXZlQ2xpY2tlZCxcbiAgICBzYXZlQ29udGVudCxcbiAgICBzZWxlY3Rpb25zLFxuICAgIHNoYSxcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgdmVyc2VPYmplY3RzTWFwLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGh0dHBDb25maWcgPSB7XG4gICAgLi4uaHR0cENvbmZpZyxcbiAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICBub0NhY2hlOiB0cnVlLFxuICB9IC8vIGRpc2FibGUgaHR0cCBjYWNoaW5nXG5cbiAgY29uc3Qge1xuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzZXRTY3JpcHR1cmUsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XG4gICAgYXBwUmVmOiByZWYsXG4gICAgY2FyZE51bSxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgZ3JlZWtSZXBvVXJsLFxuICAgIGhlYnJld1JlcG9VcmwsXG4gICAgaHR0cENvbmZpZyxcbiAgICBpc05ULFxuICAgIGxhbmd1YWdlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIG93bmVyLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmZXJlbmNlOiBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZSxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICBzZXJ2ZXIsXG4gICAgdGl0bGUsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gIH0pXG5cbiAgY29uc3QgZmV0Y2hSZXNwXyA9IHNjcmlwdHVyZUNvbmZpZz8uZmV0Y2hSZXNwb25zZVxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHJlcG8gPSBgJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkfV8ke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZH1gXG4gIGNvbnN0IHJlZmVyZW5jZV8gPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZSB8fCBudWxsXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZ2V0IHRoZSBfc2hhIGZyb20gbGFzdCBzY3JpcHR1cmUgZG93bmxvYWRcbiAgICBjb25zdCBfc2hhID0gZmV0Y2hSZXNwXz8uZGF0YT8uc2hhIHx8IG51bGxcbiAgICBjb25zdCB1cmwgPSBmZXRjaFJlc3BfPy5kYXRhPy5kb3dubG9hZF91cmwgfHwgbnVsbFxuICAgIGxldCB2YWxpZEJyYW5jaCA9IHRydWVcblxuICAgIGlmIChfc2hhKSB7IC8vIFRSSUNLWTogc2luY2UgdGhpcyBmZXRjaCBtYXkgYmUgZGVsYXllZCAtIG1ha2Ugc3VyZSBpdCB3YXMgZm9yIHRoZSBjdXJyZW50IGJyYW5jaCBiZWZvcmUgdXNpbmcgdGhlIHNoYVxuICAgICAgY29uc3QgcGFydHMgPSAodXJsIHx8ICcnKS5zcGxpdCgnLycpXG4gICAgICBjb25zdCBmZXRjaEJyYW5jaCA9IHBhcnRzLmxlbmd0aCA+IDcgPyBwYXJ0c1s3XSA6ICcnXG4gICAgICB2YWxpZEJyYW5jaCA9IGZldGNoQnJhbmNoID09PSByZWZcbiAgICB9XG5cbiAgICBpZiAodmFsaWRCcmFuY2ggJiYgX3NoYSAhPT0gc2hhKSB7XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZDogZm9yICR7dXJsfSAke0pTT04uc3RyaW5naWZ5KHJlZmVyZW5jZV8pfSBuZXcgc2hhIGlzICR7X3NoYX1gKVxuICAgICAgc2V0U3RhdGUoeyBzaGE6IF9zaGEgfSlcbiAgICB9XG4gIH0sIFtmZXRjaFJlc3BfXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNhcmRSZXNvdXJjZUlkID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkIHx8IHJlc291cmNlSWRcbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcbiAgY29uc3QgY2FuVXNlRWRpdEJyYW5jaCA9ICEhKGxvZ2dlZEluVXNlciAmJiBhdXRoZW50aWNhdGlvbiAmJiAocmVzb3VyY2VJZCAhPT0gT1JJR0lOQUxfU09VUkNFKSAmJiAvLyBUUklDS1kgaWYgbm90IG9yaWdpbmFsIGxhbmd1YWdlIGFuZCB3ZSBoYXZlIGxvZ2luIGRhdGEsIHRoZW4gd2UgY2FuIHVzZSB0aGUgZWRpdCBicmFuY2hcbiAgICAoKHJlZl8gPT09ICdtYXN0ZXInKSB8fCAocmVmXy5pbmNsdWRlcyhsb2dnZWRJblVzZXIpKSkpIC8vIGFsc28gbWFrZSBzdXJlIG5vdCBhIHZlcnNpb24gdGFnXG5cbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBicmFuY2hEZXRlcm1pbmVkLFxuICAgICAgdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoLFxuICAgICAgd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc3RhcnRFZGl0OiBzdGFydEVkaXRCcmFuY2gsXG4gICAgICBmaW5pc2hFZGl0LFxuICAgIH0sXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcbiAgICBhcHBSZWYsXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0lkLFxuICAgIGNhcmRJZDogaWQsXG4gICAgY2FyZFJlc291cmNlSWQsXG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvd25lcixcbiAgICBvblJlc291cmNlRXJyb3IsXG4gICAgc2VydmVyLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIH0pXG5cbiAgY29uc3QgX3VzZUJyYW5jaE1lcmdlciA9IHVzZUJyYW5jaE1lcmdlcih7IHNlcnZlciwgb3duZXIsIHJlcG8sIHVzZXJCcmFuY2g6IHVzZXJFZGl0QnJhbmNoTmFtZSwgdG9rZW5pZDogYXV0aGVudGljYXRpb24/LnRva2VuPy5zaGExIH0pO1xuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIG1lcmdlU3RhdHVzOiBtZXJnZVRvTWFzdGVyLFxuICAgICAgdXBkYXRlU3RhdHVzOiBtZXJnZUZyb21NYXN0ZXIsXG4gICAgfSxcbiAgfSA9IF91c2VCcmFuY2hNZXJnZXI7XG5cbiAgY29uc3QgdXBkYXRlQnV0dG9uUHJvcHMgPSB1c2VDb250ZW50VXBkYXRlUHJvcHMoe1xuICAgIGlzU2F2aW5nOiBzdGFydFNhdmUsXG4gICAgdXNlQnJhbmNoTWVyZ2VyOiBfdXNlQnJhbmNoTWVyZ2VyLFxuICAgIG9uVXBkYXRlOiAoKSA9PiB7XG4gICAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4gc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZShzaGEpKVxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHtcbiAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICBpc0Vycm9yRGlhbG9nT3BlbixcbiAgICBvbkNsb3NlRXJyb3JEaWFsb2csXG4gICAgaXNMb2FkaW5nOiBpc1VwZGF0ZUxvYWRpbmcsXG4gICAgZGlhbG9nTWVzc2FnZSxcbiAgICBkaWFsb2dUaXRsZSxcbiAgICBkaWFsb2dMaW5rLFxuICAgIGRpYWxvZ0xpbmtUb29sdGlwLFxuICB9ID0gdXBkYXRlQnV0dG9uUHJvcHNcblxuICBjb25zdCBvbk1lcmdlID0gKCkgPT4ge1xuICAgIGZpbmlzaEVkaXQoKVxuICAgIHNldFN0YXRlKHsgcmVmOiBhcHBSZWYgfSlcbiAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4ge1xuICAgICAgc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZSgpXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHsgaXNMb2FkaW5nOiBpc01lcmdlTG9hZGluZywgY2FsbE1lcmdlVXNlckJyYW5jaCB9ID0gdXNlTWFzdGVyTWVyZ2VQcm9wcyh7XG4gICAgaXNTYXZpbmc6IHN0YXJ0U2F2ZSxcbiAgICB1c2VCcmFuY2hNZXJnZXI6IF91c2VCcmFuY2hNZXJnZXIsXG4gICAgb25NZXJnZSxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXJkUmVzb3VyY2VJZCkge1xuICAgICAgdXBkYXRlTWVyZ2VTdGF0ZSAmJiB1cGRhdGVNZXJnZVN0YXRlKFxuICAgICAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICAgICAgbWVyZ2VGcm9tTWFzdGVyLFxuICAgICAgICBtZXJnZVRvTWFzdGVyLFxuICAgICAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICAgICAgY2FsbE1lcmdlVXNlckJyYW5jaCxcbiAgICAgIClcbiAgICB9XG4gIH0sW2NhcmRSZXNvdXJjZUlkLCBtZXJnZUZyb21NYXN0ZXIsIG1lcmdlVG9NYXN0ZXJdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVXBkYXRlTG9hZGluZykge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBbLi4ucHJldkNhcmRzTG9hZGluZywgY2FyZFJlc291cmNlSWRdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IHByZXZDYXJkc0xvYWRpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICB9XG4gIH0sIFtpc1VwZGF0ZUxvYWRpbmddKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzTWVyZ2VMb2FkaW5nKSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gWy4uLnByZXZDYXJkc0xvYWRpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U/LihwcmV2Q2FyZHNMb2FkaW5nID0+IHByZXZDYXJkc0xvYWRpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICB9XG4gIH0sIFtpc01lcmdlTG9hZGluZ10pXG5cbiAgY29uc3Qgd29ya2luZ1JlZiA9IGNhblVzZUVkaXRCcmFuY2ggPyB3b3JraW5nUmVzb3VyY2VCcmFuY2ggOiBhcHBSZWZcbiAgbGV0IHNjcmlwdHVyZVRpdGxlXG5cbiAgaWYgKCFjYW5Vc2VFZGl0QnJhbmNoICYmICFyZWFkeUZvckZldGNoKSB7IC8vIGlmIGJpYmxlIG5vdCBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIG1ha2Ugc3VyZSBpdCdzIHJlYWR5XG4gICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlIH0pXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIGJvb2sgY2hhbmdlZGAsIHsgYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZCB9KVxuXG4gICAgaWYgKGNhblVzZUVkaXRCcmFuY2gpIHsgLy8gaWYgYmlibGUgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCByZWZyZXNoIGl0XG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLCBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEgfSlcbiAgICB9XG4gIH0sIFtib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFcXVhbChyZWZlcmVuY2UsIGN1cnJlbnRSZWZlcmVuY2UpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCByZWZlcmVuY2UgY2hhbmdlZGAsIHJlZmVyZW5jZSlcbiAgICAgIHNldFN0YXRlKHsgY3VycmVudFJlZmVyZW5jZTogcmVmZXJlbmNlIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3YWl0aW5nIGZvciBicmFuY2ggZmV0Y2ggdG8gY29tcGxldGVcbiAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBicmFuY2hEZXRlcm1pbmVkIGlzICR7YnJhbmNoRGV0ZXJtaW5lZH0gYW5kIHdvcmtpbmdSZWYgaXMgJHt3b3JraW5nUmVmfSBhbmQgcmVhZHlGb3JGZXRjaCBpcyAke3JlYWR5Rm9yRmV0Y2h9YClcblxuICAgIGlmICghcmVhZHlGb3JGZXRjaCAmJiBicmFuY2hEZXRlcm1pbmVkICkge1xuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlLCByZWY6IHdvcmtpbmdSZWYgfSlcbiAgICB9XG4gIH0sIFticmFuY2hEZXRlcm1pbmVkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBpZiAoX3VzaW5nVXNlckJyYW5jaCAhPT0gdXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCB9KVxuICAgIH1cbiAgfSwgW191c2luZ1VzZXJCcmFuY2gsIHVzaW5nVXNlckJyYW5jaF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGRpc3BsYXkgc3RhdHVzIGlmIGVycm9yXG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXG5cbiAgICBpZiAoZXJyb3IpIHsgLy8gaWYgZXJyb3Igd2FzIGZvdW5kIGRvIGNhbGxiYWNrXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcbiAgICAgIGNvbnN0IHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVDb25maWcpXG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVF8pXG4gICAgICBjb25zdCBpc0FjY2Vzc0Vycm9yID0gcmVzb3VyY2VTdGF0dXNbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl1cbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobWVzc2FnZSwgaXNBY2Nlc3NFcnJvciwgcmVzb3VyY2VTdGF0dXMpXG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXV0pXG5cbiAgaWYgKHNjcmlwdHVyZUNvbmZpZy50aXRsZSAmJiBzY3JpcHR1cmVDb25maWcudmVyc2lvbikge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYCR7c2NyaXB0dXJlQ29uZmlnLnRpdGxlfSB2JHtzY3JpcHR1cmVDb25maWcudmVyc2lvbn1gXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QudXBkYXRlVGl0bGUoc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluaywgc2NyaXB0dXJlVGl0bGUpXG4gIH0gZWxzZSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgVGl0bGUgbWlzc2luZyBmcm9tIHByb2plY3QgbWFuaWZlc3RgXG4gIH1cblxuICAvKiogRHluYW1pY2FsbHkgY3JlYXRlcyB0aGUgc2NyaXB0dXJlIHNlbGVjdGlvbiBkcm9wZG93biB0byBiZSBpbnNlcnRlZCBpbnRvIGNhcmQgc2V0dGluZ3MgKi9cbiAgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlU2VsZWN0b3IoKSB7XG4gICAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnID0gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgICAgIGxhYmVsLFxuICAgICAgcmVzb3VyY2VMaW5rOiBzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLFxuICAgICAgc2V0U2NyaXB0dXJlLFxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gICAgfSlcblxuICAgIHJldHVybiA8U2NyaXB0dXJlU2VsZWN0b3Igey4uLnNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZ30gc3R5bGU9e3N0eWxlfSBlcnJvck1lc3NhZ2U9e3VybEVycm9yfSAvPlxuICB9XG5cbiAgZnVuY3Rpb24gb25NZW51Q2xvc2UoKSB7XG4gICAgLy8gY29uc29sZS5sb2coYG9uTWVudUNsb3NlKClgKVxuICAgIHNldFN0YXRlKHsgdXJsRXJyb3I6IG51bGwgfSlcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbGFuZ3VhZ2VJZF8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UoeyBsYW5ndWFnZUlkOiBsYW5ndWFnZUlkXyB9KVxuICBjb25zdCBkaXJlY3Rpb24gPSAobGFuZ3VhZ2U/LmRpcmVjdGlvbikgfHwgJ2x0cidcbiAgY29uc3QgX3JlZmVyZW5jZSA9IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlXG5cbiAgY29uc3QgaXNIZWJyZXcgPSAobGFuZ3VhZ2VJZF8gPT09ICdoYm8nKVxuICBjb25zdCBmb250RmFjdG9yID0gaXNIZWJyZXcgPyAxLjQgOiAxIC8vIHdlIGF1dG9tYXRpY2FsbHkgc2NhbGUgdXAgZm9udCBzaXplIGZvciBIZWJyZXdcbiAgY29uc3Qgc2NhbGVkRm9udFNpemUgPSBmb250U2l6ZSAqIGZvbnRGYWN0b3JcblxuICBjb25zdCBpdGVtcyA9IG51bGxcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBoZWFkZXJzLCBmaWx0ZXJzLCBpdGVtSW5kZXgsIG1hcmtkb3duVmlldyxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHNldEZpbHRlcnMsIHNldEl0ZW1JbmRleCwgc2V0TWFya2Rvd25WaWV3LFxuICAgIH0sXG4gIH0gPSB1c2VDYXJkU3RhdGUoeyBpdGVtcyB9KVxuXG4gIGNvbnN0IHJlZlN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtNYXRoLnJvdW5kKHNjYWxlZEZvbnRTaXplICogMC45KX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3QgY29udGVudFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtzY2FsZWRGb250U2l6ZX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3Qgc2NyaXB0dXJlTGFiZWwgPSA8VGl0bGU+e3NjcmlwdHVyZVRpdGxlfTwvVGl0bGU+XG4gIGxldCBkaXNhYmxlV29yZFBvcG92ZXJfID0gZGlzYWJsZVdvcmRQb3BvdmVyXG4gIGNvbnN0IHVzaW5nT3JpZ2luYWxCaWJsZSA9IGlzT3JpZ2luYWxCaWJsZShzY3JpcHR1cmVDb25maWdbJ3Jlc291cmNlJ10/LnByb2plY3RJZClcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgY29uc3QgZW5hYmxlRWRpdCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3QgZW5hYmxlQWxpZ25tZW50ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcbiAgY29uc3Qgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSW5kZXgsXG4gICAgY3VycmVudFZlcnNlUmVmOiBfcmVmZXJlbmNlLFxuICAgIGVuYWJsZUVkaXQsXG4gICAgZW5hYmxlQWxpZ25tZW50LFxuICAgIGh0dHBDb25maWcsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW5hbFJlcG9VcmwsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBzZXRTYXZlZENoYW5nZXM6IF9zZXRTYXZlZENoYW5nZXMsXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxuICAgIHRhcmdldExhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICB0aXRsZTogc2NyaXB0dXJlVGl0bGUsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gIH1cblxuICAvKipcbiAgICogdGhpcyBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIHNjcmlwdHVyZSBwYW5lIGhhcyBhIGNoYW5nZSBpbiBzYXZlIHN0YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZXRDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlciBjbGlja3Mgc2F2ZSBidXR0b25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2xlYXJDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgc2F2ZSBoYXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxuICAgKi9cbiAgZnVuY3Rpb24gX3NldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsIHNhdmVkLCB7IGdldENoYW5nZXMgPSBudWxsLCBjbGVhckNoYW5nZXMgPSBudWxsLCBzdGF0ZSA9IG51bGwgfSkge1xuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgZGVsZXRlIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF0gPSB7IGdldENoYW5nZXMsIGNsZWFyQ2hhbmdlcywgc3RhdGUgfSAvLyB1cGRhdGUgd2l0aCBsYXRlc3RcbiAgICB9XG5cbiAgICBjb25zdCBfaGF2ZVVuc2F2ZWRDaGFuZ2VzID0gISFPYmplY3Qua2V5cyhfdW5zYXZlZENoYW5nZXNMaXN0KS5sZW5ndGhcblxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhyZXNvdXJjZUlkLCAhX2hhdmVVbnNhdmVkQ2hhbmdlcylcbiAgICAgIHNldFN0YXRlKHsgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBfaGF2ZVVuc2F2ZWRDaGFuZ2VzIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF91bnNhdmVkQ2hhbmdlc0xpc3QsIHVuc2F2ZWRDaGFuZ2VzTGlzdCkpIHtcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNlYXJjaCBjaGFwdGVyIG9yIHZlcnNlIGNodW5rIHRvIGxpbmUgdGhhdCBzdGFydHMgd2l0aCBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNodW5rc1xuICAgKi9cbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xuICAgIGNvbnN0IHJlZl8gPSBmaW5kSXRlbSArICcnXG4gICAgY29uc3QgcmVmTGVuID0gcmVmXy5sZW5ndGhcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwKSB7XG4gICAgICAgIGlmIChjaHVuay5zdWJzdHJpbmcoMCwgcmVmTGVuKSA9PT0gcmVmXykge1xuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxuXG4gICAgICAgICAgaWYgKChuZXh0Q2hhciA+ICc5JykgfHwgKG5leHRDaGFyIDwgJzAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgYm9va0NhcHMgPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZT8ucHJvamVjdElkID8gc2NyaXB0dXJlQ29uZmlnLnJlZmVyZW5jZS5wcm9qZWN0SWQudG9VcHBlckNhc2UoKSA6ICcnXG4gICAgcmV0dXJuIGAke2Jvb2tJbmRleH0tJHtib29rQ2Fwc30udXNmbWBcbiAgfVxuXG4gIGNvbnN0IGZpbGVwYXRoID0gZ2V0Qm9va05hbWUoKVxuXG4gIC8vIGtlZXAgdHJhY2sgb2YgdmVyc2UgZWRpdCBzdGF0ZVxuICBjb25zdCB7XG4gICAgZXJyb3I6IHNhdmVFcnJvcixcbiAgICBpc0Vycm9yOiBpc1NhdmVFcnJvcixcbiAgICBvblNhdmVFZGl0LFxuICB9ID0gdXNlRWRpdCh7XG4gICAgc2hhLFxuICAgIG93bmVyLFxuICAgIGNvbnRlbnQ6IHNhdmVDb250ZW50LFxuICAgIGNvbmZpZzoge1xuICAgICAgY2FjaGU6IHsgbWF4QWdlOiAwIH0sXG4gICAgICAuLi5hdXRoZW50aWNhdGlvbj8uY29uZmlnLFxuICAgICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRpbWVvdXQ6IGh0dHBDb25maWc/LnNlcnZlclRpbWVPdXQgfHwgaHR0cENvbmZpZz8udGltZW91dCB8fCAxMDAwMCxcbiAgICAgIHNlcnZlcixcbiAgICB9LFxuICAgIGF1dGhvcjogbG9nZ2VkSW5Vc2VyLFxuICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgYnJhbmNoOiB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgZmlsZXBhdGgsXG4gICAgcmVwbyxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHdlIGdldCBhIHNhdmUgc2F2ZUVycm9yXG4gICAgaWYgKHNhdmVFcnJvciAmJiBpc1NhdmVFcnJvcikge1xuICAgICAgY29uc29sZS5sb2coYHNhdmUgZXJyb3JgLCBzYXZlRXJyb3IpXG4gICAgICAvLyBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3Igc2F2aW5nICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH0gJHtzYXZlRXJyb3J9YCwgdHJ1ZSlcbiAgICB9XG4gIH0sIFtzYXZlRXJyb3IsIGlzU2F2ZUVycm9yXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHN0YXJ0U2F2ZSBnb2VzIHRydWUsIHNhdmUgZWRpdHMgdG8gdXNlciBicmFuY2ggYW5kIHRoZW4gY2xlYXIgc3RhcnRTYXZlXG4gICAgY29uc3QgX3NhdmVFZGl0ID0gYXN5bmMgKCkgPT4geyAvLyBiZWdpbiB1cGxvYWRpbmcgbmV3IFVTRk1cbiAgICAgIGNvbnNvbGUuaW5mbyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBVc2luZyBzaGE6ICR7c2hhfWApXG4gICAgICBhd2FpdCBvblNhdmVFZGl0KHVzZXJFZGl0QnJhbmNoTmFtZSkudGhlbigoc3VjY2VzcykgPT4geyAvLyBwdXNoIGNoYW5nZWQgdG8gc2VydmVyXG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzY3JpcHR1cmUgZWRpdHMgc3VjY2Vzc2ApXG4gICAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY2xlYXJDaGFuZ2VzIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZEluZGV4XVxuICAgICAgICAgICAgICBjbGVhckNoYW5nZXMgJiYgY2xlYXJDaGFuZ2VzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmluZm8oJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gUmVsb2FkaW5nIHJlc291cmNlJylcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgIHJlZjogdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgICAgIHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2Uoc2hhKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkJylcbiAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICAgICAgc2V0U3RhdGUoeyBzdGFydFNhdmU6IGZhbHNlIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0U2F2ZSkge1xuICAgICAgaWYgKCFlZGl0QnJhbmNoUmVhZHkpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIG5vdCB5ZXQgY3JlYXRlZGApXG4gICAgICB9IGVsc2UgaWYgKCFzaGEpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHNhdmUgc2hhIG5vdCB5ZXQgcmVhZHlgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNhbGxpbmcgX3NhdmVFZGl0KClgKVxuICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gWy4uLnByZXZDYXJkc1NhdmluZywgY2FyZFJlc291cmNlSWRdKVxuICAgICAgICBfc2F2ZUVkaXQoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3N0YXJ0U2F2ZSwgZWRpdEJyYW5jaFJlYWR5LCBzaGFdKVxuXG4gIC8qKlxuICAgKiBjb252ZXJ0IHVwZGF0ZWRWZXJzZU9iamVjdHMgdG8gVVNGTSBhbmQgbWVyZ2UgaW50byB0aGUgYmlibGVVc2ZtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZVVzZm0gLSBVU0ZNIG9mIGJpYmxlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWYgLSByZWZlcmVuY2Ugb2YgdmVyc2UgdG8gbWVyZ2UgaW5cbiAgICogQHBhcmFtIHtvYmplY3RbXX0gdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG5ldyB2ZXJzZSBpbiB2ZXJzZU9iamVjdCBmb3JtYXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhcmROdW1cbiAgICovXG4gIGZ1bmN0aW9uIG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm0sIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bTogbnVtYmVyKSB7XG4gICAgbGV0IG5ld1VzZm1cbiAgICBjb25zdCBjaGFwdGVyQ2h1bmtzID0gYmlibGVVc2ZtPy5zcGxpdCgnXFxcXGMgJylcbiAgICBjb25zdCBjaGFwdGVySW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LmNoYXB0ZXIsIGNoYXB0ZXJDaHVua3MpXG5cbiAgICBpZiAoY2hhcHRlckluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyID0gY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdXG4gICAgICBjb25zdCB2ZXJzZUNodW5rcyA9IGN1cnJlbnRDaGFwdGVyLnNwbGl0KCdcXFxcdiAnKVxuICAgICAgY29uc3QgdmVyc2VJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8udmVyc2UsIHZlcnNlQ2h1bmtzKVxuXG4gICAgICBpZiAodmVyc2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTSh1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gbmV3IFVTRk0gZm9yIGNhcmQ6fSAtICR7bmV3VmVyc2VVc2ZtLnN1YnN0cmluZygwLCAxMDApfWApXG4gICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbdmVyc2VJbmRleF1cbiAgICAgICAgY29uc3QgdmVyc2VOdW1MZW4gPSAocmVmPy52ZXJzZSArICcnKS5sZW5ndGhcbiAgICAgICAgdmVyc2VDaHVua3NbdmVyc2VJbmRleF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgdmVyc2VOdW1MZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICBjb25zdCBuZXdDaGFwdGVyID0gdmVyc2VDaHVua3Muam9pbignXFxcXHYgJylcbiAgICAgICAgY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdID0gbmV3Q2hhcHRlclxuICAgICAgICBuZXdVc2ZtID0gY2hhcHRlckNodW5rcy5qb2luKCdcXFxcYyAnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3VXNmbVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZm9yIGVhY2ggdW5zYXZlZCBjaGFuZ2UsIGNhbGwgaW50byBzY3JpcHR1cmVQYW5lIHRvIGdldCBsYXRlc3QgY2hhbmdlcyBmb3IgdmVyc2UgdG8gc2F2ZVxuICAgIGFzeW5jIGZ1bmN0aW9uIGdldFJlYWR5Rm9yU2F2ZSgpIHtcbiAgICAgIGlmIChzYXZlQ2xpY2tlZCkge1xuICAgICAgICBsZXQgY3JlYXRlRWRpdEJyYW5jaCA9ICFfdXNpbmdVc2VyQnJhbmNoXG5cbiAgICAgICAgaWYgKCFjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIGFscmVhZHkgdXNpbmcgdGhlIHVzZXIgYnJhbmNoXG4gICAgICAgICAgaWYgKHdvcmtpbmdSZXNvdXJjZUJyYW5jaCAhPT0gdXNlckVkaXRCcmFuY2hOYW1lKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHN0YXRlIGNvbmZsaWN0IC0gc2hvdWxkIGJlIGluIHVzZXIgYnJhbmNoICR7dXNlckVkaXRCcmFuY2hOYW1lfSwgYnV0IGFjdHVhbGx5IHVzaW5nICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgICBjcmVhdGVFZGl0QnJhbmNoID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gYWxyZWFkeSB1c2luZyBlZGl0IGJyYW5jaDogJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIHNldFN0YXRlKHsgZWRpdEJyYW5jaFJlYWR5OiB0cnVlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgbm90IHlldCB1c2luZyB0aGUgdXNlciBicmFuY2gsIGNyZWF0ZSBpdFxuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjcmVhdGluZyBlZGl0IGJyYW5jaGApXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgICAgICAgc2hhOiBudWxsLFxuICAgICAgICAgIH0pIC8vIHdlIHdpbGwgbmVlZCBhIG5ldyBzaGEgZm9yIGJvb2svYnJhbmNoXG5cbiAgICAgICAgICBjb25zdCBicmFuY2ggPSBhd2FpdCBzdGFydEVkaXRCcmFuY2goKVxuXG4gICAgICAgICAgaWYgKGJyYW5jaCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIGNyZWF0ZWRgKVxuICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IHRydWUsXG4gICAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgICAgICAgIHJlZjogYnJhbmNoLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGZhaWxlZCB0byBjcmVhdGUgZWRpdCBicmFuY2hgKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBnZXR0aW5nIHZlcnNlIGNoYW5nZXNgKVxuICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgbGV0IGJpYmxlVXNmbSA9IGNvcmUuZ2V0UmVzcG9uc2VEYXRhKHNjcmlwdHVyZUNvbmZpZz8uZmV0Y2hSZXNwb25zZSlcbiAgICAgICAgICBsZXQgbWVyZ2VGYWlsID0gZmFsc2VcbiAgICAgICAgICBsZXQgY2FyZE51bSA9IDBcblxuICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmIGJpYmxlVXNmbSkgeyAvLyBqdXN0IHJlcGxhY2UgdmVyc2VcbiAgICAgICAgICAgICAgICBuZXdVc2ZtID0gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKG5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICBiaWJsZVVzZm0gPSBuZXdVc2ZtXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbWVyZ2VGYWlsID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobWVyZ2VGYWlsKSB7IC8vIGlmIHdlIGZhaWxlZCB0byBtZXJnZSwgZmFsbGJhY2sgdG8gYnJ1dGUgZm9yY2UgdmVyc2Ugb2JqZWN0cyB0byBVU0ZNXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gdmVyc2Ugbm90IGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gaW5zZXJ0aW5nIHZlcnNlIG9iamVjdGApXG4gICAgICAgICAgICBsZXQgbmV3Qm9va0pzb25cblxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIW5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICAgIGxldCB0YXJnZXRWZXJzZU9iamVjdHNfID0gbnVsbFxuXG4gICAgICAgICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWZXJzZVRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSh1cGRhdGVkVmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV3Qm9va0pzb24gPSB0YXJnZXRWZXJzZU9iamVjdHNfICYmIHNjcmlwdHVyZUNvbmZpZz8udXBkYXRlVmVyc2UocmVmLmNoYXB0ZXIsIHJlZi52ZXJzZSwge3ZlcnNlT2JqZWN0czogdGFyZ2V0VmVyc2VPYmplY3RzX30pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJpYmxlVXNmbSA9IHVzZm1qcy50b1VTRk0obmV3Qm9va0pzb24sIHtmb3JjZWROZXdMaW5lczogdHJ1ZX0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIG5ldyBVU0ZNOiAke2JpYmxlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKVxuICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgICAgc2V0U3RhdGUoe3NhdmVDb250ZW50OiBiaWJsZVVzZm0sIHN0YXJ0U2F2ZTogdHJ1ZSwgc2F2ZUNsaWNrZWQ6IGZhbHNlfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGdldFJlYWR5Rm9yU2F2ZSgpXG4gIH0sIFtzYXZlQ2xpY2tlZF0pXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCB7IGNoYXB0ZXIgfSA9IF9yZWZlcmVuY2UgfHwge31cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuICAgIGxldCBuZXdTZWxlY3Rpb25zID0gbmV3IE1hcCgpXG4gICAgbGV0IHVwZGF0ZVNlbGVjdGlvbnMgPSBmYWxzZVxuICAgIGNvbnN0IF9tYXAgPSBuZXdTZWxlY3Rpb25zXG4gICAgY29uc3Qgb3JpZ2luYWxCb29rSWQgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5jaGFwdGVyc1xuICAgIGxldCBuZXdTZWxlY3RlZFF1b3RlID0gbnVsbFxuXG4gICAgLy8gaWYgd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHNlbGVjdGlvbnNcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoICYmXG4gICAgICBib29rVmVyc2VPYmplY3QgJiZcbiAgICAgIChib29rSWQgPT09IG9yaWdpbmFsQm9va0lkKSAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdICYmIC8vIHdlIG5lZWQgdG8gaGF2ZSBkYXRhIGZvciBjaGFwdGVyXG4gICAgICBzZWxlY3RlZFF1b3RlPy5xdW90ZVxuICAgICkge1xuICAgICAgLy8gaWYgcXVvdGUgaXMgZGlmZmVyZW50IHRoYW4gbGFzdFxuICAgICAgaWYgKCFpc0VxdWFsKGxhc3RTZWxlY3RlZFF1b3RlLCBzZWxlY3RlZFF1b3RlKSB8fFxuICAgICAgICAhaXNFcXVhbCh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVmVyc2VzID0ge31cbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZSA9IHt9IC8vIGtlZXAgdHJhY2sgb2YgdmVyc2Ugc3Vic3RpdHV0aW9uc1xuICAgICAgICBsZXQgc3RhcnRWZXJzZSA9IF92ZXJzZXNGb3JSZWZbMF0udmVyc2VcblxuICAgICAgICBpZiAodHlwZW9mIHN0YXJ0VmVyc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgc3RhcnRWZXJzZSA9IHBhcnNlSW50KHN0YXJ0VmVyc2UpXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGFzdFZlcnNlID0gc3RhcnRWZXJzZVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gX3ZlcnNlc0ZvclJlZi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBjb25zdCB2ZXJzZVJlZiA9IF92ZXJzZXNGb3JSZWZbaV1cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjaGFwdGVyLFxuICAgICAgICAgICAgdmVyc2UsXG4gICAgICAgICAgfSA9IHZlcnNlUmVmXG4gICAgICAgICAgLy8gVFJJQ0tZIC0gd2UgcmVtYXAgdmVyc2VzIGluIHJlZmVyZW5jZSByYW5nZSB0byBhIGxpbmVhciBzZXJpZXMgb2YgdmVyc2VzIHNvIHZlcnNlIHNwYW5zIGRvbid0IGNob2tlIGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZlxuICAgICAgICAgIGxldCBfdmVyc2UgPSBzdGFydFZlcnNlICsgaVxuICAgICAgICAgIGxhc3RWZXJzZSA9IF92ZXJzZVxuICAgICAgICAgIHN1YnN0aXR1dGVbYCR7Y2hhcHRlcn06JHtfdmVyc2V9YF0gPSBgJHtjaGFwdGVyfToke3ZlcnNlfWBcblxuICAgICAgICAgIGlmICghb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0pIHtcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgICAgIGlmICgodHlwZW9mIHZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va1ZlcnNlT2JqZWN0LCBgJHtjaGFwdGVyfToke3ZlcnNlfWApXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdmVyc2VJdGVtIG9mIHZlcnNlcykge1xuICAgICAgICAgICAgICBjb25zdCB2byA9IHZlcnNlSXRlbS52ZXJzZURhdGEudmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQodm8pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXVt2ZXJzZV0/LnZlcnNlT2JqZWN0c1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl1bX3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzIH1cbiAgICAgICAgICAgIF9tYXAuc2V0KGAke2NoYXB0ZXJ9OiR7dmVyc2V9YCwgdmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgcmVmZXJlbmNlIHJhbmdlIGZvciBuZXcgbGluZWFyIHZlcnNlIHJhbmdlXG4gICAgICAgIGNvbnN0IFtjaGFwdGVyXSA9IHNlbGVjdGVkUXVvdGU/LnJlZmVyZW5jZT8uc3BsaXQoJzonKVxuICAgICAgICBsZXQgc3ViUmVmID0gYCR7Y2hhcHRlcn06JHtzdGFydFZlcnNlfWBcblxuICAgICAgICBpZiAobGFzdFZlcnNlICE9IHN0YXJ0VmVyc2UpIHtcbiAgICAgICAgICBzdWJSZWYgKz0gYC0ke2xhc3RWZXJzZX1gXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdW90ZU1hdGNoZXMgPSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYoe1xuICAgICAgICAgIGJvb2tPYmplY3Q6IG9yaWdpbmFsVmVyc2VzLFxuICAgICAgICAgIHJlZjogc3ViUmVmLFxuICAgICAgICAgIHF1b3RlOiBzZWxlY3RlZFF1b3RlPy5xdW90ZSxcbiAgICAgICAgICBvY2N1cnJlbmNlOiBzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBuZXcgTWFwKClcblxuICAgICAgICBpZiAocXVvdGVNYXRjaGVzPy5zaXplKSB7XG4gICAgICAgICAgcXVvdGVNYXRjaGVzLmZvckVhY2goKHdvcmRzLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9rZXkgPSBzdWJzdGl0dXRlW2tleV1cblxuICAgICAgICAgICAgc2VsZWN0aW9ucy5zZXQoX2tleSwgd29yZHMubWFwKHdvcmQgPT4gKFxuICAgICAgICAgICAgICB7IC4uLndvcmQsIHRleHQ6IGNvcmUubm9ybWFsaXplU3RyaW5nKHdvcmQudGV4dCkgfVxuICAgICAgICAgICAgKSkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBuZXdTZWxlY3Rpb25zID0gc2VsZWN0aW9uc1xuICAgICAgICBuZXdTZWxlY3RlZFF1b3RlID0gc2VsZWN0ZWRRdW90ZVxuICAgICAgICB1cGRhdGVTZWxlY3Rpb25zID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5ld1N0YXRlOiBhbnkgPSB7fVxuXG4gICAgLy8gdXBkYXRlIHN0YXRlcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgIGlmICghYXJlTWFwc1RoZVNhbWUodmVyc2VPYmplY3RzTWFwLCBfbWFwKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VPYmplY3RzTWFwID0gX21hcFxuICAgIH1cblxuICAgIGNvbnN0IGJvb2tzTm90U2FtZSA9IHJlZmVyZW5jZT8ucHJvamVjdElkICE9PSBjdXJyZW50UmVmZXJlbmNlPy5wcm9qZWN0SWRcblxuICAgIGlmIChib29rc05vdFNhbWUgfHwgIWFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VzRm9yUmVmID0gX3ZlcnNlc0ZvclJlZlxuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgIH1cblxuICAgIGlmIChuZXdTZWxlY3RlZFF1b3RlKSB7XG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlU2VsZWN0aW9ucykge1xuICAgICAgaWYgKCFhcmVNYXBzVGhlU2FtZShzZWxlY3Rpb25zIHx8IChuZXcgTWFwKCkpLCBuZXdTZWxlY3Rpb25zKSkge1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhuZXdTdGF0ZSkubGVuZ3RoKSB7XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICB9XG4gIH0sIFtcbiAgICBvd25lcixcbiAgICByZXNvdXJjZUlkLFxuICAgIGJvb2tJZCxcbiAgICBsYW5ndWFnZUlkXyxcbiAgICBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZixcbiAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICAgIHNlbGVjdGVkUXVvdGUsXG4gIF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gY2xlYXIgc2V0dGluZ3Mgb24gdmVyc2UgY2hhbmdlXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgfSlcbiAgfSwgW19yZWZlcmVuY2VdKVxuXG4gIGNvbnN0IHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyA9IChyZWZlcmVuY2UsIGFsaWduZWQpID0+IHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7XG4gICAgICAuLi5wcmV2U3RhdGUsXG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IHsgLi4ucHJldlN0YXRlLnZlcnNlc0FsaWdubWVudFN0YXR1cywgW2Ake3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gXTogYWxpZ25lZCB9LFxuICAgIH0pKVxuICB9XG5cbiAgbGV0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9ID0gc2NyaXB0dXJlQ29uZmlnIHx8IHt9XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZC5fdmVyc2VzRm9yUmVmIGNoYW5nZWRgLCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0pXG4gICAgfVxuICB9LCBbX3ZlcnNlc0ZvclJlZl0pXG5cbiAgaWYgKCFfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHsgLy8gaWYgZW1wdHkgb2YgcmVmZXJlbmNlcywgY3JlYXRlIHNpbmdsZSBlbXB0eSByZWZlcmVuY2VcbiAgICBfdmVyc2VzRm9yUmVmID0gW3sgLi4ucmVmZXJlbmNlIH1dXG4gIH1cblxuICBjb25zdCByZW5kZXJlZFNjcmlwdHVyZVBhbmVzID0gdmVyc2VzRm9yUmVmPy5tYXAoKF9jdXJyZW50VmVyc2VEYXRhLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWZXJzZU9iamVjdHMgPSBfY3VycmVudFZlcnNlRGF0YT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHMgfHwgbnVsbFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBfY3VycmVudFZlcnNlRGF0YSB8fCB7fVxuICAgIGNvbnN0IHByb2plY3RJZCA9IGN1cnJlbnRSZWZlcmVuY2U/LnByb2plY3RJZCB8fCByZWZlcmVuY2U/LnByb2plY3RJZFxuICAgIGNvbnN0IF9yZWZlcmVuY2UgPSB7XG4gICAgICAuLi5fdmVyc2VzRm9yUmVmLFxuICAgICAgY2hhcHRlcixcbiAgICAgIHByb2plY3RJZCxcbiAgICAgIHZlcnNlLFxuICAgIH1cbiAgICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgICBjdXJyZW50SW5kZXg6IGluZGV4LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIHJlZmVyZW5jZTogX3JlZmVyZW5jZSxcbiAgICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIH1cblxuICAgIGxldCBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSBmYWxzZVxuXG4gICAgaWYgKHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQpIHtcbiAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQuY2hhcHRlciA9PSBjaGFwdGVyICYmIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQudmVyc2UgPT0gdmVyc2VcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgey4uLnNjcmlwdHVyZUNvbmZpZ31cbiAgICAgICAgY29udGVudFN0eWxlPXtjb250ZW50U3R5bGV9XG4gICAgICAgIGN1cnJlbnRJbmRleD17aW5kZXh9XG4gICAgICAgIGRldGVybWluaW5nQnJhbmNoPXshcmVhZHlGb3JGZXRjaH1cbiAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyX31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgIGlzTlQ9e2lzTlRffVxuICAgICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ9e2lzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudH1cbiAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgb25BbGlnbm1lbnRGaW5pc2g9eygpID0+IHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCB9KX1cbiAgICAgICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz17b3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0c31cbiAgICAgICAgcmVmU3R5bGU9e3JlZlN0eWxlfVxuICAgICAgICByZWZlcmVuY2U9e19yZWZlcmVuY2V9XG4gICAgICAgIHNhdmluZz17c3RhcnRTYXZlfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc9e19zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnfVxuICAgICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cz17c2V0V29yZEFsaWduZXJTdGF0dXN9XG4gICAgICAgIHNlcnZlcj17c2VydmVyfVxuICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzPXt1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAvPlxuICAgIClcbiAgfSlcblxuICBjb25zdCBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA+IDEpIHtcbiAgICAgIHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiB0cnVlIH0pXG4gICAgfSBlbHNlIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZXNGb3JSZWZbMF0gfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBvblJlbmRlclRvb2xiYXIgPSAoeyBpdGVtcyB9KSA9PiB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSBbLi4uaXRlbXNdXG5cbiAgICBsZXQgYWxsVmVyc2VzQWxpZ25lZCA9IGZhbHNlXG5cbiAgICAvLyBDaGVjayBpZiBhbGwgdmFsdWVzIGluIHZlcnNlc0FsaWdubWVudFN0YXR1cyBhcmUgdHJ1ZVxuICAgIGlmICh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpIHtcbiAgICAgIGFsbFZlcnNlc0FsaWduZWQgPSBPYmplY3QudmFsdWVzKHZlcnNlc0FsaWdubWVudFN0YXR1cykuZXZlcnkoYWxpZ25TdGF0dXMgPT4gYWxpZ25TdGF0dXMgPT09IHRydWUpXG4gICAgfVxuXG4gICAgbGV0IGFsaWduSWNvbiA9IG51bGxcbiAgICBsZXQgYWxpZ25CdXR0b25UZXh0ID0gJydcblxuICAgIGlmIChhbGxWZXJzZXNBbGlnbmVkKSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rMiBpZD17YHZhbGlkX2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjQkJCJyAvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBWYWxpZCdcbiAgICB9IGVsc2Uge1xuICAgICAgYWxpZ25JY29uID0gPFJ4TGlua0JyZWFrMiBpZD17YGludmFsaWRfYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjMDAwJyAvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBJbnZhbGlkJ1xuICAgIH1cblxuICAgIGlmIChzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiByZXNvdXJjZUlkICE9PSAnT1JJR0lOQUxfU09VUkNFJykge1xuICAgICAgbmV3SXRlbXMucHVzaChcbiAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICBpZD17YGFsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfVxuICAgICAgICAgIGtleT0nY2hlY2tpbmctYnV0dG9uJ1xuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFsaWduQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgdGl0bGU9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBhcmlhLWxhYmVsPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHthbGlnbkljb259XG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIClcbiAgICB9XG5cbiAgICBuZXdJdGVtcy5wdXNoKFxuICAgICAgPD5cbiAgICAgICAgPFVwZGF0ZUJyYW5jaEJ1dHRvbiB7Li4udXBkYXRlQnV0dG9uUHJvcHN9IGlzTG9hZGluZz17aXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZX0vPlxuICAgICAgICA8RXJyb3JEaWFsb2cgdGl0bGU9e2RpYWxvZ1RpdGxlfSBjb250ZW50PXtkaWFsb2dNZXNzYWdlfSBvcGVuPXtpc0Vycm9yRGlhbG9nT3Blbn0gb25DbG9zZT17b25DbG9zZUVycm9yRGlhbG9nfSBpc0xvYWRpbmc9eyBpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlIH0gbGluaz17ZGlhbG9nTGlua30gbGlua1Rvb2x0aXA9e2RpYWxvZ0xpbmtUb29sdGlwfSAvPlxuICAgICAgPC8+XG4gICAgKVxuXG4gICAgcmV0dXJuIG5ld0l0ZW1zO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0aW9uc0NvbnRleHRQcm92aWRlclxuICAgICAgc2VsZWN0aW9ucz17c2VsZWN0aW9uc31cbiAgICAgIG9uU2VsZWN0aW9ucz17bmV3U2VsZWN0aW9ucyA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvblNlbGVjdGlvbnMnLCBuZXdTZWxlY3Rpb25zKVxuICAgICAgfX1cbiAgICAgIHF1b3RlPXtzZWxlY3RlZFF1b3RlPy5xdW90ZX1cbiAgICAgIG9jY3VycmVuY2U9e2ZpeE9jY3VycmVuY2Uoc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSl9XG4gICAgICB2ZXJzZU9iamVjdHNNYXA9e3ZlcnNlT2JqZWN0c01hcH1cbiAgICA+XG4gICAgICA8Q2FyZFxuICAgICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgICB0aXRsZT17c2NyaXB0dXJlTGFiZWx9XG4gICAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgICAgc2V0Rm9udFNpemU9e3NldEZvbnRTaXplfVxuICAgICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICAgIHNldE1hcmtkb3duVmlldz17c2V0TWFya2Rvd25WaWV3fVxuICAgICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCwgc2NyaXB0dXJlVGl0bGUpIDogbnVsbH1cbiAgICAgICAgZWRpdGFibGU9e2VuYWJsZUVkaXQgfHwgZW5hYmxlQWxpZ25tZW50fVxuICAgICAgICBzYXZlZD17c3RhcnRTYXZlIHx8ICFoYXZlVW5zYXZlZENoYW5nZXN9XG4gICAgICAgIG9uU2F2ZUVkaXQ9eygpID0+IHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IHRydWUgfSl9XG4gICAgICAgIG9uUmVuZGVyVG9vbGJhcj17b25SZW5kZXJUb29sYmFyfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPVwic2NyaXB0dXJlLXBhbmUtbGlzdFwiPlxuICAgICAgICAgIHtyZW5kZXJlZFNjcmlwdHVyZVBhbmVzfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvQ2FyZD5cbiAgICAgIDxWZXJzZVNlbGVjdG9yUG9wdXBcbiAgICAgICAgcmVzb3VyY2VJZD17cmVzb3VyY2VJZH1cbiAgICAgICAgb3Blbj17c2hvd0FsaWdubWVudFBvcHVwfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UgfSl9XG4gICAgICAgIHZlcnNlc0ZvclJlZj17dmVyc2VzRm9yUmVmfVxuICAgICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3ZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgICAgb25WZXJzZVNlbGVjdD17KHZlcnNlKSA9PiBzZXRTdGF0ZSh7XG4gICAgICAgICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2UsXG4gICAgICAgICAgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZVxuICAgICAgICB9KX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogYXV0aGVudGljYXRpb24gaW5mbyAqL1xuICBhdXRoZW50aWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogc2NyaXB0dXJlIGNhcmQgbnVtYmVyICgwIHRvIDIgZm9yIGV4YW1wbGUpICovXG4gIGNhcmROdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgLyoqIENTUyBjbGFzc2VzICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgZ3JlZWsgcmVwbyAqL1xuICBncmVla1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGhlYnJldyByZXBvICovXG4gIGhlYnJld1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGZ1bmN0aW9uIHRvIG1pbmltaXplIHRoZSBjYXJkIChvcHRpb25hbCkgKi9cbiAgb25NaW5pbWl6ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxuICAgKiAgICAoe3N0cmluZ30gZXJyb3JNZXNzYWdlLCB7Ym9vbGVhbn0gaXNBY2Nlc3NFcnJvciwge29iamVjdH0gcmVzb3VyY2VTdGF0dXMpXG4gICAqICAgICAgLSBpc0FjY2Vzc0Vycm9yIC0gaXMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gYWNjZXNzIGZpbGVcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xuICBvblJlc291cmNlRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGhlIG9yaWdpbmFsIHNjcmlwdHVyZSBib29rT2JqZWN0cyBmb3IgY3VycmVudCBib29rICovXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZmVyZW5jZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcHJvamVjdElkIChib29rSUQpIHRvIHVzZSAqL1xuICAgIHByb2plY3RJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlIG9iamVjdCAqL1xuICByZXNvdXJjZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcmVzb3VyY2UgbGFuZ3VhZ2UgdG8gdXNlICovXG4gICAgbGFuZ3VhZ2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlc291cmNlSWQgdG8gdXNlIChlLmcuIHVnbnQpICovXG4gICAgcmVzb3VyY2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIGZvciBvcmlnaW5hbCBsYW5ndWFnZXMgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2VMaW5rICovXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcbiAgLyoqVGhpcyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgcXVvdGUgKi9cbiAgc2VsZWN0ZWRRdW90ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXG4gIHNlcnZlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIGxvYWRpbmcgc3RhdGUgKi9cbiAgc2V0QXJlUmVzb3VyY2VzTG9hZGluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgc2F2aW5nIHN0YXRlKi9cbiAgc2V0QXJlUmVzb3VyY2VzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIGxvYWRpbmcgc3RhdHVzICovXG4gIHNldENhcmRzTG9hZGluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCBzYXZpbmdpbmcgc3RhdHVzICovXG4gIHNldENhcmRzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIHNldCBzdGF0ZSBpbiBhcHAgdGhhdCB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzICovXG4gIHNldFNhdmVkQ2hhbmdlczogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgd29yZCBhbGlnbmVyIHN0YXRlICovXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHRoZSBjYXJkJ3MgbWVyZ2Ugc3RhdGUgaW4gYXBwICovXG4gIHVwZGF0ZU1lcmdlU3RhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdXNlIG1ldGhvZCBmb3IgdXNpbmcgbG9jYWwgc3RvcmFnZSBzcGVjaWZpYyBmb3IgdXNlciAqL1xuICB1c2VVc2VyTG9jYWxTdG9yYWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufVxuIl19
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "single-scripture-rcl",
3
3
  "description": "A React Component Library for Rendering a Single Scripture Resource.",
4
- "version": "3.4.2",
4
+ "version": "3.4.3",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/unfoldingWord/single-scripture-rcl.git"