israeli-bank-scrapers 4.3.0 → 4.4.1

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.
@@ -25,11 +25,10 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
25
25
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
26
26
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
27
27
  const debug = (0, _debug.getDebug)('max');
28
- const BASE_ACTIONS_URL = 'https://online.max.co.il';
29
28
  const BASE_API_ACTIONS_URL = 'https://onlinelcapi.max.co.il';
30
29
  const BASE_WELCOME_URL = 'https://www.max.co.il';
31
30
  const LOGIN_URL = `${BASE_WELCOME_URL}/homepage/welcome`;
32
- const PASSWORD_EXPIRED_URL = `${BASE_ACTIONS_URL}/Anonymous/Login/PasswordExpired.aspx`;
31
+ const PASSWORD_EXPIRED_URL = `${BASE_WELCOME_URL}/renew-password`;
33
32
  const SUCCESS_URL = `${BASE_WELCOME_URL}/homepage/personal`;
34
33
  var MaxPlanName;
35
34
  (function (MaxPlanName) {
@@ -303,4 +302,4 @@ class MaxScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
303
302
  }
304
303
  var _default = MaxScraper;
305
304
  exports.default = _default;
306
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYnVpbGRVcmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9tb21lbnQiLCJfZmV0Y2giLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsIl9uYXZpZ2F0aW9uIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2RhdGVzIiwiX3RyYW5zYWN0aW9ucyIsIl90cmFuc2FjdGlvbnMyIiwiX2RlYnVnIiwiX2NvbnN0YW50cyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsIm9iamVjdCIsImVudW1lcmFibGVPbmx5Iiwia2V5cyIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bWJvbHMiLCJmaWx0ZXIiLCJzeW0iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJmb3JFYWNoIiwia2V5IiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJkZWJ1ZyIsImdldERlYnVnIiwiQkFTRV9BQ1RJT05TX1VSTCIsIkJBU0VfQVBJX0FDVElPTlNfVVJMIiwiQkFTRV9XRUxDT01FX1VSTCIsIkxPR0lOX1VSTCIsIlBBU1NXT1JEX0VYUElSRURfVVJMIiwiU1VDQ0VTU19VUkwiLCJNYXhQbGFuTmFtZSIsIklOVkFMSURfREVUQUlMU19TRUxFQ1RPUiIsIkxPR0lOX0VSUk9SX1NFTEVDVE9SIiwiY2F0ZWdvcmllcyIsIk1hcCIsInJlZGlyZWN0T3JEaWFsb2ciLCJwYWdlIiwiUHJvbWlzZSIsInJhY2UiLCJ3YWl0Rm9yUmVkaXJlY3QiLCJ3YWl0VW50aWxFbGVtZW50Rm91bmQiLCJnZXRUcmFuc2FjdGlvbnNVcmwiLCJtb250aE1vbWVudCIsIm1vbnRoIiwieWVhciIsImRhdGUiLCJidWlsZFVybCIsInBhdGgiLCJsb2FkQ2F0ZWdvcmllcyIsInJlcyIsImZldGNoR2V0V2l0aGluUGFnZSIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VsdCIsIl9yZXMkcmVzdWx0IiwiaWQiLCJuYW1lIiwic2V0IiwiZ2V0VHJhbnNhY3Rpb25UeXBlIiwicGxhbk5hbWUiLCJwbGFuVHlwZUlkIiwiY2xlYW5lZFVwVHhuVHlwZVN0ciIsInJlcGxhY2UiLCJ0cmltIiwiSW1tZWRpYXRlQ2hhcmdlIiwiTm9ybWFsIiwiTW9udGhseUNoYXJnZSIsIk9uZU1vbnRoUG9zdHBvbmVkIiwiTW9udGhseVBvc3Rwb25lZCIsIkZ1dHVyZVB1cmNoYXNlRmluYW5jaW5nIiwiTW9udGhseVBheW1lbnQiLCJNb250aGx5UG9zdHBvbmVkSW5zdGFsbG1lbnRzIiwiVGhpcnR5RGF5c1BsdXMiLCJUd29Nb250aHNQb3N0cG9uZWQiLCJUd29Nb250aHNQb3N0cG9uZWQyIiwiQWNjdW11bGF0aW5nQmFza2V0IiwiSW50ZXJuZXRTaG9wcGluZyIsIk1vbnRobHlDaGFyZ2VQbHVzSW50ZXJlc3QiLCJQb3N0cG9uZWRUcmFuc2FjdGlvbkluc3RhbGxtZW50cyIsIlJlcGxhY2VtZW50Q2FyZCIsIkVhcmx5UmVwYXltZW50IiwiTW9udGhseUNhcmRGZWUiLCJDdXJyZW5jeVBvY2tldCIsIlRyYW5zYWN0aW9uVHlwZXMiLCJJbnN0YWxsbWVudHMiLCJDcmVkaXQiLCJDcmVkaXRPdXRzaWRlVGhlTGltaXQiLCJFcnJvciIsImdldEluc3RhbGxtZW50c0luZm8iLCJjb21tZW50cyIsInVuZGVmaW5lZCIsIm1hdGNoZXMiLCJtYXRjaCIsIm51bWJlciIsInBhcnNlSW50IiwidG90YWwiLCJnZXRDaGFyZ2VkQ3VycmVuY3kiLCJjdXJyZW5jeUlkIiwiU0hFS0VMX0NVUlJFTkNZIiwiRE9MTEFSX0NVUlJFTkNZIiwiRVVST19DVVJSRU5DWSIsImdldE1lbW8iLCJmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyIiwiZnVuZHNUcmFuc2ZlckNvbW1lbnQiLCJtZW1vIiwibWFwVHJhbnNhY3Rpb24iLCJyYXdUcmFuc2FjdGlvbiIsIl9yYXdUcmFuc2FjdGlvbiRkZWFsRCIsIl9yYXdUcmFuc2FjdGlvbiRkZWFsRDIiLCJpc1BlbmRpbmciLCJwYXltZW50RGF0ZSIsInByb2Nlc3NlZERhdGUiLCJtb21lbnQiLCJwdXJjaGFzZURhdGUiLCJ0b0lTT1N0cmluZyIsInN0YXR1cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJQZW5kaW5nIiwiQ29tcGxldGVkIiwiaW5zdGFsbG1lbnRzIiwiaWRlbnRpZmllciIsImRlYWxEYXRhIiwiYXJuIiwidHlwZSIsIm9yaWdpbmFsQW1vdW50Iiwib3JpZ2luYWxDdXJyZW5jeSIsImNoYXJnZWRBbW91bnQiLCJhY3R1YWxQYXltZW50QW1vdW50IiwiY2hhcmdlZEN1cnJlbmN5IiwicGF5bWVudEN1cnJlbmN5IiwiZGVzY3JpcHRpb24iLCJtZXJjaGFudE5hbWUiLCJjYXRlZ29yeSIsImdldCIsImNhdGVnb3J5SWQiLCJmZXRjaFRyYW5zYWN0aW9uc0Zvck1vbnRoIiwidXJsIiwiZGF0YSIsInRyYW5zYWN0aW9uc0J5QWNjb3VudCIsInRyYW5zYWN0aW9ucyIsInRyYW5zYWN0aW9uIiwic2hvcnRDYXJkTnVtYmVyIiwibWFwcGVkVHJhbnNhY3Rpb24iLCJhZGRSZXN1bHQiLCJhbGxSZXN1bHRzIiwiY2xvbmVkUmVzdWx0cyIsImFjY291bnROdW1iZXIiLCJwcmVwYXJlVHJhbnNhY3Rpb25zIiwidHhucyIsInN0YXJ0TW9tZW50IiwiY29tYmluZUluc3RhbGxtZW50cyIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImNsb25lZFR4bnMiLCJmcm9tIiwiZml4SW5zdGFsbG1lbnRzIiwic29ydFRyYW5zYWN0aW9uc0J5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImZldGNoVHJhbnNhY3Rpb25zIiwib3B0aW9ucyIsIl9vcHRpb25zJGZ1dHVyZU1vbnRocyIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtYXgiLCJhbGxNb250aHMiLCJnZXRBbGxNb250aE1vbWVudHMiLCJfb3B0aW9ucyRvdXRwdXREYXRhJGUiLCJfb3B0aW9ucyRvdXRwdXREYXRhIiwib3V0cHV0RGF0YSIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJDaGFuZ2VQYXNzd29yZCIsIkludmFsaWRQYXNzd29yZCIsImVsZW1lbnRQcmVzZW50T25QYWdlIiwiVW5rbm93bkVycm9yIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsIk1heFNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInByZUFjdGlvbiIsImNsaWNrQnV0dG9uIiwiY2hlY2tSZWFkaW5lc3MiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwid2FpdFVudGlsIiwiZmV0Y2hEYXRhIiwicmVzdWx0cyIsImFjY291bnRzIiwibWFwIiwic3VjY2VzcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9tYXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJ1aWxkVXJsIGZyb20gJ2J1aWxkLXVybCc7XG5pbXBvcnQgbW9tZW50LCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBQYWdlLCBMb2FkRXZlbnQgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBMb2dpblJlc3VsdHMsIFBvc3NpYmxlTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IHdhaXRGb3JSZWRpcmVjdCB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyB3YWl0VW50aWxFbGVtZW50Rm91bmQsIGVsZW1lbnRQcmVzZW50T25QYWdlLCBjbGlja0J1dHRvbiB9IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCBnZXRBbGxNb250aE1vbWVudHMgZnJvbSAnLi4vaGVscGVycy9kYXRlcyc7XG5pbXBvcnQgeyBmaXhJbnN0YWxsbWVudHMsIHNvcnRUcmFuc2FjdGlvbnNCeURhdGUsIGZpbHRlck9sZFRyYW5zYWN0aW9ucyB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IGdldERlYnVnIH0gZnJvbSAnLi4vaGVscGVycy9kZWJ1Zyc7XG5pbXBvcnQgeyBTY3JhcGVyT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSwgRE9MTEFSX0NVUlJFTkNZLCBFVVJPX0NVUlJFTkNZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygnbWF4Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgc2hvcnRDYXJkTnVtYmVyOiBzdHJpbmc7XG4gIHBheW1lbnREYXRlPzogc3RyaW5nO1xuICBwdXJjaGFzZURhdGU6IHN0cmluZztcbiAgYWN0dWFsUGF5bWVudEFtb3VudDogc3RyaW5nO1xuICBwYXltZW50Q3VycmVuY3k6IG51bWJlciB8IG51bGw7XG4gIG9yaWdpbmFsQ3VycmVuY3k6IHN0cmluZztcbiAgb3JpZ2luYWxBbW91bnQ6IG51bWJlcjtcbiAgcGxhbk5hbWU6IHN0cmluZztcbiAgcGxhblR5cGVJZDogbnVtYmVyO1xuICBjb21tZW50czogc3RyaW5nO1xuICBtZXJjaGFudE5hbWU6IHN0cmluZztcbiAgY2F0ZWdvcnlJZDogbnVtYmVyO1xuICBmdW5kc1RyYW5zZmVyQ29tbWVudD86IHN0cmluZztcbiAgZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2Zlcj86IHN0cmluZztcbiAgZGVhbERhdGE/OiB7XG4gICAgYXJuOiBzdHJpbmc7XG4gIH07XG59XG5cbmNvbnN0IEJBU0VfQUNUSU9OU19VUkwgPSAnaHR0cHM6Ly9vbmxpbmUubWF4LmNvLmlsJztcbmNvbnN0IEJBU0VfQVBJX0FDVElPTlNfVVJMID0gJ2h0dHBzOi8vb25saW5lbGNhcGkubWF4LmNvLmlsJztcbmNvbnN0IEJBU0VfV0VMQ09NRV9VUkwgPSAnaHR0cHM6Ly93d3cubWF4LmNvLmlsJztcblxuY29uc3QgTE9HSU5fVVJMID0gYCR7QkFTRV9XRUxDT01FX1VSTH0vaG9tZXBhZ2Uvd2VsY29tZWA7XG5jb25zdCBQQVNTV09SRF9FWFBJUkVEX1VSTCA9IGAke0JBU0VfQUNUSU9OU19VUkx9L0Fub255bW91cy9Mb2dpbi9QYXNzd29yZEV4cGlyZWQuYXNweGA7XG5jb25zdCBTVUNDRVNTX1VSTCA9IGAke0JBU0VfV0VMQ09NRV9VUkx9L2hvbWVwYWdlL3BlcnNvbmFsYDtcblxuZW51bSBNYXhQbGFuTmFtZSB7XG4gIE5vcm1hbCA9ICfXqNeS15nXnNeUJyxcbiAgSW1tZWRpYXRlQ2hhcmdlID0gJ9eX15nXldeRINei16HXp9eV16og157XmdeZ15PXmScsXG4gIEludGVybmV0U2hvcHBpbmcgPSAn15DXmdeg15jXqNeg15gv15fXlVwi15wnLFxuICBJbnN0YWxsbWVudHMgPSAn16rXqdec15XXnteZ150nLFxuICBNb250aGx5Q2hhcmdlID0gJ9eX15nXldeRINeX15XXk9ep15knLFxuICBPbmVNb250aFBvc3Rwb25lZCA9ICfXk9eX15XXmSDXl9eV15PXqScsXG4gIE1vbnRobHlQb3N0cG9uZWQgPSAn15PXl9eV15kg15zXl9eZ15XXkSDXlNeX15XXk9ep15knLFxuICBNb250aGx5UGF5bWVudCA9ICfXqtep15zXldedINeX15XXk9ep15knLFxuICBGdXR1cmVQdXJjaGFzZUZpbmFuY2luZyA9ICfXnteZ157XldefINec16jXm9eZ16nXlCDXoteq15nXk9eZ16onLFxuICBNb250aGx5UG9zdHBvbmVkSW5zdGFsbG1lbnRzID0gJ9eT15fXldeZINeX15XXk9epINeq16nXnNeV157XmdedJyxcbiAgVGhpcnR5RGF5c1BsdXMgPSAn16LXoden16ogMzAg16TXnNeV16EnLFxuICBUd29Nb250aHNQb3N0cG9uZWQgPSAn15PXl9eV15kg15fXldeT16nXmdeZ150nLFxuICBUd29Nb250aHNQb3N0cG9uZWQyID0gJ9eT15fXldeZIDIg15dcXCcg16rXqdec15XXnteZ150nLFxuICBNb250aGx5Q2hhcmdlUGx1c0ludGVyZXN0ID0gJ9eX15XXk9ep15kgKyDXqNeZ15HXmdeqJyxcbiAgQ3JlZGl0ID0gJ9en16jXk9eZ15gnLFxuICBDcmVkaXRPdXRzaWRlVGhlTGltaXQgPSAn16fXqNeT15nXmC3XnteX15XXpSDXnNee16HXkteo16onLFxuICBBY2N1bXVsYXRpbmdCYXNrZXQgPSAn16HXnCDXntem15jXkdeoJyxcbiAgUG9zdHBvbmVkVHJhbnNhY3Rpb25JbnN0YWxsbWVudHMgPSAn16TXqNeZ16HXqiDXlNei16HXp9eUINeU15PXl9eV15nXlCcsXG4gIFJlcGxhY2VtZW50Q2FyZCA9ICfXm9eo15jXmdehINeX15zXmdek15knLFxuICBFYXJseVJlcGF5bWVudCA9ICfXpNeo16LXldefINee15XXp9eT150nLFxuICBNb250aGx5Q2FyZEZlZSA9ICfXk9ee15kg15vXqNeY15nXoScsXG4gIEN1cnJlbmN5UG9ja2V0ID0gJ9eX15nXldeRINeQ16jXoNenINee15jXlydcbn1cblxuY29uc3QgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SID0gJyNwb3B1cFdyb25nRGV0YWlscyc7XG5jb25zdCBMT0dJTl9FUlJPUl9TRUxFQ1RPUiA9ICcjcG9wdXBDYXJkSG9sZGVyc0xvZ2luRXJyb3InO1xuXG5jb25zdCBjYXRlZ29yaWVzID0gbmV3IE1hcDxudW1iZXIsIHN0cmluZz4oKTtcblxuZnVuY3Rpb24gcmVkaXJlY3RPckRpYWxvZyhwYWdlOiBQYWdlKSB7XG4gIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgIHdhaXRGb3JSZWRpcmVjdChwYWdlLCAyMDAwMCwgZmFsc2UsIFtCQVNFX1dFTENPTUVfVVJMLCBgJHtCQVNFX1dFTENPTUVfVVJMfS9gXSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIElOVkFMSURfREVUQUlMU19TRUxFQ1RPUiwgdHJ1ZSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIExPR0lOX0VSUk9SX1NFTEVDVE9SLCB0cnVlKSxcbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uc1VybChtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IG1vbnRoID0gbW9udGhNb21lbnQubW9udGgoKSArIDE7XG4gIGNvbnN0IHllYXIgPSBtb250aE1vbWVudC55ZWFyKCk7XG4gIGNvbnN0IGRhdGUgPSBgJHt5ZWFyfS0ke21vbnRofS0wMWA7XG5cbiAgLyoqXG4gICAgICogdXJsIGV4cGxhbmF0aW9uOlxuICAgICAqIHVzZXJJbmRleDogLTEgZm9yIGFsbCBhY2NvdW50IG93bmVyc1xuICAgICAqIGNhcmRJbmRleDogLTEgZm9yIGFsbCBjYXJkcyB1bmRlciB0aGUgYWNjb3VudFxuICAgICAqIGFsbCBvdGhlciBxdWVyeSBwYXJhbXMgYXJlIHN0YXRpYywgYmVzaWRlIHRoZSBkYXRlIHdoaWNoIGNoYW5nZXMgZm9yIHJlcXVlc3QgcGVyIG1vbnRoXG4gICAgICovXG4gIHJldHVybiBidWlsZFVybChCQVNFX0FQSV9BQ1RJT05TX1VSTCwge1xuICAgIHBhdGg6IGAvYXBpL3JlZ2lzdGVyZWQvdHJhbnNhY3Rpb25EZXRhaWxzL2dldFRyYW5zYWN0aW9uc0FuZEdyYXBocz9maWx0ZXJEYXRhPXtcInVzZXJJbmRleFwiOi0xLFwiY2FyZEluZGV4XCI6LTEsXCJtb250aFZpZXdcIjp0cnVlLFwiZGF0ZVwiOlwiJHtkYXRlfVwiLFwiZGF0ZXNcIjp7XCJzdGFydERhdGVcIjpcIjBcIixcImVuZERhdGVcIjpcIjBcIn0sXCJiYW5rQWNjb3VudFwiOntcImJhbmtBY2NvdW50SW5kZXhcIjotMSxcImNhcmRzXCI6bnVsbH19JmZpcnN0Q2FsbENhcmRJbmRleD0tMWAsXG4gIH0pO1xufVxuXG5pbnRlcmZhY2UgRmV0Y2hDYXRlZ29yeVJlc3VsdCB7XG4gIHJlc3VsdD8gOiBBcnJheTx7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH0+O1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkQ2F0ZWdvcmllcyhwYWdlOiBQYWdlKSB7XG4gIGRlYnVnKCdMb2FkaW5nIGNhdGVnb3JpZXMnKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPEZldGNoQ2F0ZWdvcnlSZXN1bHQ+KHBhZ2UsIGAke0JBU0VfQVBJX0FDVElPTlNfVVJMfS9hcGkvY29udGVudHMvZ2V0Q2F0ZWdvcmllc2ApO1xuICBpZiAocmVzICYmIEFycmF5LmlzQXJyYXkocmVzLnJlc3VsdCkpIHtcbiAgICBkZWJ1ZyhgJHtyZXMucmVzdWx0Lmxlbmd0aH0gY2F0ZWdvcmllcyBsb2FkZWRgKTtcbiAgICAgIHJlcy5yZXN1bHQ/LmZvckVhY2goKHsgaWQsIG5hbWUgfSkgPT4gY2F0ZWdvcmllcy5zZXQoaWQsIG5hbWUpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvblR5cGUocGxhbk5hbWU6IHN0cmluZywgcGxhblR5cGVJZDogbnVtYmVyKSB7XG4gIGNvbnN0IGNsZWFuZWRVcFR4blR5cGVTdHIgPSBwbGFuTmFtZS5yZXBsYWNlKCdcXHQnLCAnICcpLnRyaW0oKTtcbiAgc3dpdGNoIChjbGVhbmVkVXBUeG5UeXBlU3RyKSB7XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5JbW1lZGlhdGVDaGFyZ2U6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Ob3JtYWw6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Nb250aGx5Q2hhcmdlOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuT25lTW9udGhQb3N0cG9uZWQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Nb250aGx5UG9zdHBvbmVkOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuRnV0dXJlUHVyY2hhc2VGaW5hbmNpbmc6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Nb250aGx5UGF5bWVudDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlQb3N0cG9uZWRJbnN0YWxsbWVudHM6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5UaGlydHlEYXlzUGx1czpcbiAgICBjYXNlIE1heFBsYW5OYW1lLlR3b01vbnRoc1Bvc3Rwb25lZDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLlR3b01vbnRoc1Bvc3Rwb25lZDI6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5BY2N1bXVsYXRpbmdCYXNrZXQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5JbnRlcm5ldFNob3BwaW5nOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseUNoYXJnZVBsdXNJbnRlcmVzdDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLlBvc3Rwb25lZFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuUmVwbGFjZW1lbnRDYXJkOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuRWFybHlSZXBheW1lbnQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Nb250aGx5Q2FyZEZlZTpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkN1cnJlbmN5UG9ja2V0OlxuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsO1xuICAgIGNhc2UgTWF4UGxhbk5hbWUuSW5zdGFsbG1lbnRzOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuQ3JlZGl0OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuQ3JlZGl0T3V0c2lkZVRoZUxpbWl0OlxuICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzd2l0Y2ggKHBsYW5UeXBlSWQpIHtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0cmFuc2FjdGlvbiB0eXBlICR7Y2xlYW5lZFVwVHhuVHlwZVN0cn1gKTtcbiAgICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRJbnN0YWxsbWVudHNJbmZvKGNvbW1lbnRzOiBzdHJpbmcpIHtcbiAgaWYgKCFjb21tZW50cykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgbWF0Y2hlcyA9IGNvbW1lbnRzLm1hdGNoKC9cXGQrL2cpO1xuICBpZiAoIW1hdGNoZXMgfHwgbWF0Y2hlcy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbnVtYmVyOiBwYXJzZUludChtYXRjaGVzWzBdLCAxMCksXG4gICAgdG90YWw6IHBhcnNlSW50KG1hdGNoZXNbMV0sIDEwKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2hhcmdlZEN1cnJlbmN5KGN1cnJlbmN5SWQ6IG51bWJlciB8IG51bGwpIHtcbiAgc3dpdGNoIChjdXJyZW5jeUlkKSB7XG4gICAgY2FzZSAzNzY6XG4gICAgICByZXR1cm4gU0hFS0VMX0NVUlJFTkNZO1xuICAgIGNhc2UgODQwOlxuICAgICAgcmV0dXJuIERPTExBUl9DVVJSRU5DWTtcbiAgICBjYXNlIDk3ODpcbiAgICAgIHJldHVybiBFVVJPX0NVUlJFTkNZO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW1vKHtcbiAgY29tbWVudHMsIGZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXIsIGZ1bmRzVHJhbnNmZXJDb21tZW50LFxufTogUGljazxTY3JhcGVkVHJhbnNhY3Rpb24sICdjb21tZW50cyd8ICdmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyJyB8ICdmdW5kc1RyYW5zZmVyQ29tbWVudCc+KSB7XG4gIGlmIChmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyKSB7XG4gICAgY29uc3QgbWVtbyA9IGNvbW1lbnRzID8gYCR7Y29tbWVudHN9ICR7ZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2Zlcn1gIDogZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2ZlcjtcbiAgICByZXR1cm4gZnVuZHNUcmFuc2ZlckNvbW1lbnQgPyBgJHttZW1vfTogJHtmdW5kc1RyYW5zZmVyQ29tbWVudH1gIDogbWVtbztcbiAgfVxuXG4gIHJldHVybiBjb21tZW50cztcbn1cblxuZnVuY3Rpb24gbWFwVHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IFNjcmFwZWRUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uIHtcbiAgY29uc3QgaXNQZW5kaW5nID0gcmF3VHJhbnNhY3Rpb24ucGF5bWVudERhdGUgPT09IG51bGw7XG4gIGNvbnN0IHByb2Nlc3NlZERhdGUgPSBtb21lbnQoaXNQZW5kaW5nID9cbiAgICByYXdUcmFuc2FjdGlvbi5wdXJjaGFzZURhdGUgOlxuICAgIHJhd1RyYW5zYWN0aW9uLnBheW1lbnREYXRlKS50b0lTT1N0cmluZygpO1xuICBjb25zdCBzdGF0dXMgPSBpc1BlbmRpbmcgPyBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmcgOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZDtcblxuICBjb25zdCBpbnN0YWxsbWVudHMgPSBnZXRJbnN0YWxsbWVudHNJbmZvKHJhd1RyYW5zYWN0aW9uLmNvbW1lbnRzKTtcbiAgY29uc3QgaWRlbnRpZmllciA9IGluc3RhbGxtZW50cyA/XG4gICAgYCR7cmF3VHJhbnNhY3Rpb24uZGVhbERhdGE/LmFybn1fJHtpbnN0YWxsbWVudHMubnVtYmVyfWAgOlxuICAgIHJhd1RyYW5zYWN0aW9uLmRlYWxEYXRhPy5hcm47XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBnZXRUcmFuc2FjdGlvblR5cGUocmF3VHJhbnNhY3Rpb24ucGxhbk5hbWUsIHJhd1RyYW5zYWN0aW9uLnBsYW5UeXBlSWQpLFxuICAgIGRhdGU6IG1vbWVudChyYXdUcmFuc2FjdGlvbi5wdXJjaGFzZURhdGUpLnRvSVNPU3RyaW5nKCksXG4gICAgcHJvY2Vzc2VkRGF0ZSxcbiAgICBvcmlnaW5hbEFtb3VudDogLXJhd1RyYW5zYWN0aW9uLm9yaWdpbmFsQW1vdW50LFxuICAgIG9yaWdpbmFsQ3VycmVuY3k6IHJhd1RyYW5zYWN0aW9uLm9yaWdpbmFsQ3VycmVuY3ksXG4gICAgY2hhcmdlZEFtb3VudDogLXJhd1RyYW5zYWN0aW9uLmFjdHVhbFBheW1lbnRBbW91bnQsXG4gICAgY2hhcmdlZEN1cnJlbmN5OiBnZXRDaGFyZ2VkQ3VycmVuY3kocmF3VHJhbnNhY3Rpb24ucGF5bWVudEN1cnJlbmN5KSxcbiAgICBkZXNjcmlwdGlvbjogcmF3VHJhbnNhY3Rpb24ubWVyY2hhbnROYW1lLnRyaW0oKSxcbiAgICBtZW1vOiBnZXRNZW1vKHJhd1RyYW5zYWN0aW9uKSxcbiAgICBjYXRlZ29yeTogY2F0ZWdvcmllcy5nZXQocmF3VHJhbnNhY3Rpb24/LmNhdGVnb3J5SWQpLFxuICAgIGluc3RhbGxtZW50cyxcbiAgICBpZGVudGlmaWVyLFxuICAgIHN0YXR1cyxcbiAgfTtcbn1cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb25zUmVzdWx0e1xuICByZXN1bHQ/OiB7XG4gICAgdHJhbnNhY3Rpb25zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnNGb3JNb250aChwYWdlOiBQYWdlLCBtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IHVybCA9IGdldFRyYW5zYWN0aW9uc1VybChtb250aE1vbWVudCk7XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25zUmVzdWx0PihwYWdlLCB1cmwpO1xuICBjb25zdCB0cmFuc2FjdGlvbnNCeUFjY291bnQ6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0ge307XG5cbiAgaWYgKCFkYXRhIHx8ICFkYXRhLnJlc3VsdCkgcmV0dXJuIHRyYW5zYWN0aW9uc0J5QWNjb3VudDtcblxuICBkYXRhLnJlc3VsdC50cmFuc2FjdGlvbnNcbiAgICAvLyBGaWx0ZXIgb3V0IG5vbi10cmFuc2FjdGlvbnMgd2l0aG91dCBhIHBsYW4gdHlwZSwgZS5nLiBzdW1tYXJ5IHJvd3NcbiAgICAuZmlsdGVyKCh0cmFuc2FjdGlvbikgPT4gISF0cmFuc2FjdGlvbi5wbGFuTmFtZSlcbiAgICAuZm9yRWFjaCgodHJhbnNhY3Rpb246IFNjcmFwZWRUcmFuc2FjdGlvbikgPT4ge1xuICAgICAgaWYgKCF0cmFuc2FjdGlvbnNCeUFjY291bnRbdHJhbnNhY3Rpb24uc2hvcnRDYXJkTnVtYmVyXSkge1xuICAgICAgICB0cmFuc2FjdGlvbnNCeUFjY291bnRbdHJhbnNhY3Rpb24uc2hvcnRDYXJkTnVtYmVyXSA9IFtdO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtYXBwZWRUcmFuc2FjdGlvbiA9IG1hcFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKTtcbiAgICAgIHRyYW5zYWN0aW9uc0J5QWNjb3VudFt0cmFuc2FjdGlvbi5zaG9ydENhcmROdW1iZXJdLnB1c2gobWFwcGVkVHJhbnNhY3Rpb24pO1xuICAgIH0pO1xuXG4gIHJldHVybiB0cmFuc2FjdGlvbnNCeUFjY291bnQ7XG59XG5cbmZ1bmN0aW9uIGFkZFJlc3VsdChhbGxSZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiwgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPikge1xuICBjb25zdCBjbG9uZWRSZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiA9IHsgLi4uYWxsUmVzdWx0cyB9O1xuICBPYmplY3Qua2V5cyhyZXN1bHQpLmZvckVhY2goKGFjY291bnROdW1iZXIpID0+IHtcbiAgICBpZiAoIWNsb25lZFJlc3VsdHNbYWNjb3VudE51bWJlcl0pIHtcbiAgICAgIGNsb25lZFJlc3VsdHNbYWNjb3VudE51bWJlcl0gPSBbXTtcbiAgICB9XG4gICAgY2xvbmVkUmVzdWx0c1thY2NvdW50TnVtYmVyXS5wdXNoKC4uLnJlc3VsdFthY2NvdW50TnVtYmVyXSk7XG4gIH0pO1xuICByZXR1cm4gY2xvbmVkUmVzdWx0cztcbn1cblxuZnVuY3Rpb24gcHJlcGFyZVRyYW5zYWN0aW9ucyh0eG5zOiBUcmFuc2FjdGlvbltdLCBzdGFydE1vbWVudDogbW9tZW50Lk1vbWVudCwgY29tYmluZUluc3RhbGxtZW50czogYm9vbGVhbiwgZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlOiBib29sZWFuKSB7XG4gIGxldCBjbG9uZWRUeG5zID0gQXJyYXkuZnJvbSh0eG5zKTtcbiAgaWYgKCFjb21iaW5lSW5zdGFsbG1lbnRzKSB7XG4gICAgY2xvbmVkVHhucyA9IGZpeEluc3RhbGxtZW50cyhjbG9uZWRUeG5zKTtcbiAgfVxuICBjbG9uZWRUeG5zID0gc29ydFRyYW5zYWN0aW9uc0J5RGF0ZShjbG9uZWRUeG5zKTtcbiAgY2xvbmVkVHhucyA9IGVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/XG4gICAgZmlsdGVyT2xkVHJhbnNhY3Rpb25zKGNsb25lZFR4bnMsIHN0YXJ0TW9tZW50LCBjb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKSA6XG4gICAgY2xvbmVkVHhucztcbiAgcmV0dXJuIGNsb25lZFR4bnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zKSB7XG4gIGNvbnN0IGZ1dHVyZU1vbnRoc1RvU2NyYXBlID0gb3B0aW9ucy5mdXR1cmVNb250aHNUb1NjcmFwZSA/PyAxO1xuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG4gIGNvbnN0IGFsbE1vbnRocyA9IGdldEFsbE1vbnRoTW9tZW50cyhzdGFydE1vbWVudCwgZnV0dXJlTW9udGhzVG9TY3JhcGUpO1xuXG4gIGF3YWl0IGxvYWRDYXRlZ29yaWVzKHBhZ2UpO1xuXG4gIGxldCBhbGxSZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiA9IHt9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbE1vbnRocy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgocGFnZSwgYWxsTW9udGhzW2ldKTtcbiAgICBhbGxSZXN1bHRzID0gYWRkUmVzdWx0KGFsbFJlc3VsdHMsIHJlc3VsdCk7XG4gIH1cblxuICBPYmplY3Qua2V5cyhhbGxSZXN1bHRzKS5mb3JFYWNoKChhY2NvdW50TnVtYmVyKSA9PiB7XG4gICAgbGV0IHR4bnMgPSBhbGxSZXN1bHRzW2FjY291bnROdW1iZXJdO1xuICAgIHR4bnMgPSBwcmVwYXJlVHJhbnNhY3Rpb25zKHR4bnMsIHN0YXJ0TW9tZW50LCBvcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMgfHwgZmFsc2UsXG4gICAgICAob3B0aW9ucy5vdXRwdXREYXRhPy5lbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUgPz8gdHJ1ZSkpO1xuICAgIGFsbFJlc3VsdHNbYWNjb3VudE51bWJlcl0gPSB0eG5zO1xuICB9KTtcblxuICByZXR1cm4gYWxsUmVzdWx0cztcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMocGFnZTogUGFnZSk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbU1VDQ0VTU19VUkxdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF0gPSBbUEFTU1dPUkRfRVhQSVJFRF9VUkxdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdID0gW2FzeW5jICgpID0+IHtcbiAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SKTtcbiAgfV07XG4gIHVybHNbTG9naW5SZXN1bHRzLlVua25vd25FcnJvcl0gPSBbYXN5bmMgKCkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCBMT0dJTl9FUlJPUl9TRUxFQ1RPUik7XG4gIH1dO1xuICByZXR1cm4gdXJscztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJyN1c2VyLW5hbWUnLCB2YWx1ZTogY3JlZGVudGlhbHMudXNlcm5hbWUgfSxcbiAgICB7IHNlbGVjdG9yOiAnI3Bhc3N3b3JkJywgdmFsdWU6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0sXG4gIF07XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7dXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZ307XG5cbmNsYXNzIE1heFNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IExPR0lOX1VSTCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICcjbG9naW4tcGFzc3dvcmQgI3NlbmQtY29kZScsXG4gICAgICBwcmVBY3Rpb246IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKHRoaXMucGFnZSwgJyNjbG9zZVBvcHVwJykpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcjY2xvc2VQb3B1cCcpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJy5wZXJzb25hbC1hcmVhID4gYS5nby10by1wZXJzb25hbC1hcmVhJyk7XG4gICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQtbGluaycsIHRydWUpO1xuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQtbGluaycpO1xuICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2xvZ2luLXBhc3N3b3JkLnRhYi1wYW5lLmFjdGl2ZSBhcHAtdXNlci1sb2dpbi1mb3JtJywgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJy5wZXJzb25hbC1hcmVhID4gYS5nby10by1wZXJzb25hbC1hcmVhJywgdHJ1ZSk7XG4gICAgICB9LFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gcmVkaXJlY3RPckRpYWxvZyh0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLnBhZ2UpLFxuICAgICAgd2FpdFVudGlsOiAnZG9tY29udGVudGxvYWRlZCcgYXMgTG9hZEV2ZW50LFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zKHRoaXMucGFnZSwgdGhpcy5vcHRpb25zKTtcbiAgICBjb25zdCBhY2NvdW50cyA9IE9iamVjdC5rZXlzKHJlc3VsdHMpLm1hcCgoYWNjb3VudE51bWJlcikgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgICAgdHhuczogcmVzdWx0c1thY2NvdW50TnVtYmVyXSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWF4U2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxTQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxNQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyx1QkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUsscUJB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
305
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYnVpbGRVcmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9tb21lbnQiLCJfZmV0Y2giLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsIl9uYXZpZ2F0aW9uIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2RhdGVzIiwiX3RyYW5zYWN0aW9ucyIsIl90cmFuc2FjdGlvbnMyIiwiX2RlYnVnIiwiX2NvbnN0YW50cyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsIm9iamVjdCIsImVudW1lcmFibGVPbmx5Iiwia2V5cyIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bWJvbHMiLCJmaWx0ZXIiLCJzeW0iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJmb3JFYWNoIiwia2V5IiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJkZWJ1ZyIsImdldERlYnVnIiwiQkFTRV9BUElfQUNUSU9OU19VUkwiLCJCQVNFX1dFTENPTUVfVVJMIiwiTE9HSU5fVVJMIiwiUEFTU1dPUkRfRVhQSVJFRF9VUkwiLCJTVUNDRVNTX1VSTCIsIk1heFBsYW5OYW1lIiwiSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SIiwiTE9HSU5fRVJST1JfU0VMRUNUT1IiLCJjYXRlZ29yaWVzIiwiTWFwIiwicmVkaXJlY3RPckRpYWxvZyIsInBhZ2UiLCJQcm9taXNlIiwicmFjZSIsIndhaXRGb3JSZWRpcmVjdCIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsImdldFRyYW5zYWN0aW9uc1VybCIsIm1vbnRoTW9tZW50IiwibW9udGgiLCJ5ZWFyIiwiZGF0ZSIsImJ1aWxkVXJsIiwicGF0aCIsImxvYWRDYXRlZ29yaWVzIiwicmVzIiwiZmV0Y2hHZXRXaXRoaW5QYWdlIiwiQXJyYXkiLCJpc0FycmF5IiwicmVzdWx0IiwiX3JlcyRyZXN1bHQiLCJpZCIsIm5hbWUiLCJzZXQiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJwbGFuTmFtZSIsInBsYW5UeXBlSWQiLCJjbGVhbmVkVXBUeG5UeXBlU3RyIiwicmVwbGFjZSIsInRyaW0iLCJJbW1lZGlhdGVDaGFyZ2UiLCJOb3JtYWwiLCJNb250aGx5Q2hhcmdlIiwiT25lTW9udGhQb3N0cG9uZWQiLCJNb250aGx5UG9zdHBvbmVkIiwiRnV0dXJlUHVyY2hhc2VGaW5hbmNpbmciLCJNb250aGx5UGF5bWVudCIsIk1vbnRobHlQb3N0cG9uZWRJbnN0YWxsbWVudHMiLCJUaGlydHlEYXlzUGx1cyIsIlR3b01vbnRoc1Bvc3Rwb25lZCIsIlR3b01vbnRoc1Bvc3Rwb25lZDIiLCJBY2N1bXVsYXRpbmdCYXNrZXQiLCJJbnRlcm5ldFNob3BwaW5nIiwiTW9udGhseUNoYXJnZVBsdXNJbnRlcmVzdCIsIlBvc3Rwb25lZFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIiwiUmVwbGFjZW1lbnRDYXJkIiwiRWFybHlSZXBheW1lbnQiLCJNb250aGx5Q2FyZEZlZSIsIkN1cnJlbmN5UG9ja2V0IiwiVHJhbnNhY3Rpb25UeXBlcyIsIkluc3RhbGxtZW50cyIsIkNyZWRpdCIsIkNyZWRpdE91dHNpZGVUaGVMaW1pdCIsIkVycm9yIiwiZ2V0SW5zdGFsbG1lbnRzSW5mbyIsImNvbW1lbnRzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibnVtYmVyIiwicGFyc2VJbnQiLCJ0b3RhbCIsImdldENoYXJnZWRDdXJyZW5jeSIsImN1cnJlbmN5SWQiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJET0xMQVJfQ1VSUkVOQ1kiLCJFVVJPX0NVUlJFTkNZIiwiZ2V0TWVtbyIsImZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXIiLCJmdW5kc1RyYW5zZmVyQ29tbWVudCIsIm1lbW8iLCJtYXBUcmFuc2FjdGlvbiIsInJhd1RyYW5zYWN0aW9uIiwiX3Jhd1RyYW5zYWN0aW9uJGRlYWxEIiwiX3Jhd1RyYW5zYWN0aW9uJGRlYWxEMiIsImlzUGVuZGluZyIsInBheW1lbnREYXRlIiwicHJvY2Vzc2VkRGF0ZSIsIm1vbWVudCIsInB1cmNoYXNlRGF0ZSIsInRvSVNPU3RyaW5nIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJDb21wbGV0ZWQiLCJpbnN0YWxsbWVudHMiLCJpZGVudGlmaWVyIiwiZGVhbERhdGEiLCJhcm4iLCJ0eXBlIiwib3JpZ2luYWxBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiY2hhcmdlZEFtb3VudCIsImFjdHVhbFBheW1lbnRBbW91bnQiLCJjaGFyZ2VkQ3VycmVuY3kiLCJwYXltZW50Q3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsIm1lcmNoYW50TmFtZSIsImNhdGVnb3J5IiwiZ2V0IiwiY2F0ZWdvcnlJZCIsImZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgiLCJ1cmwiLCJkYXRhIiwidHJhbnNhY3Rpb25zQnlBY2NvdW50IiwidHJhbnNhY3Rpb25zIiwidHJhbnNhY3Rpb24iLCJzaG9ydENhcmROdW1iZXIiLCJtYXBwZWRUcmFuc2FjdGlvbiIsImFkZFJlc3VsdCIsImFsbFJlc3VsdHMiLCJjbG9uZWRSZXN1bHRzIiwiYWNjb3VudE51bWJlciIsInByZXBhcmVUcmFuc2FjdGlvbnMiLCJ0eG5zIiwic3RhcnRNb21lbnQiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlIiwiY2xvbmVkVHhucyIsImZyb20iLCJmaXhJbnN0YWxsbWVudHMiLCJzb3J0VHJhbnNhY3Rpb25zQnlEYXRlIiwiZmlsdGVyT2xkVHJhbnNhY3Rpb25zIiwiZmV0Y2hUcmFuc2FjdGlvbnMiLCJvcHRpb25zIiwiX29wdGlvbnMkZnV0dXJlTW9udGhzIiwiZnV0dXJlTW9udGhzVG9TY3JhcGUiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsIm1heCIsImFsbE1vbnRocyIsImdldEFsbE1vbnRoTW9tZW50cyIsIl9vcHRpb25zJG91dHB1dERhdGEkZSIsIl9vcHRpb25zJG91dHB1dERhdGEiLCJvdXRwdXREYXRhIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJ1cmxzIiwiTG9naW5SZXN1bHRzIiwiU3VjY2VzcyIsIkNoYW5nZVBhc3N3b3JkIiwiSW52YWxpZFBhc3N3b3JkIiwiZWxlbWVudFByZXNlbnRPblBhZ2UiLCJVbmtub3duRXJyb3IiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiTWF4U2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImZpZWxkcyIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwicHJlQWN0aW9uIiwiY2xpY2tCdXR0b24iLCJjaGVja1JlYWRpbmVzcyIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJ3YWl0VW50aWwiLCJmZXRjaERhdGEiLCJyZXN1bHRzIiwiYWNjb3VudHMiLCJtYXAiLCJzdWNjZXNzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL21heC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYnVpbGRVcmwgZnJvbSAnYnVpbGQtdXJsJztcbmltcG9ydCBtb21lbnQsIHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFBhZ2UsIExvYWRFdmVudCB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyBmZXRjaEdldFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgUG9zc2libGVMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgd2FpdEZvclJlZGlyZWN0IH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCwgZWxlbWVudFByZXNlbnRPblBhZ2UsIGNsaWNrQnV0dG9uIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IGdldEFsbE1vbnRoTW9tZW50cyBmcm9tICcuLi9oZWxwZXJzL2RhdGVzJztcbmltcG9ydCB7IGZpeEluc3RhbGxtZW50cywgc29ydFRyYW5zYWN0aW9uc0J5RGF0ZSwgZmlsdGVyT2xkVHJhbnNhY3Rpb25zIH0gZnJvbSAnLi4vaGVscGVycy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMgfSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IFNjcmFwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU0hFS0VMX0NVUlJFTkNZLCBET0xMQVJfQ1VSUkVOQ1ksIEVVUk9fQ1VSUkVOQ1kgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdtYXgnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBzaG9ydENhcmROdW1iZXI6IHN0cmluZztcbiAgcGF5bWVudERhdGU/OiBzdHJpbmc7XG4gIHB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICBhY3R1YWxQYXltZW50QW1vdW50OiBzdHJpbmc7XG4gIHBheW1lbnRDdXJyZW5jeTogbnVtYmVyIHwgbnVsbDtcbiAgb3JpZ2luYWxDdXJyZW5jeTogc3RyaW5nO1xuICBvcmlnaW5hbEFtb3VudDogbnVtYmVyO1xuICBwbGFuTmFtZTogc3RyaW5nO1xuICBwbGFuVHlwZUlkOiBudW1iZXI7XG4gIGNvbW1lbnRzOiBzdHJpbmc7XG4gIG1lcmNoYW50TmFtZTogc3RyaW5nO1xuICBjYXRlZ29yeUlkOiBudW1iZXI7XG4gIGZ1bmRzVHJhbnNmZXJDb21tZW50Pzogc3RyaW5nO1xuICBmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyPzogc3RyaW5nO1xuICBkZWFsRGF0YT86IHtcbiAgICBhcm46IHN0cmluZztcbiAgfTtcbn1cblxuY29uc3QgQkFTRV9BUElfQUNUSU9OU19VUkwgPSAnaHR0cHM6Ly9vbmxpbmVsY2FwaS5tYXguY28uaWwnO1xuY29uc3QgQkFTRV9XRUxDT01FX1VSTCA9ICdodHRwczovL3d3dy5tYXguY28uaWwnO1xuXG5jb25zdCBMT0dJTl9VUkwgPSBgJHtCQVNFX1dFTENPTUVfVVJMfS9ob21lcGFnZS93ZWxjb21lYDtcbmNvbnN0IFBBU1NXT1JEX0VYUElSRURfVVJMID0gYCR7QkFTRV9XRUxDT01FX1VSTH0vcmVuZXctcGFzc3dvcmRgO1xuY29uc3QgU1VDQ0VTU19VUkwgPSBgJHtCQVNFX1dFTENPTUVfVVJMfS9ob21lcGFnZS9wZXJzb25hbGA7XG5cbmVudW0gTWF4UGxhbk5hbWUge1xuICBOb3JtYWwgPSAn16jXkteZ15zXlCcsXG4gIEltbWVkaWF0ZUNoYXJnZSA9ICfXl9eZ15XXkSDXoteh16fXldeqINee15nXmdeT15knLFxuICBJbnRlcm5ldFNob3BwaW5nID0gJ9eQ15nXoNeY16jXoNeYL9eX15VcItecJyxcbiAgSW5zdGFsbG1lbnRzID0gJ9eq16nXnNeV157XmdedJyxcbiAgTW9udGhseUNoYXJnZSA9ICfXl9eZ15XXkSDXl9eV15PXqdeZJyxcbiAgT25lTW9udGhQb3N0cG9uZWQgPSAn15PXl9eV15kg15fXldeT16knLFxuICBNb250aGx5UG9zdHBvbmVkID0gJ9eT15fXldeZINec15fXmdeV15Eg15TXl9eV15PXqdeZJyxcbiAgTW9udGhseVBheW1lbnQgPSAn16rXqdec15XXnSDXl9eV15PXqdeZJyxcbiAgRnV0dXJlUHVyY2hhc2VGaW5hbmNpbmcgPSAn157Xmdee15XXnyDXnNeo15vXmdep15Qg16LXqteZ15PXmdeqJyxcbiAgTW9udGhseVBvc3Rwb25lZEluc3RhbGxtZW50cyA9ICfXk9eX15XXmSDXl9eV15PXqSDXqtep15zXldee15nXnScsXG4gIFRoaXJ0eURheXNQbHVzID0gJ9ei16HXp9eqIDMwINek15zXldehJyxcbiAgVHdvTW9udGhzUG9zdHBvbmVkID0gJ9eT15fXldeZINeX15XXk9ep15nXmdedJyxcbiAgVHdvTW9udGhzUG9zdHBvbmVkMiA9ICfXk9eX15XXmSAyINeXXFwnINeq16nXnNeV157XmdedJyxcbiAgTW9udGhseUNoYXJnZVBsdXNJbnRlcmVzdCA9ICfXl9eV15PXqdeZICsg16jXmdeR15nXqicsXG4gIENyZWRpdCA9ICfXp9eo15PXmdeYJyxcbiAgQ3JlZGl0T3V0c2lkZVRoZUxpbWl0ID0gJ9en16jXk9eZ15gt157Xl9eV16Ug15zXnteh15LXqNeqJyxcbiAgQWNjdW11bGF0aW5nQmFza2V0ID0gJ9eh15wg157XpteY15HXqCcsXG4gIFBvc3Rwb25lZFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzID0gJ9ek16jXmdeh16og15TXoteh16fXlCDXlNeT15fXldeZ15QnLFxuICBSZXBsYWNlbWVudENhcmQgPSAn15vXqNeY15nXoSDXl9ec15nXpNeZJyxcbiAgRWFybHlSZXBheW1lbnQgPSAn16TXqNei15XXnyDXnteV16fXk9edJyxcbiAgTW9udGhseUNhcmRGZWUgPSAn15PXnteZINeb16jXmNeZ16EnLFxuICBDdXJyZW5jeVBvY2tldCA9ICfXl9eZ15XXkSDXkNeo16DXpyDXnteY15cnXG59XG5cbmNvbnN0IElOVkFMSURfREVUQUlMU19TRUxFQ1RPUiA9ICcjcG9wdXBXcm9uZ0RldGFpbHMnO1xuY29uc3QgTE9HSU5fRVJST1JfU0VMRUNUT1IgPSAnI3BvcHVwQ2FyZEhvbGRlcnNMb2dpbkVycm9yJztcblxuY29uc3QgY2F0ZWdvcmllcyA9IG5ldyBNYXA8bnVtYmVyLCBzdHJpbmc+KCk7XG5cbmZ1bmN0aW9uIHJlZGlyZWN0T3JEaWFsb2cocGFnZTogUGFnZSkge1xuICByZXR1cm4gUHJvbWlzZS5yYWNlKFtcbiAgICB3YWl0Rm9yUmVkaXJlY3QocGFnZSwgMjAwMDAsIGZhbHNlLCBbQkFTRV9XRUxDT01FX1VSTCwgYCR7QkFTRV9XRUxDT01FX1VSTH0vYF0pLFxuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IsIHRydWUpLFxuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBMT0dJTl9FUlJPUl9TRUxFQ1RPUiwgdHJ1ZSksXG4gIF0pO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbnNVcmwobW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCBtb250aCA9IG1vbnRoTW9tZW50Lm1vbnRoKCkgKyAxO1xuICBjb25zdCB5ZWFyID0gbW9udGhNb21lbnQueWVhcigpO1xuICBjb25zdCBkYXRlID0gYCR7eWVhcn0tJHttb250aH0tMDFgO1xuXG4gIC8qKlxuICAgICAqIHVybCBleHBsYW5hdGlvbjpcbiAgICAgKiB1c2VySW5kZXg6IC0xIGZvciBhbGwgYWNjb3VudCBvd25lcnNcbiAgICAgKiBjYXJkSW5kZXg6IC0xIGZvciBhbGwgY2FyZHMgdW5kZXIgdGhlIGFjY291bnRcbiAgICAgKiBhbGwgb3RoZXIgcXVlcnkgcGFyYW1zIGFyZSBzdGF0aWMsIGJlc2lkZSB0aGUgZGF0ZSB3aGljaCBjaGFuZ2VzIGZvciByZXF1ZXN0IHBlciBtb250aFxuICAgICAqL1xuICByZXR1cm4gYnVpbGRVcmwoQkFTRV9BUElfQUNUSU9OU19VUkwsIHtcbiAgICBwYXRoOiBgL2FwaS9yZWdpc3RlcmVkL3RyYW5zYWN0aW9uRGV0YWlscy9nZXRUcmFuc2FjdGlvbnNBbmRHcmFwaHM/ZmlsdGVyRGF0YT17XCJ1c2VySW5kZXhcIjotMSxcImNhcmRJbmRleFwiOi0xLFwibW9udGhWaWV3XCI6dHJ1ZSxcImRhdGVcIjpcIiR7ZGF0ZX1cIixcImRhdGVzXCI6e1wic3RhcnREYXRlXCI6XCIwXCIsXCJlbmREYXRlXCI6XCIwXCJ9LFwiYmFua0FjY291bnRcIjp7XCJiYW5rQWNjb3VudEluZGV4XCI6LTEsXCJjYXJkc1wiOm51bGx9fSZmaXJzdENhbGxDYXJkSW5kZXg9LTFgLFxuICB9KTtcbn1cblxuaW50ZXJmYWNlIEZldGNoQ2F0ZWdvcnlSZXN1bHQge1xuICByZXN1bHQ/IDogQXJyYXk8e1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9Pjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9hZENhdGVnb3JpZXMocGFnZTogUGFnZSkge1xuICBkZWJ1ZygnTG9hZGluZyBjYXRlZ29yaWVzJyk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxGZXRjaENhdGVnb3J5UmVzdWx0PihwYWdlLCBgJHtCQVNFX0FQSV9BQ1RJT05TX1VSTH0vYXBpL2NvbnRlbnRzL2dldENhdGVnb3JpZXNgKTtcbiAgaWYgKHJlcyAmJiBBcnJheS5pc0FycmF5KHJlcy5yZXN1bHQpKSB7XG4gICAgZGVidWcoYCR7cmVzLnJlc3VsdC5sZW5ndGh9IGNhdGVnb3JpZXMgbG9hZGVkYCk7XG4gICAgICByZXMucmVzdWx0Py5mb3JFYWNoKCh7IGlkLCBuYW1lIH0pID0+IGNhdGVnb3JpZXMuc2V0KGlkLCBuYW1lKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25UeXBlKHBsYW5OYW1lOiBzdHJpbmcsIHBsYW5UeXBlSWQ6IG51bWJlcikge1xuICBjb25zdCBjbGVhbmVkVXBUeG5UeXBlU3RyID0gcGxhbk5hbWUucmVwbGFjZSgnXFx0JywgJyAnKS50cmltKCk7XG4gIHN3aXRjaCAoY2xlYW5lZFVwVHhuVHlwZVN0cikge1xuICAgIGNhc2UgTWF4UGxhbk5hbWUuSW1tZWRpYXRlQ2hhcmdlOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTm9ybWFsOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseUNoYXJnZTpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk9uZU1vbnRoUG9zdHBvbmVkOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseVBvc3Rwb25lZDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkZ1dHVyZVB1cmNoYXNlRmluYW5jaW5nOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseVBheW1lbnQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Nb250aGx5UG9zdHBvbmVkSW5zdGFsbG1lbnRzOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuVGhpcnR5RGF5c1BsdXM6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Ud29Nb250aHNQb3N0cG9uZWQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Ud29Nb250aHNQb3N0cG9uZWQyOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuQWNjdW11bGF0aW5nQmFza2V0OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuSW50ZXJuZXRTaG9wcGluZzpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlDaGFyZ2VQbHVzSW50ZXJlc3Q6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Qb3N0cG9uZWRUcmFuc2FjdGlvbkluc3RhbGxtZW50czpcbiAgICBjYXNlIE1heFBsYW5OYW1lLlJlcGxhY2VtZW50Q2FyZDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkVhcmx5UmVwYXltZW50OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseUNhcmRGZWU6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5DdXJyZW5jeVBvY2tldDpcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbiAgICBjYXNlIE1heFBsYW5OYW1lLkluc3RhbGxtZW50czpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkNyZWRpdDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkNyZWRpdE91dHNpZGVUaGVMaW1pdDpcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cztcbiAgICBkZWZhdWx0OlxuICAgICAgc3dpdGNoIChwbGFuVHlwZUlkKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cztcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHJhbnNhY3Rpb24gdHlwZSAke2NsZWFuZWRVcFR4blR5cGVTdHJ9YCk7XG4gICAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0SW5zdGFsbG1lbnRzSW5mbyhjb21tZW50czogc3RyaW5nKSB7XG4gIGlmICghY29tbWVudHMpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IG1hdGNoZXMgPSBjb21tZW50cy5tYXRjaCgvXFxkKy9nKTtcbiAgaWYgKCFtYXRjaGVzIHx8IG1hdGNoZXMubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG51bWJlcjogcGFyc2VJbnQobWF0Y2hlc1swXSwgMTApLFxuICAgIHRvdGFsOiBwYXJzZUludChtYXRjaGVzWzFdLCAxMCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENoYXJnZWRDdXJyZW5jeShjdXJyZW5jeUlkOiBudW1iZXIgfCBudWxsKSB7XG4gIHN3aXRjaCAoY3VycmVuY3lJZCkge1xuICAgIGNhc2UgMzc2OlxuICAgICAgcmV0dXJuIFNIRUtFTF9DVVJSRU5DWTtcbiAgICBjYXNlIDg0MDpcbiAgICAgIHJldHVybiBET0xMQVJfQ1VSUkVOQ1k7XG4gICAgY2FzZSA5Nzg6XG4gICAgICByZXR1cm4gRVVST19DVVJSRU5DWTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWVtbyh7XG4gIGNvbW1lbnRzLCBmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyLCBmdW5kc1RyYW5zZmVyQ29tbWVudCxcbn06IFBpY2s8U2NyYXBlZFRyYW5zYWN0aW9uLCAnY29tbWVudHMnfCAnZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2ZlcicgfCAnZnVuZHNUcmFuc2ZlckNvbW1lbnQnPikge1xuICBpZiAoZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2Zlcikge1xuICAgIGNvbnN0IG1lbW8gPSBjb21tZW50cyA/IGAke2NvbW1lbnRzfSAke2Z1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXJ9YCA6IGZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXI7XG4gICAgcmV0dXJuIGZ1bmRzVHJhbnNmZXJDb21tZW50ID8gYCR7bWVtb306ICR7ZnVuZHNUcmFuc2ZlckNvbW1lbnR9YCA6IG1lbW87XG4gIH1cblxuICByZXR1cm4gY29tbWVudHM7XG59XG5cbmZ1bmN0aW9uIG1hcFRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24pOiBUcmFuc2FjdGlvbiB7XG4gIGNvbnN0IGlzUGVuZGluZyA9IHJhd1RyYW5zYWN0aW9uLnBheW1lbnREYXRlID09PSBudWxsO1xuICBjb25zdCBwcm9jZXNzZWREYXRlID0gbW9tZW50KGlzUGVuZGluZyA/XG4gICAgcmF3VHJhbnNhY3Rpb24ucHVyY2hhc2VEYXRlIDpcbiAgICByYXdUcmFuc2FjdGlvbi5wYXltZW50RGF0ZSkudG9JU09TdHJpbmcoKTtcbiAgY29uc3Qgc3RhdHVzID0gaXNQZW5kaW5nID8gVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nIDogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQ7XG5cbiAgY29uc3QgaW5zdGFsbG1lbnRzID0gZ2V0SW5zdGFsbG1lbnRzSW5mbyhyYXdUcmFuc2FjdGlvbi5jb21tZW50cyk7XG4gIGNvbnN0IGlkZW50aWZpZXIgPSBpbnN0YWxsbWVudHMgP1xuICAgIGAke3Jhd1RyYW5zYWN0aW9uLmRlYWxEYXRhPy5hcm59XyR7aW5zdGFsbG1lbnRzLm51bWJlcn1gIDpcbiAgICByYXdUcmFuc2FjdGlvbi5kZWFsRGF0YT8uYXJuO1xuXG4gIHJldHVybiB7XG4gICAgdHlwZTogZ2V0VHJhbnNhY3Rpb25UeXBlKHJhd1RyYW5zYWN0aW9uLnBsYW5OYW1lLCByYXdUcmFuc2FjdGlvbi5wbGFuVHlwZUlkKSxcbiAgICBkYXRlOiBtb21lbnQocmF3VHJhbnNhY3Rpb24ucHVyY2hhc2VEYXRlKS50b0lTT1N0cmluZygpLFxuICAgIHByb2Nlc3NlZERhdGUsXG4gICAgb3JpZ2luYWxBbW91bnQ6IC1yYXdUcmFuc2FjdGlvbi5vcmlnaW5hbEFtb3VudCxcbiAgICBvcmlnaW5hbEN1cnJlbmN5OiByYXdUcmFuc2FjdGlvbi5vcmlnaW5hbEN1cnJlbmN5LFxuICAgIGNoYXJnZWRBbW91bnQ6IC1yYXdUcmFuc2FjdGlvbi5hY3R1YWxQYXltZW50QW1vdW50LFxuICAgIGNoYXJnZWRDdXJyZW5jeTogZ2V0Q2hhcmdlZEN1cnJlbmN5KHJhd1RyYW5zYWN0aW9uLnBheW1lbnRDdXJyZW5jeSksXG4gICAgZGVzY3JpcHRpb246IHJhd1RyYW5zYWN0aW9uLm1lcmNoYW50TmFtZS50cmltKCksXG4gICAgbWVtbzogZ2V0TWVtbyhyYXdUcmFuc2FjdGlvbiksXG4gICAgY2F0ZWdvcnk6IGNhdGVnb3JpZXMuZ2V0KHJhd1RyYW5zYWN0aW9uPy5jYXRlZ29yeUlkKSxcbiAgICBpbnN0YWxsbWVudHMsXG4gICAgaWRlbnRpZmllcixcbiAgICBzdGF0dXMsXG4gIH07XG59XG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdHtcbiAgcmVzdWx0Pzoge1xuICAgIHRyYW5zYWN0aW9uczogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgocGFnZTogUGFnZSwgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCB1cmwgPSBnZXRUcmFuc2FjdGlvbnNVcmwobW9udGhNb21lbnQpO1xuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdD4ocGFnZSwgdXJsKTtcbiAgY29uc3QgdHJhbnNhY3Rpb25zQnlBY2NvdW50OiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiA9IHt9O1xuXG4gIGlmICghZGF0YSB8fCAhZGF0YS5yZXN1bHQpIHJldHVybiB0cmFuc2FjdGlvbnNCeUFjY291bnQ7XG5cbiAgZGF0YS5yZXN1bHQudHJhbnNhY3Rpb25zXG4gICAgLy8gRmlsdGVyIG91dCBub24tdHJhbnNhY3Rpb25zIHdpdGhvdXQgYSBwbGFuIHR5cGUsIGUuZy4gc3VtbWFyeSByb3dzXG4gICAgLmZpbHRlcigodHJhbnNhY3Rpb24pID0+ICEhdHJhbnNhY3Rpb24ucGxhbk5hbWUpXG4gICAgLmZvckVhY2goKHRyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIGlmICghdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0pIHtcbiAgICAgICAgdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0gPSBbXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWFwcGVkVHJhbnNhY3Rpb24gPSBtYXBUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgICB0cmFuc2FjdGlvbnNCeUFjY291bnRbdHJhbnNhY3Rpb24uc2hvcnRDYXJkTnVtYmVyXS5wdXNoKG1hcHBlZFRyYW5zYWN0aW9uKTtcbiAgICB9KTtcblxuICByZXR1cm4gdHJhbnNhY3Rpb25zQnlBY2NvdW50O1xufVxuXG5mdW5jdGlvbiBhZGRSZXN1bHQoYWxsUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4sIHJlc3VsdDogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4pIHtcbiAgY29uc3QgY2xvbmVkUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7IC4uLmFsbFJlc3VsdHMgfTtcbiAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKChhY2NvdW50TnVtYmVyKSA9PiB7XG4gICAgaWYgKCFjbG9uZWRSZXN1bHRzW2FjY291bnROdW1iZXJdKSB7XG4gICAgICBjbG9uZWRSZXN1bHRzW2FjY291bnROdW1iZXJdID0gW107XG4gICAgfVxuICAgIGNsb25lZFJlc3VsdHNbYWNjb3VudE51bWJlcl0ucHVzaCguLi5yZXN1bHRbYWNjb3VudE51bWJlcl0pO1xuICB9KTtcbiAgcmV0dXJuIGNsb25lZFJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVUcmFuc2FjdGlvbnModHhuczogVHJhbnNhY3Rpb25bXSwgc3RhcnRNb21lbnQ6IG1vbWVudC5Nb21lbnQsIGNvbWJpbmVJbnN0YWxsbWVudHM6IGJvb2xlYW4sIGVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZTogYm9vbGVhbikge1xuICBsZXQgY2xvbmVkVHhucyA9IEFycmF5LmZyb20odHhucyk7XG4gIGlmICghY29tYmluZUluc3RhbGxtZW50cykge1xuICAgIGNsb25lZFR4bnMgPSBmaXhJbnN0YWxsbWVudHMoY2xvbmVkVHhucyk7XG4gIH1cbiAgY2xvbmVkVHhucyA9IHNvcnRUcmFuc2FjdGlvbnNCeURhdGUoY2xvbmVkVHhucyk7XG4gIGNsb25lZFR4bnMgPSBlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUgP1xuICAgIGZpbHRlck9sZFRyYW5zYWN0aW9ucyhjbG9uZWRUeG5zLCBzdGFydE1vbWVudCwgY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSkgOlxuICAgIGNsb25lZFR4bnM7XG4gIHJldHVybiBjbG9uZWRUeG5zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlLCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucykge1xuICBjb25zdCBmdXR1cmVNb250aHNUb1NjcmFwZSA9IG9wdGlvbnMuZnV0dXJlTW9udGhzVG9TY3JhcGUgPz8gMTtcbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IG9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuICBjb25zdCBhbGxNb250aHMgPSBnZXRBbGxNb250aE1vbWVudHMoc3RhcnRNb21lbnQsIGZ1dHVyZU1vbnRoc1RvU2NyYXBlKTtcblxuICBhd2FpdCBsb2FkQ2F0ZWdvcmllcyhwYWdlKTtcblxuICBsZXQgYWxsUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7fTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxNb250aHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9uc0Zvck1vbnRoKHBhZ2UsIGFsbE1vbnRoc1tpXSk7XG4gICAgYWxsUmVzdWx0cyA9IGFkZFJlc3VsdChhbGxSZXN1bHRzLCByZXN1bHQpO1xuICB9XG5cbiAgT2JqZWN0LmtleXMoYWxsUmVzdWx0cykuZm9yRWFjaCgoYWNjb3VudE51bWJlcikgPT4ge1xuICAgIGxldCB0eG5zID0gYWxsUmVzdWx0c1thY2NvdW50TnVtYmVyXTtcbiAgICB0eG5zID0gcHJlcGFyZVRyYW5zYWN0aW9ucyh0eG5zLCBzdGFydE1vbWVudCwgb3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlLFxuICAgICAgKG9wdGlvbnMub3V0cHV0RGF0YT8uZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlID8/IHRydWUpKTtcbiAgICBhbGxSZXN1bHRzW2FjY291bnROdW1iZXJdID0gdHhucztcbiAgfSk7XG5cbiAgcmV0dXJuIGFsbFJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIGNvbnN0IHVybHM6IFBvc3NpYmxlTG9naW5SZXN1bHRzID0ge307XG4gIHVybHNbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdID0gW1NVQ0NFU1NfVVJMXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdID0gW1BBU1NXT1JEX0VYUElSRURfVVJMXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFthc3luYyAoKSA9PiB7XG4gICAgcmV0dXJuIGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIElOVkFMSURfREVUQUlMU19TRUxFQ1RPUik7XG4gIH1dO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5Vbmtub3duRXJyb3JdID0gW2FzeW5jICgpID0+IHtcbiAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgTE9HSU5fRVJST1JfU0VMRUNUT1IpO1xuICB9XTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICcjdXNlci1uYW1lJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogJyNwYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0ge3VzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmd9O1xuXG5jbGFzcyBNYXhTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBMT0dJTl9VUkwsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiAnI2xvZ2luLXBhc3N3b3JkICNzZW5kLWNvZGUnLFxuICAgICAgcHJlQWN0aW9uOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZSh0aGlzLnBhZ2UsICcjY2xvc2VQb3B1cCcpKSB7XG4gICAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2Nsb3NlUG9wdXAnKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcucGVyc29uYWwtYXJlYSA+IGEuZ28tdG8tcGVyc29uYWwtYXJlYScpO1xuICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2xvZ2luLXBhc3N3b3JkLWxpbmsnLCB0cnVlKTtcbiAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2xvZ2luLXBhc3N3b3JkLWxpbmsnKTtcbiAgICAgICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNsb2dpbi1wYXNzd29yZC50YWItcGFuZS5hY3RpdmUgYXBwLXVzZXItbG9naW4tZm9ybScsIHRydWUpO1xuICAgICAgfSxcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcucGVyc29uYWwtYXJlYSA+IGEuZ28tdG8tcGVyc29uYWwtYXJlYScsIHRydWUpO1xuICAgICAgfSxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IHJlZGlyZWN0T3JEaWFsb2codGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHModGhpcy5wYWdlKSxcbiAgICAgIHdhaXRVbnRpbDogJ2RvbWNvbnRlbnRsb2FkZWQnIGFzIExvYWRFdmVudCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9ucyh0aGlzLnBhZ2UsIHRoaXMub3B0aW9ucyk7XG4gICAgY29uc3QgYWNjb3VudHMgPSBPYmplY3Qua2V5cyhyZXN1bHRzKS5tYXAoKGFjY291bnROdW1iZXIpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICAgIHR4bnM6IHJlc3VsdHNbYWNjb3VudE51bWJlcl0sXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1heFNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsU0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsdUJBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLHFCQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxhQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxjQUFB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
@@ -52,6 +52,11 @@ async function hasInvalidPasswordError(page) {
52
52
  }) : '';
