@agilemotion/oui-react-js 2.0.9 → 2.0.11

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.
@@ -21,12 +21,14 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
21
21
  const KEY = exports.KEY = 'Ngo9BigBOggjHTQxAR8/V1JGaF5cXGpCf1FpRmJGdld5fUVHYVZUTXxaS00DNHVRdkdlWX5ceHVRQ2BYUUdwX0NWYEs=';
22
22
  (0, _ej2Base.registerLicense)(KEY);
23
23
  function resolveLocation() {
24
+ console.log("RESOLVE DOC HOST : ", process.env.REACT_APP_DOCS_API_HOST);
24
25
  if (process.env.REACT_APP_DOCS_API_HOST) {
25
26
  return process.env.REACT_APP_DOCS_API_HOST;
26
27
  }
27
28
  return window.location.protocol + '//' + window.location.hostname;
28
29
  }
29
30
  function resolveDocSvc() {
31
+ console.log("RESOLVE DOC PATH : ", process.env.REACT_APP_DOCS_API_PATH);
30
32
  if (process.env.REACT_APP_DOCS_API_PATH) {
31
33
  return process.env.REACT_APP_DOCS_API_PATH;
32
34
  }
@@ -34,15 +36,7 @@ function resolveDocSvc() {
34
36
  }
35
37
  const location = exports.location = resolveLocation();
36
38
  const DOCSVC = exports.DOCSVC = resolveDocSvc();
37
-
38
- // When DOCSVC is an absolute URL (production stopgap pointing at the
39
- // Syncfusion-hosted backend while our own docs service is upgraded),
40
- // use it verbatim and skip the host + contextRoot prefix. Trailing
41
- // slash is stripped so `${...}/Import` doesn't produce a double slash.
42
39
  function getDocsBase() {
43
- if (/^https?:\/\//i.test(DOCSVC)) {
44
- return DOCSVC.replace(/\/+$/, '');
45
- }
46
40
  return location + _ApplicationManager.default.getContextRoot() + DOCSVC;
47
41
  }
48
42
  function getServiceUrl() {
@@ -669,4 +663,4 @@ const WordDocumentViewer = props => {
669
663
  }));
670
664
  };
671
665
  var _default = exports.default = WordDocumentViewer;