53
53
  return errorMessage === InvalidPasswordMessage;
54
54
  }
55
+ async function hasChangePasswordForm(page) {
56
+ const frame = await getLoginFrame(page);
57
+ const errorFound = await (0, _elementsInteractions.elementPresentOnPage)(frame, '.change-password-subtitle');
58
+ return errorFound;
59
+ }
55
60
  function getPossibleLoginResults() {
56
61
  debug('return possible login results');
57
62
  const urls = {
@@ -62,9 +67,15 @@ function getPossibleLoginResults() {
62
67
  return false;
63
68
  }
64
69
  return hasInvalidPasswordError(page);
65
- }]
70
+ }],
66
71
  // [LoginResults.AccountBlocked]: [], // TODO add when reaching this scenario
67
- // [LoginResults.ChangePassword]: [], // TODO add when reaching this scenario
72
+ [_baseScraperWithBrowser.LoginResults.ChangePassword]: [async options => {
73
+ const page = options === null || options === void 0 ? void 0 : options.page;
74
+ if (!page) {
75
+ return false;
76
+ }
77
+ return hasChangePasswordForm(page);
78
+ }]
68
79
  };
69
80
  return urls;
70
81
  }
@@ -182,6 +193,8 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
182
193
  } catch (e) {
183
194
  const currentUrl = await (0, _navigation.getCurrentUrl)(this.page);
184
195
  if (currentUrl.endsWith('dashboard')) return;
196
+ const requiresChangePassword = await hasChangePasswordForm(this.page);
197
+ if (requiresChangePassword) return;
185
198
  throw e;
186
199
  }
187
200
  },
@@ -242,4 +255,4 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
242
255
  }
243
256
  var _default = VisaCalScraper;
244
257
  exports.default = _default;
245
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZWxlbWVudHNJbnRlcmFjdGlvbnMiLCJfZmV0Y2giLCJfbmF2aWdhdGlvbiIsIl9zdG9yYWdlIiwiX3RyYW5zYWN0aW9ucyIsIl93YWl0aW5nIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX2RlZmluZVByb3BlcnR5Iiwia2V5IiwidmFsdWUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIkxPR0lOX1VSTCIsIlRSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UIiwiSW52YWxpZFBhc3N3b3JkTWVzc2FnZSIsImRlYnVnIiwiZ2V0RGVidWciLCJ0cm5UeXBlQ29kZSIsImdldExvZ2luRnJhbWUiLCJwYWdlIiwiZnJhbWUiLCJ3YWl0VW50aWwiLCJmcmFtZXMiLCJmaW5kIiwiZiIsInVybCIsImluY2x1ZGVzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJFcnJvciIsImhhc0ludmFsaWRQYXNzd29yZEVycm9yIiwiZXJyb3JGb3VuZCIsImVsZW1lbnRQcmVzZW50T25QYWdlIiwiZXJyb3JNZXNzYWdlIiwicGFnZUV2YWwiLCJpdGVtIiwiaW5uZXJUZXh0IiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJ1cmxzIiwiTG9naW5SZXN1bHRzIiwiU3VjY2VzcyIsIkludmFsaWRQYXNzd29yZCIsIm9wdGlvbnMiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyIsInBhcnNlZERhdGEiLCJiYW5rQWNjb3VudHMiLCJmbGF0TWFwIiwibW9udGhEYXRhIiwicmVzdWx0IiwicmVndWxhckRlYml0RGF5cyIsImFjY291bnRzIiwiZGViaXREYXRlcyIsImltbWVkaWF0ZURlYml0RGF5cyIsImltbWlkaWF0ZURlYml0cyIsImRlYml0RGF5cyIsImRlYml0RGF0ZSIsInRyYW5zYWN0aW9ucyIsIm1hcCIsInRyYW5zYWN0aW9uIiwiaW5zdGFsbG1lbnRzIiwiY3VyUGF5bWVudE51bSIsIm51bU9mUGF5bWVudHMiLCJudW1iZXIiLCJ0b3RhbCIsInVuZGVmaW5lZCIsImRhdGUiLCJtb21lbnQiLCJ0cm5QdXJjaGFzZURhdGUiLCJjaGFyZ2VkQW1vdW50IiwiYW10QmVmb3JlQ29udkFuZEluZGV4Iiwib3JpZ2luYWxBbW91bnQiLCJ0cm5BbXQiLCJpZGVudGlmaWVyIiwidHJuSW50SWQiLCJ0eXBlIiwicmVndWxhciIsInN0YW5kaW5nT3JkZXIiLCJUcmFuc2FjdGlvblR5cGVzIiwiTm9ybWFsIiwiSW5zdGFsbG1lbnRzIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImFkZCIsInRvSVNPU3RyaW5nIiwicHJvY2Vzc2VkRGF0ZSIsIkRhdGUiLCJkZWJDcmREYXRlIiwib3JpZ2luYWxDdXJyZW5jeSIsInRybkN1cnJlbmN5U3ltYm9sIiwiY2hhcmdlZEN1cnJlbmN5IiwiZGViQ3JkQ3VycmVuY3lTeW1ib2wiLCJkZXNjcmlwdGlvbiIsIm1lcmNoYW50TmFtZSIsIm1lbW8iLCJ0cmFuc1R5cGVDb21tZW50RGV0YWlscyIsInRvU3RyaW5nIiwiY2F0ZWdvcnkiLCJicmFuY2hDb2RlRGVzYyIsIlZpc2FDYWxTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImNvbnN0cnVjdG9yIiwiYXJncyIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsImNsaWNrQnV0dG9uIiwiZ2V0Q2FyZHMiLCJpbml0RGF0YSIsImdldEZyb21TZXNzaW9uU3RvcmFnZSIsImNhcmRzIiwiY2FyZFVuaXF1ZUlkIiwibGFzdDREaWdpdHMiLCJnZXRBdXRob3JpemF0aW9uSGVhZGVyIiwiYXV0aE1vZHVsZSIsImF1dGgiLCJjYWxDb25uZWN0VG9rZW4iLCJnZXRYU2l0ZUlkIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInBvc3NpYmxlUmVzdWx0cyIsImNoZWNrUmVhZGluZXNzIiwicHJlQWN0aW9uIiwib3BlbkxvZ2luUG9wdXAiLCJwb3N0QWN0aW9uIiwiY3VycmVudFVybCIsImdldEN1cnJlbnRVcmwiLCJlbmRzV2l0aCIsImUiLCJ1c2VyQWdlbnQiLCJpc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMiLCJmZXRjaERhdGEiLCJfdGhpcyRvcHRpb25zJGZ1dHVyZU0iLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsInN0YXJ0TW9tZW50IiwibWF4IiwiZm9ybWF0IiwiQXV0aG9yaXphdGlvbiIsInhTaXRlSWQiLCJmdXR1cmVNb250aHNUb1NjcmFwZSIsImFsbCIsImNhcmQiLCJfdGhpcyRvcHRpb25zJG91dHB1dEQiLCJfdGhpcyRvcHRpb25zJG91dHB1dEQyIiwiZmluYWxNb250aFRvRmV0Y2hNb21lbnQiLCJtb250aHMiLCJkaWZmIiwiYWxsTW9udGhzRGF0YSIsImkiLCJtb250aCIsImNsb25lIiwiZmV0Y2hQb3N0V2l0aGluUGFnZSIsInllYXIiLCJzdGF0dXNDb2RlIiwidGl0bGUiLCJwdXNoIiwidHhucyIsIm91dHB1dERhdGEiLCJlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUiLCJmaWx0ZXJPbGRUcmFuc2FjdGlvbnMiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiYWNjb3VudE51bWJlciIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdWNjZXNzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL3Zpc2EtY2FsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IEZyYW1lLCBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcblxuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7XG4gIGNsaWNrQnV0dG9uLCBlbGVtZW50UHJlc2VudE9uUGFnZSwgcGFnZUV2YWwsIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCxcbn0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgZ2V0Q3VycmVudFVybCB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBnZXRGcm9tU2Vzc2lvblN0b3JhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL3N0b3JhZ2UnO1xuaW1wb3J0IHsgZmlsdGVyT2xkVHJhbnNhY3Rpb25zIH0gZnJvbSAnLi4vaGVscGVycy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnLi4vaGVscGVycy93YWl0aW5nJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvblN0YXR1c2VzLFxuICBUcmFuc2FjdGlvblR5cGVzLFxuICBUcmFuc2FjdGlvbnNBY2NvdW50LFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5PcHRpb25zLCBMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBMT0dJTl9VUkwgPSAnaHR0cHM6Ly93d3cuY2FsLW9ubGluZS5jby5pbC8nO1xuY29uc3QgVFJBTlNBQ1RJT05TX1JFUVVFU1RfRU5EUE9JTlQgPSAnaHR0cHM6Ly9hcGkuY2FsLW9ubGluZS5jby5pbC9UcmFuc2FjdGlvbnMvYXBpL3RyYW5zYWN0aW9uc0RldGFpbHMvZ2V0Q2FyZFRyYW5zYWN0aW9uc0RldGFpbHMnO1xuXG5jb25zdCBJbnZhbGlkUGFzc3dvcmRNZXNzYWdlID0gJ9ep150g15TXntep16rXntepINeQ15Ug15TXodeZ16HXnteUINep15TXldeW16DXlSDXqdeS15XXmdeZ150nO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCd2aXNhLWNhbCcpO1xuXG5lbnVtIHRyblR5cGVDb2RlIHtcbiAgcmVndWxhciA9ICc1JyxcbiAgY3JlZGl0ID0gJzYnLFxuICBpbnN0YWxsbWVudHMgPSAnOCcsXG4gIHN0YW5kaW5nT3JkZXIgPSAnOScsXG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBhbXRCZWZvcmVDb252QW5kSW5kZXg6IG51bWJlcjtcbiAgYnJhbmNoQ29kZURlc2M6IHN0cmluZztcbiAgY2FzaEFjY01hbmFnZXJOYW1lOiBudWxsO1xuICBjYXNoQWNjb3VudE1hbmFnZXI6IG51bGw7XG4gIGNhc2hBY2NvdW50VHJuQW10OiBudW1iZXI7XG4gIGNoYXJnZUV4dGVybmFsVG9DYXJkQ29tbWVudDogc3RyaW5nO1xuICBjb21tZW50czogW107XG4gIGN1clBheW1lbnROdW06IG51bWJlcjtcbiAgZGViQ3JkQ3VycmVuY3lTeW1ib2w6IEN1cnJlbmN5U3ltYm9sO1xuICBkZWJDcmREYXRlOiBzdHJpbmc7XG4gIGRlYml0U3ByZWFkSW5kOiBib29sZWFuO1xuICBkaXNjb3VudEFtb3VudDogdW5rbm93bjtcbiAgZGlzY291bnRSZWFzb246IHVua25vd247XG4gIGltbWVkaWF0ZUNvbW1lbnRzOiBbXTtcbiAgaXNJbW1lZGlhdGVDb21tZW50SW5kOiBib29sZWFuO1xuICBpc0ltbWVkaWF0ZUhIS0luZDogYm9vbGVhbjtcbiAgaXNNYXJnYXJpdGE6IGJvb2xlYW47XG4gIGlzU3ByZWFkUGF5bWVuc3RBYnJvYWQ6IGJvb2xlYW47XG4gIGxpbmtlZENvbW1lbnRzOiBbXTtcbiAgbWVyY2hhbnRBZGRyZXNzOiBzdHJpbmc7XG4gIG1lcmNoYW50TmFtZTogc3RyaW5nO1xuICBtZXJjaGFudFBob25lTm86IHN0cmluZztcbiAgbnVtT2ZQYXltZW50czogbnVtYmVyO1xuICBvbkdvaW5nVHJhbnNhY3Rpb25zQ29tbWVudDogc3RyaW5nO1xuICByZWZ1bmRJbmQ6IGJvb2xlYW47XG4gIHJvdW5kaW5nQW1vdW50OiB1bmtub3duO1xuICByb3VuZGluZ1JlYXNvbjogdW5rbm93bjtcbiAgdG9rZW5JbmQ6IDA7XG4gIHRva2VuTnVtYmVyUGFydDQ6ICcnO1xuICB0cmFuc0NhcmRQcmVzZW50SW5kOiBib29sZWFuO1xuICB0cmFuc1R5cGVDb21tZW50RGV0YWlsczogW107XG4gIHRybkFtdDogbnVtYmVyO1xuICB0cm5DdXJyZW5jeVN5bWJvbDogQ3VycmVuY3lTeW1ib2w7XG4gIHRybkV4YWNXYXk6IG51bWJlcjtcbiAgdHJuSW50SWQ6IHN0cmluZztcbiAgdHJuTnVtYXJldG9yOiBudW1iZXI7XG4gIHRyblB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICB0cm5UeXBlOiBzdHJpbmc7XG4gIHRyblR5cGVDb2RlOiB0cm5UeXBlQ29kZTtcbiAgd2FsbGV0UHJvdmlkZXJDb2RlOiAwO1xuICB3YWxsZXRQcm92aWRlckRlc2M6ICcnO1xufVxuaW50ZXJmYWNlIEluaXRSZXNwb25zZSB7XG4gIHJlc3VsdDoge1xuICAgIGNhcmRzOiB7XG4gICAgICBjYXJkVW5pcXVlSWQ6IHN0cmluZztcbiAgICAgIGxhc3Q0RGlnaXRzOiBzdHJpbmc7XG4gICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIH1bXTtcbiAgfTtcbn1cbnR5cGUgQ3VycmVuY3lTeW1ib2wgPSAn4oKqJyB8IHN0cmluZztcbmludGVyZmFjZSBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3Ige1xuICB0aXRsZTogc3RyaW5nO1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG59XG5pbnRlcmZhY2UgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyBleHRlbmRzIENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvciB7XG4gIHJlc3VsdDoge1xuICAgIGJhbmtBY2NvdW50czoge1xuICAgICAgYmFua0FjY291bnROdW06IHN0cmluZztcbiAgICAgIGJhbmtOYW1lOiBzdHJpbmc7XG4gICAgICBjaG9pY2VFeHRlcm5hbFRyYW5zYWN0aW9uczogYW55O1xuICAgICAgY3VycmVudEJhbmtBY2NvdW50SW5kOiBib29sZWFuO1xuICAgICAgZGViaXREYXRlczoge1xuICAgICAgICBiYXNrZXRBbW91bnRDb21tZW50OiB1bmtub3duO1xuICAgICAgICBjaG9pY2VISEtEZWJpdDogbnVtYmVyO1xuICAgICAgICBkYXRlOiBzdHJpbmc7XG4gICAgICAgIGRlYml0UmVhc29uOiB1bmtub3duO1xuICAgICAgICBmaXhEZWJpdEFtb3VudDogbnVtYmVyO1xuICAgICAgICBmcm9tUHVyY2hhc2VEYXRlOiBzdHJpbmc7XG4gICAgICAgIGlzQ2hvaWNlUmVwYWltZW50OiBib29sZWFuO1xuICAgICAgICB0b1B1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICAgICAgICB0b3RhbEJhc2tldEFtb3VudDogbnVtYmVyO1xuICAgICAgICB0b3RhbERlYml0czoge1xuICAgICAgICAgIGN1cnJlbmN5U3ltYm9sOiBDdXJyZW5jeVN5bWJvbDtcbiAgICAgICAgICBhbW91bnQ6IG51bWJlcjtcbiAgICAgICAgfVtdO1xuICAgICAgICB0cmFuc2FjdGlvbnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICAgICAgfVtdO1xuICAgICAgaW1taWRpYXRlRGViaXRzOiB7IHRvdGFsRGViaXRzOiBbXSwgZGViaXREYXlzOiBbXSB9O1xuICAgIH1bXTtcbiAgICBibG9ja2VkQ2FyZEluZDogYm9vbGVhbjtcbiAgfTtcbiAgc3RhdHVzQ29kZTogMTtcbiAgc3RhdHVzRGVzY3JpcHRpb246IHN0cmluZztcbiAgc3RhdHVzVGl0bGU6IHN0cmluZztcbn1cblxuXG5hc3luYyBmdW5jdGlvbiBnZXRMb2dpbkZyYW1lKHBhZ2U6IFBhZ2UpIHtcbiAgbGV0IGZyYW1lOiBGcmFtZSB8IG51bGwgPSBudWxsO1xuICBkZWJ1Zygnd2FpdCB1bnRpbCBsb2dpbiBmcmFtZSBmb3VuZCcpO1xuICBhd2FpdCB3YWl0VW50aWwoKCkgPT4ge1xuICAgIGZyYW1lID0gcGFnZVxuICAgICAgLmZyYW1lcygpXG4gICAgICAuZmluZCgoZikgPT4gZi51cmwoKS5pbmNsdWRlcygnY2FsY29ubmVjdCcpKSB8fCBudWxsO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoISFmcmFtZSk7XG4gIH0sICd3YWl0IGZvciBpZnJhbWUgd2l0aCBsb2dpbiBmb3JtJywgMTAwMDAsIDEwMDApO1xuXG4gIGlmICghZnJhbWUpIHtcbiAgICBkZWJ1ZygnZmFpbGVkIHRvIGZpbmQgbG9naW4gZnJhbWUgZm9yIDEwIHNlY29uZHMnKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZhaWxlZCB0byBleHRyYWN0IGxvZ2luIGlmcmFtZScpO1xuICB9XG5cbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNJbnZhbGlkUGFzc3dvcmRFcnJvcihwYWdlOiBQYWdlKSB7XG4gIGNvbnN0IGZyYW1lID0gYXdhaXQgZ2V0TG9naW5GcmFtZShwYWdlKTtcbiAgY29uc3QgZXJyb3JGb3VuZCA9IGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKGZyYW1lLCAnZGl2LmdlbmVyYWwtZXJyb3IgPiBkaXYnKTtcbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3JGb3VuZCA/IGF3YWl0IHBhZ2VFdmFsKGZyYW1lLCAnZGl2LmdlbmVyYWwtZXJyb3IgPiBkaXYnLCAnJywgKGl0ZW0pID0+IHtcbiAgICByZXR1cm4gKGl0ZW0gYXMgSFRNTERpdkVsZW1lbnQpLmlubmVyVGV4dDtcbiAgfSkgOiAnJztcbiAgcmV0dXJuIGVycm9yTWVzc2FnZSA9PT0gSW52YWxpZFBhc3N3b3JkTWVzc2FnZTtcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKSB7XG4gIGRlYnVnKCdyZXR1cm4gcG9zc2libGUgbG9naW4gcmVzdWx0cycpO1xuICBjb25zdCB1cmxzOiBMb2dpbk9wdGlvbnNbJ3Bvc3NpYmxlUmVzdWx0cyddID0ge1xuICAgIFtMb2dpblJlc3VsdHMuU3VjY2Vzc106IFsvZGFzaGJvYXJkL2ldLFxuICAgIFtMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXTogW2FzeW5jIChvcHRpb25zPzogeyBwYWdlPzogUGFnZSB9KSA9PiB7XG4gICAgICBjb25zdCBwYWdlID0gb3B0aW9ucz8ucGFnZTtcbiAgICAgIGlmICghcGFnZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IocGFnZSk7XG4gICAgfV0sXG4gICAgLy8gW0xvZ2luUmVzdWx0cy5BY2NvdW50QmxvY2tlZF06IFtdLCAvLyBUT0RPIGFkZCB3aGVuIHJlYWNoaW5nIHRoaXMgc2NlbmFyaW9cbiAgICAvLyBbTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkXTogW10sIC8vIFRPRE8gYWRkIHdoZW4gcmVhY2hpbmcgdGhpcyBzY2VuYXJpb1xuICB9O1xuICByZXR1cm4gdXJscztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gIGRlYnVnKCdjcmVhdGUgbG9naW4gZmllbGRzIGZvciB1c2VybmFtZSBhbmQgcGFzc3dvcmQnKTtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnW2Zvcm1jb250cm9sbmFtZT1cInVzZXJOYW1lXCJdJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogJ1tmb3JtY29udHJvbG5hbWU9XCJwYXNzd29yZFwiXScsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0UGFyc2VkRGF0YVRvVHJhbnNhY3Rpb25zKHBhcnNlZERhdGE6IENhcmRUcmFuc2FjdGlvbkRldGFpbHNbXSk6IFRyYW5zYWN0aW9uW10ge1xuICBjb25zdCBiYW5rQWNjb3VudHMgPSBwYXJzZWREYXRhXG4gICAgLmZsYXRNYXAoKG1vbnRoRGF0YSkgPT4gbW9udGhEYXRhLnJlc3VsdC5iYW5rQWNjb3VudHMpO1xuXG4gIGNvbnN0IHJlZ3VsYXJEZWJpdERheXMgPSBiYW5rQWNjb3VudHNcbiAgICAuZmxhdE1hcCgoYWNjb3VudHMpID0+IGFjY291bnRzLmRlYml0RGF0ZXMpO1xuICBjb25zdCBpbW1lZGlhdGVEZWJpdERheXMgPSBiYW5rQWNjb3VudHNcbiAgICAuZmxhdE1hcCgoYWNjb3VudHMpID0+IGFjY291bnRzLmltbWlkaWF0ZURlYml0cy5kZWJpdERheXMpO1xuXG4gIHJldHVybiBbLi4ucmVndWxhckRlYml0RGF5cywgLi4uaW1tZWRpYXRlRGViaXREYXlzXVxuICAgIC5mbGF0TWFwKChkZWJpdERhdGUpID0+IGRlYml0RGF0ZS50cmFuc2FjdGlvbnMpXG4gICAgLm1hcCgodHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIGNvbnN0IGluc3RhbGxtZW50cyA9ICh0cmFuc2FjdGlvbi5jdXJQYXltZW50TnVtICYmIHRyYW5zYWN0aW9uLm51bU9mUGF5bWVudHMgJiZcbiAgICAgIHtcbiAgICAgICAgbnVtYmVyOiB0cmFuc2FjdGlvbi5jdXJQYXltZW50TnVtLFxuICAgICAgICB0b3RhbDogdHJhbnNhY3Rpb24ubnVtT2ZQYXltZW50cyxcbiAgICAgIH0pIHx8XG4gICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh0cmFuc2FjdGlvbi50cm5QdXJjaGFzZURhdGUpO1xuXG4gICAgICBjb25zdCBjaGFyZ2VkQW1vdW50ID0gdHJhbnNhY3Rpb24uYW10QmVmb3JlQ29udkFuZEluZGV4ICogKC0xKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsQW1vdW50ID0gdHJhbnNhY3Rpb24udHJuQW10ICogKC0xKTtcblxuICAgICAgY29uc3QgcmVzdWx0OiBUcmFuc2FjdGlvbiA9IHtcbiAgICAgICAgaWRlbnRpZmllcjogdHJhbnNhY3Rpb24udHJuSW50SWQsXG4gICAgICAgIHR5cGU6IFt0cm5UeXBlQ29kZS5yZWd1bGFyLCB0cm5UeXBlQ29kZS5zdGFuZGluZ09yZGVyXS5pbmNsdWRlcyh0cmFuc2FjdGlvbi50cm5UeXBlQ29kZSkgP1xuICAgICAgICAgIFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsIDpcbiAgICAgICAgICBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cyxcbiAgICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICAgICAgZGF0ZTogaW5zdGFsbG1lbnRzID9cbiAgICAgICAgICBkYXRlLmFkZChpbnN0YWxsbWVudHMubnVtYmVyIC0gMSwgJ21vbnRoJykudG9JU09TdHJpbmcoKSA6XG4gICAgICAgICAgZGF0ZS50b0lTT1N0cmluZygpLFxuICAgICAgICBwcm9jZXNzZWREYXRlOiBuZXcgRGF0ZSh0cmFuc2FjdGlvbi5kZWJDcmREYXRlKS50b0lTT1N0cmluZygpLFxuICAgICAgICBvcmlnaW5hbEFtb3VudCxcbiAgICAgICAgb3JpZ2luYWxDdXJyZW5jeTogdHJhbnNhY3Rpb24udHJuQ3VycmVuY3lTeW1ib2wsXG4gICAgICAgIGNoYXJnZWRBbW91bnQsXG4gICAgICAgIGNoYXJnZWRDdXJyZW5jeTogdHJhbnNhY3Rpb24uZGViQ3JkQ3VycmVuY3lTeW1ib2wsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0cmFuc2FjdGlvbi5tZXJjaGFudE5hbWUsXG4gICAgICAgIG1lbW86IHRyYW5zYWN0aW9uLnRyYW5zVHlwZUNvbW1lbnREZXRhaWxzLnRvU3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5OiB0cmFuc2FjdGlvbi5icmFuY2hDb2RlRGVzYyxcbiAgICAgIH07XG5cbiAgICAgIGlmIChpbnN0YWxsbWVudHMpIHtcbiAgICAgICAgcmVzdWx0Lmluc3RhbGxtZW50cyA9IGluc3RhbGxtZW50cztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBWaXNhQ2FsU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgb3BlbkxvZ2luUG9wdXAgPSBhc3luYyAoKSA9PiB7XG4gICAgZGVidWcoJ29wZW4gbG9naW4gcG9wdXAsIHdhaXQgdW50aWwgbG9naW4gYnV0dG9uIGF2YWlsYWJsZScpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjY2NMb2dpbkRlc2t0b3BCdG4nLCB0cnVlKTtcbiAgICBkZWJ1ZygnY2xpY2sgb24gdGhlIGxvZ2luIGJ1dHRvbicpO1xuICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicpO1xuICAgIGRlYnVnKCdnZXQgdGhlIGZyYW1lIHRoYXQgaG9sZHMgdGhlIGxvZ2luJyk7XG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCBnZXRMb2dpbkZyYW1lKHRoaXMucGFnZSk7XG4gICAgZGVidWcoJ3dhaXQgdW50aWwgdGhlIHBhc3N3b3JkIGxvZ2luIHRhYiBoZWFkZXIgaXMgYXZhaWxhYmxlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKGZyYW1lLCAnI3JlZ3VsYXItbG9naW4nKTtcbiAgICBkZWJ1ZygnbmF2aWdhdGUgdG8gdGhlIHBhc3N3b3JkIGxvZ2luIHRhYicpO1xuICAgIGF3YWl0IGNsaWNrQnV0dG9uKGZyYW1lLCAnI3JlZ3VsYXItbG9naW4nKTtcbiAgICBkZWJ1Zygnd2FpdCB1bnRpbCB0aGUgcGFzc3dvcmQgbG9naW4gdGFiIGlzIGFjdGl2ZScpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChmcmFtZSwgJ3JlZ3VsYXItbG9naW4nKTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfTtcblxuICBhc3luYyBnZXRDYXJkcygpIHtcbiAgICBjb25zdCBpbml0RGF0YSA9IGF3YWl0IHdhaXRVbnRpbChcbiAgICAgICgpID0+IGdldEZyb21TZXNzaW9uU3RvcmFnZTxJbml0UmVzcG9uc2U+KHRoaXMucGFnZSwgJ2luaXQnKSxcbiAgICAgICdnZXQgaW5pdCBkYXRhIGluIHNlc3Npb24gc3RvcmFnZScsXG4gICAgICAxMDAwMCxcbiAgICAgIDEwMDAsXG4gICAgKTtcbiAgICBpZiAoIWluaXREYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCBmaW5kIFxcJ2luaXRcXCcgZGF0YSBpbiBzZXNzaW9uIHN0b3JhZ2UnKTtcbiAgICB9XG4gICAgcmV0dXJuIGluaXREYXRhPy5yZXN1bHQuY2FyZHMubWFwKCh7IGNhcmRVbmlxdWVJZCwgbGFzdDREaWdpdHMgfSkgPT4gKHsgY2FyZFVuaXF1ZUlkLCBsYXN0NERpZ2l0cyB9KSk7XG4gIH1cblxuICBhc3luYyBnZXRBdXRob3JpemF0aW9uSGVhZGVyKCkge1xuICAgIGNvbnN0IGF1dGhNb2R1bGUgPSBhd2FpdCBnZXRGcm9tU2Vzc2lvblN0b3JhZ2U8eyBhdXRoOiB7IGNhbENvbm5lY3RUb2tlbjogc3RyaW5nIH0gfT4odGhpcy5wYWdlLCAnYXV0aC1tb2R1bGUnKTtcbiAgICBpZiAoIWF1dGhNb2R1bGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IGZpbmQgXFwnYXV0aC1tb2R1bGVcXCcgaW4gc2Vzc2lvbiBzdG9yYWdlJyk7XG4gICAgfVxuICAgIHJldHVybiBgQ0FMQXV0aFNjaGVtZSAke2F1dGhNb2R1bGUuYXV0aC5jYWxDb25uZWN0VG9rZW59YDtcbiAgfVxuXG4gIGFzeW5jIGdldFhTaXRlSWQoKSB7XG4gICAgLypcbiAgICAgIEkgZG9uJ3Qga25vdyBpZiB0aGUgY29uc3RhbnQgYmVsb3cgd2lsbCBjaGFuZ2UgaW4gdGhlIGZlYXR1cmUuXG4gICAgICBJZiBzbywgdXNlIHRoZSBuZXh0IGNvZGU6XG5cbiAgICAgIHJldHVybiB0aGlzLnBhZ2UuZXZhbHVhdGUoKCkgPT4gbmV3IFV0KCkueFNpdGVJZCk7XG5cbiAgICAgIFRvIGdldCB0aGUgY2xhc3NuYW1lIHNlYXJjaCBmb3IgJ3hTaXRlSWQnIGluIHRoZSBwYWdlIHNvdXJjZVxuICAgICAgY2xhc3MgVXQge1xuICAgICAgICBjb25zdHJ1Y3RvcihfZSwgb24sIHluKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlID0gX2UsXG4gICAgICAgICAgICB0aGlzLmNvbmZpZyA9IG9uLFxuICAgICAgICAgICAgdGhpcy5ldmVudEJ1c1NlcnZpY2UgPSB5bixcbiAgICAgICAgICAgIHRoaXMueFNpdGVJZCA9IFwiMDkwMzE5ODctMjczRS0yMzExLTkwNkMtOEFGODVCMTdDOEQ5XCIsXG4gICAgKi9cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCcwOTAzMTk4Ny0yNzNFLTIzMTEtOTA2Qy04QUY4NUIxN0M4RDknKTtcbiAgfVxuXG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpOiBMb2dpbk9wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7TE9HSU5fVVJMfWAsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiAnYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0nLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjY2NMb2dpbkRlc2t0b3BCdG4nKSxcbiAgICAgIHByZUFjdGlvbjogdGhpcy5vcGVuTG9naW5Qb3B1cCxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnYnV0dG9uLmJ0bi1jbG9zZScpO1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRVcmwgPSBhd2FpdCBnZXRDdXJyZW50VXJsKHRoaXMucGFnZSk7XG4gICAgICAgICAgaWYgKGN1cnJlbnRVcmwuZW5kc1dpdGgoJ3NpdGUtdHV0b3JpYWwnKSkge1xuICAgICAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnYnV0dG9uLmJ0bi1jbG9zZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRVcmwgPSBhd2FpdCBnZXRDdXJyZW50VXJsKHRoaXMucGFnZSk7XG4gICAgICAgICAgaWYgKGN1cnJlbnRVcmwuZW5kc1dpdGgoJ2Rhc2hib2FyZCcpKSByZXR1cm47XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVzZXJBZ2VudDogJ01vemlsbGEvNS4wIChYMTE7IExpbnV4IHg4Nl82NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzc4LjAuMzkwNC4xMDggU2FmYXJpLzUzNy4zNicsXG4gICAgfTtcbiAgfVxuXG4gIGlzQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyhyZXN1bHQ6IENhcmRUcmFuc2FjdGlvbkRldGFpbHMgfCBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3IpOlxuICAgIHJlc3VsdCBpcyBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzIHtcbiAgICByZXR1cm4gKHJlc3VsdCBhcyBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzKS5yZXN1bHQgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLnN1YnRyYWN0KDYsICdtb250aHMnKS5hZGQoMSwgJ2RheScpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcbiAgICBkZWJ1ZyhgZmV0Y2ggdHJhbnNhY3Rpb25zIHN0YXJ0aW5nICR7c3RhcnRNb21lbnQuZm9ybWF0KCl9YCk7XG5cbiAgICBjb25zdCBBdXRob3JpemF0aW9uID0gYXdhaXQgdGhpcy5nZXRBdXRob3JpemF0aW9uSGVhZGVyKCk7XG4gICAgY29uc3QgY2FyZHMgPSBhd2FpdCB0aGlzLmdldENhcmRzKCk7XG4gICAgY29uc3QgeFNpdGVJZCA9IGF3YWl0IHRoaXMuZ2V0WFNpdGVJZCgpO1xuICAgIGNvbnN0IGZ1dHVyZU1vbnRoc1RvU2NyYXBlID0gdGhpcy5vcHRpb25zLmZ1dHVyZU1vbnRoc1RvU2NyYXBlID8/IDE7XG5cbiAgICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgY2FyZHMubWFwKGFzeW5jIChjYXJkKSA9PiB7XG4gICAgICAgIGRlYnVnKGBmZXRjaCB0cmFuc2FjdGlvbnMgZm9yIGNhcmQgJHtjYXJkLmNhcmRVbmlxdWVJZH1gKTtcblxuICAgICAgICBjb25zdCBmaW5hbE1vbnRoVG9GZXRjaE1vbWVudCA9IG1vbWVudCgpLmFkZChmdXR1cmVNb250aHNUb1NjcmFwZSwgJ21vbnRoJyk7XG4gICAgICAgIGNvbnN0IG1vbnRocyA9IGZpbmFsTW9udGhUb0ZldGNoTW9tZW50LmRpZmYoc3RhcnRNb21lbnQsICdtb250aHMnKTtcblxuICAgICAgICBjb25zdCBhbGxNb250aHNEYXRhOiAoQ2FyZFRyYW5zYWN0aW9uRGV0YWlscylbXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBtb250aHM7IGkgKz0gMSkge1xuICAgICAgICAgIGNvbnN0IG1vbnRoID0gZmluYWxNb250aFRvRmV0Y2hNb21lbnQuY2xvbmUoKS5zdWJ0cmFjdChpLCAnbW9udGhzJyk7XG4gICAgICAgICAgY29uc3QgbW9udGhEYXRhID0gYXdhaXQgZmV0Y2hQb3N0V2l0aGluUGFnZTxDYXJkVHJhbnNhY3Rpb25EZXRhaWxzIHwgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yPihcbiAgICAgICAgICAgIHRoaXMucGFnZSwgVFJBTlNBQ1RJT05TX1JFUVVFU1RfRU5EUE9JTlQsXG4gICAgICAgICAgICB7IGNhcmRVbmlxdWVJZDogY2FyZC5jYXJkVW5pcXVlSWQsIG1vbnRoOiBtb250aC5mb3JtYXQoJ00nKSwgeWVhcjogbW9udGguZm9ybWF0KCdZWVlZJykgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbixcbiAgICAgICAgICAgICAgJ1gtU2l0ZS1JZCc6IHhTaXRlSWQsXG4gICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAobW9udGhEYXRhPy5zdGF0dXNDb2RlICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoYGZhaWxlZCB0byBmZXRjaCB0cmFuc2FjdGlvbnMgZm9yIGNhcmQgJHtjYXJkLmxhc3Q0RGlnaXRzfS4gTWVzc2FnZTogJHttb250aERhdGE/LnRpdGxlIHx8ICcnfWApO1xuXG4gICAgICAgICAgaWYgKCF0aGlzLmlzQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyhtb250aERhdGEpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21vbnRoRGF0YSBpcyBub3Qgb2YgdHlwZSBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYWxsTW9udGhzRGF0YS5wdXNoKG1vbnRoRGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0cmFuc2FjdGlvbnMgPSBjb252ZXJ0UGFyc2VkRGF0YVRvVHJhbnNhY3Rpb25zKGFsbE1vbnRoc0RhdGEpO1xuXG4gICAgICAgIGRlYnVnKCdmaWxlciBvdXQgb2xkIHRyYW5zYWN0aW9ucycpO1xuICAgICAgICBjb25zdCB0eG5zID0gKHRoaXMub3B0aW9ucy5vdXRwdXREYXRhPy5lbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUgPz8gdHJ1ZSkgP1xuICAgICAgICAgIGZpbHRlck9sZFRyYW5zYWN0aW9ucyh0cmFuc2FjdGlvbnMsIG1vbWVudChzdGFydERhdGUpLCB0aGlzLm9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSkgOlxuICAgICAgICAgIHRyYW5zYWN0aW9ucztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR4bnMsXG4gICAgICAgICAgYWNjb3VudE51bWJlcjogY2FyZC5sYXN0NERpZ2l0cyxcbiAgICAgICAgfSBhcyBUcmFuc2FjdGlvbnNBY2NvdW50O1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIGRlYnVnKCdyZXR1cm4gdGhlIHNjcmFwZWQgYWNjb3VudHMnKTtcblxuICAgIGRlYnVnKEpTT04uc3RyaW5naWZ5KGFjY291bnRzLCBudWxsLCAyKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZpc2FDYWxTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUscUJBQUEsR0FBQUYsT0FB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
258
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZWxlbWVudHNJbnRlcmFjdGlvbnMiLCJfZmV0Y2giLCJfbmF2aWdhdGlvbiIsIl9zdG9yYWdlIiwiX3RyYW5zYWN0aW9ucyIsIl93YWl0aW5nIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX2RlZmluZVByb3BlcnR5Iiwia2V5IiwidmFsdWUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIkxPR0lOX1VSTCIsIlRSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UIiwiSW52YWxpZFBhc3N3b3JkTWVzc2FnZSIsImRlYnVnIiwiZ2V0RGVidWciLCJ0cm5UeXBlQ29kZSIsImdldExvZ2luRnJhbWUiLCJwYWdlIiwiZnJhbWUiLCJ3YWl0VW50aWwiLCJmcmFtZXMiLCJmaW5kIiwiZiIsInVybCIsImluY2x1ZGVzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJFcnJvciIsImhhc0ludmFsaWRQYXNzd29yZEVycm9yIiwiZXJyb3JGb3VuZCIsImVsZW1lbnRQcmVzZW50T25QYWdlIiwiZXJyb3JNZXNzYWdlIiwicGFnZUV2YWwiLCJpdGVtIiwiaW5uZXJUZXh0IiwiaGFzQ2hhbmdlUGFzc3dvcmRGb3JtIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJ1cmxzIiwiTG9naW5SZXN1bHRzIiwiU3VjY2VzcyIsIkludmFsaWRQYXNzd29yZCIsIm9wdGlvbnMiLCJDaGFuZ2VQYXNzd29yZCIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJjb252ZXJ0UGFyc2VkRGF0YVRvVHJhbnNhY3Rpb25zIiwicGFyc2VkRGF0YSIsImJhbmtBY2NvdW50cyIsImZsYXRNYXAiLCJtb250aERhdGEiLCJyZXN1bHQiLCJyZWd1bGFyRGViaXREYXlzIiwiYWNjb3VudHMiLCJkZWJpdERhdGVzIiwiaW1tZWRpYXRlRGViaXREYXlzIiwiaW1taWRpYXRlRGViaXRzIiwiZGViaXREYXlzIiwiZGViaXREYXRlIiwidHJhbnNhY3Rpb25zIiwibWFwIiwidHJhbnNhY3Rpb24iLCJpbnN0YWxsbWVudHMiLCJjdXJQYXltZW50TnVtIiwibnVtT2ZQYXltZW50cyIsIm51bWJlciIsInRvdGFsIiwidW5kZWZpbmVkIiwiZGF0ZSIsIm1vbWVudCIsInRyblB1cmNoYXNlRGF0ZSIsImNoYXJnZWRBbW91bnQiLCJhbXRCZWZvcmVDb252QW5kSW5kZXgiLCJvcmlnaW5hbEFtb3VudCIsInRybkFtdCIsImlkZW50aWZpZXIiLCJ0cm5JbnRJZCIsInR5cGUiLCJyZWd1bGFyIiwic3RhbmRpbmdPcmRlciIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJJbnN0YWxsbWVudHMiLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwiYWRkIiwidG9JU09TdHJpbmciLCJwcm9jZXNzZWREYXRlIiwiRGF0ZSIsImRlYkNyZERhdGUiLCJvcmlnaW5hbEN1cnJlbmN5IiwidHJuQ3VycmVuY3lTeW1ib2wiLCJjaGFyZ2VkQ3VycmVuY3kiLCJkZWJDcmRDdXJyZW5jeVN5bWJvbCIsImRlc2NyaXB0aW9uIiwibWVyY2hhbnROYW1lIiwibWVtbyIsInRyYW5zVHlwZUNvbW1lbnREZXRhaWxzIiwidG9TdHJpbmciLCJjYXRlZ29yeSIsImJyYW5jaENvZGVEZXNjIiwiVmlzYUNhbFNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiY29uc3RydWN0b3IiLCJhcmdzIiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwiY2xpY2tCdXR0b24iLCJnZXRDYXJkcyIsImluaXREYXRhIiwiZ2V0RnJvbVNlc3Npb25TdG9yYWdlIiwiY2FyZHMiLCJjYXJkVW5pcXVlSWQiLCJsYXN0NERpZ2l0cyIsImdldEF1dGhvcml6YXRpb25IZWFkZXIiLCJhdXRoTW9kdWxlIiwiYXV0aCIsImNhbENvbm5lY3RUb2tlbiIsImdldFhTaXRlSWQiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImZpZWxkcyIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwicG9zc2libGVSZXN1bHRzIiwiY2hlY2tSZWFkaW5lc3MiLCJwcmVBY3Rpb24iLCJvcGVuTG9naW5Qb3B1cCIsInBvc3RBY3Rpb24iLCJjdXJyZW50VXJsIiwiZ2V0Q3VycmVudFVybCIsImVuZHNXaXRoIiwiZSIsInJlcXVpcmVzQ2hhbmdlUGFzc3dvcmQiLCJ1c2VyQWdlbnQiLCJpc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMiLCJmZXRjaERhdGEiLCJfdGhpcyRvcHRpb25zJGZ1dHVyZU0iLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsInN0YXJ0TW9tZW50IiwibWF4IiwiZm9ybWF0IiwiQXV0aG9yaXphdGlvbiIsInhTaXRlSWQiLCJmdXR1cmVNb250aHNUb1NjcmFwZSIsImFsbCIsImNhcmQiLCJfdGhpcyRvcHRpb25zJG91dHB1dEQiLCJfdGhpcyRvcHRpb25zJG91dHB1dEQyIiwiZmluYWxNb250aFRvRmV0Y2hNb21lbnQiLCJtb250aHMiLCJkaWZmIiwiYWxsTW9udGhzRGF0YSIsImkiLCJtb250aCIsImNsb25lIiwiZmV0Y2hQb3N0V2l0aGluUGFnZSIsInllYXIiLCJzdGF0dXNDb2RlIiwidGl0bGUiLCJwdXNoIiwidHhucyIsIm91dHB1dERhdGEiLCJlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUiLCJmaWx0ZXJPbGRUcmFuc2FjdGlvbnMiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiYWNjb3VudE51bWJlciIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdWNjZXNzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL3Zpc2EtY2FsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IEZyYW1lLCBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcblxuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7XG4gIGNsaWNrQnV0dG9uLCBlbGVtZW50UHJlc2VudE9uUGFnZSwgcGFnZUV2YWwsIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCxcbn0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgZ2V0Q3VycmVudFVybCB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBnZXRGcm9tU2Vzc2lvblN0b3JhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL3N0b3JhZ2UnO1xuaW1wb3J0IHsgZmlsdGVyT2xkVHJhbnNhY3Rpb25zIH0gZnJvbSAnLi4vaGVscGVycy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnLi4vaGVscGVycy93YWl0aW5nJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvblN0YXR1c2VzLFxuICBUcmFuc2FjdGlvblR5cGVzLFxuICBUcmFuc2FjdGlvbnNBY2NvdW50LFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5PcHRpb25zLCBMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBMT0dJTl9VUkwgPSAnaHR0cHM6Ly93d3cuY2FsLW9ubGluZS5jby5pbC8nO1xuY29uc3QgVFJBTlNBQ1RJT05TX1JFUVVFU1RfRU5EUE9JTlQgPSAnaHR0cHM6Ly9hcGkuY2FsLW9ubGluZS5jby5pbC9UcmFuc2FjdGlvbnMvYXBpL3RyYW5zYWN0aW9uc0RldGFpbHMvZ2V0Q2FyZFRyYW5zYWN0aW9uc0RldGFpbHMnO1xuXG5jb25zdCBJbnZhbGlkUGFzc3dvcmRNZXNzYWdlID0gJ9ep150g15TXntep16rXntepINeQ15Ug15TXodeZ16HXnteUINep15TXldeW16DXlSDXqdeS15XXmdeZ150nO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCd2aXNhLWNhbCcpO1xuXG5lbnVtIHRyblR5cGVDb2RlIHtcbiAgcmVndWxhciA9ICc1JyxcbiAgY3JlZGl0ID0gJzYnLFxuICBpbnN0YWxsbWVudHMgPSAnOCcsXG4gIHN0YW5kaW5nT3JkZXIgPSAnOScsXG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBhbXRCZWZvcmVDb252QW5kSW5kZXg6IG51bWJlcjtcbiAgYnJhbmNoQ29kZURlc2M6IHN0cmluZztcbiAgY2FzaEFjY01hbmFnZXJOYW1lOiBudWxsO1xuICBjYXNoQWNjb3VudE1hbmFnZXI6IG51bGw7XG4gIGNhc2hBY2NvdW50VHJuQW10OiBudW1iZXI7XG4gIGNoYXJnZUV4dGVybmFsVG9DYXJkQ29tbWVudDogc3RyaW5nO1xuICBjb21tZW50czogW107XG4gIGN1clBheW1lbnROdW06IG51bWJlcjtcbiAgZGViQ3JkQ3VycmVuY3lTeW1ib2w6IEN1cnJlbmN5U3ltYm9sO1xuICBkZWJDcmREYXRlOiBzdHJpbmc7XG4gIGRlYml0U3ByZWFkSW5kOiBib29sZWFuO1xuICBkaXNjb3VudEFtb3VudDogdW5rbm93bjtcbiAgZGlzY291bnRSZWFzb246IHVua25vd247XG4gIGltbWVkaWF0ZUNvbW1lbnRzOiBbXTtcbiAgaXNJbW1lZGlhdGVDb21tZW50SW5kOiBib29sZWFuO1xuICBpc0ltbWVkaWF0ZUhIS0luZDogYm9vbGVhbjtcbiAgaXNNYXJnYXJpdGE6IGJvb2xlYW47XG4gIGlzU3ByZWFkUGF5bWVuc3RBYnJvYWQ6IGJvb2xlYW47XG4gIGxpbmtlZENvbW1lbnRzOiBbXTtcbiAgbWVyY2hhbnRBZGRyZXNzOiBzdHJpbmc7XG4gIG1lcmNoYW50TmFtZTogc3RyaW5nO1xuICBtZXJjaGFudFBob25lTm86IHN0cmluZztcbiAgbnVtT2ZQYXltZW50czogbnVtYmVyO1xuICBvbkdvaW5nVHJhbnNhY3Rpb25zQ29tbWVudDogc3RyaW5nO1xuICByZWZ1bmRJbmQ6IGJvb2xlYW47XG4gIHJvdW5kaW5nQW1vdW50OiB1bmtub3duO1xuICByb3VuZGluZ1JlYXNvbjogdW5rbm93bjtcbiAgdG9rZW5JbmQ6IDA7XG4gIHRva2VuTnVtYmVyUGFydDQ6ICcnO1xuICB0cmFuc0NhcmRQcmVzZW50SW5kOiBib29sZWFuO1xuICB0cmFuc1R5cGVDb21tZW50RGV0YWlsczogW107XG4gIHRybkFtdDogbnVtYmVyO1xuICB0cm5DdXJyZW5jeVN5bWJvbDogQ3VycmVuY3lTeW1ib2w7XG4gIHRybkV4YWNXYXk6IG51bWJlcjtcbiAgdHJuSW50SWQ6IHN0cmluZztcbiAgdHJuTnVtYXJldG9yOiBudW1iZXI7XG4gIHRyblB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICB0cm5UeXBlOiBzdHJpbmc7XG4gIHRyblR5cGVDb2RlOiB0cm5UeXBlQ29kZTtcbiAgd2FsbGV0UHJvdmlkZXJDb2RlOiAwO1xuICB3YWxsZXRQcm92aWRlckRlc2M6ICcnO1xufVxuaW50ZXJmYWNlIEluaXRSZXNwb25zZSB7XG4gIHJlc3VsdDoge1xuICAgIGNhcmRzOiB7XG4gICAgICBjYXJkVW5pcXVlSWQ6IHN0cmluZztcbiAgICAgIGxhc3Q0RGlnaXRzOiBzdHJpbmc7XG4gICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIH1bXTtcbiAgfTtcbn1cbnR5cGUgQ3VycmVuY3lTeW1ib2wgPSAn4oKqJyB8IHN0cmluZztcbmludGVyZmFjZSBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3Ige1xuICB0aXRsZTogc3RyaW5nO1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG59XG5pbnRlcmZhY2UgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyBleHRlbmRzIENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvciB7XG4gIHJlc3VsdDoge1xuICAgIGJhbmtBY2NvdW50czoge1xuICAgICAgYmFua0FjY291bnROdW06IHN0cmluZztcbiAgICAgIGJhbmtOYW1lOiBzdHJpbmc7XG4gICAgICBjaG9pY2VFeHRlcm5hbFRyYW5zYWN0aW9uczogYW55O1xuICAgICAgY3VycmVudEJhbmtBY2NvdW50SW5kOiBib29sZWFuO1xuICAgICAgZGViaXREYXRlczoge1xuICAgICAgICBiYXNrZXRBbW91bnRDb21tZW50OiB1bmtub3duO1xuICAgICAgICBjaG9pY2VISEtEZWJpdDogbnVtYmVyO1xuICAgICAgICBkYXRlOiBzdHJpbmc7XG4gICAgICAgIGRlYml0UmVhc29uOiB1bmtub3duO1xuICAgICAgICBmaXhEZWJpdEFtb3VudDogbnVtYmVyO1xuICAgICAgICBmcm9tUHVyY2hhc2VEYXRlOiBzdHJpbmc7XG4gICAgICAgIGlzQ2hvaWNlUmVwYWltZW50OiBib29sZWFuO1xuICAgICAgICB0b1B1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICAgICAgICB0b3RhbEJhc2tldEFtb3VudDogbnVtYmVyO1xuICAgICAgICB0b3RhbERlYml0czoge1xuICAgICAgICAgIGN1cnJlbmN5U3ltYm9sOiBDdXJyZW5jeVN5bWJvbDtcbiAgICAgICAgICBhbW91bnQ6IG51bWJlcjtcbiAgICAgICAgfVtdO1xuICAgICAgICB0cmFuc2FjdGlvbnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICAgICAgfVtdO1xuICAgICAgaW1taWRpYXRlRGViaXRzOiB7IHRvdGFsRGViaXRzOiBbXSwgZGViaXREYXlzOiBbXSB9O1xuICAgIH1bXTtcbiAgICBibG9ja2VkQ2FyZEluZDogYm9vbGVhbjtcbiAgfTtcbiAgc3RhdHVzQ29kZTogMTtcbiAgc3RhdHVzRGVzY3JpcHRpb246IHN0cmluZztcbiAgc3RhdHVzVGl0bGU6IHN0cmluZztcbn1cblxuXG5hc3luYyBmdW5jdGlvbiBnZXRMb2dpbkZyYW1lKHBhZ2U6IFBhZ2UpIHtcbiAgbGV0IGZyYW1lOiBGcmFtZSB8IG51bGwgPSBudWxsO1xuICBkZWJ1Zygnd2FpdCB1bnRpbCBsb2dpbiBmcmFtZSBmb3VuZCcpO1xuICBhd2FpdCB3YWl0VW50aWwoKCkgPT4ge1xuICAgIGZyYW1lID0gcGFnZVxuICAgICAgLmZyYW1lcygpXG4gICAgICAuZmluZCgoZikgPT4gZi51cmwoKS5pbmNsdWRlcygnY2FsY29ubmVjdCcpKSB8fCBudWxsO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoISFmcmFtZSk7XG4gIH0sICd3YWl0IGZvciBpZnJhbWUgd2l0aCBsb2dpbiBmb3JtJywgMTAwMDAsIDEwMDApO1xuXG4gIGlmICghZnJhbWUpIHtcbiAgICBkZWJ1ZygnZmFpbGVkIHRvIGZpbmQgbG9naW4gZnJhbWUgZm9yIDEwIHNlY29uZHMnKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZhaWxlZCB0byBleHRyYWN0IGxvZ2luIGlmcmFtZScpO1xuICB9XG5cbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNJbnZhbGlkUGFzc3dvcmRFcnJvcihwYWdlOiBQYWdlKSB7XG4gIGNvbnN0IGZyYW1lID0gYXdhaXQgZ2V0TG9naW5GcmFtZShwYWdlKTtcbiAgY29uc3QgZXJyb3JGb3VuZCA9IGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKGZyYW1lLCAnZGl2LmdlbmVyYWwtZXJyb3IgPiBkaXYnKTtcbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3JGb3VuZCA/IGF3YWl0IHBhZ2VFdmFsKGZyYW1lLCAnZGl2LmdlbmVyYWwtZXJyb3IgPiBkaXYnLCAnJywgKGl0ZW0pID0+IHtcbiAgICByZXR1cm4gKGl0ZW0gYXMgSFRNTERpdkVsZW1lbnQpLmlubmVyVGV4dDtcbiAgfSkgOiAnJztcbiAgcmV0dXJuIGVycm9yTWVzc2FnZSA9PT0gSW52YWxpZFBhc3N3b3JkTWVzc2FnZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFzQ2hhbmdlUGFzc3dvcmRGb3JtKHBhZ2U6IFBhZ2UpIHtcbiAgY29uc3QgZnJhbWUgPSBhd2FpdCBnZXRMb2dpbkZyYW1lKHBhZ2UpO1xuICBjb25zdCBlcnJvckZvdW5kID0gYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UoZnJhbWUsICcuY2hhbmdlLXBhc3N3b3JkLXN1YnRpdGxlJyk7XG4gIHJldHVybiBlcnJvckZvdW5kO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpIHtcbiAgZGVidWcoJ3JldHVybiBwb3NzaWJsZSBsb2dpbiByZXN1bHRzJyk7XG4gIGNvbnN0IHVybHM6IExvZ2luT3B0aW9uc1sncG9zc2libGVSZXN1bHRzJ10gPSB7XG4gICAgW0xvZ2luUmVzdWx0cy5TdWNjZXNzXTogWy9kYXNoYm9hcmQvaV0sXG4gICAgW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdOiBbYXN5bmMgKG9wdGlvbnM/OiB7IHBhZ2U/OiBQYWdlIH0pID0+IHtcbiAgICAgIGNvbnN0IHBhZ2UgPSBvcHRpb25zPy5wYWdlO1xuICAgICAgaWYgKCFwYWdlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNJbnZhbGlkUGFzc3dvcmRFcnJvcihwYWdlKTtcbiAgICB9XSxcbiAgICAvLyBbTG9naW5SZXN1bHRzLkFjY291bnRCbG9ja2VkXTogW10sIC8vIFRPRE8gYWRkIHdoZW4gcmVhY2hpbmcgdGhpcyBzY2VuYXJpb1xuICAgIFtMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdOiBbYXN5bmMgKG9wdGlvbnM/OiB7IHBhZ2U/OiBQYWdlIH0pID0+IHtcbiAgICAgIGNvbnN0IHBhZ2UgPSBvcHRpb25zPy5wYWdlO1xuICAgICAgaWYgKCFwYWdlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNDaGFuZ2VQYXNzd29yZEZvcm0ocGFnZSk7XG4gICAgfV0sXG4gIH07XG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgZGVidWcoJ2NyZWF0ZSBsb2dpbiBmaWVsZHMgZm9yIHVzZXJuYW1lIGFuZCBwYXNzd29yZCcpO1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICdbZm9ybWNvbnRyb2xuYW1lPVwidXNlck5hbWVcIl0nLCB2YWx1ZTogY3JlZGVudGlhbHMudXNlcm5hbWUgfSxcbiAgICB7IHNlbGVjdG9yOiAnW2Zvcm1jb250cm9sbmFtZT1cInBhc3N3b3JkXCJdJywgdmFsdWU6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRQYXJzZWREYXRhVG9UcmFuc2FjdGlvbnMocGFyc2VkRGF0YTogQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc1tdKTogVHJhbnNhY3Rpb25bXSB7XG4gIGNvbnN0IGJhbmtBY2NvdW50cyA9IHBhcnNlZERhdGFcbiAgICAuZmxhdE1hcCgobW9udGhEYXRhKSA9PiBtb250aERhdGEucmVzdWx0LmJhbmtBY2NvdW50cyk7XG5cbiAgY29uc3QgcmVndWxhckRlYml0RGF5cyA9IGJhbmtBY2NvdW50c1xuICAgIC5mbGF0TWFwKChhY2NvdW50cykgPT4gYWNjb3VudHMuZGViaXREYXRlcyk7XG4gIGNvbnN0IGltbWVkaWF0ZURlYml0RGF5cyA9IGJhbmtBY2NvdW50c1xuICAgIC5mbGF0TWFwKChhY2NvdW50cykgPT4gYWNjb3VudHMuaW1taWRpYXRlRGViaXRzLmRlYml0RGF5cyk7XG5cbiAgcmV0dXJuIFsuLi5yZWd1bGFyRGViaXREYXlzLCAuLi5pbW1lZGlhdGVEZWJpdERheXNdXG4gICAgLmZsYXRNYXAoKGRlYml0RGF0ZSkgPT4gZGViaXREYXRlLnRyYW5zYWN0aW9ucylcbiAgICAubWFwKCh0cmFuc2FjdGlvbikgPT4ge1xuICAgICAgY29uc3QgaW5zdGFsbG1lbnRzID0gKHRyYW5zYWN0aW9uLmN1clBheW1lbnROdW0gJiYgdHJhbnNhY3Rpb24ubnVtT2ZQYXltZW50cyAmJlxuICAgICAge1xuICAgICAgICBudW1iZXI6IHRyYW5zYWN0aW9uLmN1clBheW1lbnROdW0sXG4gICAgICAgIHRvdGFsOiB0cmFuc2FjdGlvbi5udW1PZlBheW1lbnRzLFxuICAgICAgfSkgfHxcbiAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KHRyYW5zYWN0aW9uLnRyblB1cmNoYXNlRGF0ZSk7XG5cbiAgICAgIGNvbnN0IGNoYXJnZWRBbW91bnQgPSB0cmFuc2FjdGlvbi5hbXRCZWZvcmVDb252QW5kSW5kZXggKiAoLTEpO1xuICAgICAgY29uc3Qgb3JpZ2luYWxBbW91bnQgPSB0cmFuc2FjdGlvbi50cm5BbXQgKiAoLTEpO1xuXG4gICAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgICBpZGVudGlmaWVyOiB0cmFuc2FjdGlvbi50cm5JbnRJZCxcbiAgICAgICAgdHlwZTogW3RyblR5cGVDb2RlLnJlZ3VsYXIsIHRyblR5cGVDb2RlLnN0YW5kaW5nT3JkZXJdLmluY2x1ZGVzKHRyYW5zYWN0aW9uLnRyblR5cGVDb2RlKSA/XG4gICAgICAgICAgVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwgOlxuICAgICAgICAgIFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzLFxuICAgICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgICBkYXRlOiBpbnN0YWxsbWVudHMgP1xuICAgICAgICAgIGRhdGUuYWRkKGluc3RhbGxtZW50cy5udW1iZXIgLSAxLCAnbW9udGgnKS50b0lTT1N0cmluZygpIDpcbiAgICAgICAgICBkYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIHByb2Nlc3NlZERhdGU6IG5ldyBEYXRlKHRyYW5zYWN0aW9uLmRlYkNyZERhdGUpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIG9yaWdpbmFsQW1vdW50LFxuICAgICAgICBvcmlnaW5hbEN1cnJlbmN5OiB0cmFuc2FjdGlvbi50cm5DdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgY2hhcmdlZEFtb3VudCxcbiAgICAgICAgY2hhcmdlZEN1cnJlbmN5OiB0cmFuc2FjdGlvbi5kZWJDcmRDdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgZGVzY3JpcHRpb246IHRyYW5zYWN0aW9uLm1lcmNoYW50TmFtZSxcbiAgICAgICAgbWVtbzogdHJhbnNhY3Rpb24udHJhbnNUeXBlQ29tbWVudERldGFpbHMudG9TdHJpbmcoKSxcbiAgICAgICAgY2F0ZWdvcnk6IHRyYW5zYWN0aW9uLmJyYW5jaENvZGVEZXNjLFxuICAgICAgfTtcblxuICAgICAgaWYgKGluc3RhbGxtZW50cykge1xuICAgICAgICByZXN1bHQuaW5zdGFsbG1lbnRzID0gaW5zdGFsbG1lbnRzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIFZpc2FDYWxTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBvcGVuTG9naW5Qb3B1cCA9IGFzeW5jICgpID0+IHtcbiAgICBkZWJ1Zygnb3BlbiBsb2dpbiBwb3B1cCwgd2FpdCB1bnRpbCBsb2dpbiBidXR0b24gYXZhaWxhYmxlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicsIHRydWUpO1xuICAgIGRlYnVnKCdjbGljayBvbiB0aGUgbG9naW4gYnV0dG9uJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2NjTG9naW5EZXNrdG9wQnRuJyk7XG4gICAgZGVidWcoJ2dldCB0aGUgZnJhbWUgdGhhdCBob2xkcyB0aGUgbG9naW4nKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUodGhpcy5wYWdlKTtcbiAgICBkZWJ1Zygnd2FpdCB1bnRpbCB0aGUgcGFzc3dvcmQgbG9naW4gdGFiIGhlYWRlciBpcyBhdmFpbGFibGUnKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQoZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCduYXZpZ2F0ZSB0byB0aGUgcGFzc3dvcmQgbG9naW4gdGFiJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24oZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCd3YWl0IHVudGlsIHRoZSBwYXNzd29yZCBsb2dpbiB0YWIgaXMgYWN0aXZlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKGZyYW1lLCAncmVndWxhci1sb2dpbicpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9O1xuXG4gIGFzeW5jIGdldENhcmRzKCkge1xuICAgIGNvbnN0IGluaXREYXRhID0gYXdhaXQgd2FpdFVudGlsKFxuICAgICAgKCkgPT4gZ2V0RnJvbVNlc3Npb25TdG9yYWdlPEluaXRSZXNwb25zZT4odGhpcy5wYWdlLCAnaW5pdCcpLFxuICAgICAgJ2dldCBpbml0IGRhdGEgaW4gc2Vzc2lvbiBzdG9yYWdlJyxcbiAgICAgIDEwMDAwLFxuICAgICAgMTAwMCxcbiAgICApO1xuICAgIGlmICghaW5pdERhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IGZpbmQgXFwnaW5pdFxcJyBkYXRhIGluIHNlc3Npb24gc3RvcmFnZScpO1xuICAgIH1cbiAgICByZXR1cm4gaW5pdERhdGE/LnJlc3VsdC5jYXJkcy5tYXAoKHsgY2FyZFVuaXF1ZUlkLCBsYXN0NERpZ2l0cyB9KSA9PiAoeyBjYXJkVW5pcXVlSWQsIGxhc3Q0RGlnaXRzIH0pKTtcbiAgfVxuXG4gIGFzeW5jIGdldEF1dGhvcml6YXRpb25IZWFkZXIoKSB7XG4gICAgY29uc3QgYXV0aE1vZHVsZSA9IGF3YWl0IGdldEZyb21TZXNzaW9uU3RvcmFnZTx7IGF1dGg6IHsgY2FsQ29ubmVjdFRva2VuOiBzdHJpbmcgfSB9Pih0aGlzLnBhZ2UsICdhdXRoLW1vZHVsZScpO1xuICAgIGlmICghYXV0aE1vZHVsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgZmluZCBcXCdhdXRoLW1vZHVsZVxcJyBpbiBzZXNzaW9uIHN0b3JhZ2UnKTtcbiAgICB9XG4gICAgcmV0dXJuIGBDQUxBdXRoU2NoZW1lICR7YXV0aE1vZHVsZS5hdXRoLmNhbENvbm5lY3RUb2tlbn1gO1xuICB9XG5cbiAgYXN5bmMgZ2V0WFNpdGVJZCgpIHtcbiAgICAvKlxuICAgICAgSSBkb24ndCBrbm93IGlmIHRoZSBjb25zdGFudCBiZWxvdyB3aWxsIGNoYW5nZSBpbiB0aGUgZmVhdHVyZS5cbiAgICAgIElmIHNvLCB1c2UgdGhlIG5leHQgY29kZTpcblxuICAgICAgcmV0dXJuIHRoaXMucGFnZS5ldmFsdWF0ZSgoKSA9PiBuZXcgVXQoKS54U2l0ZUlkKTtcblxuICAgICAgVG8gZ2V0IHRoZSBjbGFzc25hbWUgc2VhcmNoIGZvciAneFNpdGVJZCcgaW4gdGhlIHBhZ2Ugc291cmNlXG4gICAgICBjbGFzcyBVdCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKF9lLCBvbiwgeW4pIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUgPSBfZSxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnID0gb24sXG4gICAgICAgICAgICB0aGlzLmV2ZW50QnVzU2VydmljZSA9IHluLFxuICAgICAgICAgICAgdGhpcy54U2l0ZUlkID0gXCIwOTAzMTk4Ny0yNzNFLTIzMTEtOTA2Qy04QUY4NUIxN0M4RDlcIixcbiAgICAqL1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJzA5MDMxOTg3LTI3M0UtMjMxMS05MDZDLThBRjg1QjE3QzhEOScpO1xuICB9XG5cbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyk6IExvZ2luT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBgJHtMT0dJTl9VUkx9YCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICdidXR0b25bdHlwZT1cInN1Ym1pdFwiXScsXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4gd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicpLFxuICAgICAgcHJlQWN0aW9uOiB0aGlzLm9wZW5Mb2dpblBvcHVwLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICdidXR0b24uYnRuLWNsb3NlJyk7XG4gICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IGF3YWl0IGdldEN1cnJlbnRVcmwodGhpcy5wYWdlKTtcbiAgICAgICAgICBpZiAoY3VycmVudFVybC5lbmRzV2l0aCgnc2l0ZS10dXRvcmlhbCcpKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICdidXR0b24uYnRuLWNsb3NlJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IGF3YWl0IGdldEN1cnJlbnRVcmwodGhpcy5wYWdlKTtcbiAgICAgICAgICBpZiAoY3VycmVudFVybC5lbmRzV2l0aCgnZGFzaGJvYXJkJykpIHJldHVybjtcbiAgICAgICAgICBjb25zdCByZXF1aXJlc0NoYW5nZVBhc3N3b3JkID0gYXdhaXQgaGFzQ2hhbmdlUGFzc3dvcmRGb3JtKHRoaXMucGFnZSk7XG4gICAgICAgICAgaWYgKHJlcXVpcmVzQ2hhbmdlUGFzc3dvcmQpIHJldHVybjtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXNlckFnZW50OiAnTW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNzguMC4zOTA0LjEwOCBTYWZhcmkvNTM3LjM2JyxcbiAgICB9O1xuICB9XG5cbiAgaXNDYXJkVHJhbnNhY3Rpb25EZXRhaWxzKHJlc3VsdDogQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyB8IENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvcik6XG4gICAgcmVzdWx0IGlzIENhcmRUcmFuc2FjdGlvbkRldGFpbHMge1xuICAgIHJldHVybiAocmVzdWx0IGFzIENhcmRUcmFuc2FjdGlvbkRldGFpbHMpLnJlc3VsdCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuc3VidHJhY3QoNiwgJ21vbnRocycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuICAgIGRlYnVnKGBmZXRjaCB0cmFuc2FjdGlvbnMgc3RhcnRpbmcgJHtzdGFydE1vbWVudC5mb3JtYXQoKX1gKTtcblxuICAgIGNvbnN0IEF1dGhvcml6YXRpb24gPSBhd2FpdCB0aGlzLmdldEF1dGhvcml6YXRpb25IZWFkZXIoKTtcbiAgICBjb25zdCBjYXJkcyA9IGF3YWl0IHRoaXMuZ2V0Q2FyZHMoKTtcbiAgICBjb25zdCB4U2l0ZUlkID0gYXdhaXQgdGhpcy5nZXRYU2l0ZUlkKCk7XG4gICAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSB0aGlzLm9wdGlvbnMuZnV0dXJlTW9udGhzVG9TY3JhcGUgPz8gMTtcblxuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjYXJkcy5tYXAoYXN5bmMgKGNhcmQpID0+IHtcbiAgICAgICAgZGVidWcoYGZldGNoIHRyYW5zYWN0aW9ucyBmb3IgY2FyZCAke2NhcmQuY2FyZFVuaXF1ZUlkfWApO1xuXG4gICAgICAgIGNvbnN0IGZpbmFsTW9udGhUb0ZldGNoTW9tZW50ID0gbW9tZW50KCkuYWRkKGZ1dHVyZU1vbnRoc1RvU2NyYXBlLCAnbW9udGgnKTtcbiAgICAgICAgY29uc3QgbW9udGhzID0gZmluYWxNb250aFRvRmV0Y2hNb21lbnQuZGlmZihzdGFydE1vbWVudCwgJ21vbnRocycpO1xuXG4gICAgICAgIGNvbnN0IGFsbE1vbnRoc0RhdGE6IChDYXJkVHJhbnNhY3Rpb25EZXRhaWxzKVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG1vbnRoczsgaSArPSAxKSB7XG4gICAgICAgICAgY29uc3QgbW9udGggPSBmaW5hbE1vbnRoVG9GZXRjaE1vbWVudC5jbG9uZSgpLnN1YnRyYWN0KGksICdtb250aHMnKTtcbiAgICAgICAgICBjb25zdCBtb250aERhdGEgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPENhcmRUcmFuc2FjdGlvbkRldGFpbHMgfCBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3I+KFxuICAgICAgICAgICAgdGhpcy5wYWdlLCBUUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCxcbiAgICAgICAgICAgIHsgY2FyZFVuaXF1ZUlkOiBjYXJkLmNhcmRVbmlxdWVJZCwgbW9udGg6IG1vbnRoLmZvcm1hdCgnTScpLCB5ZWFyOiBtb250aC5mb3JtYXQoJ1lZWVknKSB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBdXRob3JpemF0aW9uLFxuICAgICAgICAgICAgICAnWC1TaXRlLUlkJzogeFNpdGVJZCxcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChtb250aERhdGE/LnN0YXR1c0NvZGUgIT09IDEpIHRocm93IG5ldyBFcnJvcihgZmFpbGVkIHRvIGZldGNoIHRyYW5zYWN0aW9ucyBmb3IgY2FyZCAke2NhcmQubGFzdDREaWdpdHN9LiBNZXNzYWdlOiAke21vbnRoRGF0YT8udGl0bGUgfHwgJyd9YCk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuaXNDYXJkVHJhbnNhY3Rpb25EZXRhaWxzKG1vbnRoRGF0YSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbW9udGhEYXRhIGlzIG5vdCBvZiB0eXBlIENhcmRUcmFuc2FjdGlvbkRldGFpbHMnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhbGxNb250aHNEYXRhLnB1c2gobW9udGhEYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9ucyA9IGNvbnZlcnRQYXJzZWREYXRhVG9UcmFuc2FjdGlvbnMoYWxsTW9udGhzRGF0YSk7XG5cbiAgICAgICAgZGVidWcoJ2ZpbGVyIG91dCBvbGQgdHJhbnNhY3Rpb25zJyk7XG4gICAgICAgIGNvbnN0IHR4bnMgPSAodGhpcy5vcHRpb25zLm91dHB1dERhdGE/LmVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/PyB0cnVlKSA/XG4gICAgICAgICAgZmlsdGVyT2xkVHJhbnNhY3Rpb25zKHRyYW5zYWN0aW9ucywgbW9tZW50KHN0YXJ0RGF0ZSksIHRoaXMub3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKSA6XG4gICAgICAgICAgdHJhbnNhY3Rpb25zO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHhucyxcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiBjYXJkLmxhc3Q0RGlnaXRzLFxuICAgICAgICB9IGFzIFRyYW5zYWN0aW9uc0FjY291bnQ7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgZGVidWcoJ3JldHVybiB0aGUgc2NyYXBlZCBhY2NvdW50cycpO1xuXG4gICAgZGVidWcoSlNPTi5zdHJpbmdpZnkoYWNjb3VudHMsIG51bGwsIDIpKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlzYUNhbFNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFHQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxxQkFBQSxHQUFBRixPQUFBO0FBR0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsY0FBQSxHQUFBUixPQUFBO0FBTUEsSUFBQVMsdUJBQUEsR0FBQVQsT0FBQTtBQUFpRyxTQUFBRCx1QkFBQVcsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUFBLFNBQUFHLGdCQUFBSCxHQUFBLEVBQUFJLEdBQUEsRUFBQUMsS0FBQSxRQUFBRCxHQUFBLElBQUFKLEdBQUEsSUFBQU0sTUFBQSxDQUFB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "israeli-bank-scrapers",
3
- "version": "4.3.0",
3
+ "version": "4.4.1",
4
4
  "private": false,
5
5
  "description": "Provide scrapers for all major Israeli banks and credit card companies",
6
6
  "engines": {