672
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RQcm9taXNlVHJhY2tlciIsIl9VdGlscyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZWoyUmVhY3REb2N1bWVudGVkaXRvciIsIl9BcHBsaWNhdGlvbk1hbmFnZXIiLCJfZWoyQmFzZSIsIl9BbGVydCIsIl9Mb3R0aWVJY29uIiwiX3VzZVJlc2l6ZU9ic2VydmVyIiwiX3VzZU9uRnVsbHlWaXNpYmxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiS0VZIiwiZXhwb3J0cyIsInJlZ2lzdGVyTGljZW5zZSIsInJlc29sdmVMb2NhdGlvbiIsInByb2Nlc3MiLCJlbnYiLCJSRUFDVF9BUFBfRE9DU19BUElfSE9TVCIsIndpbmRvdyIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJob3N0bmFtZSIsInJlc29sdmVEb2NTdmMiLCJSRUFDVF9BUFBfRE9DU19BUElfUEFUSCIsIkRPQ1NWQyIsImdldERvY3NCYXNlIiwidGVzdCIsInJlcGxhY2UiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJnZXRDb250ZXh0Um9vdCIsImdldFNlcnZpY2VVcmwiLCJhY2Nlc3NUb2tlbiIsInNlc3Npb25TdG9yYWdlIiwiZ2V0SXRlbSIsImlkVG9rZW4iLCJiYXNlIiwiY29uY2F0IiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwicXMiLCJ0b1N0cmluZyIsIkRvY3VtZW50RWRpdG9yQ29udGFpbmVyQ29tcG9uZW50IiwiSW5qZWN0IiwiVG9vbGJhciIsIkxFVkVMX0ZNVCIsImFwcGx5TGV2ZWwiLCJlZCIsImxldmVsIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZGVwdGgiLCJNYXRoIiwibWF4IiwibWluIiwic2VsZWN0aW9uIiwicGFyYWdyYXBoRm9ybWF0IiwibGlzdExldmVsTnVtYmVyIiwiYXBwbHlOdW1iZXJpbmciLCJ1c2VEeW5hbWljU3luY2Z1c2lvbkhlaWdodCIsInBhcmVudFJlZiIsImNvbnRhaW5lclJlZiIsImhlaWdodCIsInNldEhlaWdodCIsInVzZVN0YXRlIiwibWVhc3VyZSIsInVzZUNhbGxiYWNrIiwiY3VycmVudCIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJuZXdIZWlnaHQiLCJmbG9vciIsImNvbnNvbGUiLCJsb2ciLCJ1c2VSZXNpemVPYnNlcnZlciIsInVzZUVmZmVjdCIsInJlc2l6ZSIsImRvY3VtZW50RWRpdG9yIiwiV29yZERvY3VtZW50Vmlld2VyIiwicHJvcHMiLCJjb250YWluZXIiLCJzZXRDb250YWluZXIiLCJSZWFjdCIsIml0ZW1zIiwic2V0SXRlbXMiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsInJlUmVuZGVyaW5nIiwic2V0UmVSZW5kZXJpbmciLCJqc29uIiwic2V0SnNvbiIsImVycm9yTWVzc2FnZSIsInNldEVycm9yTWVzc2FnZSIsImN1cnJlbnRUZXh0IiwidXNlUmVmIiwiYWN0aXZlQW5jaG9yUmVmIiwiYW5jaG9yRW5kIiwiZGVsZXRlTG9ja1JlZiIsImxvYWRpbmciLCJ1c2VPbkZ1bGx5VmlzaWJsZSIsImVsIiwiZWRpdG9ySGVpZ2h0IiwiaXNQb2ludEluc2lkZUVsZW1lbnQiLCJ4IiwieSIsImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSIsImdldFZpZXdlckVsZW1lbnQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiaWQiLCJpc05hdmlnYXRpb25LZXkiLCJpbmNsdWRlcyIsImtleSIsIm5vcm1hbGl6ZUFuY2hvciIsInZhbHVlIiwidmlld2VyRWxlbWVudCIsImluc2VydFJlYWRvbmx5QW5jaG9yIiwiZXZlbnREYXRhIiwiZHJvcFBvc2l0aW9uIiwiZG9jIiwiZWRpdG9yIiwic2VsIiwiY2FyZXRPZmZzZXQiLCJzdGFydE9mZnNldCIsImV4aXN0aW5nQW5jaG9yIiwiZ3JhYkFuY2hvcldpdGhCb3VuZHMiLCJhdFN0YXJ0IiwiYXRFbmQiLCJlbmRPZmZzZXQiLCJ3YXJuIiwidG9rZW4iLCJpbnNlcnRUZXh0IiwiZHJvcERhdGEiLCJhcGkiLCJnZXRWYWx1ZSIsInNhdmVBc0Jhc2U2NCIsInZhbHVlSGFuZGxlciIsIm51bWJlcmluZ0l0ZW1zIiwidGV4dCIsInNlcGFyYXRvciIsInRvb2xiYXJJdGVtcyIsImNvbW1lbnRzT25seSIsInRvb2x0aXBUZXh0IiwicHJlZml4SWNvbiIsImNvbW1hbmQiLCJlbmFibGVVcGxvYWQiLCJ1bnNoaWZ0IiwiX3Byb3BzJGZpbGUiLCJmaWxlIiwiYmFzZTY0IiwiYXJyYXlCdWZmZXIiLCJVdGlscyIsImJhc2U2NFRvQXJyYXlCdWZmZXIiLCJCbG9iIiwidHlwZSIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJ0cmFja1Byb21pc2UiLCJmZXRjaCIsIm1ldGhvZCIsImhlYWRlcnMiLCJib2R5IiwidGhlbiIsInJlc3BvbnNlIiwidGltZXIiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0Iiwic2V0dXBDb250YWluZXIiLCJjdXJyZW50VXNlciIsImdldFVzZXJEZXRhaWxzIiwibmFtZSIsInN1cm5hbWUiLCJhbGxvd1VucmVzb2x2ZWRDaGFuZ2VzIiwicmV2aXNpb25zIiwiX3Byb3BzJGZpbGUyIiwiX3Byb3BzJGZpbGUzIiwic3RvcFByb3RlY3Rpb24iLCJibG9iIiwic2F2ZUFzQmxvYiIsImVuZm9yY2VQcm90ZWN0aW9uIiwiRmlsZSIsImV4dHJhY3REb2N1bWVudFRleHQiLCJvcmlnaW5hbFN0YXJ0Iiwib3JpZ2luYWxFbmQiLCJzZWxlY3RBbGwiLCJnZXRUZXh0Iiwic2VsZWN0IiwiZXh0cmFjdEFuY2hvclRva2VucyIsInJlZ2V4IiwidG9rZW5zIiwiU2V0IiwibWF0Y2giLCJleGVjIiwiYWRkIiwiQXJyYXkiLCJmcm9tIiwiaXNDYXJldFdpdGhpblJhbmdlIiwiY2FyZXQiLCJzdGFydCIsImVuZCIsInBhcmFncmFwaCIsInhJbiIsInlJbiIsImRlbGV0ZUN1cnJlbnRBbmNob3IiLCJkb2NFZGl0b3IiLCJhbmNob3IiLCJ1cGRhdGVBY3RpdmVBbmNob3IiLCJzY2FuUmlnaHRVbnRpbEFuY2hvciIsIm9yaWdpbk9mZnNldCIsIm1heFNjYW4iLCJidW1wT2Zmc2V0IiwiY2giLCJuZXh0Iiwic2NhbkxlZnRVbnRpbEFuY2hvciIsInByZXYiLCJnZXRDaGFyQXQiLCJvZmZzZXQiLCJpc0NhcmV0SW1tZWRpYXRlbHlCZWZvcmVBbmNob3JTdGFydCIsImMwIiwiYzEiLCJpc0NhcmV0SW1tZWRpYXRlbHlBZnRlckFuY2hvciIsInNlbGVjdEN1cnJlbnRXb3JkIiwic2NhblN0YXJ0IiwiaXNDYXJldEF0RW5kIiwiZGVsdGEiLCJwYXJ0cyIsInNwbGl0IiwiaWR4IiwicGFyc2VJbnQiLCJqb2luIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFyZ3MiLCJldmVudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImVkaXRvckhpc3RvcnkiLCJ1bmRvIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjdHJsS2V5IiwibWV0YUtleSIsIm9uTW91c2VVcCIsImNsaWVudFgiLCJjbGllbnRZIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRvY3VtZW50Q2hhbmdlIiwiZW5hYmxlVHJhY2tDaGFuZ2VzIiwiaXNOdWxsIiwidHJhY2tDaGFuZ2VzIiwicmVhZE9ubHkiLCJpc1JlYWRPbmx5IiwidmFsdWVDaGFuZ2VIYW5kbGVyIiwiZGlzYWJsZUFjY2VwdENoYW5nZXMiLCJhY2NlcHRCdXR0b25zIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsImFjY2VwdEJ1dHRvbiIsInBhcmVudEVsZW1lbnQiLCJyZW1vdmVDaGlsZCIsImRpc2FibGVSZWplY3RDaGFuZ2VzIiwicmVqZWN0QnV0dG9ucyIsInJlamVjdEJ1dHRvbiIsIm9wZW4iLCJvblRvb2xiYXJDbGljayIsIl9jb250YWluZXIkZG9jdW1lbnRFZCIsIml0ZW0iLCJhcHBseUJ1bGxldCIsImNsZWFyTGlzdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJzdHlsZSIsInJlZiIsIndpZHRoIiwiZmxleFdyYXAiLCJkaXNwbGF5IiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkNvbnRlbnQiLCJwYWRkaW5nIiwibWF4SGVpZ2h0IiwidmFyaWFudCIsInNob3ciLCJvbkNsb3NlIiwiZGlzbWlzc2libGUiLCJ3aXRoIiwiY29sb3IiLCJzY29wZSIsImNyZWF0ZWQiLCJlbmFibGVQZXJzaXN0ZW5jZSIsInRvb2xiYXJDbGljayIsInJlc3RyaWN0RWRpdGluZyIsInNob3dQcm9wZXJ0aWVzUGFuZSIsImVuYWJsZUF1dG9Gb2N1cyIsInNlcnZpY2VVcmwiLCJlbmFibGVUb29sYmFyIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvV29yZERvY3VtZW50Vmlld2VyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHt0cmFja1Byb21pc2V9IGZyb20gXCJyZWFjdC1wcm9taXNlLXRyYWNrZXJcIjtcbmltcG9ydCBVdGlscyBmcm9tIFwiLi4vVXRpbHNcIjtcbmltcG9ydCB7RG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQsIFRvb2xiYXJ9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1yZWFjdC1kb2N1bWVudGVkaXRvcic7XG5pbXBvcnQgXCIuL0RvY3VtZW50VGVtcGxhdGVEZXNpZ25lckNvbXBvbmVudC5jc3NcIlxuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tIFwiLi4vQXBwbGljYXRpb25NYW5hZ2VyXCI7XG5pbXBvcnQge3JlZ2lzdGVyTGljZW5zZX0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1iYXNlXCI7XG5pbXBvcnQgQWxlcnQgZnJvbSBcInJlYWN0LWJvb3RzdHJhcC9BbGVydFwiO1xuaW1wb3J0IExvdHRpZUljb24gZnJvbSBcIi4vTG90dGllSWNvblwiO1xuaW1wb3J0IFwiLi9Xb3JkRG9jdW1lbnRWaWV3ZXIuY3NzXCJcbmltcG9ydCB7dXNlU3RhdGUsIHVzZUNhbGxiYWNrfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlUmVzaXplT2JzZXJ2ZXJ9IGZyb20gXCIuL29ic2VydmVycy91c2VSZXNpemVPYnNlcnZlclwiO1xuaW1wb3J0IHt1c2VPbkZ1bGx5VmlzaWJsZX0gZnJvbSBcIi4vb2JzZXJ2ZXJzL3VzZU9uRnVsbHlWaXNpYmxlXCI7XG5cbmV4cG9ydCBjb25zdCBLRVkgPSAnTmdvOUJpZ0JPZ2dqSFRReEFSOC9WMUpHYUY1Y1hHcENmMUZwUm1KR2RsZDVmVVZIWVZaVVRYeGFTMDBETkhWUmRrZGxXWDVjZUhWUlEyQllVVWR3WDBOV1lFcz0nO1xucmVnaXN0ZXJMaWNlbnNlKEtFWSk7XG5cbmZ1bmN0aW9uIHJlc29sdmVMb2NhdGlvbigpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RPQ1NfQVBJX0hPU1QpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ET0NTX0FQSV9IT1NUO1xuICAgIH1cbiAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURvY1N2YygpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RPQ1NfQVBJX1BBVEgpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ET0NTX0FQSV9QQVRIO1xuICAgIH1cbiAgICByZXR1cm4gXCIvZG9jcy9hcGkvdjEvc3luY2Z1c2lvblwiO1xufVxuXG5leHBvcnQgY29uc3QgbG9jYXRpb24gPSByZXNvbHZlTG9jYXRpb24oKTtcbmV4cG9ydCBjb25zdCBET0NTVkMgPSByZXNvbHZlRG9jU3ZjKCk7XG5cbi8vIFdoZW4gRE9DU1ZDIGlzIGFuIGFic29sdXRlIFVSTCAocHJvZHVjdGlvbiBzdG9wZ2FwIHBvaW50aW5nIGF0IHRoZVxuLy8gU3luY2Z1c2lvbi1ob3N0ZWQgYmFja2VuZCB3aGlsZSBvdXIgb3duIGRvY3Mgc2VydmljZSBpcyB1cGdyYWRlZCksXG4vLyB1c2UgaXQgdmVyYmF0aW0gYW5kIHNraXAgdGhlIGhvc3QgKyBjb250ZXh0Um9vdCBwcmVmaXguIFRyYWlsaW5nXG4vLyBzbGFzaCBpcyBzdHJpcHBlZCBzbyBgJHsuLi59L0ltcG9ydGAgZG9lc24ndCBwcm9kdWNlIGEgZG91YmxlIHNsYXNoLlxuZnVuY3Rpb24gZ2V0RG9jc0Jhc2UoKSB7XG4gICAgaWYgKC9eaHR0cHM/OlxcL1xcLy9pLnRlc3QoRE9DU1ZDKSkge1xuICAgICAgICByZXR1cm4gRE9DU1ZDLnJlcGxhY2UoL1xcLyskLywgJycpO1xuICAgIH1cbiAgICByZXR1cm4gbG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArIERPQ1NWQztcbn1cblxuZnVuY3Rpb24gZ2V0U2VydmljZVVybCgpIHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FjY2Vzc1Rva2VuJyk7XG4gICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKTtcbiAgICBjb25zdCBiYXNlID0gYCR7Z2V0RG9jc0Jhc2UoKX0vSW1wb3J0YDtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKGFjY2Vzc1Rva2VuKSBwYXJhbXMuc2V0KCdhY2Nlc3NfdG9rZW4nLCBhY2Nlc3NUb2tlbik7XG4gICAgaWYgKGlkVG9rZW4pIHBhcmFtcy5zZXQoJ2lkX3Rva2VuJywgaWRUb2tlbik7XG4gICAgY29uc3QgcXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICByZXR1cm4gcXMgPyBgJHtiYXNlfT8ke3FzfWAgOiBiYXNlO1xufVxuXG5Eb2N1bWVudEVkaXRvckNvbnRhaW5lckNvbXBvbmVudC5JbmplY3QoVG9vbGJhcik7XG5cbmNvbnN0IExFVkVMX0ZNVCA9IFsnJTEuJywgJyUxLiUyLicsICclMS4lMi4lMy4nXTtcblxuZnVuY3Rpb24gYXBwbHlMZXZlbChlZCwgbGV2ZWwgPSAwKSB7XG4gICAgY29uc3QgZGVwdGggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihsZXZlbCwgTEVWRUxfRk1ULmxlbmd0aCAtIDEpKTtcbiAgICBlZC5zZWxlY3Rpb24ucGFyYWdyYXBoRm9ybWF0Lmxpc3RMZXZlbE51bWJlciA9IGRlcHRoO1xuICAgIGVkLmFwcGx5TnVtYmVyaW5nKExFVkVMX0ZNVFtkZXB0aF0sICdBcmFiaWMnKTtcbn1cblxuZnVuY3Rpb24gdXNlRHluYW1pY1N5bmNmdXNpb25IZWlnaHQocGFyZW50UmVmLCBjb250YWluZXJSZWYpIHtcbiAgICBjb25zdCBbaGVpZ2h0LCBzZXRIZWlnaHRdID0gdXNlU3RhdGUoMCk7XG5cbiAgICBjb25zdCBtZWFzdXJlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAoIXBhcmVudFJlZi5jdXJyZW50KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcmVjdCA9IHBhcmVudFJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBuZXdIZWlnaHQgPSBNYXRoLmZsb29yKHJlY3QuaGVpZ2h0KTtcblxuICAgICAgICBpZiAobmV3SGVpZ2h0ID4gMCAmJiBuZXdIZWlnaHQgIT09IGhlaWdodCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJNRUFTVVJFIDogXCIsIG5ld0hlaWdodCk7XG4gICAgICAgICAgICBzZXRIZWlnaHQobmV3SGVpZ2h0KTtcbiAgICAgICAgfVxuICAgIH0sIFtwYXJlbnRSZWYsIGhlaWdodF0pO1xuXG4gICAgLy8g8J+UgSBSZXNpemUgb2JzZXJ2ZXJcbiAgICB1c2VSZXNpemVPYnNlcnZlcihwYXJlbnRSZWYsIG1lYXN1cmUpO1xuXG4gICAgLy8g4pqhIFN5bmNmdXNpb24gcmVzaXplIHRyaWdnZXJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoY29udGFpbmVyUmVmLmN1cnJlbnQgJiYgaGVpZ2h0ID4gMCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudC5yZXNpemUoKTtcbiAgICAgICAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudC5kb2N1bWVudEVkaXRvci5yZXNpemUoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBzaWxlbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFtoZWlnaHQsIGNvbnRhaW5lclJlZl0pO1xuXG4gICAgcmV0dXJuIGhlaWdodDtcbn1cblxuY29uc3QgV29yZERvY3VtZW50Vmlld2VyID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgW2NvbnRhaW5lciwgc2V0Q29udGFpbmVyXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW3JlUmVuZGVyaW5nLCBzZXRSZVJlbmRlcmluZ10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2pzb24sIHNldEpzb25dID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2Vycm9yTWVzc2FnZSwgc2V0RXJyb3JNZXNzYWdlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGN1cnJlbnRUZXh0ID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGFjdGl2ZUFuY2hvclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBhbmNob3JFbmQgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGRlbGV0ZUxvY2tSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGxvYWRpbmcgPSB1c2VSZWYodHJ1ZSk7XG4gICAgY29uc3QgcGFyZW50UmVmID0gdXNlT25GdWxseVZpc2libGUoKGVsKSA9PiB7XG4gICAgICAgIGlmICghcmVSZW5kZXJpbmcpIHtcbiAgICAgICAgICAgIHNldFZpc2libGUoZmFsc2UpO1xuICAgICAgICAgICAgc2V0UmVSZW5kZXJpbmcodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBlZGl0b3JIZWlnaHQgPSB1c2VEeW5hbWljU3luY2Z1c2lvbkhlaWdodChwYXJlbnRSZWYsIGNvbnRhaW5lclJlZik7XG5cbiAgICBmdW5jdGlvbiBpc1BvaW50SW5zaWRlRWxlbWVudCh4LCB5LCBlbCkge1xuICAgICAgICBpZiAoIWVsKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgeCA+PSByZWN0LmxlZnQgJiZcbiAgICAgICAgICAgIHggPD0gcmVjdC5yaWdodCAmJlxuICAgICAgICAgICAgeSA+PSByZWN0LnRvcCAmJlxuICAgICAgICAgICAgeSA8PSByZWN0LmJvdHRvbVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFZpZXdlckVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICAgIGAke3Byb3BzLmlkfS1jb250YWluZXJfZWRpdG9yX3ZpZXdlckNvbnRhaW5lcmBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc05hdmlnYXRpb25LZXkoZSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgJ0Fycm93TGVmdCcsICdBcnJvd1JpZ2h0JywgJ0Fycm93VXAnLCAnQXJyb3dEb3duJyxcbiAgICAgICAgICAgICdIb21lJywgJ0VuZCcsICdQYWdlVXAnLCAnUGFnZURvd24nXG4gICAgICAgIF0uaW5jbHVkZXMoZS5rZXkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZUFuY2hvcih2YWx1ZSkge1xuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAucmVwbGFjZSgvXlxcW1xcW3xcXF1cXF0kL2csICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL148PHw+PiQvZywgJycpO1xuICAgIH1cblxuICAgIGxldCB2aWV3ZXJFbGVtZW50ID0gZ2V0Vmlld2VyRWxlbWVudCgpO1xuXG4gICAgZnVuY3Rpb24gaW5zZXJ0UmVhZG9ubHlBbmNob3IoZXZlbnREYXRhLCBkcm9wUG9zaXRpb24pIHtcbiAgICAgICAgaWYgKCFjb250YWluZXI/LmRvY3VtZW50RWRpdG9yKSByZXR1cm47XG4gICAgICAgIGlmICghZHJvcFBvc2l0aW9uKSByZXR1cm47XG5cbiAgICAgICAgaWYgKCFpc1BvaW50SW5zaWRlRWxlbWVudChkcm9wUG9zaXRpb24ueCwgZHJvcFBvc2l0aW9uLnksIHZpZXdlckVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkb2MgPSBjb250YWluZXIuZG9jdW1lbnRFZGl0b3I7XG4gICAgICAgIGNvbnN0IGVkID0gZG9jLmVkaXRvcjtcbiAgICAgICAgY29uc3Qgc2VsID0gZG9jLnNlbGVjdGlvbjtcbiAgICAgICAgaWYgKCFlZCB8fCAhc2VsKSByZXR1cm47XG5cbiAgICAgICAgLy8gUmVqZWN0IGRyb3AgaWYgY3Vyc29yIGlzIHN0cmljdGx5IGluc2lkZSBhbiBleGlzdGluZyBhbmNob3JcbiAgICAgICAgLy8gQWxsb3cgZHJvcHBpbmcgYXQgdGhlIGV4YWN0IHN0YXJ0IG9yIGVuZCBib3VuZGFyeVxuICAgICAgICBjb25zdCBjYXJldE9mZnNldCA9IHNlbC5zdGFydE9mZnNldDtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdBbmNob3IgPSBncmFiQW5jaG9yV2l0aEJvdW5kcyhjb250YWluZXIpO1xuICAgICAgICBpZiAoZXhpc3RpbmdBbmNob3IpIHtcbiAgICAgICAgICAgIGNvbnN0IGF0U3RhcnQgPSBjYXJldE9mZnNldCA9PT0gZXhpc3RpbmdBbmNob3Iuc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICBjb25zdCBhdEVuZCA9IGNhcmV0T2Zmc2V0ID09PSBleGlzdGluZ0FuY2hvci5lbmRPZmZzZXQ7XG4gICAgICAgICAgICBpZiAoIWF0U3RhcnQgJiYgIWF0RW5kKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRHJvcCByZWplY3RlZCDigJQgY3Vyc29yIGlzIGluc2lkZSBhbmNob3I6IFwiICsgZXhpc3RpbmdBbmNob3IudG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRva2VuID0gYFtbJHtub3JtYWxpemVBbmNob3IoZXZlbnREYXRhKX1dXWA7XG4gICAgICAgIGVkLmluc2VydFRleHQodG9rZW4pO1xuICAgIH1cblxuICAgIGNvbnN0IGRyb3BEYXRhID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldFZhbHVlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNhdmVBc0Jhc2U2NCgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaW5zZXJ0UmVhZG9ubHlBbmNob3I6IGFzeW5jICh2YWx1ZSwgZHJvcFBvc2l0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgZHJvcERhdGEuY3VycmVudCA9IHt2YWx1ZSwgZHJvcFBvc2l0aW9ufTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMudmFsdWVIYW5kbGVyLmFwaSA9IGFwaSgpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgbnVtYmVyaW5nSXRlbXMgPSBbXG4gICAgICAgIHtpZDogJ2x2bC0wJywgdGV4dDogJzEuJ30sXG4gICAgICAgIHtpZDogJ2x2bC0xJywgdGV4dDogJzEuMSd9LFxuICAgICAgICB7aWQ6ICdsdmwtMicsIHRleHQ6ICcxLjEuMSd9LFxuICAgICAgICB7c2VwYXJhdG9yOiB0cnVlfSxcbiAgICAgICAge2lkOiAnY2xlYXInLCB0ZXh0OiAnQ2xlYXIgbGlzdCd9LFxuICAgIF07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgdG9vbGJhckl0ZW1zID0gcHJvcHMuY29tbWVudHNPbmx5ID9cbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBcIkNvbW1lbnRzXCJcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIDpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBcIlVuZG9cIixcbiAgICAgICAgICAgICAgICBcIlJlZG9cIixcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIHtpZDogJ2J1bGxldHMnLCB0ZXh0OiAn4oCiIEJ1bGxldHMnLCB0b29sdGlwVGV4dDogJ0J1bGxldGVkIGxpc3QnfSxcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIHt0b29sdGlwVGV4dDogJ0JvbGQnLCBwcmVmaXhJY29uOiAnZS1pY29ucyBlLWJvbGQnLCBjb21tYW5kOiAnQm9sZCd9LFxuICAgICAgICAgICAgICAgIHt0b29sdGlwVGV4dDogJ0l0YWxpYycsIHByZWZpeEljb246ICdlLWljb25zIGUtaXRhbGljJywgY29tbWFuZDogJ0l0YWxpYyd9LFxuICAgICAgICAgICAgICAgIFwiU2VwYXJhdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJJbWFnZVwiLFxuICAgICAgICAgICAgICAgIFwiVGFibGVcIixcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIFwiSGVhZGVyXCIsXG4gICAgICAgICAgICAgICAgXCJGb290ZXJcIixcbiAgICAgICAgICAgICAgICBcIlBhZ2VTZXR1cFwiLFxuICAgICAgICAgICAgICAgIFwiUGFnZU51bWJlclwiLFxuICAgICAgICAgICAgICAgIFwiQnJlYWtcIixcbiAgICAgICAgICAgICAgICBcIkluc2VydEZvb3Rub3RlXCIsXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICBcIkZpbmRcIixcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIFwiQ29tbWVudHNcIlxuICAgICAgICAgICAgXVxuXG4gICAgICAgIGlmIChwcm9wcy5lbmFibGVVcGxvYWQpIHtcbiAgICAgICAgICAgIHRvb2xiYXJJdGVtcy51bnNoaWZ0KFwiT3BlblwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldEl0ZW1zKHRvb2xiYXJJdGVtcyk7XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLmZpbGU/LmJhc2U2NCkge1xuICAgICAgICAgICAgbGV0IGJhc2U2NCA9IHByb3BzLmZpbGUuYmFzZTY0O1xuICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBVdGlscy5iYXNlNjRUb0FycmF5QnVmZmVyKGJhc2U2NCk7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gbmV3IEJsb2IoW2FycmF5QnVmZmVyXSwge1xuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzLmZpbGUudHlwZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGVzJywgZmlsZSwgJ2RvY3VtZW50LmRvY3gnKTtcblxuICAgICAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhY2Nlc3NUb2tlbicpO1xuICAgICAgICAgICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKTtcblxuICAgICAgICAgICAgdHJhY2tQcm9taXNlKFxuICAgICAgICAgICAgICAgIGZldGNoKFxuICAgICAgICAgICAgICAgICAgICBgJHtnZXREb2NzQmFzZSgpfS9JbXBvcnRgLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIGFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZFRva2VuJzogaWRUb2tlblxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyYWNrUHJvbWlzZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKChqc29uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SnNvbihqc29uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5maWxlXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocmVSZW5kZXJpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUodHJ1ZSk7XG4gICAgICAgICAgICB9LCAxXzAwMCk7XG5cbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgfVxuICAgIH0sIFtyZVJlbmRlcmluZ10pO1xuXG4gICAgZnVuY3Rpb24gc2V0dXBDb250YWluZXIoKSB7XG4gICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5jdXJyZW50VXNlciA9IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLm5hbWUgKyBcIiBcIiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnN1cm5hbWU7XG4gICAgfVxuXG4gICAgY29uc3Qgc2F2ZUFzQmFzZTY0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMuYWxsb3dVbnJlc29sdmVkQ2hhbmdlcyA9PT0gZmFsc2UgJiYgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLnJldmlzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzZXRFcnJvck1lc3NhZ2UoXCJQbGVhc2UgYWNjZXB0IG9yIHJlamVjdCBhbGwgc3VnZ2VzdGVkIGNoYW5nZXNcIik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lZGl0b3Iuc3RvcFByb3RlY3Rpb24oXCJwYXNzd29yZFwiKTtcbiAgICAgICAgICAgIGxldCBibG9iID0gYXdhaXQgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLnNhdmVBc0Jsb2IoJ0RvY3gnKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb21tZW50c09ubHkpIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZWRpdG9yLmVuZm9yY2VQcm90ZWN0aW9uKCdwYXNzd29yZCcsICdDb21tZW50c09ubHknKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlKFtibG9iXSwgcHJvcHMuZmlsZT8ubmFtZSA/IHByb3BzLmZpbGUubmFtZSA6ICdkb2N1bWVudC5kb2N4Jywge3R5cGU6IHByb3BzLmZpbGU/LnR5cGUgPyBwcm9wcy5maWxlLnR5cGUgOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZXh0cmFjdERvY3VtZW50VGV4dChlZGl0b3IpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRUZXh0LmN1cnJlbnQpIHJldHVybiBjdXJyZW50VGV4dC5jdXJyZW50O1xuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsU3RhcnQgPSBlZGl0b3Iuc2VsZWN0aW9uLnN0YXJ0T2Zmc2V0O1xuICAgICAgICBjb25zdCBvcmlnaW5hbEVuZCA9IGVkaXRvci5zZWxlY3Rpb24uZW5kT2Zmc2V0O1xuXG4gICAgICAgIGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0QWxsKCk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBlZGl0b3Iuc2VsZWN0aW9uLmdldFRleHQoKTtcbiAgICAgICAgZWRpdG9yLnNlbGVjdGlvbi5zZWxlY3Qob3JpZ2luYWxTdGFydCwgb3JpZ2luYWxFbmQpO1xuXG4gICAgICAgIGN1cnJlbnRUZXh0LmN1cnJlbnQgPSB0ZXh0O1xuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRyYWN0QW5jaG9yVG9rZW5zKHRleHQpIHtcbiAgICAgICAgY29uc3QgcmVnZXggPSAvXFxbXFxbW15cXFtcXF1dKz9cXF1cXF0vZztcbiAgICAgICAgY29uc3QgdG9rZW5zID0gbmV3IFNldCgpO1xuICAgICAgICBsZXQgbWF0Y2g7XG5cbiAgICAgICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWModGV4dCkpICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0b2tlbnMuYWRkKG1hdGNoWzBdKTsgLy8gZXhhY3QgW1tURVhUXV1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRva2Vucyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNDYXJldFdpdGhpblJhbmdlKGNhcmV0LCBzdGFydCwgZW5kKSB7XG4gICAgICAgIGlmIChjYXJldC5wYXJhZ3JhcGggIT09IHN0YXJ0LnBhcmFncmFwaCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHggPSBjYXJldC5sb2NhdGlvbi54SW47XG4gICAgICAgIGNvbnN0IHkgPSBjYXJldC5sb2NhdGlvbi55SW47XG5cbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIkNIRUNLSU5HIENBUkVUIFdJVEhJTiBSQU5HRSA6IFwiLCB4LCB5LCBzdGFydC5sb2NhdGlvbi54SW4sIHN0YXJ0LmxvY2F0aW9uLnlJbiwgZW5kLmxvY2F0aW9uLnhJbiwgZW5kLmxvY2F0aW9uLnlJbik7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB5ID09PSBzdGFydC5sb2NhdGlvbi55SW4gJiZcbiAgICAgICAgICAgIHggPj0gc3RhcnQubG9jYXRpb24ueEluICYmXG4gICAgICAgICAgICB4IDw9IGVuZC5sb2NhdGlvbi54SW5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWxldGVDdXJyZW50QW5jaG9yKGNvbnRhaW5lcikge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBjb250YWluZXI/LmRvY3VtZW50RWRpdG9yO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSBlZGl0b3I/LnNlbGVjdGlvbjtcbiAgICAgICAgY29uc3QgZG9jRWRpdG9yID0gZWRpdG9yPy5lZGl0b3I7XG5cbiAgICAgICAgY29uc3QgYW5jaG9yID0gYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghZWRpdG9yIHx8ICFzZWxlY3Rpb24gfHwgIWRvY0VkaXRvciB8fCAhYW5jaG9yKSByZXR1cm47XG5cbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIkVORCBPRkZTRVQgOiBcIiwgYW5jaG9yLmVuZE9mZnNldCwgYnVtcE9mZnNldChhbmNob3IuZW5kT2Zmc2V0LCAtMSkpXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJTVEFSVCAtIEVORCA6IFwiLCBhbmNob3Iuc3RhcnRPZmZzZXQsIGJ1bXBPZmZzZXQoYW5jaG9yLmVuZE9mZnNldCwgLTEpKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3QoYW5jaG9yLnN0YXJ0T2Zmc2V0LCBhbmNob3IuZW5kT2Zmc2V0KTtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJTRUxFQ1RJT04gVEVYVCA6IFwiICsgc2VsZWN0aW9uLnRleHQpO1xuICAgICAgICAgICAgLy9kb2NFZGl0b3IuZGVsZXRlKCk7XG4gICAgICAgICAgICAvL3NlbGVjdGlvbi5zZWxlY3QoYW5jaG9yLnN0YXJ0T2Zmc2V0LCBhbmNob3Iuc3RhcnRPZmZzZXQpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgdXBkYXRlQWN0aXZlQW5jaG9yKGNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVBY3RpdmVBbmNob3IoY29udGFpbmVyKSB7XG4gICAgICAgIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50ID0gZ3JhYkFuY2hvcldpdGhCb3VuZHMoY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzY2FuUmlnaHRVbnRpbEFuY2hvcihlZGl0b3IsIG9yaWdpbk9mZnNldCwgbWF4U2NhbiA9IDUwMCkge1xuICAgICAgICBjb25zdCBzZWwgPSBlZGl0b3Iuc2VsZWN0aW9uO1xuICAgICAgICBsZXQgY3VycmVudCA9IG9yaWdpbk9mZnNldDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heFNjYW47IGkrKykge1xuICAgICAgICAgICAgLy8gbW92ZSByaWdodFxuICAgICAgICAgICAgY3VycmVudCA9IGJ1bXBPZmZzZXQoY3VycmVudCwgKzEpO1xuXG4gICAgICAgICAgICBzZWwuc2VsZWN0KGN1cnJlbnQsIGN1cnJlbnQpO1xuXG4gICAgICAgICAgICAvLyBzZWxlY3QgT05FIGNoYXJhY3RlciBvbmx5XG4gICAgICAgICAgICBzZWwuc2VsZWN0KFxuICAgICAgICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgICAgICAgYnVtcE9mZnNldChjdXJyZW50LCArMSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNoID0gc2VsLnRleHQ7XG5cbiAgICAgICAgICAgIC8vIOKblCBCYWlsIG9uIHdoaXRlc3BhY2Ugb3IgcGFyYWdyYXBoIGJyZWFrXG4gICAgICAgICAgICBpZiAoIWNoIHx8IC9cXHMvLnRlc3QoY2gpKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgLy8gRGV0ZWN0IGNsb3NpbmcgXCJdXVwiXG4gICAgICAgICAgICBpZiAoY2ggPT09ICddJykge1xuICAgICAgICAgICAgICAgIC8vIGxvb2thaGVhZCBvbmUgY2hhclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBidW1wT2Zmc2V0KGN1cnJlbnQsICsxKTtcbiAgICAgICAgICAgICAgICBzZWwuc2VsZWN0KG5leHQsIGJ1bXBPZmZzZXQobmV4dCwgKzEpKTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWwudGV4dCA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJldHVybiBwb3NpdGlvbiBBRlRFUiBdXVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVtcE9mZnNldChjdXJyZW50LCArMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhbkxlZnRVbnRpbEFuY2hvcihlZGl0b3IsIG9yaWdpbk9mZnNldCwgbWF4U2NhbiA9IDUwMCkge1xuICAgICAgICBjb25zdCBzZWwgPSBlZGl0b3Iuc2VsZWN0aW9uO1xuICAgICAgICBsZXQgY3VycmVudCA9IG9yaWdpbk9mZnNldDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heFNjYW47IGkrKykge1xuICAgICAgICAgICAgY3VycmVudCA9IGJ1bXBPZmZzZXQoY3VycmVudCwgLTEpO1xuXG4gICAgICAgICAgICAvLyBzZWxlY3Qgb25lIGNoYXIgdG8gdGhlIGxlZnRcbiAgICAgICAgICAgIHNlbC5zZWxlY3QoXG4gICAgICAgICAgICAgICAgYnVtcE9mZnNldChjdXJyZW50LCAtMSksXG4gICAgICAgICAgICAgICAgY3VycmVudFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgY2ggPSBzZWwudGV4dDtcblxuICAgICAgICAgICAgaWYgKCFjaCB8fCAvXFxzLy50ZXN0KGNoKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIC8vIGRldGVjdCBbW1xuICAgICAgICAgICAgaWYgKGNoID09PSAnWycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gYnVtcE9mZnNldChjdXJyZW50LCAtMSk7XG4gICAgICAgICAgICAgICAgc2VsLnNlbGVjdChcbiAgICAgICAgICAgICAgICAgICAgYnVtcE9mZnNldChwcmV2LCAtMSksXG4gICAgICAgICAgICAgICAgICAgIHByZXZcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbC50ZXh0ID09PSAnWycpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g8J+UkSBGSVg6IGdvIGJhY2sgVFdPIGNoYXJzXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBidW1wT2Zmc2V0KGN1cnJlbnQsIC0yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDaGFyQXQoZWRpdG9yLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3Qgc2VsID0gZWRpdG9yLnNlbGVjdGlvbjtcbiAgICAgICAgc2VsLnNlbGVjdChvZmZzZXQsIGJ1bXBPZmZzZXQob2Zmc2V0LCArMSkpO1xuICAgICAgICByZXR1cm4gc2VsLnRleHQgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0NhcmV0SW1tZWRpYXRlbHlCZWZvcmVBbmNob3JTdGFydChlZGl0b3IsIG9mZnNldCkge1xuICAgICAgICBjb25zdCBjMCA9IGdldENoYXJBdChlZGl0b3IsIG9mZnNldCk7XG4gICAgICAgIGNvbnN0IGMxID0gZ2V0Q2hhckF0KGVkaXRvciwgYnVtcE9mZnNldChvZmZzZXQsICsxKSk7XG4gICAgICAgIHJldHVybiBjMCA9PT0gJ1snICYmIGMxID09PSAnWyc7IC8vIHxbW1RFWFRdXVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQ2FyZXRJbW1lZGlhdGVseUFmdGVyQW5jaG9yKGVkaXRvciwgb2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBnZXRDaGFyQXQoZWRpdG9yLCBidW1wT2Zmc2V0KG9mZnNldCwgLTEpKSA9PT0gJ10nICYmXG4gICAgICAgICAgICBnZXRDaGFyQXQoZWRpdG9yLCBidW1wT2Zmc2V0KG9mZnNldCwgLTIpKSA9PT0gJ10nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ3JhYkFuY2hvcldpdGhCb3VuZHMoY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnRhaW5lcj8uZG9jdW1lbnRFZGl0b3I7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IGVkaXRvcj8uc2VsZWN0aW9uO1xuXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsU3RhcnQgPSBzZWxlY3Rpb24uc3RhcnRPZmZzZXQ7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsRW5kID0gc2VsZWN0aW9uLmVuZE9mZnNldDtcblxuICAgICAgICBzZWxlY3Rpb24uc2VsZWN0Q3VycmVudFdvcmQoKTtcbiAgICAgICAgc2VsZWN0aW9uLnNlbGVjdChvcmlnaW5hbFN0YXJ0LCBvcmlnaW5hbEVuZCk7XG5cbiAgICAgICAgLy9sZXQgd29yZCA9IHNlbGVjdGlvbi50ZXh0O1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiZ3JhYkFuY2hvcldpdGhCb3VuZHMgU0VMRUNUSU9OIFRFWFQgOiBcIiwgd29yZCk7XG5cbiAgICAgICAgbGV0IHNjYW5TdGFydCA9IG9yaWdpbmFsU3RhcnQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoaXNDYXJldEltbWVkaWF0ZWx5QmVmb3JlQW5jaG9yU3RhcnQoZWRpdG9yLCBvcmlnaW5hbFN0YXJ0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgaXNDYXJldEF0RW5kID0gaXNDYXJldEltbWVkaWF0ZWx5QWZ0ZXJBbmNob3IoZWRpdG9yLCBvcmlnaW5hbFN0YXJ0KVxuICAgICAgICAgICAgaWYgKGlzQ2FyZXRBdEVuZCkge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJDQVJFVCBBVCBFTkRcIik7XG4gICAgICAgICAgICAgICAgc2NhblN0YXJ0ID0gYnVtcE9mZnNldChvcmlnaW5hbFN0YXJ0LCAtMyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBzY2FuTGVmdFVudGlsQW5jaG9yKGVkaXRvciwgc2NhblN0YXJ0KTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gc2NhblJpZ2h0VW50aWxBbmNob3IoZWRpdG9yLCBzY2FuU3RhcnQpO1xuXG4gICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3QobGVmdCwgcmlnaHQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzZWxlY3Rpb24udGV4dDtcbiAgICAgICAgICAgICAgICBhbmNob3JFbmQuY3VycmVudCA9IGlzQ2FyZXRBdEVuZDtcblxuICAgICAgICAgICAgICAgIC8qY29uc29sZS5sb2coXCJHUkFCIFJFU1VMVCA6IFwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuOiB0ZXh0LFxuICAgICAgICAgICAgICAgICAgICBzdGFydE9mZnNldDogbGVmdCxcbiAgICAgICAgICAgICAgICAgICAgZW5kT2Zmc2V0OiByaWdodFxuICAgICAgICAgICAgICAgIH0pOyovXG5cbiAgICAgICAgICAgICAgICBpZiAoL15cXFtcXFsuKz9cXF1cXF0kLy50ZXN0KHRleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0OiBsZWZ0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kT2Zmc2V0OiByaWdodFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3Qob3JpZ2luYWxTdGFydCwgb3JpZ2luYWxFbmQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVtcE9mZnNldChvZmZzZXQsIGRlbHRhKSB7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gb2Zmc2V0LnNwbGl0KCc7Jyk7XG4gICAgICAgIGNvbnN0IGlkeCA9IHBhcnRzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPSBNYXRoLm1heCgwLCBwYXJzZUludChwYXJ0c1tpZHhdLCAxMCkgKyBkZWx0YSk7XG4gICAgICAgIHBhcnRzW2lkeF0gPSB2YWx1ZS50b1N0cmluZygpO1xuXG4gICAgICAgIHJldHVybiBwYXJ0cy5qb2luKCc7Jyk7XG4gICAgfVxuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgc2V0dXBDb250YWluZXIoKTtcbiAgICAgICAgICAgIC8vYXV0b1NhdmUoKTtcblxuICAgICAgICAgICAgY29uc3QgZWRpdG9yID0gY29udGFpbmVyLmRvY3VtZW50RWRpdG9yO1xuICAgICAgICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2tleURvd24nLCAoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBhcmdzLmV2ZW50O1xuXG4gICAgICAgICAgICAgICAgLy8gMe+4j+KDoyBOYXZpZ2F0aW9uIGtleXMg4oaSIGluc3BlY3Qgb25seVxuICAgICAgICAgICAgICAgIGlmIChpc05hdmlnYXRpb25LZXkoZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZUFuY2hvcihjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkFDVElWRSBBTkNIT1IgOiBcIiwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkRFTEVURSBMT0NLRUQgOiBcIiwgZGVsZXRlTG9ja1JlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGUua2V5ID09PSAnRGVsZXRlJykge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWxldGVMb2NrUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN5bmNmdXNpb24gYWxyZWFkeSBkZWxldGVkIOKGkiByZXdpbmQgc2FmZWx5XG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IuZWRpdG9ySGlzdG9yeS51bmRvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQWNxdWlyZSBsb2NrXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZUxvY2tSZWYuY3VycmVudCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gUmVsZWFzZSBsb2NrIHdoZW4gZWRpdG9yIGlzIGFjdHVhbGx5IHN0YWJsZVxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVMb2NrUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyAy77iP4oOjIElmIHdlIGFyZSBpbnNpZGUgYSByZXN0cmljdGVkIGFuY2hvclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJhbmNob3JFbmQuY3VycmVudCA6IFwiLCBhbmNob3JFbmQuY3VycmVudCwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIGlmICgoYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQgJiYgIWlzTmF2aWdhdGlvbktleShlKSkgfHwgYW5jaG9yRW5kLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIC8gQmFja3NwYWNlID0gZGVsZXRlIHdob2xlIGFuY2hvclxuICAgICAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGUua2V5ID09PSAnRGVsZXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9lZGl0b3IuZWRpdG9ySGlzdG9yeS51bmRvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVDdXJyZW50QW5jaG9yKGNvbnRhaW5lciwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yRW5kLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUxvY2tSZWYuY3VycmVudCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBibG9jayB3aGVuIHdlIGFyZSBhdCB0aGUgZW5kIG9mIGFuIGFuY2hvci4gSW5wdXQgd2lsbCBuZXZlciBkYW1hZ2UgdGhlIGFuY2hvclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiVU5CTE9DS0lORyA6IFwiLCBhbmNob3JFbmQuY3VycmVudCwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFuY2hvckVuZC5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDwn5SSIEJsb2NrIHR5cGluZyAmIHBhc3RlXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5rZXkubGVuZ3RoID09PSAxIHx8IC8vIHByaW50YWJsZSBjaGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jdHJsS2V5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5tZXRhS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGFuY2hvckVuZC5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQmFja3NwYWNlJyB8fCBlLmtleSA9PT0gJ0RlbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZUFuY2hvcihjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3Qgb25Nb3VzZVVwID0gKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzUG9pbnRJbnNpZGVFbGVtZW50KGUuY2xpZW50WCwgZS5jbGllbnRZLCB2aWV3ZXJFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGRyb3BEYXRhLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0UmVhZG9ubHlBbmNob3IoZHJvcERhdGEuY3VycmVudC52YWx1ZSwgZHJvcERhdGEuY3VycmVudC5kcm9wUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBkcm9wRGF0YS5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB1cGRhdGVBY3RpdmVBbmNob3IoY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAvL3ZpZXdlci5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZpZXdlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gdmlld2VyRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgICAgICAgfVxuICAgIH0sIFtjb250YWluZXJdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIgJiYganNvbikge1xuICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmRvY3VtZW50Q2hhbmdlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lbmFibGVUcmFja0NoYW5nZXMgPSAhVXRpbHMuaXNOdWxsKHByb3BzLnRyYWNrQ2hhbmdlcykgPyBwcm9wcy50cmFja0NoYW5nZXMgOiB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5jb21tZW50c09ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVkaXRvci5lbmZvcmNlUHJvdGVjdGlvbigncGFzc3dvcmQnLCAnQ29tbWVudHNPbmx5Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wcy5yZWFkT25seSkge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuaXNSZWFkT25seSA9IHByb3BzLnJlYWRPbmx5O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChsb2FkaW5nLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGUgPSBhd2FpdCBzYXZlQXNCYXNlNjQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZy5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VycmVudFRleHQuY3VycmVudCA9IGV4dHJhY3REb2N1bWVudFRleHQoY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVkaXRvcik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcignY29udGVudENoYW5nZScsIGFzeW5jIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmRpc2FibGVBY2NlcHRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhY2NlcHRCdXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImUtZGUtdHJhY2stYWNjZXB0LWJ1dHRvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhY2NlcHRCdXR0b24gb2YgYWNjZXB0QnV0dG9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0QnV0dG9uLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoYWNjZXB0QnV0dG9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5kaXNhYmxlUmVqZWN0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVqZWN0QnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJlLWRlLXRyYWNrLXJlamVjdC1idXR0b25cIik7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVqZWN0QnV0dG9uIG9mIHJlamVjdEJ1dHRvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdEJ1dHRvbi5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHJlamVjdEJ1dHRvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobG9hZGluZy5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWxlID0gYXdhaXQgc2F2ZUFzQmFzZTY0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcihmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmcuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1cnJlbnRUZXh0LmN1cnJlbnQgPSBleHRyYWN0RG9jdW1lbnRUZXh0KGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lZGl0b3IpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5vcGVuKGpzb24pO1xuICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVuYWJsZVRyYWNrQ2hhbmdlcyA9ICFVdGlscy5pc051bGwocHJvcHMudHJhY2tDaGFuZ2VzKSA/IHByb3BzLnRyYWNrQ2hhbmdlcyA6IHRydWU7XG4gICAgICAgICAgICAvL2NvbnRhaW5lci5kb2N1bWVudEVkaXRvci5pc1JlYWRPbmx5ID0gKHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmNvbW1lbnRzT25seSk7XG4gICAgICAgIH1cbiAgICB9LCBbanNvbiwgY29udGFpbmVyXSk7XG5cbiAgICBjb25zdCBvblRvb2xiYXJDbGljayA9IChhcmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IGVkID0gY29udGFpbmVyPy5kb2N1bWVudEVkaXRvcj8uZWRpdG9yO1xuICAgICAgICBpZiAoIWVkKSByZXR1cm47XG4gICAgICAgIHN3aXRjaCAoYXJncy5pdGVtLmlkKSB7XG4gICAgICAgICAgICBjYXNlICdidWxsZXRzJzpcbiAgICAgICAgICAgICAgICBlZC5hcHBseUJ1bGxldCgnXFx1ZjBiNycsICdTeW1ib2wnKTsgLy8g4oCiXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdudW1iZXJpbmcnOlxuICAgICAgICAgICAgICAgIGVkLmFwcGx5TnVtYmVyaW5nKCclMS4nLCAnQXJhYmljJyk7IC8vIDEuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZXZlbC0wJzpcbiAgICAgICAgICAgICAgICBhcHBseUxldmVsKGVkLCAwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xldmVsLTEnOlxuICAgICAgICAgICAgICAgIGFwcGx5TGV2ZWwoZWQsIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGV2ZWwtMic6XG4gICAgICAgICAgICAgICAgYXBwbHlMZXZlbChlZCwgMik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjbGVhci1saXN0JzpcbiAgICAgICAgICAgICAgICBlZC5jbGVhckxpc3QoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBsZXQgYnVpbHQtaW5zIChVbmRvL1JlZG8vTmV3L09wZW4pIHdvcmsgbm9ybWFsbHlcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J25vLW1hcmdpbiBuby1wYWRkaW5nJ30gc3R5bGU9e3toZWlnaHQ6ICcxMDAlJ319IGlkPXtgcGFyZW50LWNvbnRhaW5lcmB9IHJlZj17cGFyZW50UmVmfT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAhdmlzaWJsZSAmJlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBhbGlnbkNvbnRlbnQ6ICdjZW50ZXInXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxMb3R0aWVJY29uIGlkPXsnd2FpdGluZy1zbSd9Lz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcwIDMycHggMCAzMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiAnNjRweCdcbiAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXsnZGFuZ2VyJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3c9eyFVdGlscy5pc051bGwoZXJyb3JNZXNzYWdlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEVycm9yTWVzc2FnZShudWxsKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc21pc3NpYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGg6ICcxMDAlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3tjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSd9fT57ZXJyb3JNZXNzYWdlfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHsvKiBTZXR0aW5nIGVuYWJsZVRyYWNrQ2hhbmdlcyB0byBmYWxzZSBkb2VzIG5vdCB3b3JrIHNvIHdlIGR1cGxpY2F0ZSB0aGUgY29kZSovfVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZpc2libGUgJiYgaXRlbXMgJiYgKFV0aWxzLmlzTnVsbChwcm9wcy50cmFja0NoYW5nZXMpIHx8IHByb3BzLnRyYWNrQ2hhbmdlcyA9PT0gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICA8RG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQgaWQ9e2Ake3Byb3BzLmlkfS1jb250YWluZXJgfSBoZWlnaHQ9e2VkaXRvckhlaWdodCA+IDAgPyBgJHtlZGl0b3JIZWlnaHR9cHhgIDogJzEyMDBweCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17KHNjb3BlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250YWluZXIoc2NvcGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBzY29wZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZD17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5yZXNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVBlcnNpc3RlbmNlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckNsaWNrPXtvblRvb2xiYXJDbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckl0ZW1zPXtpdGVtc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3RFZGl0aW5nPXtwcm9wcy5yZWFkT25seSAmJiAhcHJvcHMuY29tbWVudHNPbmx5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UHJvcGVydGllc1BhbmU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVUcmFja0NoYW5nZXM9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUF1dG9Gb2N1cz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VVcmw9e2dldFNlcnZpY2VVcmwoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlVG9vbGJhcj17IShwcm9wcy5yZWFkT25seSkgfHwgcHJvcHMuY29tbWVudHNPbmx5fS8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZSAmJiBpdGVtcyAmJiBwcm9wcy50cmFja0NoYW5nZXMgPT09IGZhbHNlICYmXG4gICAgICAgICAgICAgICAgPERvY3VtZW50RWRpdG9yQ29udGFpbmVyQ29tcG9uZW50IGlkPXtgJHtwcm9wcy5pZH0tY29udGFpbmVyYH0gaGVpZ2h0PXtlZGl0b3JIZWlnaHQgPiAwID8gYCR7ZWRpdG9ySGVpZ2h0fXB4YCA6ICcxMjAwcHgnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9eyhzY29wZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29udGFpbmVyKHNjb3BlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50ID0gc2NvcGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQ9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLnJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVQZXJzaXN0ZW5jZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJDbGljaz17b25Ub29sYmFyQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJJdGVtcz17aXRlbXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0RWRpdGluZz17cHJvcHMucmVhZE9ubHkgJiYgIXByb3BzLmNvbW1lbnRzT25seX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Byb3BlcnRpZXNQYW5lPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQXV0b0ZvY3VzPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZVVybD17Z2V0U2VydmljZVVybCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVUb29sYmFyPXshKHByb3BzLnJlYWRPbmx5KSB8fCBwcm9wcy5jb21tZW50c09ubHl9Lz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdvcmREb2N1bWVudFZpZXdlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsb0JBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLHVCQUFBLEdBQUFKLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFLLG1CQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTSxRQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxNQUFBLEdBQUFKLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBUSxXQUFBLEdBQUFMLHNCQUFBLENBQUFILE9BQUE7QUFDQUEsT0FBQTtBQUVBLElBQUFTLGtCQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxrQkFBQSxHQUFBVixPQUFBO0FBQWdFLFNBQUFHLHVCQUFBUSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQVosd0JBQUFZLENBQUEsRUFBQUcsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFoQix1QkFBQSxZQUFBQSxDQUFBWSxDQUFBLEVBQUFHLENBQUEsU0FBQUEsQ0FBQSxJQUFBSCxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxTQUFBRCxDQUFBLE1BQUFPLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQVIsT0FBQSxFQUFBRixDQUFBLGlCQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFNBQUFTLENBQUEsTUFBQUYsQ0FBQSxHQUFBSixDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRSxDQUFBLENBQUFJLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTyxDQUFBLENBQUFLLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTyxDQUFBLENBQUFNLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUyxDQUFBLGdCQUFBTixDQUFBLElBQUFILENBQUEsZ0JBQUFHLENBQUEsT0FBQVcsY0FBQSxDQUFBQyxJQUFBLENBQUFmLENBQUEsRUFBQUcsQ0FBQSxPQUFBSyxDQUFBLElBQUFELENBQUEsR0FBQVMsTUFBQSxDQUFBQyxjQUFBLEtBQUFELE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWxCLENBQUEsRUFBQUcsQ0FBQSxPQUFBSyxDQUFBLENBQUFJLEdBQUEsSUFBQUosQ0FBQSxDQUFBSyxHQUFBLElBQUFOLENBQUEsQ0FBQUUsQ0FBQSxFQUFBTixDQUFBLEVBQUFLLENBQUEsSUFBQUMsQ0FBQSxDQUFBTixDQUFBLElBQUFILENBQUEsQ0FBQUcsQ0FBQSxXQUFBTSxDQUFBLEtBQUFULENBQUEsRUFBQUcsQ0FBQTtBQUV6RCxNQUFNZ0IsR0FBRyxHQUFBQyxPQUFBLENBQUFELEdBQUEsR0FBRyw4RkFBOEY7QUFDakgsSUFBQUUsd0JBQWUsRUFBQ0YsR0FBRyxDQUFDO0FBRXBCLFNBQVNHLGVBQWVBLENBQUEsRUFBRztFQUN2QixJQUFJQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsdUJBQXVCLEVBQUU7SUFDckMsT0FBT0YsT0FBTyxDQUFDQyxHQUFHLENBQUNDLHVCQUF1QjtFQUM5QztFQUNBLE9BQU9DLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDQyxRQUFRLEdBQUcsSUFBSSxHQUFHRixNQUFNLENBQUNDLFFBQVEsQ0FBQ0UsUUFBUTtBQUNyRTtBQUVBLFNBQVNDLGFBQWFBLENBQUEsRUFBRztFQUNyQixJQUFJUCxPQUFPLENBQUNDLEdBQUcsQ0FBQ08sdUJBQXVCLEVBQUU7SUFDckMsT0FBT1IsT0FBTyxDQUFDQyxHQUFHLENBQUNPLHVCQUF1QjtFQUM5QztFQUNBLE9BQU8seUJBQXlCO0FBQ3BDO0FBRU8sTUFBTUosUUFBUSxHQUFBUCxPQUFBLENBQUFPLFFBQUEsR0FBR0wsZUFBZSxDQUFDLENBQUM7QUFDbEMsTUFBTVUsTUFBTSxHQUFBWixPQUFBLENBQUFZLE1BQUEsR0FBR0YsYUFBYSxDQUFDLENBQUM7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0csV0FBV0EsQ0FBQSxFQUFHO0VBQ25CLElBQUksZUFBZSxDQUFDQyxJQUFJLENBQUNGLE1BQU0sQ0FBQyxFQUFFO0lBQzlCLE9BQU9BLE1BQU0sQ0FBQ0csT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7RUFDckM7RUFDQSxPQUFPUixRQUFRLEdBQUdTLDJCQUFrQixDQUFDQyxjQUFjLENBQUMsQ0FBQyxHQUFHTCxNQUFNO0FBQ2xFO0FBRUEsU0FBU00sYUFBYUEsQ0FBQSxFQUFHO0VBQ3JCLE1BQU1DLFdBQVcsR0FBR0MsY0FBYyxDQUFDQyxPQUFPLENBQUMsYUFBYSxDQUFDO0VBQ3pELE1BQU1DLE9BQU8sR0FBR0YsY0FBYyxDQUFDQyxPQUFPLENBQUMsU0FBUyxDQUFDO0VBQ2pELE1BQU1FLElBQUksTUFBQUMsTUFBQSxDQUFNWCxXQUFXLENBQUMsQ0FBQyxZQUFTO0VBQ3RDLE1BQU1ZLE1BQU0sR0FBRyxJQUFJQyxlQUFlLENBQUMsQ0FBQztFQUNwQyxJQUFJUCxXQUFXLEVBQUVNLE1BQU0sQ0FBQ2hDLEdBQUcsQ0FBQyxjQUFjLEVBQUUwQixXQUFXLENBQUM7RUFDeEQsSUFBSUcsT0FBTyxFQUFFRyxNQUFNLENBQUNoQyxHQUFHLENBQUMsVUFBVSxFQUFFNkIsT0FBTyxDQUFDO0VBQzVDLE1BQU1LLEVBQUUsR0FBR0YsTUFBTSxDQUFDRyxRQUFRLENBQUMsQ0FBQztFQUM1QixPQUFPRCxFQUFFLE1BQUFILE1BQUEsQ0FBTUQsSUFBSSxPQUFBQyxNQUFBLENBQUlHLEVBQUUsSUFBS0osSUFBSTtBQUN0QztBQUVBTSx3REFBZ0MsQ0FBQ0MsTUFBTSxDQUFDQywrQkFBTyxDQUFDO0FBRWhELE1BQU1DLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDO0FBRWhELFNBQVNDLFVBQVVBLENBQUNDLEVBQUUsRUFBYTtFQUFBLElBQVhDLEtBQUssR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsQ0FBQztFQUM3QixNQUFNRyxLQUFLLEdBQUdDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRUQsSUFBSSxDQUFDRSxHQUFHLENBQUNQLEtBQUssRUFBRUgsU0FBUyxDQUFDSyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDaEVILEVBQUUsQ0FBQ1MsU0FBUyxDQUFDQyxlQUFlLENBQUNDLGVBQWUsR0FBR04sS0FBSztFQUNwREwsRUFBRSxDQUFDWSxjQUFjLENBQUNkLFNBQVMsQ0FBQ08sS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDO0FBQ2pEO0FBRUEsU0FBU1EsMEJBQTBCQSxDQUFDQyxTQUFTLEVBQUVDLFlBQVksRUFBRTtFQUN6RCxNQUFNLENBQUNDLE1BQU0sRUFBRUMsU0FBUyxDQUFDLEdBQUcsSUFBQUMsZUFBUSxFQUFDLENBQUMsQ0FBQztFQUV2QyxNQUFNQyxPQUFPLEdBQUcsSUFBQUMsa0JBQVcsRUFBQyxNQUFNO0lBQzlCLElBQUksQ0FBQ04sU0FBUyxDQUFDTyxPQUFPLEVBQUU7SUFFeEIsTUFBTUMsSUFBSSxHQUFHUixTQUFTLENBQUNPLE9BQU8sQ0FBQ0UscUJBQXFCLENBQUMsQ0FBQztJQUN0RCxNQUFNQyxTQUFTLEdBQUdsQixJQUFJLENBQUNtQixLQUFLLENBQUNILElBQUksQ0FBQ04sTUFBTSxDQUFDO0lBRXpDLElBQUlRLFNBQVMsR0FBRyxDQUFDLElBQUlBLFNBQVMsS0FBS1IsTUFBTSxFQUFFO01BQ3ZDVSxPQUFPLENBQUNDLEdBQUcsQ0FBQyxZQUFZLEVBQUVILFNBQVMsQ0FBQztNQUNwQ1AsU0FBUyxDQUFDTyxTQUFTLENBQUM7SUFDeEI7RUFDSixDQUFDLEVBQUUsQ0FBQ1YsU0FBUyxFQUFFRSxNQUFNLENBQUMsQ0FBQzs7RUFFdkI7RUFDQSxJQUFBWSxvQ0FBaUIsRUFBQ2QsU0FBUyxFQUFFSyxPQUFPLENBQUM7O0VBRXJDO0VBQ0EsSUFBQVUsZ0JBQVMsRUFBQyxNQUFNO0lBQ1osSUFBSWQsWUFBWSxDQUFDTSxPQUFPLElBQUlMLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDcEMsSUFBSTtRQUNBRCxZQUFZLENBQUNNLE9BQU8sQ0FBQ1MsTUFBTSxDQUFDLENBQUM7UUFDN0JmLFlBQVksQ0FBQ00sT0FBTyxDQUFDVSxjQUFjLENBQUNELE1BQU0sQ0FBQyxDQUFDO01BQ2hELENBQUMsQ0FBQyxPQUFPcEYsQ0FBQyxFQUFFO1FBQ1I7TUFBQTtJQUVSO0VBQ0osQ0FBQyxFQUFFLENBQUNzRSxNQUFNLEVBQUVELFlBQVksQ0FBQyxDQUFDO0VBRTFCLE9BQU9DLE1BQU07QUFDakI7QUFFQSxNQUFNZ0Isa0JBQWtCLEdBQUlDLEtBQUssSUFBSztFQUNsQyxNQUFNLENBQUNDLFNBQVMsRUFBRUMsWUFBWSxDQUFDLEdBQUdDLGNBQUssQ0FBQ2xCLFFBQVEsQ0FBQyxJQUFJLENBQUM7RUFDdEQsTUFBTSxDQUFDbUIsS0FBSyxFQUFFQyxRQUFRLENBQUMsR0FBR0YsY0FBSyxDQUFDbEIsUUFBUSxDQUFDLElBQUksQ0FBQztFQUM5QyxNQUFNLENBQUNxQixPQUFPLEVBQUVDLFVBQVUsQ0FBQyxHQUFHSixjQUFLLENBQUNsQixRQUFRLENBQUMsSUFBSSxDQUFDO0VBQ2xELE1BQU0sQ0FBQ3VCLFdBQVcsRUFBRUMsY0FBYyxDQUFDLEdBQUdOLGNBQUssQ0FBQ2xCLFFBQVEsQ0FBQyxLQUFLLENBQUM7RUFDM0QsTUFBTSxDQUFDeUIsSUFBSSxFQUFFQyxPQUFPLENBQUMsR0FBR1IsY0FBSyxDQUFDbEIsUUFBUSxDQUFDLElBQUksQ0FBQztFQUM1QyxNQUFNLENBQUMyQixZQUFZLEVBQUVDLGVBQWUsQ0FBQyxHQUFHVixjQUFLLENBQUNsQixRQUFRLENBQUMsSUFBSSxDQUFDO0VBQzVELE1BQU02QixXQUFXLEdBQUdYLGNBQUssQ0FBQ1ksTUFBTSxDQUFDLElBQUksQ0FBQztFQUN0QyxNQUFNQyxlQUFlLEdBQUcsSUFBQUQsYUFBTSxFQUFDLElBQUksQ0FBQztFQUNwQyxNQUFNRSxTQUFTLEdBQUcsSUFBQUYsYUFBTSxFQUFDLEtBQUssQ0FBQztFQUMvQixNQUFNRyxhQUFhLEdBQUcsSUFBQUgsYUFBTSxFQUFDLEtBQUssQ0FBQztFQUNuQyxNQUFNSSxPQUFPLEdBQUcsSUFBQUosYUFBTSxFQUFDLElBQUksQ0FBQztFQUM1QixNQUFNbEMsU0FBUyxHQUFHLElBQUF1QyxvQ0FBaUIsRUFBRUMsRUFBRSxJQUFLO0lBQ3hDLElBQUksQ0FBQ2IsV0FBVyxFQUFFO01BQ2RELFVBQVUsQ0FBQyxLQUFLLENBQUM7TUFDakJFLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDeEI7RUFDSixDQUFDLENBQUM7RUFFRixNQUFNM0IsWUFBWSxHQUFHLElBQUFpQyxhQUFNLEVBQUMsSUFBSSxDQUFDO0VBQ2pDLE1BQU1PLFlBQVksR0FBRzFDLDBCQUEwQixDQUFDQyxTQUFTLEVBQUVDLFlBQVksQ0FBQztFQUV4RSxTQUFTeUMsb0JBQW9CQSxDQUFDQyxDQUFDLEVBQUVDLENBQUMsRUFBRUosRUFBRSxFQUFFO0lBQ3BDLElBQUksQ0FBQ0EsRUFBRSxFQUFFLE9BQU8sS0FBSztJQUNyQixNQUFNaEMsSUFBSSxHQUFHZ0MsRUFBRSxDQUFDL0IscUJBQXFCLENBQUMsQ0FBQztJQUV2QyxPQUNJa0MsQ0FBQyxJQUFJbkMsSUFBSSxDQUFDcUMsSUFBSSxJQUNkRixDQUFDLElBQUluQyxJQUFJLENBQUNzQyxLQUFLLElBQ2ZGLENBQUMsSUFBSXBDLElBQUksQ0FBQ3VDLEdBQUcsSUFDYkgsQ0FBQyxJQUFJcEMsSUFBSSxDQUFDd0MsTUFBTTtFQUV4QjtFQUVBLFNBQVNDLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ3hCLE9BQU9DLFFBQVEsQ0FBQ0MsY0FBYyxJQUFBM0UsTUFBQSxDQUN2QjJDLEtBQUssQ0FBQ2lDLEVBQUUsc0NBQ2YsQ0FBQztFQUNMO0VBRUEsU0FBU0MsZUFBZUEsQ0FBQ3pILENBQUMsRUFBRTtJQUN4QixPQUFPLENBQ0gsV0FBVyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUNqRCxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQ3RDLENBQUMwSCxRQUFRLENBQUMxSCxDQUFDLENBQUMySCxHQUFHLENBQUM7RUFDckI7RUFFQSxTQUFTQyxlQUFlQSxDQUFDQyxLQUFLLEVBQUU7SUFDNUIsSUFBSSxDQUFDQSxLQUFLLEVBQUUsT0FBTyxJQUFJO0lBQ3ZCLE9BQU9BLEtBQUssQ0FDUDFGLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQzNCQSxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztFQUNoQztFQUVBLElBQUkyRixhQUFhLEdBQUdULGdCQUFnQixDQUFDLENBQUM7RUFFdEMsU0FBU1Usb0JBQW9CQSxDQUFDQyxTQUFTLEVBQUVDLFlBQVksRUFBRTtJQUNuRCxJQUFJLEVBQUN6QyxTQUFTLGFBQVRBLFNBQVMsZUFBVEEsU0FBUyxDQUFFSCxjQUFjLEdBQUU7SUFDaEMsSUFBSSxDQUFDNEMsWUFBWSxFQUFFO0lBRW5CLElBQUksQ0FBQ25CLG9CQUFvQixDQUFDbUIsWUFBWSxDQUFDbEIsQ0FBQyxFQUFFa0IsWUFBWSxDQUFDakIsQ0FBQyxFQUFFYyxhQUFhLENBQUMsRUFBRTtNQUN0RTtJQUNKO0lBRUEsTUFBTUksR0FBRyxHQUFHMUMsU0FBUyxDQUFDSCxjQUFjO0lBQ3BDLE1BQU0vQixFQUFFLEdBQUc0RSxHQUFHLENBQUNDLE1BQU07SUFDckIsTUFBTUMsR0FBRyxHQUFHRixHQUFHLENBQUNuRSxTQUFTO0lBQ3pCLElBQUksQ0FBQ1QsRUFBRSxJQUFJLENBQUM4RSxHQUFHLEVBQUU7O0lBRWpCO0lBQ0E7SUFDQSxNQUFNQyxXQUFXLEdBQUdELEdBQUcsQ0FBQ0UsV0FBVztJQUNuQyxNQUFNQyxjQUFjLEdBQUdDLG9CQUFvQixDQUFDaEQsU0FBUyxDQUFDO0lBQ3RELElBQUkrQyxjQUFjLEVBQUU7TUFDaEIsTUFBTUUsT0FBTyxHQUFHSixXQUFXLEtBQUtFLGNBQWMsQ0FBQ0QsV0FBVztNQUMxRCxNQUFNSSxLQUFLLEdBQUdMLFdBQVcsS0FBS0UsY0FBYyxDQUFDSSxTQUFTO01BQ3RELElBQUksQ0FBQ0YsT0FBTyxJQUFJLENBQUNDLEtBQUssRUFBRTtRQUNwQjFELE9BQU8sQ0FBQzRELElBQUksQ0FBQywyQ0FBMkMsR0FBR0wsY0FBYyxDQUFDTSxLQUFLLENBQUM7UUFDaEY7TUFDSjtJQUNKO0lBRUEsTUFBTUEsS0FBSyxRQUFBakcsTUFBQSxDQUFRZ0YsZUFBZSxDQUFDSSxTQUFTLENBQUMsT0FBSTtJQUNqRDFFLEVBQUUsQ0FBQ3dGLFVBQVUsQ0FBQ0QsS0FBSyxDQUFDO0VBQ3hCO0VBRUEsTUFBTUUsUUFBUSxHQUFHckQsY0FBSyxDQUFDWSxNQUFNLENBQUMsSUFBSSxDQUFDO0VBQ25DLE1BQU0wQyxHQUFHLEdBQUdBLENBQUEsS0FBTTtJQUNkLE9BQU87TUFDSEMsUUFBUSxFQUFFQSxDQUFBLEtBQU07UUFDWixPQUFPQyxZQUFZLENBQUMsQ0FBQztNQUN6QixDQUFDO01BRURuQixvQkFBb0IsRUFBRSxNQUFBQSxDQUFPRixLQUFLLEVBQUVJLFlBQVksS0FBSztRQUNqRGMsUUFBUSxDQUFDcEUsT0FBTyxHQUFHO1VBQUNrRCxLQUFLO1VBQUVJO1FBQVksQ0FBQztNQUM1QztJQUNKLENBQUM7RUFDTCxDQUFDO0VBRUR2QyxjQUFLLENBQUNQLFNBQVMsQ0FBQyxNQUFNO0lBQ2xCSSxLQUFLLENBQUM0RCxZQUFZLENBQUNILEdBQUcsR0FBR0EsR0FBRyxDQUFDLENBQUM7RUFDbEMsQ0FBQyxDQUFDO0VBRUYsTUFBTUksY0FBYyxHQUFHLENBQ25CO0lBQUM1QixFQUFFLEVBQUUsT0FBTztJQUFFNkIsSUFBSSxFQUFFO0VBQUksQ0FBQyxFQUN6QjtJQUFDN0IsRUFBRSxFQUFFLE9BQU87SUFBRTZCLElBQUksRUFBRTtFQUFLLENBQUMsRUFDMUI7SUFBQzdCLEVBQUUsRUFBRSxPQUFPO0lBQUU2QixJQUFJLEVBQUU7RUFBTyxDQUFDLEVBQzVCO0lBQUNDLFNBQVMsRUFBRTtFQUFJLENBQUMsRUFDakI7SUFBQzlCLEVBQUUsRUFBRSxPQUFPO0lBQUU2QixJQUFJLEVBQUU7RUFBWSxDQUFDLENBQ3BDO0VBRUQzRCxjQUFLLENBQUNQLFNBQVMsQ0FBQyxNQUFNO0lBQ2xCLElBQUlvRSxZQUFZLEdBQUdoRSxLQUFLLENBQUNpRSxZQUFZLEdBQ2pDLENBQ0ksVUFBVSxDQUNiLEdBRUQsQ0FDSSxNQUFNLEVBQ04sTUFBTSxFQUNOLFdBQVcsRUFDWDtNQUFDaEMsRUFBRSxFQUFFLFNBQVM7TUFBRTZCLElBQUksRUFBRSxXQUFXO01BQUVJLFdBQVcsRUFBRTtJQUFlLENBQUMsRUFDaEUsV0FBVyxFQUNYO01BQUNBLFdBQVcsRUFBRSxNQUFNO01BQUVDLFVBQVUsRUFBRSxnQkFBZ0I7TUFBRUMsT0FBTyxFQUFFO0lBQU0sQ0FBQyxFQUNwRTtNQUFDRixXQUFXLEVBQUUsUUFBUTtNQUFFQyxVQUFVLEVBQUUsa0JBQWtCO01BQUVDLE9BQU8sRUFBRTtJQUFRLENBQUMsRUFDMUUsV0FBVyxFQUNYLE9BQU8sRUFDUCxPQUFPLEVBQ1AsV0FBVyxFQUNYLFFBQVEsRUFDUixRQUFRLEVBQ1IsV0FBVyxFQUNYLFlBQVksRUFDWixPQUFPLEVBQ1AsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxNQUFNLEVBQ04sV0FBVyxFQUNYLFVBQVUsQ0FDYjtJQUVMLElBQUlwRSxLQUFLLENBQUNxRSxZQUFZLEVBQUU7TUFDcEJMLFlBQVksQ0FBQ00sT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUNoQztJQUVBakUsUUFBUSxDQUFDMkQsWUFBWSxDQUFDO0VBQzFCLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTjdELGNBQUssQ0FBQ1AsU0FBUyxDQUFDLE1BQU07SUFBQSxJQUFBMkUsV0FBQTtJQUNsQixLQUFBQSxXQUFBLEdBQUl2RSxLQUFLLENBQUN3RSxJQUFJLGNBQUFELFdBQUEsZUFBVkEsV0FBQSxDQUFZRSxNQUFNLEVBQUU7TUFDcEIsSUFBSUEsTUFBTSxHQUFHekUsS0FBSyxDQUFDd0UsSUFBSSxDQUFDQyxNQUFNO01BQzlCLE1BQU1DLFdBQVcsR0FBR0MsY0FBSyxDQUFDQyxtQkFBbUIsQ0FBQ0gsTUFBTSxDQUFDO01BQ3JELE1BQU1ELElBQUksR0FBRyxJQUFJSyxJQUFJLENBQUMsQ0FBQ0gsV0FBVyxDQUFDLEVBQUU7UUFDakNJLElBQUksRUFBRTlFLEtBQUssQ0FBQ3dFLElBQUksQ0FBQ007TUFDckIsQ0FBQyxDQUFDO01BRUYsTUFBTUMsUUFBUSxHQUFHLElBQUlDLFFBQVEsQ0FBQyxDQUFDO01BQy9CRCxRQUFRLENBQUNFLE1BQU0sQ0FBQyxPQUFPLEVBQUVULElBQUksRUFBRSxlQUFlLENBQUM7TUFFL0MsTUFBTXhILFdBQVcsR0FBR0MsY0FBYyxDQUFDQyxPQUFPLENBQUMsYUFBYSxDQUFDO01BQ3pELE1BQU1DLE9BQU8sR0FBR0YsY0FBYyxDQUFDQyxPQUFPLENBQUMsU0FBUyxDQUFDO01BRWpELElBQUFnSSxpQ0FBWSxFQUNSQyxLQUFLLElBQUE5SCxNQUFBLENBQ0VYLFdBQVcsQ0FBQyxDQUFDLGNBQ2hCO1FBQ0kwSSxNQUFNLEVBQUUsTUFBTTtRQUNkQyxPQUFPLEVBQUU7VUFDTCxlQUFlLEVBQUUsU0FBUyxHQUFHckksV0FBVztVQUN4QyxTQUFTLEVBQUVHO1FBRWYsQ0FBQztRQUNEbUksSUFBSSxFQUFFUDtNQUNWLENBQ0osQ0FBQyxDQUFDUSxJQUFJLENBQUVDLFFBQVEsSUFBSztRQUNqQixJQUFBTixpQ0FBWSxFQUNSTSxRQUFRLENBQUM5RSxJQUFJLENBQUMsQ0FBQyxDQUFDNkUsSUFBSSxDQUFFN0UsSUFBSSxJQUFLO1VBQzNCQyxPQUFPLENBQUNELElBQUksQ0FBQztRQUNqQixDQUFDLENBQ0wsQ0FBQztNQUNMLENBQUMsQ0FDTCxDQUFDO0lBQ0w7RUFDSixDQUFDLEVBQUUsQ0FBQ1YsS0FBSyxDQUFDd0UsSUFBSSxDQUFDLENBQUM7RUFFaEJyRSxjQUFLLENBQUNQLFNBQVMsQ0FBQyxNQUFNO0lBQ2xCLElBQUlZLFdBQVcsRUFBRTtNQUNiLE1BQU1pRixLQUFLLEdBQUd0SixNQUFNLENBQUN1SixVQUFVLENBQUMsTUFBTTtRQUNsQ25GLFVBQVUsQ0FBQyxJQUFJLENBQUM7TUFDcEIsQ0FBQyxFQUFFLElBQUssQ0FBQztNQUVULE9BQU8sTUFBTXBFLE1BQU0sQ0FBQ3dKLFlBQVksQ0FBQ0YsS0FBSyxDQUFDO0lBQzNDO0VBQ0osQ0FBQyxFQUFFLENBQUNqRixXQUFXLENBQUMsQ0FBQztFQUVqQixTQUFTb0YsY0FBY0EsQ0FBQSxFQUFHO0lBQ3RCM0YsU0FBUyxDQUFDSCxjQUFjLENBQUMrRixXQUFXLEdBQUdoSiwyQkFBa0IsQ0FBQ2lKLGNBQWMsQ0FBQyxDQUFDLENBQUNDLElBQUksR0FBRyxHQUFHLEdBQUdsSiwyQkFBa0IsQ0FBQ2lKLGNBQWMsQ0FBQyxDQUFDLENBQUNFLE9BQU87RUFDdkk7RUFFQSxNQUFNckMsWUFBWSxHQUFHLE1BQUFBLENBQUEsS0FBWTtJQUM3QixJQUFJM0QsS0FBSyxDQUFDaUcsc0JBQXNCLEtBQUssS0FBSyxJQUFJaEcsU0FBUyxDQUFDSCxjQUFjLENBQUNvRyxTQUFTLENBQUNoSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO01BQ3pGMkMsZUFBZSxDQUFDLCtDQUErQyxDQUFDO01BQ2hFLE9BQU8sSUFBSTtJQUNmO0lBRUEsSUFBSVosU0FBUyxFQUFFO01BQUEsSUFBQWtHLFlBQUEsRUFBQUMsWUFBQTtNQUNYbkcsU0FBUyxDQUFDSCxjQUFjLENBQUM4QyxNQUFNLENBQUN5RCxjQUFjLENBQUMsVUFBVSxDQUFDO01BQzFELElBQUlDLElBQUksR0FBRyxNQUFNckcsU0FBUyxDQUFDSCxjQUFjLENBQUN5RyxVQUFVLENBQUMsTUFBTSxDQUFDO01BQzVELElBQUl2RyxLQUFLLENBQUNpRSxZQUFZLEVBQUU7UUFDcEJoRSxTQUFTLENBQUNILGNBQWMsQ0FBQzhDLE1BQU0sQ0FBQzRELGlCQUFpQixDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUM7TUFDakY7TUFFQSxPQUFPLElBQUlDLElBQUksQ0FBQyxDQUFDSCxJQUFJLENBQUMsRUFBRSxDQUFBSCxZQUFBLEdBQUFuRyxLQUFLLENBQUN3RSxJQUFJLGNBQUEyQixZQUFBLGVBQVZBLFlBQUEsQ0FBWUosSUFBSSxHQUFHL0YsS0FBSyxDQUFDd0UsSUFBSSxDQUFDdUIsSUFBSSxHQUFHLGVBQWUsRUFBRTtRQUFDakIsSUFBSSxFQUFFLENBQUFzQixZQUFBLEdBQUFwRyxLQUFLLENBQUN3RSxJQUFJLGNBQUE0QixZQUFBLGVBQVZBLFlBQUEsQ0FBWXRCLElBQUksR0FBRzlFLEtBQUssQ0FBQ3dFLElBQUksQ0FBQ00sSUFBSSxHQUFHO01BQXlFLENBQUMsQ0FBQztJQUN6TTtFQUNKLENBQUM7RUFFRCxTQUFTNEIsbUJBQW1CQSxDQUFDOUQsTUFBTSxFQUFFO0lBQ2pDLElBQUk5QixXQUFXLENBQUMxQixPQUFPLEVBQUUsT0FBTzBCLFdBQVcsQ0FBQzFCLE9BQU87SUFFbkQsTUFBTXVILGFBQWEsR0FBRy9ELE1BQU0sQ0FBQ3BFLFNBQVMsQ0FBQ3VFLFdBQVc7SUFDbEQsTUFBTTZELFdBQVcsR0FBR2hFLE1BQU0sQ0FBQ3BFLFNBQVMsQ0FBQzRFLFNBQVM7SUFFOUNSLE1BQU0sQ0FBQ3BFLFNBQVMsQ0FBQ3FJLFNBQVMsQ0FBQyxDQUFDO0lBQzVCLE1BQU0vQyxJQUFJLEdBQUdsQixNQUFNLENBQUNwRSxTQUFTLENBQUNzSSxPQUFPLENBQUMsQ0FBQztJQUN2Q2xFLE1BQU0sQ0FBQ3BFLFNBQVMsQ0FBQ3VJLE1BQU0sQ0FBQ0osYUFBYSxFQUFFQyxXQUFXLENBQUM7SUFFbkQ5RixXQUFXLENBQUMxQixPQUFPLEdBQUcwRSxJQUFJO0lBQzFCLE9BQU9BLElBQUk7RUFDZjtFQUVBLFNBQVNrRCxtQkFBbUJBLENBQUNsRCxJQUFJLEVBQUU7SUFDL0IsTUFBTW1ELEtBQUssR0FBRyxvQkFBb0I7SUFDbEMsTUFBTUMsTUFBTSxHQUFHLElBQUlDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLElBQUlDLEtBQUs7SUFFVCxPQUFPLENBQUNBLEtBQUssR0FBR0gsS0FBSyxDQUFDSSxJQUFJLENBQUN2RCxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUU7TUFDeENvRCxNQUFNLENBQUNJLEdBQUcsQ0FBQ0YsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQjtJQUVBLE9BQU9HLEtBQUssQ0FBQ0MsSUFBSSxDQUFDTixNQUFNLENBQUM7RUFDN0I7RUFFQSxTQUFTTyxrQkFBa0JBLENBQUNDLEtBQUssRUFBRUMsS0FBSyxFQUFFQyxHQUFHLEVBQUU7SUFDM0MsSUFBSUYsS0FBSyxDQUFDRyxTQUFTLEtBQUtGLEtBQUssQ0FBQ0UsU0FBUyxFQUFFLE9BQU8sS0FBSztJQUVyRCxNQUFNckcsQ0FBQyxHQUFHa0csS0FBSyxDQUFDdEwsUUFBUSxDQUFDMEwsR0FBRztJQUM1QixNQUFNckcsQ0FBQyxHQUFHaUcsS0FBSyxDQUFDdEwsUUFBUSxDQUFDMkwsR0FBRzs7SUFFNUI7SUFDQSxPQUNJdEcsQ0FBQyxLQUFLa0csS0FBSyxDQUFDdkwsUUFBUSxDQUFDMkwsR0FBRyxJQUN4QnZHLENBQUMsSUFBSW1HLEtBQUssQ0FBQ3ZMLFFBQVEsQ0FBQzBMLEdBQUcsSUFDdkJ0RyxDQUFDLElBQUlvRyxHQUFHLENBQUN4TCxRQUFRLENBQUMwTCxHQUFHO0VBRTdCO0VBRUEsU0FBU0UsbUJBQW1CQSxDQUFDL0gsU0FBUyxFQUFFO0lBQ3BDLE1BQU0yQyxNQUFNLEdBQUczQyxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRUgsY0FBYztJQUN4QyxNQUFNdEIsU0FBUyxHQUFHb0UsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVwRSxTQUFTO0lBQ25DLE1BQU15SixTQUFTLEdBQUdyRixNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRUEsTUFBTTtJQUVoQyxNQUFNc0YsTUFBTSxHQUFHbEgsZUFBZSxDQUFDNUIsT0FBTztJQUN0QyxJQUFJLENBQUN3RCxNQUFNLElBQUksQ0FBQ3BFLFNBQVMsSUFBSSxDQUFDeUosU0FBUyxJQUFJLENBQUNDLE1BQU0sRUFBRTs7SUFFcEQ7SUFDQTtJQUNBLElBQUk7TUFDQTFKLFNBQVMsQ0FBQ3VJLE1BQU0sQ0FBQ21CLE1BQU0sQ0FBQ25GLFdBQVcsRUFBRW1GLE1BQU0sQ0FBQzlFLFNBQVMsQ0FBQztNQUN0RDtNQUNBO01BQ0E7SUFDSixDQUFDLFNBQVM7TUFDTnBDLGVBQWUsQ0FBQzVCLE9BQU8sR0FBRyxJQUFJO01BQzlCK0ksa0JBQWtCLENBQUNsSSxTQUFTLENBQUM7SUFDakM7RUFDSjtFQUVBLFNBQVNrSSxrQkFBa0JBLENBQUNsSSxTQUFTLEVBQUU7SUFDbkNlLGVBQWUsQ0FBQzVCLE9BQU8sR0FBRzZELG9CQUFvQixDQUFDaEQsU0FBUyxDQUFDO0VBQzdEO0VBRUEsU0FBU21JLG9CQUFvQkEsQ0FBQ3hGLE1BQU0sRUFBRXlGLFlBQVksRUFBaUI7SUFBQSxJQUFmQyxPQUFPLEdBQUFySyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxHQUFHO0lBQzdELE1BQU00RSxHQUFHLEdBQUdELE1BQU0sQ0FBQ3BFLFNBQVM7SUFDNUIsSUFBSVksT0FBTyxHQUFHaUosWUFBWTtJQUUxQixLQUFLLElBQUlwTixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdxTixPQUFPLEVBQUVyTixDQUFDLEVBQUUsRUFBRTtNQUM5QjtNQUNBbUUsT0FBTyxHQUFHbUosVUFBVSxDQUFDbkosT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO01BRWpDeUQsR0FBRyxDQUFDa0UsTUFBTSxDQUFDM0gsT0FBTyxFQUFFQSxPQUFPLENBQUM7O01BRTVCO01BQ0F5RCxHQUFHLENBQUNrRSxNQUFNLENBQ04zSCxPQUFPLEVBQ1BtSixVQUFVLENBQUNuSixPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQzFCLENBQUM7TUFFRCxNQUFNb0osRUFBRSxHQUFHM0YsR0FBRyxDQUFDaUIsSUFBSTs7TUFFbkI7TUFDQSxJQUFJLENBQUMwRSxFQUFFLElBQUksSUFBSSxDQUFDN0wsSUFBSSxDQUFDNkwsRUFBRSxDQUFDLEVBQUUsT0FBTyxJQUFJOztNQUVyQztNQUNBLElBQUlBLEVBQUUsS0FBSyxHQUFHLEVBQUU7UUFDWjtRQUNBLE1BQU1DLElBQUksR0FBR0YsVUFBVSxDQUFDbkosT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BDeUQsR0FBRyxDQUFDa0UsTUFBTSxDQUFDMEIsSUFBSSxFQUFFRixVQUFVLENBQUNFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRDLElBQUk1RixHQUFHLENBQUNpQixJQUFJLEtBQUssR0FBRyxFQUFFO1VBQ2xCO1VBQ0EsT0FBT3lFLFVBQVUsQ0FBQ25KLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsQztNQUNKO0lBQ0o7SUFFQSxPQUFPLElBQUk7RUFDZjtFQUVBLFNBQVNzSixtQkFBbUJBLENBQUM5RixNQUFNLEVBQUV5RixZQUFZLEVBQWlCO0lBQUEsSUFBZkMsT0FBTyxHQUFBckssU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsR0FBRztJQUM1RCxNQUFNNEUsR0FBRyxHQUFHRCxNQUFNLENBQUNwRSxTQUFTO0lBQzVCLElBQUlZLE9BQU8sR0FBR2lKLFlBQVk7SUFFMUIsS0FBSyxJQUFJcE4sQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHcU4sT0FBTyxFQUFFck4sQ0FBQyxFQUFFLEVBQUU7TUFDOUJtRSxPQUFPLEdBQUdtSixVQUFVLENBQUNuSixPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7O01BRWpDO01BQ0F5RCxHQUFHLENBQUNrRSxNQUFNLENBQ053QixVQUFVLENBQUNuSixPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDdkJBLE9BQ0osQ0FBQztNQUVELE1BQU1vSixFQUFFLEdBQUczRixHQUFHLENBQUNpQixJQUFJO01BRW5CLElBQUksQ0FBQzBFLEVBQUUsSUFBSSxJQUFJLENBQUM3TCxJQUFJLENBQUM2TCxFQUFFLENBQUMsRUFBRSxPQUFPLElBQUk7O01BRXJDO01BQ0EsSUFBSUEsRUFBRSxLQUFLLEdBQUcsRUFBRTtRQUNaLE1BQU1HLElBQUksR0FBR0osVUFBVSxDQUFDbkosT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BDeUQsR0FBRyxDQUFDa0UsTUFBTSxDQUNOd0IsVUFBVSxDQUFDSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDcEJBLElBQ0osQ0FBQztRQUVELElBQUk5RixHQUFHLENBQUNpQixJQUFJLEtBQUssR0FBRyxFQUFFO1VBQ2xCO1VBQ0EsT0FBT3lFLFVBQVUsQ0FBQ25KLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsQztNQUNKO0lBQ0o7SUFFQSxPQUFPLElBQUk7RUFDZjtFQUVBLFNBQVN3SixTQUFTQSxDQUFDaEcsTUFBTSxFQUFFaUcsTUFBTSxFQUFFO0lBQy9CLE1BQU1oRyxHQUFHLEdBQUdELE1BQU0sQ0FBQ3BFLFNBQVM7SUFDNUJxRSxHQUFHLENBQUNrRSxNQUFNLENBQUM4QixNQUFNLEVBQUVOLFVBQVUsQ0FBQ00sTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBT2hHLEdBQUcsQ0FBQ2lCLElBQUksSUFBSSxJQUFJO0VBQzNCO0VBRUEsU0FBU2dGLG1DQUFtQ0EsQ0FBQ2xHLE1BQU0sRUFBRWlHLE1BQU0sRUFBRTtJQUN6RCxNQUFNRSxFQUFFLEdBQUdILFNBQVMsQ0FBQ2hHLE1BQU0sRUFBRWlHLE1BQU0sQ0FBQztJQUNwQyxNQUFNRyxFQUFFLEdBQUdKLFNBQVMsQ0FBQ2hHLE1BQU0sRUFBRTJGLFVBQVUsQ0FBQ00sTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsT0FBT0UsRUFBRSxLQUFLLEdBQUcsSUFBSUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0VBQ3JDO0VBRUEsU0FBU0MsNkJBQTZCQSxDQUFDckcsTUFBTSxFQUFFaUcsTUFBTSxFQUFFO0lBQ25ELE9BQ0lELFNBQVMsQ0FBQ2hHLE1BQU0sRUFBRTJGLFVBQVUsQ0FBQ00sTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQ2pERCxTQUFTLENBQUNoRyxNQUFNLEVBQUUyRixVQUFVLENBQUNNLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRztFQUV6RDtFQUVBLFNBQVM1RixvQkFBb0JBLENBQUNoRCxTQUFTLEVBQUU7SUFDckMsTUFBTTJDLE1BQU0sR0FBRzNDLFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFSCxjQUFjO0lBQ3hDLE1BQU10QixTQUFTLEdBQUdvRSxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRXBFLFNBQVM7SUFFbkMsTUFBTW1JLGFBQWEsR0FBR25JLFNBQVMsQ0FBQ3VFLFdBQVc7SUFDM0MsTUFBTTZELFdBQVcsR0FBR3BJLFNBQVMsQ0FBQzRFLFNBQVM7SUFFdkM1RSxTQUFTLENBQUMwSyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdCMUssU0FBUyxDQUFDdUksTUFBTSxDQUFDSixhQUFhLEVBQUVDLFdBQVcsQ0FBQzs7SUFFNUM7SUFDQTs7SUFFQSxJQUFJdUMsU0FBUyxHQUFHeEMsYUFBYTtJQUM3QixJQUFJO01BQ0EsSUFBSW1DLG1DQUFtQyxDQUFDbEcsTUFBTSxFQUFFK0QsYUFBYSxDQUFDLEVBQUU7UUFDNUQsT0FBTyxJQUFJO01BQ2Y7TUFFQSxJQUFJeUMsWUFBWSxHQUFHSCw2QkFBNkIsQ0FBQ3JHLE1BQU0sRUFBRStELGFBQWEsQ0FBQztNQUN2RSxJQUFJeUMsWUFBWSxFQUFFO1FBQ2Q7UUFDQUQsU0FBUyxHQUFHWixVQUFVLENBQUM1QixhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7TUFDN0M7TUFFQSxNQUFNakYsSUFBSSxHQUFHZ0gsbUJBQW1CLENBQUM5RixNQUFNLEVBQUV1RyxTQUFTLENBQUM7TUFDbkQsTUFBTXhILEtBQUssR0FBR3lHLG9CQUFvQixDQUFDeEYsTUFBTSxFQUFFdUcsU0FBUyxDQUFDO01BRXJELElBQUl6SCxJQUFJLElBQUlDLEtBQUssRUFBRTtRQUNmbkQsU0FBUyxDQUFDdUksTUFBTSxDQUFDckYsSUFBSSxFQUFFQyxLQUFLLENBQUM7UUFDN0IsTUFBTW1DLElBQUksR0FBR3RGLFNBQVMsQ0FBQ3NGLElBQUk7UUFDM0I3QyxTQUFTLENBQUM3QixPQUFPLEdBQUdnSyxZQUFZOztRQUVoQztBQUNoQjtBQUNBO0FBQ0E7QUFDQTs7UUFFZ0IsSUFBSSxlQUFlLENBQUN6TSxJQUFJLENBQUNtSCxJQUFJLENBQUMsRUFBRTtVQUM1QixPQUFPO1lBQ0hSLEtBQUssRUFBRVEsSUFBSTtZQUNYZixXQUFXLEVBQUVyQixJQUFJO1lBQ2pCMEIsU0FBUyxFQUFFekI7VUFDZixDQUFDO1FBQ0w7TUFDSjtJQUNKLENBQUMsU0FBUztNQUNObkQsU0FBUyxDQUFDdUksTUFBTSxDQUFDSixhQUFhLEVBQUVDLFdBQVcsQ0FBQztJQUNoRDtFQUNKO0VBRUEsU0FBUzJCLFVBQVVBLENBQUNNLE1BQU0sRUFBRVEsS0FBSyxFQUFFO0lBQy9CLE1BQU1DLEtBQUssR0FBR1QsTUFBTSxDQUFDVSxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQy9CLE1BQU1DLEdBQUcsR0FBR0YsS0FBSyxDQUFDcEwsTUFBTSxHQUFHLENBQUM7SUFFNUIsTUFBTW9FLEtBQUssR0FBR2pFLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRW1MLFFBQVEsQ0FBQ0gsS0FBSyxDQUFDRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBR0gsS0FBSyxDQUFDO0lBQzNEQyxLQUFLLENBQUNFLEdBQUcsQ0FBQyxHQUFHbEgsS0FBSyxDQUFDN0UsUUFBUSxDQUFDLENBQUM7SUFFN0IsT0FBTzZMLEtBQUssQ0FBQ0ksSUFBSSxDQUFDLEdBQUcsQ0FBQztFQUMxQjtFQUVBdkosY0FBSyxDQUFDUCxTQUFTLENBQUMsTUFBTTtJQUNsQixJQUFJSyxTQUFTLEVBQUU7TUFDWDJGLGNBQWMsQ0FBQyxDQUFDO01BQ2hCOztNQUVBLE1BQU1oRCxNQUFNLEdBQUczQyxTQUFTLENBQUNILGNBQWM7TUFDdkM4QyxNQUFNLENBQUMrRyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUdDLElBQUksSUFBSztRQUN6QyxNQUFNblAsQ0FBQyxHQUFHbVAsSUFBSSxDQUFDQyxLQUFLOztRQUVwQjtRQUNBLElBQUkzSCxlQUFlLENBQUN6SCxDQUFDLENBQUMsRUFBRTtVQUNwQnFQLHFCQUFxQixDQUFDLE1BQU07WUFDeEIzQixrQkFBa0IsQ0FBQ2xJLFNBQVMsQ0FBQztZQUM3QjtVQUNKLENBQUMsQ0FBQztVQUVGO1FBQ0o7O1FBRUE7UUFDQSxJQUFJeEYsQ0FBQyxDQUFDMkgsR0FBRyxLQUFLLFdBQVcsSUFBSTNILENBQUMsQ0FBQzJILEdBQUcsS0FBSyxRQUFRLEVBQUU7VUFFN0MsSUFBSWxCLGFBQWEsQ0FBQzlCLE9BQU8sRUFBRTtZQUN2QjtZQUNBd0QsTUFBTSxDQUFDbUgsYUFBYSxDQUFDQyxJQUFJLENBQUMsQ0FBQztZQUMzQnZQLENBQUMsQ0FBQ3dQLGNBQWMsQ0FBQyxDQUFDO1lBQ2xCeFAsQ0FBQyxDQUFDeVAsZUFBZSxDQUFDLENBQUM7WUFDbkI7VUFDSjs7VUFFQTtVQUNBaEosYUFBYSxDQUFDOUIsT0FBTyxHQUFHLElBQUk7O1VBRTVCO1VBQ0EwSyxxQkFBcUIsQ0FBQyxNQUFNO1lBQ3hCQSxxQkFBcUIsQ0FBQyxNQUFNO2NBQ3hCNUksYUFBYSxDQUFDOUIsT0FBTyxHQUFHLEtBQUs7WUFDakMsQ0FBQyxDQUFDO1VBQ04sQ0FBQyxDQUFDO1FBQ047O1FBRUE7UUFDQTtRQUNBLElBQUs0QixlQUFlLENBQUM1QixPQUFPLElBQUksQ0FBQzhDLGVBQWUsQ0FBQ3pILENBQUMsQ0FBQyxJQUFLd0csU0FBUyxDQUFDN0IsT0FBTyxFQUFFO1VBQ3ZFO1VBQ0EsSUFBSTNFLENBQUMsQ0FBQzJILEdBQUcsS0FBSyxXQUFXLElBQUkzSCxDQUFDLENBQUMySCxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQzdDO1lBQ0EzSCxDQUFDLENBQUN3UCxjQUFjLENBQUMsQ0FBQztZQUNsQnhQLENBQUMsQ0FBQ3lQLGVBQWUsQ0FBQyxDQUFDO1lBRW5CbEMsbUJBQW1CLENBQUMvSCxTQUFTLEVBQUVlLGVBQWUsQ0FBQzVCLE9BQU8sQ0FBQztZQUN2RDRCLGVBQWUsQ0FBQzVCLE9BQU8sR0FBRyxJQUFJO1lBQzlCNkIsU0FBUyxDQUFDN0IsT0FBTyxHQUFHLEtBQUs7WUFDekI4QixhQUFhLENBQUM5QixPQUFPLEdBQUcsS0FBSztZQUU3QjtVQUNKOztVQUVBO1VBQ0E7VUFDQSxJQUFJLENBQUM2QixTQUFTLENBQUM3QixPQUFPLEVBQUU7WUFDcEI7WUFDQSxJQUNJM0UsQ0FBQyxDQUFDMkgsR0FBRyxDQUFDbEUsTUFBTSxLQUFLLENBQUM7WUFBSTtZQUN0QnpELENBQUMsQ0FBQzBQLE9BQU8sSUFDVDFQLENBQUMsQ0FBQzJQLE9BQU8sRUFDWDtjQUNFM1AsQ0FBQyxDQUFDd1AsY0FBYyxDQUFDLENBQUM7Y0FDbEJ4UCxDQUFDLENBQUN5UCxlQUFlLENBQUMsQ0FBQztZQUN2QjtVQUNKLENBQUMsTUFBTTtZQUNIbEosZUFBZSxDQUFDNUIsT0FBTyxHQUFHLElBQUk7VUFDbEM7VUFFQTZCLFNBQVMsQ0FBQzdCLE9BQU8sR0FBRyxLQUFLO1FBQzdCO1FBRUEsSUFBSTNFLENBQUMsQ0FBQzJILEdBQUcsS0FBSyxXQUFXLElBQUkzSCxDQUFDLENBQUMySCxHQUFHLEtBQUssUUFBUSxFQUFFO1VBQzdDMEgscUJBQXFCLENBQUMsTUFBTTtZQUN4QjNCLGtCQUFrQixDQUFDbEksU0FBUyxDQUFDO1VBQ2pDLENBQUMsQ0FBQztRQUNOO01BQ0osQ0FBQyxDQUFDO01BRUYsTUFBTW9LLFNBQVMsR0FBSTVQLENBQUMsSUFBSztRQUNyQixJQUFJLENBQUM4RyxvQkFBb0IsQ0FBQzlHLENBQUMsQ0FBQzZQLE9BQU8sRUFBRTdQLENBQUMsQ0FBQzhQLE9BQU8sRUFBRWhJLGFBQWEsQ0FBQyxFQUFFO1VBQzVEO1FBQ0o7UUFFQSxJQUFJaUIsUUFBUSxDQUFDcEUsT0FBTyxFQUFFO1VBQ2xCb0Qsb0JBQW9CLENBQUNnQixRQUFRLENBQUNwRSxPQUFPLENBQUNrRCxLQUFLLEVBQUVrQixRQUFRLENBQUNwRSxPQUFPLENBQUNzRCxZQUFZLENBQUM7VUFDM0VjLFFBQVEsQ0FBQ3BFLE9BQU8sR0FBRyxJQUFJO1FBQzNCO1FBRUErSSxrQkFBa0IsQ0FBQ2xJLFNBQVMsQ0FBQztRQUM3QjtNQUNKLENBQUM7TUFFRHNDLGFBQWEsQ0FBQ29ILGdCQUFnQixDQUFDLFNBQVMsRUFBRVUsU0FBUyxDQUFDO01BQ3BELE9BQU8sTUFBTTlILGFBQWEsQ0FBQ2lJLG1CQUFtQixDQUFDLFNBQVMsRUFBRUgsU0FBUyxDQUFDO0lBQ3hFO0VBQ0osQ0FBQyxFQUFFLENBQUNwSyxTQUFTLENBQUMsQ0FBQztFQUVmRSxjQUFLLENBQUNQLFNBQVMsQ0FBQyxNQUFNO0lBQ2xCLElBQUlLLFNBQVMsSUFBSVMsSUFBSSxFQUFFO01BQ25CVCxTQUFTLENBQUNILGNBQWMsQ0FBQzJLLGNBQWMsR0FBRyxZQUFZO1FBQ2xEeEssU0FBUyxDQUFDSCxjQUFjLENBQUM0SyxrQkFBa0IsR0FBRyxDQUFDL0YsY0FBSyxDQUFDZ0csTUFBTSxDQUFDM0ssS0FBSyxDQUFDNEssWUFBWSxDQUFDLEdBQUc1SyxLQUFLLENBQUM0SyxZQUFZLEdBQUcsSUFBSTtRQUMzRyxJQUFJNUssS0FBSyxDQUFDaUUsWUFBWSxFQUFFO1VBQ3BCaEUsU0FBUyxDQUFDSCxjQUFjLENBQUM4QyxNQUFNLENBQUM0RCxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDO1FBQ2pGLENBQUMsTUFBTSxJQUFJeEcsS0FBSyxDQUFDNkssUUFBUSxFQUFFO1VBQ3ZCNUssU0FBUyxDQUFDSCxjQUFjLENBQUNnTCxVQUFVLEdBQUc5SyxLQUFLLENBQUM2SyxRQUFRO1FBQ3hEO1FBRUEsSUFBSTFKLE9BQU8sQ0FBQy9CLE9BQU8sRUFBRTtVQUNqQixJQUFJb0YsSUFBSSxHQUFHLE1BQU1iLFlBQVksQ0FBQyxDQUFDO1VBQy9CLElBQUkzRCxLQUFLLENBQUMrSyxrQkFBa0IsRUFBRTtZQUMxQi9LLEtBQUssQ0FBQytLLGtCQUFrQixDQUFDdkcsSUFBSSxDQUFDO1VBQ2xDO1VBRUFyRCxPQUFPLENBQUMvQixPQUFPLEdBQUcsS0FBSztRQUMzQjtRQUVBMEIsV0FBVyxDQUFDMUIsT0FBTyxHQUFHc0gsbUJBQW1CLENBQUN6RyxTQUFTLENBQUNILGNBQWMsQ0FBQzhDLE1BQU0sQ0FBQztNQUM5RSxDQUFDO01BRUQzQyxTQUFTLENBQUNILGNBQWMsQ0FBQzZKLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxNQUFPbFAsQ0FBQyxJQUFLO1FBQ3BFLElBQUl1RixLQUFLLENBQUNnTCxvQkFBb0IsRUFBRTtVQUM1QixJQUFJQyxhQUFhLEdBQUdsSixRQUFRLENBQUNtSixzQkFBc0IsQ0FBQywwQkFBMEIsQ0FBQztVQUMvRSxLQUFLLE1BQU1DLFlBQVksSUFBSUYsYUFBYSxFQUFFO1lBQ3RDRSxZQUFZLENBQUNDLGFBQWEsQ0FBQ0MsV0FBVyxDQUFDRixZQUFZLENBQUM7VUFDeEQ7UUFDSjtRQUVBLElBQUluTCxLQUFLLENBQUNzTCxvQkFBb0IsRUFBRTtVQUM1QixJQUFJQyxhQUFhLEdBQUd4SixRQUFRLENBQUNtSixzQkFBc0IsQ0FBQywwQkFBMEIsQ0FBQztVQUMvRSxLQUFLLE1BQU1NLFlBQVksSUFBSUQsYUFBYSxFQUFFO1lBQ3RDQyxZQUFZLENBQUNKLGFBQWEsQ0FBQ0MsV0FBVyxDQUFDRyxZQUFZLENBQUM7VUFDeEQ7UUFDSjtRQUVBLElBQUlySyxPQUFPLENBQUMvQixPQUFPLEVBQUU7VUFDakIsSUFBSW9GLElBQUksR0FBRyxNQUFNYixZQUFZLENBQUMsQ0FBQztVQUMvQixJQUFJM0QsS0FBSyxDQUFDK0ssa0JBQWtCLEVBQUU7WUFDMUIvSyxLQUFLLENBQUMrSyxrQkFBa0IsQ0FBQ3ZHLElBQUksQ0FBQztVQUNsQztVQUVBckQsT0FBTyxDQUFDL0IsT0FBTyxHQUFHLEtBQUs7UUFDM0I7UUFFQTBCLFdBQVcsQ0FBQzFCLE9BQU8sR0FBR3NILG1CQUFtQixDQUFDekcsU0FBUyxDQUFDSCxjQUFjLENBQUM4QyxNQUFNLENBQUM7TUFDOUUsQ0FBQyxDQUFDO01BRUYzQyxTQUFTLENBQUNILGNBQWMsQ0FBQzJMLElBQUksQ0FBQy9LLElBQUksQ0FBQztNQUNuQ1QsU0FBUyxDQUFDSCxjQUFjLENBQUM0SyxrQkFBa0IsR0FBRyxDQUFDL0YsY0FBSyxDQUFDZ0csTUFBTSxDQUFDM0ssS0FBSyxDQUFDNEssWUFBWSxDQUFDLEdBQUc1SyxLQUFLLENBQUM0SyxZQUFZLEdBQUcsSUFBSTtNQUMzRztJQUNKO0VBQ0osQ0FBQyxFQUFFLENBQUNsSyxJQUFJLEVBQUVULFNBQVMsQ0FBQyxDQUFDO0VBRXJCLE1BQU15TCxjQUFjLEdBQUk5QixJQUFJLElBQUs7SUFBQSxJQUFBK0IscUJBQUE7SUFDN0IsTUFBTTVOLEVBQUUsR0FBR2tDLFNBQVMsYUFBVEEsU0FBUyxnQkFBQTBMLHFCQUFBLEdBQVQxTCxTQUFTLENBQUVILGNBQWMsY0FBQTZMLHFCQUFBLHVCQUF6QkEscUJBQUEsQ0FBMkIvSSxNQUFNO0lBQzVDLElBQUksQ0FBQzdFLEVBQUUsRUFBRTtJQUNULFFBQVE2TCxJQUFJLENBQUNnQyxJQUFJLENBQUMzSixFQUFFO01BQ2hCLEtBQUssU0FBUztRQUNWbEUsRUFBRSxDQUFDOE4sV0FBVyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3BDO01BQ0osS0FBSyxXQUFXO1FBQ1o5TixFQUFFLENBQUNZLGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNwQztNQUNKLEtBQUssU0FBUztRQUNWYixVQUFVLENBQUNDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakI7TUFDSixLQUFLLFNBQVM7UUFDVkQsVUFBVSxDQUFDQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCO01BQ0osS0FBSyxTQUFTO1FBQ1ZELFVBQVUsQ0FBQ0MsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQjtNQUNKLEtBQUssWUFBWTtRQUNiQSxFQUFFLENBQUMrTixTQUFTLENBQUMsQ0FBQztRQUNkO01BQ0o7TUFDQTtJQUNKO0VBQ0osQ0FBQztFQUVELG9CQUNJbFMsTUFBQSxDQUFBZSxPQUFBLENBQUFvUixhQUFBO0lBQUtDLFNBQVMsRUFBRSxzQkFBdUI7SUFBQ0MsS0FBSyxFQUFFO01BQUNsTixNQUFNLEVBQUU7SUFBTSxDQUFFO0lBQUNrRCxFQUFFLG9CQUFxQjtJQUFDaUssR0FBRyxFQUFFck47RUFBVSxHQUVoRyxDQUFDeUIsT0FBTyxpQkFDUjFHLE1BQUEsQ0FBQWUsT0FBQSxDQUFBb1IsYUFBQTtJQUFLRSxLQUFLLEVBQUU7TUFDUmxOLE1BQU0sRUFBRSxNQUFNO01BQ2RvTixLQUFLLEVBQUUsTUFBTTtNQUNiQyxRQUFRLEVBQUUsTUFBTTtNQUNoQkMsT0FBTyxFQUFFLE1BQU07TUFDZkMsY0FBYyxFQUFFLFFBQVE7TUFDeEJDLFlBQVksRUFBRTtJQUNsQjtFQUFFLGdCQUNFM1MsTUFBQSxDQUFBZSxPQUFBLENBQUFvUixhQUFBLENBQUN6UixXQUFBLENBQUFLLE9BQVU7SUFBQ3NILEVBQUUsRUFBRTtFQUFhLENBQUMsQ0FDN0IsQ0FBQyxFQUdOckIsWUFBWSxpQkFDWmhILE1BQUEsQ0FBQWUsT0FBQSxDQUFBb1IsYUFBQTtJQUFLRSxLQUFLLEVBQUU7TUFDUk8sT0FBTyxFQUFFLGVBQWU7TUFDeEJDLFNBQVMsRUFBRTtJQUNmO0VBQUUsZ0JBQ0U3UyxNQUFBLENBQUFlLE9BQUEsQ0FBQW9SLGFBQUEsQ0FBQzFSLE1BQUEsQ0FBQU0sT0FBSztJQUNGK1IsT0FBTyxFQUFFLFFBQVM7SUFDbEJDLElBQUksRUFBRSxDQUFDaEksY0FBSyxDQUFDZ0csTUFBTSxDQUFDL0osWUFBWSxDQUFFO0lBQ2xDZ00sT0FBTyxFQUFFQSxDQUFBLEtBQU0vTCxlQUFlLENBQUMsSUFBSSxDQUFFO0lBQ3JDZ00sV0FBVztJQUNYWixLQUFLLEVBQUU7TUFDSGEsSUFBSSxFQUFFO0lBQ1Y7RUFBRSxnQkFFRmxULE1BQUEsQ0FBQWUsT0FBQSxDQUFBb1IsYUFBQTtJQUFHRSxLQUFLLEVBQUU7TUFBQ2MsS0FBSyxFQUFFO0lBQTBCO0VBQUUsR0FBRW5NLFlBQWdCLENBQzdELENBQ04sQ0FBQyxFQUlOTixPQUFPLElBQUlGLEtBQUssS0FBS3VFLGNBQUssQ0FBQ2dHLE1BQU0sQ0FBQzNLLEtBQUssQ0FBQzRLLFlBQVksQ0FBQyxJQUFJNUssS0FBSyxDQUFDNEssWUFBWSxLQUFLLElBQUksQ0FBQyxpQkFDckZoUixNQUFBLENBQUFlLE9BQUEsQ0FBQW9SLGFBQUEsQ0FBQzdSLHVCQUFBLENBQUF3RCxnQ0FBZ0M7SUFBQ3VFLEVBQUUsS0FBQTVFLE1BQUEsQ0FBSzJDLEtBQUssQ0FBQ2lDLEVBQUUsZUFBYTtJQUFDbEQsTUFBTSxFQUFFdUMsWUFBWSxHQUFHLENBQUMsTUFBQWpFLE1BQUEsQ0FBTWlFLFlBQVksVUFBTyxRQUFTO0lBQ3ZGNEssR0FBRyxFQUFHYyxLQUFLLElBQUs7TUFDWjlNLFlBQVksQ0FBQzhNLEtBQUssQ0FBQztNQUNuQmxPLFlBQVksQ0FBQ00sT0FBTyxHQUFHNE4sS0FBSztJQUNoQyxDQUFFO0lBQ0ZDLE9BQU8sRUFBRUEsQ0FBQSxLQUFNO01BQ1gsSUFBSWhOLFNBQVMsRUFBRTtRQUNYQSxTQUFTLENBQUNKLE1BQU0sQ0FBQyxDQUFDO1FBQ2xCSSxTQUFTLENBQUNILGNBQWMsQ0FBQ0QsTUFBTSxDQUFDLENBQUM7TUFDckM7SUFDSixDQUFFO0lBQ0ZxTixpQkFBaUIsRUFBRSxLQUFNO0lBQ3pCQyxZQUFZLEVBQUV6QixjQUFlO0lBQzdCMUgsWUFBWSxFQUFFNUQsS0FBTTtJQUNwQmdOLGVBQWUsRUFBRXBOLEtBQUssQ0FBQzZLLFFBQVEsSUFBSSxDQUFDN0ssS0FBSyxDQUFDaUUsWUFBYTtJQUN2RG9KLGtCQUFrQixFQUFFLEtBQU07SUFDMUIzQyxrQkFBa0IsRUFBRSxJQUFLO0lBQ3pCNEMsZUFBZSxFQUFFLEtBQU07SUFDdkJDLFVBQVUsRUFBRXhRLGFBQWEsQ0FBQyxDQUFFO0lBQzVCeVEsYUFBYSxFQUFFLENBQUV4TixLQUFLLENBQUM2SyxRQUFTLElBQUk3SyxLQUFLLENBQUNpRTtFQUFhLENBQUMsQ0FBQyxFQUczRjNELE9BQU8sSUFBSUYsS0FBSyxJQUFJSixLQUFLLENBQUM0SyxZQUFZLEtBQUssS0FBSyxpQkFDaERoUixNQUFBLENBQUFlLE9BQUEsQ0FBQW9SLGFBQUEsQ0FBQzdSLHVCQUFBLENBQUF3RCxnQ0FBZ0M7SUFBQ3VFLEVBQUUsS0FBQTVFLE1BQUEsQ0FBSzJDLEtBQUssQ0FBQ2lDLEVBQUUsZUFBYTtJQUFDbEQsTUFBTSxFQUFFdUMsWUFBWSxHQUFHLENBQUMsTUFBQWpFLE1BQUEsQ0FBTWlFLFlBQVksVUFBTyxRQUFTO0lBQ3ZGNEssR0FBRyxFQUFHYyxLQUFLLElBQUs7TUFDWjlNLFlBQVksQ0FBQzhNLEtBQUssQ0FBQztNQUNuQmxPLFlBQVksQ0FBQ00sT0FBTyxHQUFHNE4sS0FBSztJQUNoQyxDQUFFO0lBQ0ZDLE9BQU8sRUFBRUEsQ0FBQSxLQUFNO01BQ1gsSUFBSWhOLFNBQVMsRUFBRTtRQUNYQSxTQUFTLENBQUNKLE1BQU0sQ0FBQyxDQUFDO1FBQ2xCSSxTQUFTLENBQUNILGNBQWMsQ0FBQ0QsTUFBTSxDQUFDLENBQUM7TUFDckM7SUFDSixDQUFFO0lBQ0ZxTixpQkFBaUIsRUFBRSxLQUFNO0lBQ3pCQyxZQUFZLEVBQUV6QixjQUFlO0lBQzdCMUgsWUFBWSxFQUFFNUQsS0FBTTtJQUNwQmdOLGVBQWUsRUFBRXBOLEtBQUssQ0FBQzZLLFFBQVEsSUFBSSxDQUFDN0ssS0FBSyxDQUFDaUUsWUFBYTtJQUN2RG9KLGtCQUFrQixFQUFFLEtBQU07SUFDMUJDLGVBQWUsRUFBRSxLQUFNO0lBQ3ZCQyxVQUFVLEVBQUV4USxhQUFhLENBQUMsQ0FBRTtJQUM1QnlRLGFBQWEsRUFBRSxDQUFFeE4sS0FBSyxDQUFDNkssUUFBUyxJQUFJN0ssS0FBSyxDQUFDaUU7RUFBYSxDQUFDLENBRTdGLENBQUM7QUFFZCxDQUFDO0FBQUMsSUFBQXdKLFFBQUEsR0FBQTVSLE9BQUEsQ0FBQWxCLE9BQUEsR0FFYW9GLGtCQUFrQiIsImlnbm9yZUxpc3QiOltdfQ==
666
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RQcm9taXNlVHJhY2tlciIsIl9VdGlscyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZWoyUmVhY3REb2N1bWVudGVkaXRvciIsIl9BcHBsaWNhdGlvbk1hbmFnZXIiLCJfZWoyQmFzZSIsIl9BbGVydCIsIl9Mb3R0aWVJY29uIiwiX3VzZVJlc2l6ZU9ic2VydmVyIiwiX3VzZU9uRnVsbHlWaXNpYmxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiS0VZIiwiZXhwb3J0cyIsInJlZ2lzdGVyTGljZW5zZSIsInJlc29sdmVMb2NhdGlvbiIsImNvbnNvbGUiLCJsb2ciLCJwcm9jZXNzIiwiZW52IiwiUkVBQ1RfQVBQX0RPQ1NfQVBJX0hPU1QiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJyZXNvbHZlRG9jU3ZjIiwiUkVBQ1RfQVBQX0RPQ1NfQVBJX1BBVEgiLCJET0NTVkMiLCJnZXREb2NzQmFzZSIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldENvbnRleHRSb290IiwiZ2V0U2VydmljZVVybCIsImFjY2Vzc1Rva2VuIiwic2Vzc2lvblN0b3JhZ2UiLCJnZXRJdGVtIiwiaWRUb2tlbiIsImJhc2UiLCJjb25jYXQiLCJwYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJxcyIsInRvU3RyaW5nIiwiRG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQiLCJJbmplY3QiLCJUb29sYmFyIiwiTEVWRUxfRk1UIiwiYXBwbHlMZXZlbCIsImVkIiwibGV2ZWwiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJkZXB0aCIsIk1hdGgiLCJtYXgiLCJtaW4iLCJzZWxlY3Rpb24iLCJwYXJhZ3JhcGhGb3JtYXQiLCJsaXN0TGV2ZWxOdW1iZXIiLCJhcHBseU51bWJlcmluZyIsInVzZUR5bmFtaWNTeW5jZnVzaW9uSGVpZ2h0IiwicGFyZW50UmVmIiwiY29udGFpbmVyUmVmIiwiaGVpZ2h0Iiwic2V0SGVpZ2h0IiwidXNlU3RhdGUiLCJtZWFzdXJlIiwidXNlQ2FsbGJhY2siLCJjdXJyZW50IiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIm5ld0hlaWdodCIsImZsb29yIiwidXNlUmVzaXplT2JzZXJ2ZXIiLCJ1c2VFZmZlY3QiLCJyZXNpemUiLCJkb2N1bWVudEVkaXRvciIsIldvcmREb2N1bWVudFZpZXdlciIsInByb3BzIiwiY29udGFpbmVyIiwic2V0Q29udGFpbmVyIiwiUmVhY3QiLCJpdGVtcyIsInNldEl0ZW1zIiwidmlzaWJsZSIsInNldFZpc2libGUiLCJyZVJlbmRlcmluZyIsInNldFJlUmVuZGVyaW5nIiwianNvbiIsInNldEpzb24iLCJlcnJvck1lc3NhZ2UiLCJzZXRFcnJvck1lc3NhZ2UiLCJjdXJyZW50VGV4dCIsInVzZVJlZiIsImFjdGl2ZUFuY2hvclJlZiIsImFuY2hvckVuZCIsImRlbGV0ZUxvY2tSZWYiLCJsb2FkaW5nIiwidXNlT25GdWxseVZpc2libGUiLCJlbCIsImVkaXRvckhlaWdodCIsImlzUG9pbnRJbnNpZGVFbGVtZW50IiwieCIsInkiLCJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJnZXRWaWV3ZXJFbGVtZW50IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImlkIiwiaXNOYXZpZ2F0aW9uS2V5IiwiaW5jbHVkZXMiLCJrZXkiLCJub3JtYWxpemVBbmNob3IiLCJ2YWx1ZSIsInJlcGxhY2UiLCJ2aWV3ZXJFbGVtZW50IiwiaW5zZXJ0UmVhZG9ubHlBbmNob3IiLCJldmVudERhdGEiLCJkcm9wUG9zaXRpb24iLCJkb2MiLCJlZGl0b3IiLCJzZWwiLCJjYXJldE9mZnNldCIsInN0YXJ0T2Zmc2V0IiwiZXhpc3RpbmdBbmNob3IiLCJncmFiQW5jaG9yV2l0aEJvdW5kcyIsImF0U3RhcnQiLCJhdEVuZCIsImVuZE9mZnNldCIsIndhcm4iLCJ0b2tlbiIsImluc2VydFRleHQiLCJkcm9wRGF0YSIsImFwaSIsImdldFZhbHVlIiwic2F2ZUFzQmFzZTY0IiwidmFsdWVIYW5kbGVyIiwibnVtYmVyaW5nSXRlbXMiLCJ0ZXh0Iiwic2VwYXJhdG9yIiwidG9vbGJhckl0ZW1zIiwiY29tbWVudHNPbmx5IiwidG9vbHRpcFRleHQiLCJwcmVmaXhJY29uIiwiY29tbWFuZCIsImVuYWJsZVVwbG9hZCIsInVuc2hpZnQiLCJfcHJvcHMkZmlsZSIsImZpbGUiLCJiYXNlNjQiLCJhcnJheUJ1ZmZlciIsIlV0aWxzIiwiYmFzZTY0VG9BcnJheUJ1ZmZlciIsIkJsb2IiLCJ0eXBlIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsImFwcGVuZCIsInRyYWNrUHJvbWlzZSIsImZldGNoIiwibWV0aG9kIiwiaGVhZGVycyIsImJvZHkiLCJ0aGVuIiwicmVzcG9uc2UiLCJ0aW1lciIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJzZXR1cENvbnRhaW5lciIsImN1cnJlbnRVc2VyIiwiZ2V0VXNlckRldGFpbHMiLCJuYW1lIiwic3VybmFtZSIsImFsbG93VW5yZXNvbHZlZENoYW5nZXMiLCJyZXZpc2lvbnMiLCJfcHJvcHMkZmlsZTIiLCJfcHJvcHMkZmlsZTMiLCJzdG9wUHJvdGVjdGlvbiIsImJsb2IiLCJzYXZlQXNCbG9iIiwiZW5mb3JjZVByb3RlY3Rpb24iLCJGaWxlIiwiZXh0cmFjdERvY3VtZW50VGV4dCIsIm9yaWdpbmFsU3RhcnQiLCJvcmlnaW5hbEVuZCIsInNlbGVjdEFsbCIsImdldFRleHQiLCJzZWxlY3QiLCJleHRyYWN0QW5jaG9yVG9rZW5zIiwicmVnZXgiLCJ0b2tlbnMiLCJTZXQiLCJtYXRjaCIsImV4ZWMiLCJhZGQiLCJBcnJheSIsImZyb20iLCJpc0NhcmV0V2l0aGluUmFuZ2UiLCJjYXJldCIsInN0YXJ0IiwiZW5kIiwicGFyYWdyYXBoIiwieEluIiwieUluIiwiZGVsZXRlQ3VycmVudEFuY2hvciIsImRvY0VkaXRvciIsImFuY2hvciIsInVwZGF0ZUFjdGl2ZUFuY2hvciIsInNjYW5SaWdodFVudGlsQW5jaG9yIiwib3JpZ2luT2Zmc2V0IiwibWF4U2NhbiIsImJ1bXBPZmZzZXQiLCJjaCIsInRlc3QiLCJuZXh0Iiwic2NhbkxlZnRVbnRpbEFuY2hvciIsInByZXYiLCJnZXRDaGFyQXQiLCJvZmZzZXQiLCJpc0NhcmV0SW1tZWRpYXRlbHlCZWZvcmVBbmNob3JTdGFydCIsImMwIiwiYzEiLCJpc0NhcmV0SW1tZWRpYXRlbHlBZnRlckFuY2hvciIsInNlbGVjdEN1cnJlbnRXb3JkIiwic2NhblN0YXJ0IiwiaXNDYXJldEF0RW5kIiwiZGVsdGEiLCJwYXJ0cyIsInNwbGl0IiwiaWR4IiwicGFyc2VJbnQiLCJqb2luIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFyZ3MiLCJldmVudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImVkaXRvckhpc3RvcnkiLCJ1bmRvIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjdHJsS2V5IiwibWV0YUtleSIsIm9uTW91c2VVcCIsImNsaWVudFgiLCJjbGllbnRZIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRvY3VtZW50Q2hhbmdlIiwiZW5hYmxlVHJhY2tDaGFuZ2VzIiwiaXNOdWxsIiwidHJhY2tDaGFuZ2VzIiwicmVhZE9ubHkiLCJpc1JlYWRPbmx5IiwidmFsdWVDaGFuZ2VIYW5kbGVyIiwiZGlzYWJsZUFjY2VwdENoYW5nZXMiLCJhY2NlcHRCdXR0b25zIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsImFjY2VwdEJ1dHRvbiIsInBhcmVudEVsZW1lbnQiLCJyZW1vdmVDaGlsZCIsImRpc2FibGVSZWplY3RDaGFuZ2VzIiwicmVqZWN0QnV0dG9ucyIsInJlamVjdEJ1dHRvbiIsIm9wZW4iLCJvblRvb2xiYXJDbGljayIsIl9jb250YWluZXIkZG9jdW1lbnRFZCIsIml0ZW0iLCJhcHBseUJ1bGxldCIsImNsZWFyTGlzdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJzdHlsZSIsInJlZiIsIndpZHRoIiwiZmxleFdyYXAiLCJkaXNwbGF5IiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkNvbnRlbnQiLCJwYWRkaW5nIiwibWF4SGVpZ2h0IiwidmFyaWFudCIsInNob3ciLCJvbkNsb3NlIiwiZGlzbWlzc2libGUiLCJ3aXRoIiwiY29sb3IiLCJzY29wZSIsImNyZWF0ZWQiLCJlbmFibGVQZXJzaXN0ZW5jZSIsInRvb2xiYXJDbGljayIsInJlc3RyaWN0RWRpdGluZyIsInNob3dQcm9wZXJ0aWVzUGFuZSIsImVuYWJsZUF1dG9Gb2N1cyIsInNlcnZpY2VVcmwiLCJlbmFibGVUb29sYmFyIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvV29yZERvY3VtZW50Vmlld2VyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHt0cmFja1Byb21pc2V9IGZyb20gXCJyZWFjdC1wcm9taXNlLXRyYWNrZXJcIjtcbmltcG9ydCBVdGlscyBmcm9tIFwiLi4vVXRpbHNcIjtcbmltcG9ydCB7RG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQsIFRvb2xiYXJ9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1yZWFjdC1kb2N1bWVudGVkaXRvcic7XG5pbXBvcnQgXCIuL0RvY3VtZW50VGVtcGxhdGVEZXNpZ25lckNvbXBvbmVudC5jc3NcIlxuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tIFwiLi4vQXBwbGljYXRpb25NYW5hZ2VyXCI7XG5pbXBvcnQge3JlZ2lzdGVyTGljZW5zZX0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1iYXNlXCI7XG5pbXBvcnQgQWxlcnQgZnJvbSBcInJlYWN0LWJvb3RzdHJhcC9BbGVydFwiO1xuaW1wb3J0IExvdHRpZUljb24gZnJvbSBcIi4vTG90dGllSWNvblwiO1xuaW1wb3J0IFwiLi9Xb3JkRG9jdW1lbnRWaWV3ZXIuY3NzXCJcbmltcG9ydCB7dXNlU3RhdGUsIHVzZUNhbGxiYWNrfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlUmVzaXplT2JzZXJ2ZXJ9IGZyb20gXCIuL29ic2VydmVycy91c2VSZXNpemVPYnNlcnZlclwiO1xuaW1wb3J0IHt1c2VPbkZ1bGx5VmlzaWJsZX0gZnJvbSBcIi4vb2JzZXJ2ZXJzL3VzZU9uRnVsbHlWaXNpYmxlXCI7XG5cbmV4cG9ydCBjb25zdCBLRVkgPSAnTmdvOUJpZ0JPZ2dqSFRReEFSOC9WMUpHYUY1Y1hHcENmMUZwUm1KR2RsZDVmVVZIWVZaVVRYeGFTMDBETkhWUmRrZGxXWDVjZUhWUlEyQllVVWR3WDBOV1lFcz0nO1xucmVnaXN0ZXJMaWNlbnNlKEtFWSk7XG5cbmZ1bmN0aW9uIHJlc29sdmVMb2NhdGlvbigpIHtcbiAgICBjb25zb2xlLmxvZyhcIlJFU09MVkUgRE9DIEhPU1QgOiBcIiwgcHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RPQ1NfQVBJX0hPU1QpO1xuICAgIGlmIChwcm9jZXNzLmVudi5SRUFDVF9BUFBfRE9DU19BUElfSE9TVCkge1xuICAgICAgICByZXR1cm4gcHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RPQ1NfQVBJX0hPU1Q7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVEb2NTdmMoKSB7XG4gICAgY29uc29sZS5sb2coXCJSRVNPTFZFIERPQyBQQVRIIDogXCIsIHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ET0NTX0FQSV9QQVRIKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RPQ1NfQVBJX1BBVEgpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ET0NTX0FQSV9QQVRIO1xuICAgIH1cblxuICAgIHJldHVybiBcIi9kb2NzL2FwaS92MS9zeW5jZnVzaW9uXCI7XG59XG5cbmV4cG9ydCBjb25zdCBsb2NhdGlvbiA9IHJlc29sdmVMb2NhdGlvbigpO1xuZXhwb3J0IGNvbnN0IERPQ1NWQyA9IHJlc29sdmVEb2NTdmMoKTtcblxuZnVuY3Rpb24gZ2V0RG9jc0Jhc2UoKSB7XG4gICAgcmV0dXJuIGxvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCkgKyBET0NTVkM7XG59XG5cbmZ1bmN0aW9uIGdldFNlcnZpY2VVcmwoKSB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhY2Nlc3NUb2tlbicpO1xuICAgIGNvbnN0IGlkVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdpZFRva2VuJyk7XG4gICAgY29uc3QgYmFzZSA9IGAke2dldERvY3NCYXNlKCl9L0ltcG9ydGA7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGlmIChhY2Nlc3NUb2tlbikgcGFyYW1zLnNldCgnYWNjZXNzX3Rva2VuJywgYWNjZXNzVG9rZW4pO1xuICAgIGlmIChpZFRva2VuKSBwYXJhbXMuc2V0KCdpZF90b2tlbicsIGlkVG9rZW4pO1xuICAgIGNvbnN0IHFzID0gcGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIHFzID8gYCR7YmFzZX0/JHtxc31gIDogYmFzZTtcbn1cblxuRG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQuSW5qZWN0KFRvb2xiYXIpO1xuXG5jb25zdCBMRVZFTF9GTVQgPSBbJyUxLicsICclMS4lMi4nLCAnJTEuJTIuJTMuJ107XG5cbmZ1bmN0aW9uIGFwcGx5TGV2ZWwoZWQsIGxldmVsID0gMCkge1xuICAgIGNvbnN0IGRlcHRoID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obGV2ZWwsIExFVkVMX0ZNVC5sZW5ndGggLSAxKSk7XG4gICAgZWQuc2VsZWN0aW9uLnBhcmFncmFwaEZvcm1hdC5saXN0TGV2ZWxOdW1iZXIgPSBkZXB0aDtcbiAgICBlZC5hcHBseU51bWJlcmluZyhMRVZFTF9GTVRbZGVwdGhdLCAnQXJhYmljJyk7XG59XG5cbmZ1bmN0aW9uIHVzZUR5bmFtaWNTeW5jZnVzaW9uSGVpZ2h0KHBhcmVudFJlZiwgY29udGFpbmVyUmVmKSB7XG4gICAgY29uc3QgW2hlaWdodCwgc2V0SGVpZ2h0XSA9IHVzZVN0YXRlKDApO1xuXG4gICAgY29uc3QgbWVhc3VyZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgaWYgKCFwYXJlbnRSZWYuY3VycmVudCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHJlY3QgPSBwYXJlbnRSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gTWF0aC5mbG9vcihyZWN0LmhlaWdodCk7XG5cbiAgICAgICAgaWYgKG5ld0hlaWdodCA+IDAgJiYgbmV3SGVpZ2h0ICE9PSBoZWlnaHQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTUVBU1VSRSA6IFwiLCBuZXdIZWlnaHQpO1xuICAgICAgICAgICAgc2V0SGVpZ2h0KG5ld0hlaWdodCk7XG4gICAgICAgIH1cbiAgICB9LCBbcGFyZW50UmVmLCBoZWlnaHRdKTtcblxuICAgIC8vIPCflIEgUmVzaXplIG9ic2VydmVyXG4gICAgdXNlUmVzaXplT2JzZXJ2ZXIocGFyZW50UmVmLCBtZWFzdXJlKTtcblxuICAgIC8vIOKaoSBTeW5jZnVzaW9uIHJlc2l6ZSB0cmlnZ2VyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lclJlZi5jdXJyZW50ICYmIGhlaWdodCA+IDApIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQuZG9jdW1lbnRFZGl0b3IucmVzaXplKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgLy8gc2lsZW50XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbaGVpZ2h0LCBjb250YWluZXJSZWZdKTtcblxuICAgIHJldHVybiBoZWlnaHQ7XG59XG5cbmNvbnN0IFdvcmREb2N1bWVudFZpZXdlciA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IFtjb250YWluZXIsIHNldENvbnRhaW5lcl0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFtyZVJlbmRlcmluZywgc2V0UmVSZW5kZXJpbmddID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtqc29uLCBzZXRKc29uXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtlcnJvck1lc3NhZ2UsIHNldEVycm9yTWVzc2FnZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjdXJyZW50VGV4dCA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBhY3RpdmVBbmNob3JSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgYW5jaG9yRW5kID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBkZWxldGVMb2NrUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBsb2FkaW5nID0gdXNlUmVmKHRydWUpO1xuICAgIGNvbnN0IHBhcmVudFJlZiA9IHVzZU9uRnVsbHlWaXNpYmxlKChlbCkgPT4ge1xuICAgICAgICBpZiAoIXJlUmVuZGVyaW5nKSB7XG4gICAgICAgICAgICBzZXRWaXNpYmxlKGZhbHNlKTtcbiAgICAgICAgICAgIHNldFJlUmVuZGVyaW5nKHRydWUpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgZWRpdG9ySGVpZ2h0ID0gdXNlRHluYW1pY1N5bmNmdXNpb25IZWlnaHQocGFyZW50UmVmLCBjb250YWluZXJSZWYpO1xuXG4gICAgZnVuY3Rpb24gaXNQb2ludEluc2lkZUVsZW1lbnQoeCwgeSwgZWwpIHtcbiAgICAgICAgaWYgKCFlbCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHggPj0gcmVjdC5sZWZ0ICYmXG4gICAgICAgICAgICB4IDw9IHJlY3QucmlnaHQgJiZcbiAgICAgICAgICAgIHkgPj0gcmVjdC50b3AgJiZcbiAgICAgICAgICAgIHkgPD0gcmVjdC5ib3R0b21cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRWaWV3ZXJFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgICBgJHtwcm9wcy5pZH0tY29udGFpbmVyX2VkaXRvcl92aWV3ZXJDb250YWluZXJgXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOYXZpZ2F0aW9uS2V5KGUpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCcsICdBcnJvd1VwJywgJ0Fycm93RG93bicsXG4gICAgICAgICAgICAnSG9tZScsICdFbmQnLCAnUGFnZVVwJywgJ1BhZ2VEb3duJ1xuICAgICAgICBdLmluY2x1ZGVzKGUua2V5KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVBbmNob3IodmFsdWUpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgLnJlcGxhY2UoL15cXFtcXFt8XFxdXFxdJC9nLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9ePDx8Pj4kL2csICcnKTtcbiAgICB9XG5cbiAgICBsZXQgdmlld2VyRWxlbWVudCA9IGdldFZpZXdlckVsZW1lbnQoKTtcblxuICAgIGZ1bmN0aW9uIGluc2VydFJlYWRvbmx5QW5jaG9yKGV2ZW50RGF0YSwgZHJvcFBvc2l0aW9uKSB7XG4gICAgICAgIGlmICghY29udGFpbmVyPy5kb2N1bWVudEVkaXRvcikgcmV0dXJuO1xuICAgICAgICBpZiAoIWRyb3BQb3NpdGlvbikgcmV0dXJuO1xuXG4gICAgICAgIGlmICghaXNQb2ludEluc2lkZUVsZW1lbnQoZHJvcFBvc2l0aW9uLngsIGRyb3BQb3NpdGlvbi55LCB2aWV3ZXJFbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZG9jID0gY29udGFpbmVyLmRvY3VtZW50RWRpdG9yO1xuICAgICAgICBjb25zdCBlZCA9IGRvYy5lZGl0b3I7XG4gICAgICAgIGNvbnN0IHNlbCA9IGRvYy5zZWxlY3Rpb247XG4gICAgICAgIGlmICghZWQgfHwgIXNlbCkgcmV0dXJuO1xuXG4gICAgICAgIC8vIFJlamVjdCBkcm9wIGlmIGN1cnNvciBpcyBzdHJpY3RseSBpbnNpZGUgYW4gZXhpc3RpbmcgYW5jaG9yXG4gICAgICAgIC8vIEFsbG93IGRyb3BwaW5nIGF0IHRoZSBleGFjdCBzdGFydCBvciBlbmQgYm91bmRhcnlcbiAgICAgICAgY29uc3QgY2FyZXRPZmZzZXQgPSBzZWwuc3RhcnRPZmZzZXQ7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQW5jaG9yID0gZ3JhYkFuY2hvcldpdGhCb3VuZHMoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKGV4aXN0aW5nQW5jaG9yKSB7XG4gICAgICAgICAgICBjb25zdCBhdFN0YXJ0ID0gY2FyZXRPZmZzZXQgPT09IGV4aXN0aW5nQW5jaG9yLnN0YXJ0T2Zmc2V0O1xuICAgICAgICAgICAgY29uc3QgYXRFbmQgPSBjYXJldE9mZnNldCA9PT0gZXhpc3RpbmdBbmNob3IuZW5kT2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCFhdFN0YXJ0ICYmICFhdEVuZCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkRyb3AgcmVqZWN0ZWQg4oCUIGN1cnNvciBpcyBpbnNpZGUgYW5jaG9yOiBcIiArIGV4aXN0aW5nQW5jaG9yLnRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b2tlbiA9IGBbWyR7bm9ybWFsaXplQW5jaG9yKGV2ZW50RGF0YSl9XV1gO1xuICAgICAgICBlZC5pbnNlcnRUZXh0KHRva2VuKTtcbiAgICB9XG5cbiAgICBjb25zdCBkcm9wRGF0YSA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBhcGkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXRWYWx1ZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzYXZlQXNCYXNlNjQoKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGluc2VydFJlYWRvbmx5QW5jaG9yOiBhc3luYyAodmFsdWUsIGRyb3BQb3NpdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGRyb3BEYXRhLmN1cnJlbnQgPSB7dmFsdWUsIGRyb3BQb3NpdGlvbn07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLnZhbHVlSGFuZGxlci5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG51bWJlcmluZ0l0ZW1zID0gW1xuICAgICAgICB7aWQ6ICdsdmwtMCcsIHRleHQ6ICcxLid9LFxuICAgICAgICB7aWQ6ICdsdmwtMScsIHRleHQ6ICcxLjEnfSxcbiAgICAgICAge2lkOiAnbHZsLTInLCB0ZXh0OiAnMS4xLjEnfSxcbiAgICAgICAge3NlcGFyYXRvcjogdHJ1ZX0sXG4gICAgICAgIHtpZDogJ2NsZWFyJywgdGV4dDogJ0NsZWFyIGxpc3QnfSxcbiAgICBdO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGV0IHRvb2xiYXJJdGVtcyA9IHByb3BzLmNvbW1lbnRzT25seSA/XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgXCJDb21tZW50c1wiXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICA6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgXCJVbmRvXCIsXG4gICAgICAgICAgICAgICAgXCJSZWRvXCIsXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICB7aWQ6ICdidWxsZXRzJywgdGV4dDogJ+KAoiBCdWxsZXRzJywgdG9vbHRpcFRleHQ6ICdCdWxsZXRlZCBsaXN0J30sXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICB7dG9vbHRpcFRleHQ6ICdCb2xkJywgcHJlZml4SWNvbjogJ2UtaWNvbnMgZS1ib2xkJywgY29tbWFuZDogJ0JvbGQnfSxcbiAgICAgICAgICAgICAgICB7dG9vbHRpcFRleHQ6ICdJdGFsaWMnLCBwcmVmaXhJY29uOiAnZS1pY29ucyBlLWl0YWxpYycsIGNvbW1hbmQ6ICdJdGFsaWMnfSxcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIFwiSW1hZ2VcIixcbiAgICAgICAgICAgICAgICBcIlRhYmxlXCIsXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICBcIkhlYWRlclwiLFxuICAgICAgICAgICAgICAgIFwiRm9vdGVyXCIsXG4gICAgICAgICAgICAgICAgXCJQYWdlU2V0dXBcIixcbiAgICAgICAgICAgICAgICBcIlBhZ2VOdW1iZXJcIixcbiAgICAgICAgICAgICAgICBcIkJyZWFrXCIsXG4gICAgICAgICAgICAgICAgXCJJbnNlcnRGb290bm90ZVwiLFxuICAgICAgICAgICAgICAgIFwiU2VwYXJhdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJGaW5kXCIsXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICBcIkNvbW1lbnRzXCJcbiAgICAgICAgICAgIF1cblxuICAgICAgICBpZiAocHJvcHMuZW5hYmxlVXBsb2FkKSB7XG4gICAgICAgICAgICB0b29sYmFySXRlbXMudW5zaGlmdChcIk9wZW5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRJdGVtcyh0b29sYmFySXRlbXMpO1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5maWxlPy5iYXNlNjQpIHtcbiAgICAgICAgICAgIGxldCBiYXNlNjQgPSBwcm9wcy5maWxlLmJhc2U2NDtcbiAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gVXRpbHMuYmFzZTY0VG9BcnJheUJ1ZmZlcihiYXNlNjQpO1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFthcnJheUJ1ZmZlcl0sIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcy5maWxlLnR5cGVcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlcycsIGZpbGUsICdkb2N1bWVudC5kb2N4Jyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKTtcbiAgICAgICAgICAgIGNvbnN0IGlkVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdpZFRva2VuJyk7XG5cbiAgICAgICAgICAgIHRyYWNrUHJvbWlzZShcbiAgICAgICAgICAgICAgICBmZXRjaChcbiAgICAgICAgICAgICAgICAgICAgYCR7Z2V0RG9jc0Jhc2UoKX0vSW1wb3J0YCxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWRUb2tlbic6IGlkVG9rZW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cmFja1Byb21pc2UoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbigoanNvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEpzb24oanNvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMuZmlsZV0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHJlUmVuZGVyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCB0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHRydWUpO1xuICAgICAgICAgICAgfSwgMV8wMDApO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIH1cbiAgICB9LCBbcmVSZW5kZXJpbmddKTtcblxuICAgIGZ1bmN0aW9uIHNldHVwQ29udGFpbmVyKCkge1xuICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuY3VycmVudFVzZXIgPSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS5uYW1lICsgXCIgXCIgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS5zdXJuYW1lO1xuICAgIH1cblxuICAgIGNvbnN0IHNhdmVBc0Jhc2U2NCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLmFsbG93VW5yZXNvbHZlZENoYW5nZXMgPT09IGZhbHNlICYmIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5yZXZpc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2V0RXJyb3JNZXNzYWdlKFwiUGxlYXNlIGFjY2VwdCBvciByZWplY3QgYWxsIHN1Z2dlc3RlZCBjaGFuZ2VzXCIpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZWRpdG9yLnN0b3BQcm90ZWN0aW9uKFwicGFzc3dvcmRcIik7XG4gICAgICAgICAgICBsZXQgYmxvYiA9IGF3YWl0IGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5zYXZlQXNCbG9iKCdEb2N4Jyk7XG4gICAgICAgICAgICBpZiAocHJvcHMuY29tbWVudHNPbmx5KSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVkaXRvci5lbmZvcmNlUHJvdGVjdGlvbigncGFzc3dvcmQnLCAnQ29tbWVudHNPbmx5Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZShbYmxvYl0sIHByb3BzLmZpbGU/Lm5hbWUgPyBwcm9wcy5maWxlLm5hbWUgOiAnZG9jdW1lbnQuZG9jeCcsIHt0eXBlOiBwcm9wcy5maWxlPy50eXBlID8gcHJvcHMuZmlsZS50eXBlIDogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50J30pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGV4dHJhY3REb2N1bWVudFRleHQoZWRpdG9yKSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5jdXJyZW50KSByZXR1cm4gY3VycmVudFRleHQuY3VycmVudDtcblxuICAgICAgICBjb25zdCBvcmlnaW5hbFN0YXJ0ID0gZWRpdG9yLnNlbGVjdGlvbi5zdGFydE9mZnNldDtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxFbmQgPSBlZGl0b3Iuc2VsZWN0aW9uLmVuZE9mZnNldDtcblxuICAgICAgICBlZGl0b3Iuc2VsZWN0aW9uLnNlbGVjdEFsbCgpO1xuICAgICAgICBjb25zdCB0ZXh0ID0gZWRpdG9yLnNlbGVjdGlvbi5nZXRUZXh0KCk7XG4gICAgICAgIGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0KG9yaWdpbmFsU3RhcnQsIG9yaWdpbmFsRW5kKTtcblxuICAgICAgICBjdXJyZW50VGV4dC5jdXJyZW50ID0gdGV4dDtcbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0cmFjdEFuY2hvclRva2Vucyh0ZXh0KSB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gL1xcW1xcW1teXFxbXFxdXSs/XFxdXFxdL2c7XG4gICAgICAgIGNvbnN0IHRva2VucyA9IG5ldyBTZXQoKTtcbiAgICAgICAgbGV0IG1hdGNoO1xuXG4gICAgICAgIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKHRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdG9rZW5zLmFkZChtYXRjaFswXSk7IC8vIGV4YWN0IFtbVEVYVF1dXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0b2tlbnMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQ2FyZXRXaXRoaW5SYW5nZShjYXJldCwgc3RhcnQsIGVuZCkge1xuICAgICAgICBpZiAoY2FyZXQucGFyYWdyYXBoICE9PSBzdGFydC5wYXJhZ3JhcGgpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBjb25zdCB4ID0gY2FyZXQubG9jYXRpb24ueEluO1xuICAgICAgICBjb25zdCB5ID0gY2FyZXQubG9jYXRpb24ueUluO1xuXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJDSEVDS0lORyBDQVJFVCBXSVRISU4gUkFOR0UgOiBcIiwgeCwgeSwgc3RhcnQubG9jYXRpb24ueEluLCBzdGFydC5sb2NhdGlvbi55SW4sIGVuZC5sb2NhdGlvbi54SW4sIGVuZC5sb2NhdGlvbi55SW4pO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgeSA9PT0gc3RhcnQubG9jYXRpb24ueUluICYmXG4gICAgICAgICAgICB4ID49IHN0YXJ0LmxvY2F0aW9uLnhJbiAmJlxuICAgICAgICAgICAgeCA8PSBlbmQubG9jYXRpb24ueEluXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVsZXRlQ3VycmVudEFuY2hvcihjb250YWluZXIpIHtcbiAgICAgICAgY29uc3QgZWRpdG9yID0gY29udGFpbmVyPy5kb2N1bWVudEVkaXRvcjtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gZWRpdG9yPy5zZWxlY3Rpb247XG4gICAgICAgIGNvbnN0IGRvY0VkaXRvciA9IGVkaXRvcj8uZWRpdG9yO1xuXG4gICAgICAgIGNvbnN0IGFuY2hvciA9IGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIWVkaXRvciB8fCAhc2VsZWN0aW9uIHx8ICFkb2NFZGl0b3IgfHwgIWFuY2hvcikgcmV0dXJuO1xuXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJFTkQgT0ZGU0VUIDogXCIsIGFuY2hvci5lbmRPZmZzZXQsIGJ1bXBPZmZzZXQoYW5jaG9yLmVuZE9mZnNldCwgLTEpKVxuICAgICAgICAvL2NvbnNvbGUubG9nKFwiU1RBUlQgLSBFTkQgOiBcIiwgYW5jaG9yLnN0YXJ0T2Zmc2V0LCBidW1wT2Zmc2V0KGFuY2hvci5lbmRPZmZzZXQsIC0xKSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0KGFuY2hvci5zdGFydE9mZnNldCwgYW5jaG9yLmVuZE9mZnNldCk7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiU0VMRUNUSU9OIFRFWFQgOiBcIiArIHNlbGVjdGlvbi50ZXh0KTtcbiAgICAgICAgICAgIC8vZG9jRWRpdG9yLmRlbGV0ZSgpO1xuICAgICAgICAgICAgLy9zZWxlY3Rpb24uc2VsZWN0KGFuY2hvci5zdGFydE9mZnNldCwgYW5jaG9yLnN0YXJ0T2Zmc2V0KTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZUFuY2hvcihjb250YWluZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXBkYXRlQWN0aXZlQW5jaG9yKGNvbnRhaW5lcikge1xuICAgICAgICBhY3RpdmVBbmNob3JSZWYuY3VycmVudCA9IGdyYWJBbmNob3JXaXRoQm91bmRzKGNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhblJpZ2h0VW50aWxBbmNob3IoZWRpdG9yLCBvcmlnaW5PZmZzZXQsIG1heFNjYW4gPSA1MDApIHtcbiAgICAgICAgY29uc3Qgc2VsID0gZWRpdG9yLnNlbGVjdGlvbjtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBvcmlnaW5PZmZzZXQ7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhTY2FuOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1vdmUgcmlnaHRcbiAgICAgICAgICAgIGN1cnJlbnQgPSBidW1wT2Zmc2V0KGN1cnJlbnQsICsxKTtcblxuICAgICAgICAgICAgc2VsLnNlbGVjdChjdXJyZW50LCBjdXJyZW50KTtcblxuICAgICAgICAgICAgLy8gc2VsZWN0IE9ORSBjaGFyYWN0ZXIgb25seVxuICAgICAgICAgICAgc2VsLnNlbGVjdChcbiAgICAgICAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgICAgICAgIGJ1bXBPZmZzZXQoY3VycmVudCwgKzEpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBjaCA9IHNlbC50ZXh0O1xuXG4gICAgICAgICAgICAvLyDim5QgQmFpbCBvbiB3aGl0ZXNwYWNlIG9yIHBhcmFncmFwaCBicmVha1xuICAgICAgICAgICAgaWYgKCFjaCB8fCAvXFxzLy50ZXN0KGNoKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIC8vIERldGVjdCBjbG9zaW5nIFwiXV1cIlxuICAgICAgICAgICAgaWYgKGNoID09PSAnXScpIHtcbiAgICAgICAgICAgICAgICAvLyBsb29rYWhlYWQgb25lIGNoYXJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gYnVtcE9mZnNldChjdXJyZW50LCArMSk7XG4gICAgICAgICAgICAgICAgc2VsLnNlbGVjdChuZXh0LCBidW1wT2Zmc2V0KG5leHQsICsxKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsLnRleHQgPT09ICddJykge1xuICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm4gcG9zaXRpb24gQUZURVIgXV1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1bXBPZmZzZXQoY3VycmVudCwgKzIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5MZWZ0VW50aWxBbmNob3IoZWRpdG9yLCBvcmlnaW5PZmZzZXQsIG1heFNjYW4gPSA1MDApIHtcbiAgICAgICAgY29uc3Qgc2VsID0gZWRpdG9yLnNlbGVjdGlvbjtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBvcmlnaW5PZmZzZXQ7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhTY2FuOyBpKyspIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBidW1wT2Zmc2V0KGN1cnJlbnQsIC0xKTtcblxuICAgICAgICAgICAgLy8gc2VsZWN0IG9uZSBjaGFyIHRvIHRoZSBsZWZ0XG4gICAgICAgICAgICBzZWwuc2VsZWN0KFxuICAgICAgICAgICAgICAgIGJ1bXBPZmZzZXQoY3VycmVudCwgLTEpLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNoID0gc2VsLnRleHQ7XG5cbiAgICAgICAgICAgIGlmICghY2ggfHwgL1xccy8udGVzdChjaCkpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAvLyBkZXRlY3QgW1tcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IGJ1bXBPZmZzZXQoY3VycmVudCwgLTEpO1xuICAgICAgICAgICAgICAgIHNlbC5zZWxlY3QoXG4gICAgICAgICAgICAgICAgICAgIGJ1bXBPZmZzZXQocHJldiwgLTEpLFxuICAgICAgICAgICAgICAgICAgICBwcmV2XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWwudGV4dCA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIPCflJEgRklYOiBnbyBiYWNrIFRXTyBjaGFyc1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVtcE9mZnNldChjdXJyZW50LCAtMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q2hhckF0KGVkaXRvciwgb2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IHNlbCA9IGVkaXRvci5zZWxlY3Rpb247XG4gICAgICAgIHNlbC5zZWxlY3Qob2Zmc2V0LCBidW1wT2Zmc2V0KG9mZnNldCwgKzEpKTtcbiAgICAgICAgcmV0dXJuIHNlbC50ZXh0IHx8IG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNDYXJldEltbWVkaWF0ZWx5QmVmb3JlQW5jaG9yU3RhcnQoZWRpdG9yLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3QgYzAgPSBnZXRDaGFyQXQoZWRpdG9yLCBvZmZzZXQpO1xuICAgICAgICBjb25zdCBjMSA9IGdldENoYXJBdChlZGl0b3IsIGJ1bXBPZmZzZXQob2Zmc2V0LCArMSkpO1xuICAgICAgICByZXR1cm4gYzAgPT09ICdbJyAmJiBjMSA9PT0gJ1snOyAvLyB8W1tURVhUXV1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0NhcmV0SW1tZWRpYXRlbHlBZnRlckFuY2hvcihlZGl0b3IsIG9mZnNldCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZ2V0Q2hhckF0KGVkaXRvciwgYnVtcE9mZnNldChvZmZzZXQsIC0xKSkgPT09ICddJyAmJlxuICAgICAgICAgICAgZ2V0Q2hhckF0KGVkaXRvciwgYnVtcE9mZnNldChvZmZzZXQsIC0yKSkgPT09ICddJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdyYWJBbmNob3JXaXRoQm91bmRzKGNvbnRhaW5lcikge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBjb250YWluZXI/LmRvY3VtZW50RWRpdG9yO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSBlZGl0b3I/LnNlbGVjdGlvbjtcblxuICAgICAgICBjb25zdCBvcmlnaW5hbFN0YXJ0ID0gc2VsZWN0aW9uLnN0YXJ0T2Zmc2V0O1xuICAgICAgICBjb25zdCBvcmlnaW5hbEVuZCA9IHNlbGVjdGlvbi5lbmRPZmZzZXQ7XG5cbiAgICAgICAgc2VsZWN0aW9uLnNlbGVjdEN1cnJlbnRXb3JkKCk7XG4gICAgICAgIHNlbGVjdGlvbi5zZWxlY3Qob3JpZ2luYWxTdGFydCwgb3JpZ2luYWxFbmQpO1xuXG4gICAgICAgIC8vbGV0IHdvcmQgPSBzZWxlY3Rpb24udGV4dDtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImdyYWJBbmNob3JXaXRoQm91bmRzIFNFTEVDVElPTiBURVhUIDogXCIsIHdvcmQpO1xuXG4gICAgICAgIGxldCBzY2FuU3RhcnQgPSBvcmlnaW5hbFN0YXJ0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGlzQ2FyZXRJbW1lZGlhdGVseUJlZm9yZUFuY2hvclN0YXJ0KGVkaXRvciwgb3JpZ2luYWxTdGFydCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGlzQ2FyZXRBdEVuZCA9IGlzQ2FyZXRJbW1lZGlhdGVseUFmdGVyQW5jaG9yKGVkaXRvciwgb3JpZ2luYWxTdGFydClcbiAgICAgICAgICAgIGlmIChpc0NhcmV0QXRFbmQpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiQ0FSRVQgQVQgRU5EXCIpO1xuICAgICAgICAgICAgICAgIHNjYW5TdGFydCA9IGJ1bXBPZmZzZXQob3JpZ2luYWxTdGFydCwgLTMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gc2NhbkxlZnRVbnRpbEFuY2hvcihlZGl0b3IsIHNjYW5TdGFydCk7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IHNjYW5SaWdodFVudGlsQW5jaG9yKGVkaXRvciwgc2NhblN0YXJ0KTtcblxuICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0KGxlZnQsIHJpZ2h0KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0ID0gc2VsZWN0aW9uLnRleHQ7XG4gICAgICAgICAgICAgICAgYW5jaG9yRW5kLmN1cnJlbnQgPSBpc0NhcmV0QXRFbmQ7XG5cbiAgICAgICAgICAgICAgICAvKmNvbnNvbGUubG9nKFwiR1JBQiBSRVNVTFQgOiBcIiwge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbjogdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IGxlZnQsXG4gICAgICAgICAgICAgICAgICAgIGVuZE9mZnNldDogcmlnaHRcbiAgICAgICAgICAgICAgICB9KTsqL1xuXG4gICAgICAgICAgICAgICAgaWYgKC9eXFxbXFxbLis/XFxdXFxdJC8udGVzdCh0ZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW46IHRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mZnNldDogbGVmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9mZnNldDogcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0KG9yaWdpbmFsU3RhcnQsIG9yaWdpbmFsRW5kKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1bXBPZmZzZXQob2Zmc2V0LCBkZWx0YSkge1xuICAgICAgICBjb25zdCBwYXJ0cyA9IG9mZnNldC5zcGxpdCgnOycpO1xuICAgICAgICBjb25zdCBpZHggPSBwYXJ0cy5sZW5ndGggLSAxO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gTWF0aC5tYXgoMCwgcGFyc2VJbnQocGFydHNbaWR4XSwgMTApICsgZGVsdGEpO1xuICAgICAgICBwYXJ0c1tpZHhdID0gdmFsdWUudG9TdHJpbmcoKTtcblxuICAgICAgICByZXR1cm4gcGFydHMuam9pbignOycpO1xuICAgIH1cblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIHNldHVwQ29udGFpbmVyKCk7XG4gICAgICAgICAgICAvL2F1dG9TYXZlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnRhaW5lci5kb2N1bWVudEVkaXRvcjtcbiAgICAgICAgICAgIGVkaXRvci5hZGRFdmVudExpc3RlbmVyKCdrZXlEb3duJywgKGFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlID0gYXJncy5ldmVudDtcblxuICAgICAgICAgICAgICAgIC8vIDHvuI/ig6MgTmF2aWdhdGlvbiBrZXlzIOKGkiBpbnNwZWN0IG9ubHlcbiAgICAgICAgICAgICAgICBpZiAoaXNOYXZpZ2F0aW9uS2V5KGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVBY3RpdmVBbmNob3IoY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJBQ1RJVkUgQU5DSE9SIDogXCIsIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJERUxFVEUgTE9DS0VEIDogXCIsIGRlbGV0ZUxvY2tSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQmFja3NwYWNlJyB8fCBlLmtleSA9PT0gJ0RlbGV0ZScpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVsZXRlTG9ja1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTeW5jZnVzaW9uIGFscmVhZHkgZGVsZXRlZCDihpIgcmV3aW5kIHNhZmVseVxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmVkaXRvckhpc3RvcnkudW5kbygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIEFjcXVpcmUgbG9ja1xuICAgICAgICAgICAgICAgICAgICBkZWxldGVMb2NrUmVmLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlbGVhc2UgbG9jayB3aGVuIGVkaXRvciBpcyBhY3R1YWxseSBzdGFibGVcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlTG9ja1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gMu+4j+KDoyBJZiB3ZSBhcmUgaW5zaWRlIGEgcmVzdHJpY3RlZCBhbmNob3JcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiYW5jaG9yRW5kLmN1cnJlbnQgOiBcIiwgYW5jaG9yRW5kLmN1cnJlbnQsIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoKGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50ICYmICFpc05hdmlnYXRpb25LZXkoZSkpIHx8IGFuY2hvckVuZC5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSAvIEJhY2tzcGFjZSA9IGRlbGV0ZSB3aG9sZSBhbmNob3JcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQmFja3NwYWNlJyB8fCBlLmtleSA9PT0gJ0RlbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vZWRpdG9yLmVkaXRvckhpc3RvcnkudW5kbygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ3VycmVudEFuY2hvcihjb250YWluZXIsIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvckVuZC5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVMb2NrUmVmLmN1cnJlbnQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gYmxvY2sgd2hlbiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiBhbiBhbmNob3IuIElucHV0IHdpbGwgbmV2ZXIgZGFtYWdlIHRoZSBhbmNob3JcbiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlVOQkxPQ0tJTkcgOiBcIiwgYW5jaG9yRW5kLmN1cnJlbnQsIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhbmNob3JFbmQuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g8J+UkiBCbG9jayB0eXBpbmcgJiBwYXN0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUua2V5Lmxlbmd0aCA9PT0gMSB8fCAvLyBwcmludGFibGUgY2hhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuY3RybEtleSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUubWV0YUtleVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVBbmNob3JSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhbmNob3JFbmQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0JhY2tzcGFjZScgfHwgZS5rZXkgPT09ICdEZWxldGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVBY3RpdmVBbmNob3IoY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG9uTW91c2VVcCA9IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1BvaW50SW5zaWRlRWxlbWVudChlLmNsaWVudFgsIGUuY2xpZW50WSwgdmlld2VyRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChkcm9wRGF0YS5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydFJlYWRvbmx5QW5jaG9yKGRyb3BEYXRhLmN1cnJlbnQudmFsdWUsIGRyb3BEYXRhLmN1cnJlbnQuZHJvcFBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgZHJvcERhdGEuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdXBkYXRlQWN0aXZlQW5jaG9yKGNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgLy92aWV3ZXIuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB2aWV3ZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHZpZXdlckVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgICAgIH1cbiAgICB9LCBbY29udGFpbmVyXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoY29udGFpbmVyICYmIGpzb24pIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5kb2N1bWVudENoYW5nZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZW5hYmxlVHJhY2tDaGFuZ2VzID0gIVV0aWxzLmlzTnVsbChwcm9wcy50cmFja0NoYW5nZXMpID8gcHJvcHMudHJhY2tDaGFuZ2VzIDogdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuY29tbWVudHNPbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lZGl0b3IuZW5mb3JjZVByb3RlY3Rpb24oJ3Bhc3N3b3JkJywgJ0NvbW1lbnRzT25seScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcHMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmlzUmVhZE9ubHkgPSBwcm9wcy5yZWFkT25seTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobG9hZGluZy5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWxlID0gYXdhaXQgc2F2ZUFzQmFzZTY0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcihmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmcuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1cnJlbnRUZXh0LmN1cnJlbnQgPSBleHRyYWN0RG9jdW1lbnRUZXh0KGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lZGl0b3IpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRlbnRDaGFuZ2UnLCBhc3luYyAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5kaXNhYmxlQWNjZXB0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYWNjZXB0QnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJlLWRlLXRyYWNrLWFjY2VwdC1idXR0b25cIik7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYWNjZXB0QnV0dG9uIG9mIGFjY2VwdEJ1dHRvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdEJ1dHRvbi5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKGFjY2VwdEJ1dHRvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuZGlzYWJsZVJlamVjdENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlamVjdEJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZS1kZS10cmFjay1yZWplY3QtYnV0dG9uXCIpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlamVjdEJ1dHRvbiBvZiByZWplY3RCdXR0b25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3RCdXR0b24ucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChyZWplY3RCdXR0b24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGxvYWRpbmcuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZSA9IGF3YWl0IHNhdmVBc0Jhc2U2NCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIoZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjdXJyZW50VGV4dC5jdXJyZW50ID0gZXh0cmFjdERvY3VtZW50VGV4dChjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZWRpdG9yKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3Iub3Blbihqc29uKTtcbiAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lbmFibGVUcmFja0NoYW5nZXMgPSAhVXRpbHMuaXNOdWxsKHByb3BzLnRyYWNrQ2hhbmdlcykgPyBwcm9wcy50cmFja0NoYW5nZXMgOiB0cnVlO1xuICAgICAgICAgICAgLy9jb250YWluZXIuZG9jdW1lbnRFZGl0b3IuaXNSZWFkT25seSA9IChwcm9wcy5yZWFkT25seSB8fCBwcm9wcy5jb21tZW50c09ubHkpO1xuICAgICAgICB9XG4gICAgfSwgW2pzb24sIGNvbnRhaW5lcl0pO1xuXG4gICAgY29uc3Qgb25Ub29sYmFyQ2xpY2sgPSAoYXJncykgPT4ge1xuICAgICAgICBjb25zdCBlZCA9IGNvbnRhaW5lcj8uZG9jdW1lbnRFZGl0b3I/LmVkaXRvcjtcbiAgICAgICAgaWYgKCFlZCkgcmV0dXJuO1xuICAgICAgICBzd2l0Y2ggKGFyZ3MuaXRlbS5pZCkge1xuICAgICAgICAgICAgY2FzZSAnYnVsbGV0cyc6XG4gICAgICAgICAgICAgICAgZWQuYXBwbHlCdWxsZXQoJ1xcdWYwYjcnLCAnU3ltYm9sJyk7IC8vIOKAolxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyaW5nJzpcbiAgICAgICAgICAgICAgICBlZC5hcHBseU51bWJlcmluZygnJTEuJywgJ0FyYWJpYycpOyAvLyAxLlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGV2ZWwtMCc6XG4gICAgICAgICAgICAgICAgYXBwbHlMZXZlbChlZCwgMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZXZlbC0xJzpcbiAgICAgICAgICAgICAgICBhcHBseUxldmVsKGVkLCAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xldmVsLTInOlxuICAgICAgICAgICAgICAgIGFwcGx5TGV2ZWwoZWQsIDIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2xlYXItbGlzdCc6XG4gICAgICAgICAgICAgICAgZWQuY2xlYXJMaXN0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gbGV0IGJ1aWx0LWlucyAoVW5kby9SZWRvL05ldy9PcGVuKSB3b3JrIG5vcm1hbGx5XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9eyduby1tYXJnaW4gbm8tcGFkZGluZyd9IHN0eWxlPXt7aGVpZ2h0OiAnMTAwJSd9fSBpZD17YHBhcmVudC1jb250YWluZXJgfSByZWY9e3BhcmVudFJlZn0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIXZpc2libGUgJiZcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICBmbGV4V3JhcDogJ3dyYXAnLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25Db250ZW50OiAnY2VudGVyJ1xuICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICA8TG90dGllSWNvbiBpZD17J3dhaXRpbmctc20nfS8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlICYmXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAnMCAzMnB4IDAgMzJweCcsXG4gICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogJzY0cHgnXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxBbGVydFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17J2Rhbmdlcid9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93PXshVXRpbHMuaXNOdWxsKGVycm9yTWVzc2FnZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRFcnJvck1lc3NhZ2UobnVsbCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNtaXNzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoOiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7Y29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCknfX0+e2Vycm9yTWVzc2FnZX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7LyogU2V0dGluZyBlbmFibGVUcmFja0NoYW5nZXMgdG8gZmFsc2UgZG9lcyBub3Qgd29yayBzbyB3ZSBkdXBsaWNhdGUgdGhlIGNvZGUqL31cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlICYmIGl0ZW1zICYmIChVdGlscy5pc051bGwocHJvcHMudHJhY2tDaGFuZ2VzKSB8fCBwcm9wcy50cmFja0NoYW5nZXMgPT09IHRydWUpICYmXG4gICAgICAgICAgICAgICAgPERvY3VtZW50RWRpdG9yQ29udGFpbmVyQ29tcG9uZW50IGlkPXtgJHtwcm9wcy5pZH0tY29udGFpbmVyYH0gaGVpZ2h0PXtlZGl0b3JIZWlnaHQgPiAwID8gYCR7ZWRpdG9ySGVpZ2h0fXB4YCA6ICcxMjAwcHgnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9eyhzY29wZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29udGFpbmVyKHNjb3BlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50ID0gc2NvcGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQ9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLnJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVQZXJzaXN0ZW5jZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJDbGljaz17b25Ub29sYmFyQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJJdGVtcz17aXRlbXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0RWRpdGluZz17cHJvcHMucmVhZE9ubHkgJiYgIXByb3BzLmNvbW1lbnRzT25seX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Byb3BlcnRpZXNQYW5lPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlVHJhY2tDaGFuZ2VzPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVBdXRvRm9jdXM9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlVXJsPXtnZXRTZXJ2aWNlVXJsKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVRvb2xiYXI9eyEocHJvcHMucmVhZE9ubHkpIHx8IHByb3BzLmNvbW1lbnRzT25seX0vPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZpc2libGUgJiYgaXRlbXMgJiYgcHJvcHMudHJhY2tDaGFuZ2VzID09PSBmYWxzZSAmJlxuICAgICAgICAgICAgICAgIDxEb2N1bWVudEVkaXRvckNvbnRhaW5lckNvbXBvbmVudCBpZD17YCR7cHJvcHMuaWR9LWNvbnRhaW5lcmB9IGhlaWdodD17ZWRpdG9ySGVpZ2h0ID4gMCA/IGAke2VkaXRvckhlaWdodH1weGAgOiAnMTIwMHB4J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXsoc2NvcGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnRhaW5lcihzY29wZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IHNjb3BlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLnJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5yZXNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlUGVyc2lzdGVuY2U9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyQ2xpY2s9e29uVG9vbGJhckNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFySXRlbXM9e2l0ZW1zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdEVkaXRpbmc9e3Byb3BzLnJlYWRPbmx5ICYmICFwcm9wcy5jb21tZW50c09ubHl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dQcm9wZXJ0aWVzUGFuZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUF1dG9Gb2N1cz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VVcmw9e2dldFNlcnZpY2VVcmwoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlVG9vbGJhcj17IShwcm9wcy5yZWFkT25seSkgfHwgcHJvcHMuY29tbWVudHNPbmx5fS8+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXb3JkRG9jdW1lbnRWaWV3ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLG9CQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSx1QkFBQSxHQUFBSixPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBSyxtQkFBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU0sUUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sTUFBQSxHQUFBSixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBTCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0FBLE9BQUE7QUFFQSxJQUFBUyxrQkFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsa0JBQUEsR0FBQVYsT0FBQTtBQUFnRSxT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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agilemotion/oui-react-js",
3
- "version": "2.0.9",
3
+ "version": "2.0.11",
4
4
  "description": "AgileMotion React UI Component Library - A comprehensive collection of dashboard components, forms, media controls, and more",
5
5
  "license": "ISC",
6
6
  "author": "",