Socket
Socket
Sign inDemoInstall

email-templates

Package Overview
Dependencies
Maintainers
1
Versions
137
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

email-templates - npm Package Compare versions

Comparing version 8.0.9 to 8.0.10

7

lib/index.js

@@ -243,4 +243,5 @@ "use strict";

if (_.isObject(locals.user) && _.isString(locals.user[this.config.lastLocaleField])) locals.locale = locals.user[this.config.lastLocaleField];
if (_.isString(locals.locale)) i18n.setLocale(locals.locale);
const locale = i18n.getLocale();
if (_.isObject(locals.user) && _.isString(locals.user[this.config.lastLocaleField])) locals.locale = locals.user[this.config.lastLocaleField];else if (!_.isString(locals.locale)) locals.locale = locale;
if (locale !== locals.locale) i18n.setLocale(locals.locale);
}

@@ -330,2 +331,2 @@

module.exports = Email;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJwcm9jZXNzIiwicmVxdWlyZSIsImZzIiwicGF0aCIsInV0aWwiLCJJMThOIiwiXyIsImNvbnNvbGlkYXRlIiwiZGVidWciLCJnZXRQYXRocyIsImh0bWxUb1RleHQiLCJqdWljZSIsIm5vZGVtYWlsZXIiLCJwcmV2aWV3RW1haWwiLCJqdWljZVJlc291cmNlcyIsImh0bWwiLCJvcHRpb25zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJlcnIiLCJlbnYiLCJOT0RFX0VOViIsInRvTG93ZXJDYXNlIiwic3RhdCIsInByb21pc2lmeSIsInJlYWRGaWxlIiwiRW1haWwiLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsImp1aWNlT3B0aW9ucyIsImRpc2FibGVKdWljZSIsInJlbmRlciIsImN1c3RvbVJlbmRlciIsIm1lcmdlIiwidmlld3MiLCJyb290IiwiZXh0ZW5zaW9uIiwibWFwIiwiaGJzIiwibmprIiwiZW5naW5lU291cmNlIiwibG9jYWxzIiwiY2FjaGUiLCJpbmNsdWRlcyIsInByZXR0eSIsIm1lc3NhZ2UiLCJzZW5kIiwicHJldmlldyIsImkxOG4iLCJiaW5kIiwidGV4dE9ubHkiLCJpZ25vcmVJbWFnZSIsInN1YmplY3RQcmVmaXgiLCJqdWljZVNldHRpbmdzIiwidGFibGVFbGVtZW50cyIsInByZXNlcnZlSW1wb3J0YW50Iiwid2ViUmVzb3VyY2VzIiwicmVsYXRpdmVUbyIsImltYWdlcyIsInRyYW5zcG9ydCIsImxhc3RMb2NhbGVGaWVsZCIsImdldFBhdGgiLCJ0eXBlIiwidGVtcGxhdGUiLCJqb2luIiwiaXNGdW5jdGlvbiIsInNlbmRNYWlsIiwiY3JlYXRlVHJhbnNwb3J0IiwiaXNPYmplY3QiLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiLCJnZXRUZW1wbGF0ZVBhdGgiLCJ0ZW1wbGF0ZUV4aXN0cyIsImNoZWNrQW5kUmVuZGVyIiwicmVuZGVyQWxsIiwianVpY2VSZW5kZXJSZXNvdXJjZXMiLCJqdWljZVIiLCJ2aWV3IiwiaXNBYnNvbHV0ZSIsImRpcm5hbWUiLCJiYXNlbmFtZSIsInBhdGhzIiwiZmlsZVBhdGgiLCJyZWwiLCJzdGF0cyIsImlzRmlsZSIsIkVycm9yIiwic3RyaW5nIiwiZXhpc3RzIiwiZXh0IiwicmVzIiwiZW5naW5lTmFtZSIsInJlbmRlckZuIiwicmVnaXN0ZXIiLCJ1c2VyIiwiaXNTdHJpbmciLCJsb2NhbGUiLCJzZXRMb2NhbGUiLCJub2RlbWFpbGVyTWVzc2FnZSIsInN1YmplY3QiLCJ0ZXh0IiwiYWxsIiwidHJpbSIsImZyb21TdHJpbmciLCJpc0VtcHR5IiwiYXR0YWNobWVudHMiLCJkZWZhdWx0c0RlZXAiLCJvbWl0Iiwia2V5cyIsIm9iamVjdCIsImFzc2lnbiIsImpzb25UcmFuc3BvcnQiLCJvcmlnaW5hbE1lc3NhZ2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsSUFBRCxDQUFsQjs7QUFDQSxNQUFNRSxJQUFJLEdBQUdGLE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUNBLE1BQU1HLElBQUksR0FBR0gsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBRUEsTUFBTUksSUFBSSxHQUFHSixPQUFPLENBQUMsYUFBRCxDQUFwQjs7QUFDQSxNQUFNSyxDQUFDLEdBQUdMLE9BQU8sQ0FBQyxRQUFELENBQWpCOztBQUNBLE1BQU1NLFdBQVcsR0FBR04sT0FBTyxDQUFDLGFBQUQsQ0FBM0I7O0FBQ0EsTUFBTU8sS0FBSyxHQUFHUCxPQUFPLENBQUMsT0FBRCxDQUFQLENBQWlCLGlCQUFqQixDQUFkOztBQUNBLE1BQU1RLFFBQVEsR0FBR1IsT0FBTyxDQUFDLFdBQUQsQ0FBeEI7O0FBQ0EsTUFBTVMsVUFBVSxHQUFHVCxPQUFPLENBQUMsY0FBRCxDQUExQjs7QUFDQSxNQUFNVSxLQUFLLEdBQUdWLE9BQU8sQ0FBQyxPQUFELENBQXJCOztBQUNBLE1BQU1XLFVBQVUsR0FBR1gsT0FBTyxDQUFDLFlBQUQsQ0FBMUI7O0FBQ0EsTUFBTVksWUFBWSxHQUFHWixPQUFPLENBQUMsZUFBRCxDQUE1QixDLENBRUE7OztBQUNBLE1BQU1hLGNBQWMsR0FBRyxDQUFDQyxJQUFELEVBQU9DLE9BQVAsS0FBbUI7QUFDeEMsU0FBTyxJQUFJQyxPQUFKLENBQVksQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3RDUixJQUFBQSxLQUFLLENBQUNHLGNBQU4sQ0FBcUJDLElBQXJCLEVBQTJCQyxPQUEzQixFQUFvQyxDQUFDSSxHQUFELEVBQU1MLElBQU4sS0FBZTtBQUNqRCxVQUFJSyxHQUFKLEVBQVMsT0FBT0QsTUFBTSxDQUFDQyxHQUFELENBQWI7QUFDVEYsTUFBQUEsT0FBTyxDQUFDSCxJQUFELENBQVA7QUFDRCxLQUhEO0FBSUQsR0FMTSxDQUFQO0FBTUQsQ0FQRDs7QUFTQSxNQUFNTSxHQUFHLEdBQUcsQ0FBQ3JCLE9BQU8sQ0FBQ3FCLEdBQVIsQ0FBWUMsUUFBWixJQUF3QixhQUF6QixFQUF3Q0MsV0FBeEMsRUFBWjtBQUNBLE1BQU1DLElBQUksR0FBR3BCLElBQUksQ0FBQ3FCLFNBQUwsQ0FBZXZCLEVBQUUsQ0FBQ3NCLElBQWxCLENBQWI7QUFDQSxNQUFNRSxRQUFRLEdBQUd0QixJQUFJLENBQUNxQixTQUFMLENBQWV2QixFQUFFLENBQUN3QixRQUFsQixDQUFqQjs7QUFFQSxNQUFNQyxLQUFOLENBQVk7QUFDVkMsRUFBQUEsV0FBVyxDQUFDQyxNQUFNLEdBQUcsRUFBVixFQUFjO0FBQ3ZCckIsSUFBQUEsS0FBSyxDQUFDLGtCQUFELEVBQXFCcUIsTUFBckIsQ0FBTCxDQUR1QixDQUd2Qjs7QUFDQSxRQUFJQSxNQUFNLENBQUNDLFlBQVgsRUFBeUI7QUFDdkJELE1BQUFBLE1BQU0sQ0FBQ2YsY0FBUCxHQUF3QmUsTUFBTSxDQUFDQyxZQUEvQjtBQUNBLGFBQU9ELE1BQU0sQ0FBQ0MsWUFBZDtBQUNEOztBQUVELFFBQUlELE1BQU0sQ0FBQ0UsWUFBWCxFQUF5QjtBQUN2QkYsTUFBQUEsTUFBTSxDQUFDbEIsS0FBUCxHQUFlLEtBQWY7QUFDQSxhQUFPa0IsTUFBTSxDQUFDRSxZQUFkO0FBQ0Q7O0FBRUQsUUFBSUYsTUFBTSxDQUFDRyxNQUFYLEVBQW1CO0FBQ2pCSCxNQUFBQSxNQUFNLENBQUNJLFlBQVAsR0FBc0IsSUFBdEI7QUFDRDs7QUFFRCxTQUFLSixNQUFMLEdBQWN2QixDQUFDLENBQUM0QixLQUFGLENBQ1o7QUFDRUMsTUFBQUEsS0FBSyxFQUFFO0FBQ0w7QUFDQUMsUUFBQUEsSUFBSSxFQUFFakMsSUFBSSxDQUFDZSxPQUFMLENBQWEsUUFBYixDQUZEO0FBR0xGLFFBQUFBLE9BQU8sRUFBRTtBQUNQO0FBQ0FxQixVQUFBQSxTQUFTLEVBQUUsS0FGSjtBQUdQQyxVQUFBQSxHQUFHLEVBQUU7QUFDSEMsWUFBQUEsR0FBRyxFQUFFLFlBREY7QUFFSEMsWUFBQUEsR0FBRyxFQUFFO0FBRkYsV0FIRTtBQU9QQyxVQUFBQSxZQUFZLEVBQUVsQztBQVBQLFNBSEo7QUFZTDtBQUNBbUMsUUFBQUEsTUFBTSxFQUFFO0FBQ047QUFDQUMsVUFBQUEsS0FBSyxFQUFFLENBQUMsQ0FBQyxhQUFELEVBQWdCLE1BQWhCLEVBQXdCQyxRQUF4QixDQUFpQ3ZCLEdBQWpDLENBRkY7QUFHTjtBQUNBd0IsVUFBQUEsTUFBTSxFQUFFO0FBSkY7QUFiSCxPQURUO0FBcUJFO0FBQ0FDLE1BQUFBLE9BQU8sRUFBRSxFQXRCWDtBQXVCRUMsTUFBQUEsSUFBSSxFQUFFLENBQUMsQ0FBQyxhQUFELEVBQWdCLE1BQWhCLEVBQXdCSCxRQUF4QixDQUFpQ3ZCLEdBQWpDLENBdkJUO0FBd0JFMkIsTUFBQUEsT0FBTyxFQUFFM0IsR0FBRyxLQUFLLGFBeEJuQjtBQXlCRTtBQUNBO0FBQ0E0QixNQUFBQSxJQUFJLEVBQUUsS0EzQlI7QUE0QkU7QUFDQWpCLE1BQUFBLE1BQU0sRUFBRSxLQUFLQSxNQUFMLENBQVlrQixJQUFaLENBQWlCLElBQWpCLENBN0JWO0FBOEJFakIsTUFBQUEsWUFBWSxFQUFFLEtBOUJoQjtBQStCRTtBQUNBa0IsTUFBQUEsUUFBUSxFQUFFLEtBaENaO0FBaUNFO0FBQ0F6QyxNQUFBQSxVQUFVLEVBQUU7QUFDVjBDLFFBQUFBLFdBQVcsRUFBRTtBQURILE9BbENkO0FBcUNFQyxNQUFBQSxhQUFhLEVBQUUsS0FyQ2pCO0FBc0NFO0FBQ0ExQyxNQUFBQSxLQUFLLEVBQUUsSUF2Q1Q7QUF3Q0U7QUFDQTJDLE1BQUFBLGFBQWEsRUFBRTtBQUNiQyxRQUFBQSxhQUFhLEVBQUUsQ0FBQyxPQUFEO0FBREYsT0F6Q2pCO0FBNENFekMsTUFBQUEsY0FBYyxFQUFFO0FBQ2QwQyxRQUFBQSxpQkFBaUIsRUFBRSxJQURMO0FBRWRDLFFBQUFBLFlBQVksRUFBRTtBQUNaQyxVQUFBQSxVQUFVLEVBQUV2RCxJQUFJLENBQUNlLE9BQUwsQ0FBYSxPQUFiLENBREE7QUFFWnlDLFVBQUFBLE1BQU0sRUFBRTtBQUZJO0FBRkEsT0E1Q2xCO0FBbURFO0FBQ0E7QUFDQTtBQUNBQyxNQUFBQSxTQUFTLEVBQUUsRUF0RGI7QUF1REU7QUFDQUMsTUFBQUEsZUFBZSxFQUFFLGFBeERuQjs7QUF5REVDLE1BQUFBLE9BQU8sQ0FBQ0MsSUFBRCxFQUFPQyxRQUFQLEVBQWlCO0FBQ3RCLGVBQU83RCxJQUFJLENBQUM4RCxJQUFMLENBQVVELFFBQVYsRUFBb0JELElBQXBCLENBQVA7QUFDRDs7QUEzREgsS0FEWSxFQThEWmxDLE1BOURZLENBQWQsQ0FsQnVCLENBbUZ2Qjs7QUFDQSxTQUFLRyxNQUFMLEdBQWMsS0FBS0gsTUFBTCxDQUFZRyxNQUExQjtBQUVBLFFBQUksQ0FBQzFCLENBQUMsQ0FBQzRELFVBQUYsQ0FBYSxLQUFLckMsTUFBTCxDQUFZK0IsU0FBWixDQUFzQk8sUUFBbkMsQ0FBTCxFQUNFLEtBQUt0QyxNQUFMLENBQVkrQixTQUFaLEdBQXdCaEQsVUFBVSxDQUFDd0QsZUFBWCxDQUEyQixLQUFLdkMsTUFBTCxDQUFZK0IsU0FBdkMsQ0FBeEIsQ0F2RnFCLENBeUZ2Qjs7QUFDQSxRQUFJdEQsQ0FBQyxDQUFDK0QsUUFBRixDQUFXLEtBQUt4QyxNQUFMLENBQVl5QixhQUF2QixDQUFKLEVBQTJDO0FBQ3pDLFdBQUssTUFBTSxDQUFDZ0IsR0FBRCxFQUFNQyxLQUFOLENBQVgsSUFBMkJDLE1BQU0sQ0FBQ0MsT0FBUCxDQUFlLEtBQUs1QyxNQUFMLENBQVl5QixhQUEzQixDQUEzQixFQUFzRTtBQUNwRTNDLFFBQUFBLEtBQUssQ0FBQzJELEdBQUQsQ0FBTCxHQUFhQyxLQUFiO0FBQ0Q7QUFDRjs7QUFFRC9ELElBQUFBLEtBQUssQ0FBQyx1QkFBRCxFQUEwQixLQUFLcUIsTUFBL0IsQ0FBTDtBQUVBLFNBQUtmLGNBQUwsR0FBc0IsS0FBS0EsY0FBTCxDQUFvQm9DLElBQXBCLENBQXlCLElBQXpCLENBQXRCO0FBQ0EsU0FBS3dCLGVBQUwsR0FBdUIsS0FBS0EsZUFBTCxDQUFxQnhCLElBQXJCLENBQTBCLElBQTFCLENBQXZCO0FBQ0EsU0FBS3lCLGNBQUwsR0FBc0IsS0FBS0EsY0FBTCxDQUFvQnpCLElBQXBCLENBQXlCLElBQXpCLENBQXRCO0FBQ0EsU0FBSzBCLGNBQUwsR0FBc0IsS0FBS0EsY0FBTCxDQUFvQjFCLElBQXBCLENBQXlCLElBQXpCLENBQXRCO0FBQ0EsU0FBS2xCLE1BQUwsR0FBYyxLQUFLQSxNQUFMLENBQVlrQixJQUFaLENBQWlCLElBQWpCLENBQWQ7QUFDQSxTQUFLMkIsU0FBTCxHQUFpQixLQUFLQSxTQUFMLENBQWUzQixJQUFmLENBQW9CLElBQXBCLENBQWpCO0FBQ0EsU0FBS0gsSUFBTCxHQUFZLEtBQUtBLElBQUwsQ0FBVUcsSUFBVixDQUFlLElBQWYsQ0FBWjtBQUNELEdBMUdTLENBNEdWO0FBQ0E7OztBQUNBcEMsRUFBQUEsY0FBYyxDQUFDQyxJQUFELEVBQU8rRCxvQkFBb0IsR0FBRyxFQUE5QixFQUFrQztBQUM5QyxVQUFNQyxNQUFNLEdBQUd6RSxDQUFDLENBQUM0QixLQUFGLENBQVEsS0FBS0wsTUFBTCxDQUFZZixjQUFwQixFQUFvQ2dFLG9CQUFwQyxDQUFmOztBQUNBLFdBQU9oRSxjQUFjLENBQUNDLElBQUQsRUFBT2dFLE1BQVAsQ0FBckI7QUFDRCxHQWpIUyxDQW1IVjs7O0FBQ3FCLFFBQWZMLGVBQWUsQ0FBQ1YsUUFBRCxFQUFXO0FBQzlCLFFBQUljLG9CQUFvQixHQUFHLEVBQTNCOztBQUVBLFFBQUl4RSxDQUFDLENBQUMrRCxRQUFGLENBQVdMLFFBQVgsQ0FBSixFQUEwQjtBQUN4QmMsTUFBQUEsb0JBQW9CLEdBQUdkLFFBQVEsQ0FBQ2xELGNBQWhDO0FBQ0FrRCxNQUFBQSxRQUFRLEdBQUdBLFFBQVEsQ0FBQzdELElBQXBCO0FBQ0Q7O0FBRUQsVUFBTSxDQUFDaUMsSUFBRCxFQUFPNEMsSUFBUCxJQUFlN0UsSUFBSSxDQUFDOEUsVUFBTCxDQUFnQmpCLFFBQWhCLElBQ2pCLENBQUM3RCxJQUFJLENBQUMrRSxPQUFMLENBQWFsQixRQUFiLENBQUQsRUFBeUI3RCxJQUFJLENBQUNnRixRQUFMLENBQWNuQixRQUFkLENBQXpCLENBRGlCLEdBRWpCLENBQUMsS0FBS25DLE1BQUwsQ0FBWU0sS0FBWixDQUFrQkMsSUFBbkIsRUFBeUI0QixRQUF6QixDQUZKO0FBR0EsVUFBTW9CLEtBQUssR0FBRyxNQUFNM0UsUUFBUSxDQUMxQjJCLElBRDBCLEVBRTFCNEMsSUFGMEIsRUFHMUIsS0FBS25ELE1BQUwsQ0FBWU0sS0FBWixDQUFrQm5CLE9BQWxCLENBQTBCcUIsU0FIQSxDQUE1QjtBQUtBLFVBQU1nRCxRQUFRLEdBQUdsRixJQUFJLENBQUNlLE9BQUwsQ0FBYWtCLElBQWIsRUFBbUJnRCxLQUFLLENBQUNFLEdBQXpCLENBQWpCO0FBQ0EsV0FBTztBQUFFRCxNQUFBQSxRQUFGO0FBQVlELE1BQUFBLEtBQVo7QUFBbUJOLE1BQUFBO0FBQW5CLEtBQVA7QUFDRCxHQXRJUyxDQXdJVjtBQUNBOzs7QUFDb0IsUUFBZEgsY0FBYyxDQUFDSyxJQUFELEVBQU87QUFDekIsUUFBSTtBQUNGLFlBQU07QUFBRUssUUFBQUE7QUFBRixVQUFlLE1BQU0sS0FBS1gsZUFBTCxDQUFxQk0sSUFBckIsQ0FBM0I7QUFDQSxZQUFNTyxLQUFLLEdBQUcsTUFBTS9ELElBQUksQ0FBQzZELFFBQUQsQ0FBeEI7QUFDQSxVQUFJLENBQUNFLEtBQUssQ0FBQ0MsTUFBTixFQUFMLEVBQXFCLE1BQU0sSUFBSUMsS0FBSixDQUFXLEdBQUVKLFFBQVMsaUJBQXRCLENBQU47QUFDckIsYUFBTyxJQUFQO0FBQ0QsS0FMRCxDQUtFLE9BQU9qRSxHQUFQLEVBQVk7QUFDWlosTUFBQUEsS0FBSyxDQUFDLGdCQUFELEVBQW1CWSxHQUFuQixDQUFMO0FBQ0EsYUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFFbUIsUUFBZHdELGNBQWMsQ0FBQ2IsSUFBRCxFQUFPQyxRQUFQLEVBQWlCdEIsTUFBakIsRUFBeUI7QUFDM0MsUUFBSW9DLG9CQUFvQixHQUFHLEVBQTNCOztBQUVBLFFBQUl4RSxDQUFDLENBQUMrRCxRQUFGLENBQVdMLFFBQVgsQ0FBSixFQUEwQjtBQUN4QmMsTUFBQUEsb0JBQW9CLEdBQUdkLFFBQVEsQ0FBQ2xELGNBQWhDO0FBQ0FrRCxNQUFBQSxRQUFRLEdBQUdBLFFBQVEsQ0FBQzdELElBQXBCO0FBQ0Q7O0FBRUQsVUFBTXVGLE1BQU0sR0FBRyxLQUFLN0QsTUFBTCxDQUFZaUMsT0FBWixDQUFvQkMsSUFBcEIsRUFBMEJDLFFBQTFCLEVBQW9DdEIsTUFBcEMsQ0FBZjs7QUFDQSxRQUFJLENBQUMsS0FBS2IsTUFBTCxDQUFZSSxZQUFqQixFQUErQjtBQUM3QixZQUFNMEQsTUFBTSxHQUFHLE1BQU0sS0FBS2hCLGNBQUwsQ0FBb0JlLE1BQXBCLENBQXJCO0FBQ0EsVUFBSSxDQUFDQyxNQUFMLEVBQWE7QUFDZDs7QUFFRCxXQUFPLEtBQUszRCxNQUFMLENBQ0wwRCxNQURLLGtDQUdBaEQsTUFIQSxHQUlDcUIsSUFBSSxLQUFLLE1BQVQsR0FBa0IsRUFBbEIsR0FBdUI7QUFBRWxCLE1BQUFBLE1BQU0sRUFBRTtBQUFWLEtBSnhCLEdBTUxpQyxvQkFOSyxDQUFQO0FBUUQsR0E1S1MsQ0E4S1Y7QUFDQTtBQUNBOzs7QUFDWSxRQUFOOUMsTUFBTSxDQUFDZ0QsSUFBRCxFQUFPdEMsTUFBTSxHQUFHLEVBQWhCLEVBQW9CO0FBQzlCLFVBQU07QUFBRUosTUFBQUEsR0FBRjtBQUFPRyxNQUFBQTtBQUFQLFFBQXdCLEtBQUtaLE1BQUwsQ0FBWU0sS0FBWixDQUFrQm5CLE9BQWhEO0FBQ0EsVUFBTTtBQUFFcUUsTUFBQUEsUUFBRjtBQUFZRCxNQUFBQSxLQUFaO0FBQW1CTixNQUFBQTtBQUFuQixRQUNKLE1BQU0sS0FBS0osZUFBTCxDQUFxQk0sSUFBckIsQ0FEUjs7QUFFQSxRQUFJSSxLQUFLLENBQUNRLEdBQU4sS0FBYyxNQUFkLElBQXdCLENBQUN0RCxHQUE3QixFQUFrQztBQUNoQyxZQUFNdUQsR0FBRyxHQUFHLE1BQU1uRSxRQUFRLENBQUMyRCxRQUFELEVBQVcsTUFBWCxDQUExQjtBQUNBLGFBQU9RLEdBQVA7QUFDRDs7QUFFRCxVQUFNQyxVQUFVLEdBQUd4RCxHQUFHLElBQUlBLEdBQUcsQ0FBQzhDLEtBQUssQ0FBQ1EsR0FBUCxDQUFWLEdBQXdCdEQsR0FBRyxDQUFDOEMsS0FBSyxDQUFDUSxHQUFQLENBQTNCLEdBQXlDUixLQUFLLENBQUNRLEdBQWxFO0FBQ0EsVUFBTUcsUUFBUSxHQUFHdEQsWUFBWSxDQUFDcUQsVUFBRCxDQUE3QjtBQUNBLFFBQUksQ0FBQ0EsVUFBRCxJQUFlLENBQUNDLFFBQXBCLEVBQ0UsTUFBTSxJQUFJTixLQUFKLENBQ0gsOEJBQTZCTCxLQUFLLENBQUNRLEdBQUksa0JBRHBDLENBQU47O0FBSUYsUUFBSXRGLENBQUMsQ0FBQytELFFBQUYsQ0FBVyxLQUFLeEMsTUFBTCxDQUFZb0IsSUFBdkIsQ0FBSixFQUFrQztBQUNoQyxVQUNFLEtBQUtwQixNQUFMLENBQVlvQixJQUFaLENBQWlCWSxlQUFqQixJQUNBLEtBQUtoQyxNQUFMLENBQVlnQyxlQURaLElBRUEsS0FBS2hDLE1BQUwsQ0FBWW9CLElBQVosQ0FBaUJZLGVBQWpCLEtBQXFDLEtBQUtoQyxNQUFMLENBQVlnQyxlQUhuRCxFQUtFLE1BQU0sSUFBSTRCLEtBQUosQ0FDSCwwR0FBeUcsS0FBSzVELE1BQUwsQ0FBWW9CLElBQVosQ0FBaUJZLGVBQWdCLGtDQUFpQyxLQUFLaEMsTUFBTCxDQUFZZ0MsZUFBZ0IsRUFEcE0sQ0FBTjtBQUlGLFlBQU1aLElBQUksR0FBRyxJQUFJNUMsSUFBSixpQ0FBYyxLQUFLd0IsTUFBTCxDQUFZb0IsSUFBMUI7QUFBZ0MrQyxRQUFBQSxRQUFRLEVBQUV0RDtBQUExQyxTQUFiLENBVmdDLENBWWhDO0FBQ0E7O0FBQ0EsVUFDRXBDLENBQUMsQ0FBQytELFFBQUYsQ0FBVzNCLE1BQU0sQ0FBQ3VELElBQWxCLEtBQ0EzRixDQUFDLENBQUM0RixRQUFGLENBQVd4RCxNQUFNLENBQUN1RCxJQUFQLENBQVksS0FBS3BFLE1BQUwsQ0FBWWdDLGVBQXhCLENBQVgsQ0FGRixFQUlFbkIsTUFBTSxDQUFDeUQsTUFBUCxHQUFnQnpELE1BQU0sQ0FBQ3VELElBQVAsQ0FBWSxLQUFLcEUsTUFBTCxDQUFZZ0MsZUFBeEIsQ0FBaEI7QUFFRixVQUFJdkQsQ0FBQyxDQUFDNEYsUUFBRixDQUFXeEQsTUFBTSxDQUFDeUQsTUFBbEIsQ0FBSixFQUErQmxELElBQUksQ0FBQ21ELFNBQUwsQ0FBZTFELE1BQU0sQ0FBQ3lELE1BQXRCO0FBQ2hDOztBQUVELFVBQU1OLEdBQUcsR0FBRyxNQUFNekYsSUFBSSxDQUFDcUIsU0FBTCxDQUFlc0UsUUFBZixFQUF5QlYsUUFBekIsRUFBbUMzQyxNQUFuQyxDQUFsQixDQXZDOEIsQ0F3QzlCO0FBQ0E7QUFDQTs7QUFDQSxRQUFJLENBQUMsS0FBS2IsTUFBTCxDQUFZbEIsS0FBakIsRUFBd0IsT0FBT2tGLEdBQVA7QUFDeEIsVUFBTTlFLElBQUksR0FBRyxNQUFNLEtBQUtELGNBQUwsQ0FBb0IrRSxHQUFwQixFQUF5QmYsb0JBQXpCLENBQW5CO0FBQ0EsV0FBTy9ELElBQVA7QUFDRCxHQS9OUyxDQWlPVjs7O0FBQ2UsUUFBVDhELFNBQVMsQ0FBQ2IsUUFBRCxFQUFXdEIsTUFBTSxHQUFHLEVBQXBCLEVBQXdCMkQsaUJBQWlCLEdBQUcsRUFBNUMsRUFBZ0Q7QUFDN0QsVUFBTXZELE9BQU8scUJBQVF1RCxpQkFBUixDQUFiOztBQUVBLFFBQUlyQyxRQUFRLEtBQUssQ0FBQ2xCLE9BQU8sQ0FBQ3dELE9BQVQsSUFBb0IsQ0FBQ3hELE9BQU8sQ0FBQy9CLElBQTdCLElBQXFDLENBQUMrQixPQUFPLENBQUN5RCxJQUFuRCxDQUFaLEVBQXNFO0FBQ3BFLFlBQU0sQ0FBQ0QsT0FBRCxFQUFVdkYsSUFBVixFQUFnQndGLElBQWhCLElBQXdCLE1BQU10RixPQUFPLENBQUN1RixHQUFSLENBQ2xDLENBQUMsU0FBRCxFQUFZLE1BQVosRUFBb0IsTUFBcEIsRUFBNEJsRSxHQUE1QixDQUFpQ3lCLElBQUQsSUFDOUIsS0FBS2EsY0FBTCxDQUFvQmIsSUFBcEIsRUFBMEJDLFFBQTFCLEVBQW9DdEIsTUFBcEMsQ0FERixDQURrQyxDQUFwQztBQU1BLFVBQUk0RCxPQUFPLElBQUksQ0FBQ3hELE9BQU8sQ0FBQ3dELE9BQXhCLEVBQWlDeEQsT0FBTyxDQUFDd0QsT0FBUixHQUFrQkEsT0FBbEI7QUFDakMsVUFBSXZGLElBQUksSUFBSSxDQUFDK0IsT0FBTyxDQUFDL0IsSUFBckIsRUFBMkIrQixPQUFPLENBQUMvQixJQUFSLEdBQWVBLElBQWY7QUFDM0IsVUFBSXdGLElBQUksSUFBSSxDQUFDekQsT0FBTyxDQUFDeUQsSUFBckIsRUFBMkJ6RCxPQUFPLENBQUN5RCxJQUFSLEdBQWVBLElBQWY7QUFDNUI7O0FBRUQsUUFBSXpELE9BQU8sQ0FBQ3dELE9BQVIsSUFBbUIsS0FBS3pFLE1BQUwsQ0FBWXdCLGFBQW5DLEVBQ0VQLE9BQU8sQ0FBQ3dELE9BQVIsR0FBa0IsS0FBS3pFLE1BQUwsQ0FBWXdCLGFBQVosR0FBNEJQLE9BQU8sQ0FBQ3dELE9BQXRELENBaEIyRCxDQWtCN0Q7O0FBQ0EsUUFBSXhELE9BQU8sQ0FBQ3dELE9BQVosRUFBcUJ4RCxPQUFPLENBQUN3RCxPQUFSLEdBQWtCeEQsT0FBTyxDQUFDd0QsT0FBUixDQUFnQkcsSUFBaEIsRUFBbEI7QUFFckIsUUFBSSxLQUFLNUUsTUFBTCxDQUFZbkIsVUFBWixJQUEwQm9DLE9BQU8sQ0FBQy9CLElBQWxDLElBQTBDLENBQUMrQixPQUFPLENBQUN5RCxJQUF2RCxFQUNFO0FBQ0E7QUFDQTtBQUNBekQsTUFBQUEsT0FBTyxDQUFDeUQsSUFBUixHQUFlN0YsVUFBVSxDQUFDZ0csVUFBWCxDQUNiNUQsT0FBTyxDQUFDL0IsSUFESyxFQUViLEtBQUtjLE1BQUwsQ0FBWW5CLFVBRkMsQ0FBZixDQXpCMkQsQ0E4QjdEOztBQUNBLFFBQUksS0FBS21CLE1BQUwsQ0FBWXNCLFFBQWhCLEVBQTBCLE9BQU9MLE9BQU8sQ0FBQy9CLElBQWYsQ0EvQm1DLENBaUM3RDtBQUNBO0FBQ0E7O0FBQ0EsUUFDRSxDQUFDLENBQUNULENBQUMsQ0FBQzRGLFFBQUYsQ0FBV3BELE9BQU8sQ0FBQ3dELE9BQW5CLENBQUQsSUFBZ0NoRyxDQUFDLENBQUNxRyxPQUFGLENBQVVyRyxDQUFDLENBQUNtRyxJQUFGLENBQU8zRCxPQUFPLENBQUN3RCxPQUFmLENBQVYsQ0FBakMsTUFDQyxDQUFDaEcsQ0FBQyxDQUFDNEYsUUFBRixDQUFXcEQsT0FBTyxDQUFDeUQsSUFBbkIsQ0FBRCxJQUE2QmpHLENBQUMsQ0FBQ3FHLE9BQUYsQ0FBVXJHLENBQUMsQ0FBQ21HLElBQUYsQ0FBTzNELE9BQU8sQ0FBQ3lELElBQWYsQ0FBVixDQUQ5QixNQUVDLENBQUNqRyxDQUFDLENBQUM0RixRQUFGLENBQVdwRCxPQUFPLENBQUMvQixJQUFuQixDQUFELElBQTZCVCxDQUFDLENBQUNxRyxPQUFGLENBQVVyRyxDQUFDLENBQUNtRyxJQUFGLENBQU8zRCxPQUFPLENBQUMvQixJQUFmLENBQVYsQ0FGOUIsS0FHQVQsQ0FBQyxDQUFDcUcsT0FBRixDQUFVN0QsT0FBTyxDQUFDOEQsV0FBbEIsQ0FKRixFQU1FLE1BQU0sSUFBSW5CLEtBQUosQ0FDSCx3SEFBdUh6QixRQUFTLFVBRDdILENBQU47QUFJRixXQUFPbEIsT0FBUDtBQUNEOztBQUVTLFFBQUpDLElBQUksQ0FBQy9CLE9BQU8sR0FBRyxFQUFYLEVBQWU7QUFDdkJBLElBQUFBLE9BQU87QUFDTGdELE1BQUFBLFFBQVEsRUFBRSxFQURMO0FBRUxsQixNQUFBQSxPQUFPLEVBQUUsRUFGSjtBQUdMSixNQUFBQSxNQUFNLEVBQUU7QUFISCxPQUlGMUIsT0FKRSxDQUFQO0FBT0EsUUFBSTtBQUFFZ0QsTUFBQUEsUUFBRjtBQUFZbEIsTUFBQUEsT0FBWjtBQUFxQkosTUFBQUE7QUFBckIsUUFBZ0MxQixPQUFwQztBQUVBLFVBQU00RixXQUFXLEdBQ2Y5RCxPQUFPLENBQUM4RCxXQUFSLElBQXVCLEtBQUsvRSxNQUFMLENBQVlpQixPQUFaLENBQW9COEQsV0FBM0MsSUFBMEQsRUFENUQ7QUFHQTlELElBQUFBLE9BQU8sR0FBR3hDLENBQUMsQ0FBQ3VHLFlBQUYsQ0FDUixFQURRLEVBRVJ2RyxDQUFDLENBQUN3RyxJQUFGLENBQU9oRSxPQUFQLEVBQWdCLGFBQWhCLENBRlEsRUFHUnhDLENBQUMsQ0FBQ3dHLElBQUYsQ0FBTyxLQUFLakYsTUFBTCxDQUFZaUIsT0FBbkIsRUFBNEIsYUFBNUIsQ0FIUSxDQUFWO0FBS0FKLElBQUFBLE1BQU0sR0FBR3BDLENBQUMsQ0FBQ3VHLFlBQUYsQ0FBZSxFQUFmLEVBQW1CLEtBQUtoRixNQUFMLENBQVlNLEtBQVosQ0FBa0JPLE1BQXJDLEVBQTZDQSxNQUE3QyxDQUFUO0FBRUEsUUFBSWtFLFdBQUosRUFBaUI5RCxPQUFPLENBQUM4RCxXQUFSLEdBQXNCQSxXQUF0QjtBQUVqQnBHLElBQUFBLEtBQUssQ0FBQyxhQUFELEVBQWdCd0QsUUFBaEIsQ0FBTDtBQUNBeEQsSUFBQUEsS0FBSyxDQUFDLFlBQUQsRUFBZXNDLE9BQWYsQ0FBTDtBQUNBdEMsSUFBQUEsS0FBSyxDQUFDLHdCQUFELEVBQTJCZ0UsTUFBTSxDQUFDdUMsSUFBUCxDQUFZckUsTUFBWixDQUEzQixDQUFMLENBeEJ1QixDQTBCdkI7O0FBQ0EsVUFBTXNFLE1BQU0sR0FBRyxNQUFNLEtBQUtuQyxTQUFMLENBQWViLFFBQWYsRUFBeUJ0QixNQUF6QixFQUFpQ0ksT0FBakMsQ0FBckIsQ0EzQnVCLENBNkJ2Qjs7QUFDQTBCLElBQUFBLE1BQU0sQ0FBQ3lDLE1BQVAsQ0FBY25FLE9BQWQsRUFBdUJrRSxNQUF2Qjs7QUFFQSxRQUFJLEtBQUtuRixNQUFMLENBQVltQixPQUFoQixFQUF5QjtBQUN2QnhDLE1BQUFBLEtBQUssQ0FBQyx3Q0FBRCxDQUFMO0FBQ0EsYUFBT0YsQ0FBQyxDQUFDK0QsUUFBRixDQUFXLEtBQUt4QyxNQUFMLENBQVltQixPQUF2QixJQUNIbkMsWUFBWSxDQUFDaUMsT0FBRCxFQUFVLEtBQUtqQixNQUFMLENBQVltQixPQUF0QixDQURULEdBRUhuQyxZQUFZLENBQUNpQyxPQUFELENBRmhCO0FBR0Q7O0FBRUQsUUFBSSxDQUFDLEtBQUtqQixNQUFMLENBQVlrQixJQUFqQixFQUF1QjtBQUNyQnZDLE1BQUFBLEtBQUssQ0FBQyxnREFBRCxDQUFMLENBRHFCLENBRXJCO0FBQ0E7O0FBQ0EsV0FBS3FCLE1BQUwsQ0FBWStCLFNBQVosR0FBd0JoRCxVQUFVLENBQUN3RCxlQUFYLENBQTJCO0FBQ2pEOEMsUUFBQUEsYUFBYSxFQUFFO0FBRGtDLE9BQTNCLENBQXhCO0FBR0Q7O0FBRUQsVUFBTXJCLEdBQUcsR0FBRyxNQUFNLEtBQUtoRSxNQUFMLENBQVkrQixTQUFaLENBQXNCTyxRQUF0QixDQUErQnJCLE9BQS9CLENBQWxCO0FBQ0F0QyxJQUFBQSxLQUFLLENBQUMsY0FBRCxDQUFMO0FBQ0FxRixJQUFBQSxHQUFHLENBQUNzQixlQUFKLEdBQXNCckUsT0FBdEI7QUFDQSxXQUFPK0MsR0FBUDtBQUNEOztBQXZVUzs7QUEwVVp1QixNQUFNLENBQUNDLE9BQVAsR0FBaUIxRixLQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHByb2Nlc3MgPSByZXF1aXJlKCdwcm9jZXNzJyk7XG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3QgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuY29uc3QgSTE4TiA9IHJlcXVpcmUoJ0BsYWRqcy9pMThuJyk7XG5jb25zdCBfID0gcmVxdWlyZSgnbG9kYXNoJyk7XG5jb25zdCBjb25zb2xpZGF0ZSA9IHJlcXVpcmUoJ2NvbnNvbGlkYXRlJyk7XG5jb25zdCBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ2VtYWlsLXRlbXBsYXRlcycpO1xuY29uc3QgZ2V0UGF0aHMgPSByZXF1aXJlKCdnZXQtcGF0aHMnKTtcbmNvbnN0IGh0bWxUb1RleHQgPSByZXF1aXJlKCdodG1sLXRvLXRleHQnKTtcbmNvbnN0IGp1aWNlID0gcmVxdWlyZSgnanVpY2UnKTtcbmNvbnN0IG5vZGVtYWlsZXIgPSByZXF1aXJlKCdub2RlbWFpbGVyJyk7XG5jb25zdCBwcmV2aWV3RW1haWwgPSByZXF1aXJlKCdwcmV2aWV3LWVtYWlsJyk7XG5cbi8vIHByb21pc2UgdmVyc2lvbiBvZiBganVpY2UuanVpY2VSZXNvdXJjZXNgXG5jb25zdCBqdWljZVJlc291cmNlcyA9IChodG1sLCBvcHRpb25zKSA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAganVpY2UuanVpY2VSZXNvdXJjZXMoaHRtbCwgb3B0aW9ucywgKGVyciwgaHRtbCkgPT4ge1xuICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgcmVzb2x2ZShodG1sKTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5jb25zdCBlbnYgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgJ2RldmVsb3BtZW50JykudG9Mb3dlckNhc2UoKTtcbmNvbnN0IHN0YXQgPSB1dGlsLnByb21pc2lmeShmcy5zdGF0KTtcbmNvbnN0IHJlYWRGaWxlID0gdXRpbC5wcm9taXNpZnkoZnMucmVhZEZpbGUpO1xuXG5jbGFzcyBFbWFpbCB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZyA9IHt9KSB7XG4gICAgZGVidWcoJ2NvbmZpZyBwYXNzZWQgJU8nLCBjb25maWcpO1xuXG4gICAgLy8gMi54IGJhY2t3YXJkcyBjb21wYXRpYmxlIHN1cHBvcnRcbiAgICBpZiAoY29uZmlnLmp1aWNlT3B0aW9ucykge1xuICAgICAgY29uZmlnLmp1aWNlUmVzb3VyY2VzID0gY29uZmlnLmp1aWNlT3B0aW9ucztcbiAgICAgIGRlbGV0ZSBjb25maWcuanVpY2VPcHRpb25zO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuZGlzYWJsZUp1aWNlKSB7XG4gICAgICBjb25maWcuanVpY2UgPSBmYWxzZTtcbiAgICAgIGRlbGV0ZSBjb25maWcuZGlzYWJsZUp1aWNlO1xuICAgIH1cblxuICAgIGlmIChjb25maWcucmVuZGVyKSB7XG4gICAgICBjb25maWcuY3VzdG9tUmVuZGVyID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZyA9IF8ubWVyZ2UoXG4gICAgICB7XG4gICAgICAgIHZpZXdzOiB7XG4gICAgICAgICAgLy8gZGlyZWN0b3J5IHdoZXJlIGVtYWlsIHRlbXBsYXRlcyByZXNpZGVcbiAgICAgICAgICByb290OiBwYXRoLnJlc29sdmUoJ2VtYWlscycpLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIC8vIGRlZmF1bHQgZmlsZSBleHRlbnNpb24gZm9yIHRlbXBsYXRlXG4gICAgICAgICAgICBleHRlbnNpb246ICdwdWcnLFxuICAgICAgICAgICAgbWFwOiB7XG4gICAgICAgICAgICAgIGhiczogJ2hhbmRsZWJhcnMnLFxuICAgICAgICAgICAgICBuams6ICdudW5qdWNrcydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbmdpbmVTb3VyY2U6IGNvbnNvbGlkYXRlXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBsb2NhbHMgdG8gcGFzcyB0byB0ZW1wbGF0ZXMgZm9yIHJlbmRlcmluZ1xuICAgICAgICAgIGxvY2Fsczoge1xuICAgICAgICAgICAgLy8gdHVybiBvbiBjYWNoaW5nIGZvciBub24tZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzXG4gICAgICAgICAgICBjYWNoZTogIVsnZGV2ZWxvcG1lbnQnLCAndGVzdCddLmluY2x1ZGVzKGVudiksXG4gICAgICAgICAgICAvLyBwcmV0dHkgaXMgYXV0b21hdGljYWxseSBzZXQgdG8gYGZhbHNlYCBmb3Igc3ViamVjdC90ZXh0XG4gICAgICAgICAgICBwcmV0dHk6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC8vIDxodHRwczovL25vZGVtYWlsZXIuY29tL21lc3NhZ2UvPlxuICAgICAgICBtZXNzYWdlOiB7fSxcbiAgICAgICAgc2VuZDogIVsnZGV2ZWxvcG1lbnQnLCAndGVzdCddLmluY2x1ZGVzKGVudiksXG4gICAgICAgIHByZXZpZXc6IGVudiA9PT0gJ2RldmVsb3BtZW50JyxcbiAgICAgICAgLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS9sYWRqcy9pMThuPlxuICAgICAgICAvLyBzZXQgdG8gYW4gb2JqZWN0IHRvIGNvbmZpZ3VyZSBhbmQgZW5hYmxlIGl0XG4gICAgICAgIGkxOG46IGZhbHNlLFxuICAgICAgICAvLyBwYXNzIGEgY3VzdG9tIHJlbmRlciBmdW5jdGlvbiBpZiBuZWNlc3NhcnlcbiAgICAgICAgcmVuZGVyOiB0aGlzLnJlbmRlci5iaW5kKHRoaXMpLFxuICAgICAgICBjdXN0b21SZW5kZXI6IGZhbHNlLFxuICAgICAgICAvLyBmb3JjZSB0ZXh0LW9ubHkgcmVuZGVyaW5nIG9mIHRlbXBsYXRlIChkaXNyZWdhcmRzIHRlbXBsYXRlIGZvbGRlcilcbiAgICAgICAgdGV4dE9ubHk6IGZhbHNlLFxuICAgICAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL3dlcms4NS9ub2RlLWh0bWwtdG8tdGV4dD5cbiAgICAgICAgaHRtbFRvVGV4dDoge1xuICAgICAgICAgIGlnbm9yZUltYWdlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHN1YmplY3RQcmVmaXg6IGZhbHNlLFxuICAgICAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL0F1dG9tYXR0aWMvanVpY2U+XG4gICAgICAgIGp1aWNlOiB0cnVlLFxuICAgICAgICAvLyBPdmVycmlkZSBqdWljZSBnbG9iYWwgc2V0dGluZ3MgPGh0dHBzOi8vZ2l0aHViLmNvbS9BdXRvbWF0dGljL2p1aWNlI2p1aWNlY29kZWJsb2Nrc3M+XG4gICAgICAgIGp1aWNlU2V0dGluZ3M6IHtcbiAgICAgICAgICB0YWJsZUVsZW1lbnRzOiBbJ1RBQkxFJ11cbiAgICAgICAgfSxcbiAgICAgICAganVpY2VSZXNvdXJjZXM6IHtcbiAgICAgICAgICBwcmVzZXJ2ZUltcG9ydGFudDogdHJ1ZSxcbiAgICAgICAgICB3ZWJSZXNvdXJjZXM6IHtcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHBhdGgucmVzb2x2ZSgnYnVpbGQnKSxcbiAgICAgICAgICAgIGltYWdlczogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC8vIHBhc3MgYSB0cmFuc3BvcnQgY29uZmlndXJhdGlvbiBvYmplY3Qgb3IgYSB0cmFuc3BvcnQgaW5zdGFuY2VcbiAgICAgICAgLy8gKGUuZy4gYW4gaW5zdGFuY2UgaXMgY3JlYXRlZCB2aWEgYG5vZGVtYWlsZXIuY3JlYXRlVHJhbnNwb3J0YClcbiAgICAgICAgLy8gPGh0dHBzOi8vbm9kZW1haWxlci5jb20vdHJhbnNwb3J0cy8+XG4gICAgICAgIHRyYW5zcG9ydDoge30sXG4gICAgICAgIC8vIGxhc3QgbG9jYWxlIGZpZWxkIG5hbWUgKGFsc28gdXNlZCBieSBAbGFkanMvaTE4bilcbiAgICAgICAgbGFzdExvY2FsZUZpZWxkOiAnbGFzdF9sb2NhbGUnLFxuICAgICAgICBnZXRQYXRoKHR5cGUsIHRlbXBsYXRlKSB7XG4gICAgICAgICAgcmV0dXJuIHBhdGguam9pbih0ZW1wbGF0ZSwgdHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjb25maWdcbiAgICApO1xuXG4gICAgLy8gb3ZlcnJpZGUgZXhpc3RpbmcgbWV0aG9kXG4gICAgdGhpcy5yZW5kZXIgPSB0aGlzLmNvbmZpZy5yZW5kZXI7XG5cbiAgICBpZiAoIV8uaXNGdW5jdGlvbih0aGlzLmNvbmZpZy50cmFuc3BvcnQuc2VuZE1haWwpKVxuICAgICAgdGhpcy5jb25maWcudHJhbnNwb3J0ID0gbm9kZW1haWxlci5jcmVhdGVUcmFuc3BvcnQodGhpcy5jb25maWcudHJhbnNwb3J0KTtcblxuICAgIC8vIE92ZXJyaWRlIGp1aWNlIGdsb2JhbCBzZXR0aW5ncyBodHRwczovL2dpdGh1Yi5jb20vQXV0b21hdHRpYy9qdWljZSNqdWljZWNvZGVibG9ja3NcbiAgICBpZiAoXy5pc09iamVjdCh0aGlzLmNvbmZpZy5qdWljZVNldHRpbmdzKSkge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5jb25maWcuanVpY2VTZXR0aW5ncykpIHtcbiAgICAgICAganVpY2Vba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGRlYnVnKCd0cmFuc2Zvcm1lZCBjb25maWcgJU8nLCB0aGlzLmNvbmZpZyk7XG5cbiAgICB0aGlzLmp1aWNlUmVzb3VyY2VzID0gdGhpcy5qdWljZVJlc291cmNlcy5iaW5kKHRoaXMpO1xuICAgIHRoaXMuZ2V0VGVtcGxhdGVQYXRoID0gdGhpcy5nZXRUZW1wbGF0ZVBhdGguYmluZCh0aGlzKTtcbiAgICB0aGlzLnRlbXBsYXRlRXhpc3RzID0gdGhpcy50ZW1wbGF0ZUV4aXN0cy5iaW5kKHRoaXMpO1xuICAgIHRoaXMuY2hlY2tBbmRSZW5kZXIgPSB0aGlzLmNoZWNrQW5kUmVuZGVyLmJpbmQodGhpcyk7XG4gICAgdGhpcy5yZW5kZXIgPSB0aGlzLnJlbmRlci5iaW5kKHRoaXMpO1xuICAgIHRoaXMucmVuZGVyQWxsID0gdGhpcy5yZW5kZXJBbGwuYmluZCh0aGlzKTtcbiAgICB0aGlzLnNlbmQgPSB0aGlzLnNlbmQuYmluZCh0aGlzKTtcbiAgfVxuXG4gIC8vIHNob3J0aGFuZCB1c2Ugb2YgYGp1aWNlUmVzb3VyY2VzYCB3aXRoIHRoZSBjb25maWdcbiAgLy8gKG1haW5seSBmb3IgY3VzdG9tIHJlbmRlcnMgbGlrZSBmcm9tIGEgZGF0YWJhc2UpXG4gIGp1aWNlUmVzb3VyY2VzKGh0bWwsIGp1aWNlUmVuZGVyUmVzb3VyY2VzID0ge30pIHtcbiAgICBjb25zdCBqdWljZVIgPSBfLm1lcmdlKHRoaXMuY29uZmlnLmp1aWNlUmVzb3VyY2VzLCBqdWljZVJlbmRlclJlc291cmNlcyk7XG4gICAgcmV0dXJuIGp1aWNlUmVzb3VyY2VzKGh0bWwsIGp1aWNlUik7XG4gIH1cblxuICAvLyBhIHNpbXBsZSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBnZXRzIHRoZSBhY3R1YWwgZmlsZSBwYXRoIGZvciB0aGUgdGVtcGxhdGVcbiAgYXN5bmMgZ2V0VGVtcGxhdGVQYXRoKHRlbXBsYXRlKSB7XG4gICAgbGV0IGp1aWNlUmVuZGVyUmVzb3VyY2VzID0ge307XG5cbiAgICBpZiAoXy5pc09iamVjdCh0ZW1wbGF0ZSkpIHtcbiAgICAgIGp1aWNlUmVuZGVyUmVzb3VyY2VzID0gdGVtcGxhdGUuanVpY2VSZXNvdXJjZXM7XG4gICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnBhdGg7XG4gICAgfVxuXG4gICAgY29uc3QgW3Jvb3QsIHZpZXddID0gcGF0aC5pc0Fic29sdXRlKHRlbXBsYXRlKVxuICAgICAgPyBbcGF0aC5kaXJuYW1lKHRlbXBsYXRlKSwgcGF0aC5iYXNlbmFtZSh0ZW1wbGF0ZSldXG4gICAgICA6IFt0aGlzLmNvbmZpZy52aWV3cy5yb290LCB0ZW1wbGF0ZV07XG4gICAgY29uc3QgcGF0aHMgPSBhd2FpdCBnZXRQYXRocyhcbiAgICAgIHJvb3QsXG4gICAgICB2aWV3LFxuICAgICAgdGhpcy5jb25maWcudmlld3Mub3B0aW9ucy5leHRlbnNpb25cbiAgICApO1xuICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKHJvb3QsIHBhdGhzLnJlbCk7XG4gICAgcmV0dXJuIHsgZmlsZVBhdGgsIHBhdGhzLCBqdWljZVJlbmRlclJlc291cmNlcyB9O1xuICB9XG5cbiAgLy8gcmV0dXJucyB0cnVlIG9yIGZhbHNlIGlmIGEgdGVtcGxhdGUgZXhpc3RzXG4gIC8vICh1c2VzIHNhbWUgbG9vay11cCBhcHByb2FjaCBhcyBgcmVuZGVyYCBmdW5jdGlvbilcbiAgYXN5bmMgdGVtcGxhdGVFeGlzdHModmlldykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGZpbGVQYXRoIH0gPSBhd2FpdCB0aGlzLmdldFRlbXBsYXRlUGF0aCh2aWV3KTtcbiAgICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgc3RhdChmaWxlUGF0aCk7XG4gICAgICBpZiAoIXN0YXRzLmlzRmlsZSgpKSB0aHJvdyBuZXcgRXJyb3IoYCR7ZmlsZVBhdGh9IHdhcyBub3QgYSBmaWxlYCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGRlYnVnKCd0ZW1wbGF0ZUV4aXN0cycsIGVycik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2hlY2tBbmRSZW5kZXIodHlwZSwgdGVtcGxhdGUsIGxvY2Fscykge1xuICAgIGxldCBqdWljZVJlbmRlclJlc291cmNlcyA9IHt9O1xuXG4gICAgaWYgKF8uaXNPYmplY3QodGVtcGxhdGUpKSB7XG4gICAgICBqdWljZVJlbmRlclJlc291cmNlcyA9IHRlbXBsYXRlLmp1aWNlUmVzb3VyY2VzO1xuICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5wYXRoO1xuICAgIH1cblxuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuY29uZmlnLmdldFBhdGgodHlwZSwgdGVtcGxhdGUsIGxvY2Fscyk7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5jdXN0b21SZW5kZXIpIHtcbiAgICAgIGNvbnN0IGV4aXN0cyA9IGF3YWl0IHRoaXMudGVtcGxhdGVFeGlzdHMoc3RyaW5nKTtcbiAgICAgIGlmICghZXhpc3RzKSByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmVuZGVyKFxuICAgICAgc3RyaW5nLFxuICAgICAge1xuICAgICAgICAuLi5sb2NhbHMsXG4gICAgICAgIC4uLih0eXBlID09PSAnaHRtbCcgPyB7fSA6IHsgcHJldHR5OiBmYWxzZSB9KVxuICAgICAgfSxcbiAgICAgIGp1aWNlUmVuZGVyUmVzb3VyY2VzXG4gICAgKTtcbiAgfVxuXG4gIC8vIHByb21pc2UgdmVyc2lvbiBvZiBjb25zb2xpZGF0ZSdzIHJlbmRlclxuICAvLyBpbnNwaXJlZCBieSBrb2Etdmlld3MgYW5kIHJlLXVzZXMgdGhlIHNhbWUgY29uZmlnXG4gIC8vIDxodHRwczovL2dpdGh1Yi5jb20vcXVlY2tlenova29hLXZpZXdzPlxuICBhc3luYyByZW5kZXIodmlldywgbG9jYWxzID0ge30pIHtcbiAgICBjb25zdCB7IG1hcCwgZW5naW5lU291cmNlIH0gPSB0aGlzLmNvbmZpZy52aWV3cy5vcHRpb25zO1xuICAgIGNvbnN0IHsgZmlsZVBhdGgsIHBhdGhzLCBqdWljZVJlbmRlclJlc291cmNlcyB9ID1cbiAgICAgIGF3YWl0IHRoaXMuZ2V0VGVtcGxhdGVQYXRoKHZpZXcpO1xuICAgIGlmIChwYXRocy5leHQgPT09ICdodG1sJyAmJiAhbWFwKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCByZWFkRmlsZShmaWxlUGF0aCwgJ3V0ZjgnKTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgY29uc3QgZW5naW5lTmFtZSA9IG1hcCAmJiBtYXBbcGF0aHMuZXh0XSA/IG1hcFtwYXRocy5leHRdIDogcGF0aHMuZXh0O1xuICAgIGNvbnN0IHJlbmRlckZuID0gZW5naW5lU291cmNlW2VuZ2luZU5hbWVdO1xuICAgIGlmICghZW5naW5lTmFtZSB8fCAhcmVuZGVyRm4pXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBFbmdpbmUgbm90IGZvdW5kIGZvciB0aGUgXCIuJHtwYXRocy5leHR9XCIgZmlsZSBleHRlbnNpb25gXG4gICAgICApO1xuXG4gICAgaWYgKF8uaXNPYmplY3QodGhpcy5jb25maWcuaTE4bikpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5jb25maWcuaTE4bi5sYXN0TG9jYWxlRmllbGQgJiZcbiAgICAgICAgdGhpcy5jb25maWcubGFzdExvY2FsZUZpZWxkICYmXG4gICAgICAgIHRoaXMuY29uZmlnLmkxOG4ubGFzdExvY2FsZUZpZWxkICE9PSB0aGlzLmNvbmZpZy5sYXN0TG9jYWxlRmllbGRcbiAgICAgIClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBUaGUgJ2xhc3RMb2NhbGVGaWVsZCcgKFN0cmluZykgb3B0aW9uIGZvciBAbGFkanMvaTE4biBhbmQgZW1haWwtdGVtcGxhdGVzIGRvIG5vdCBtYXRjaCwgaTE4biB2YWx1ZSB3YXMgJHt0aGlzLmNvbmZpZy5pMThuLmxhc3RMb2NhbGVGaWVsZH0gYW5kIGVtYWlsLXRlbXBsYXRlcyB2YWx1ZSB3YXMgJHt0aGlzLmNvbmZpZy5sYXN0TG9jYWxlRmllbGR9YFxuICAgICAgICApO1xuXG4gICAgICBjb25zdCBpMThuID0gbmV3IEkxOE4oeyAuLi50aGlzLmNvbmZpZy5pMThuLCByZWdpc3RlcjogbG9jYWxzIH0pO1xuXG4gICAgICAvLyBzdXBwb3J0IGBsb2NhbHMudXNlci5sYXN0X2xvY2FsZWAgKHZhcmlhYmxlIGJhc2VkIG5hbWUgbGFzdExvY2FsZUZpZWxkKVxuICAgICAgLy8gKGUuZy4gZm9yIDxodHRwczovL2xhZC5qcy5vcmc+KVxuICAgICAgaWYgKFxuICAgICAgICBfLmlzT2JqZWN0KGxvY2Fscy51c2VyKSAmJlxuICAgICAgICBfLmlzU3RyaW5nKGxvY2Fscy51c2VyW3RoaXMuY29uZmlnLmxhc3RMb2NhbGVGaWVsZF0pXG4gICAgICApXG4gICAgICAgIGxvY2Fscy5sb2NhbGUgPSBsb2NhbHMudXNlclt0aGlzLmNvbmZpZy5sYXN0TG9jYWxlRmllbGRdO1xuXG4gICAgICBpZiAoXy5pc1N0cmluZyhsb2NhbHMubG9jYWxlKSkgaTE4bi5zZXRMb2NhbGUobG9jYWxzLmxvY2FsZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdXRpbC5wcm9taXNpZnkocmVuZGVyRm4pKGZpbGVQYXRoLCBsb2NhbHMpO1xuICAgIC8vIHRyYW5zZm9ybSB0aGUgaHRtbCB3aXRoIGp1aWNlIHVzaW5nIHJlbW90ZSBwYXRoc1xuICAgIC8vIGdvb2dsZSBub3cgc3VwcG9ydHMgbWVkaWEgcXVlcmllc1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2dtYWlsL2Rlc2lnbi9yZWZlcmVuY2Uvc3VwcG9ydGVkX2Nzc1xuICAgIGlmICghdGhpcy5jb25maWcuanVpY2UpIHJldHVybiByZXM7XG4gICAgY29uc3QgaHRtbCA9IGF3YWl0IHRoaXMuanVpY2VSZXNvdXJjZXMocmVzLCBqdWljZVJlbmRlclJlc291cmNlcyk7XG4gICAgcmV0dXJuIGh0bWw7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICBhc3luYyByZW5kZXJBbGwodGVtcGxhdGUsIGxvY2FscyA9IHt9LCBub2RlbWFpbGVyTWVzc2FnZSA9IHt9KSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHsgLi4ubm9kZW1haWxlck1lc3NhZ2UgfTtcblxuICAgIGlmICh0ZW1wbGF0ZSAmJiAoIW1lc3NhZ2Uuc3ViamVjdCB8fCAhbWVzc2FnZS5odG1sIHx8ICFtZXNzYWdlLnRleHQpKSB7XG4gICAgICBjb25zdCBbc3ViamVjdCwgaHRtbCwgdGV4dF0gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgWydzdWJqZWN0JywgJ2h0bWwnLCAndGV4dCddLm1hcCgodHlwZSkgPT5cbiAgICAgICAgICB0aGlzLmNoZWNrQW5kUmVuZGVyKHR5cGUsIHRlbXBsYXRlLCBsb2NhbHMpXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIGlmIChzdWJqZWN0ICYmICFtZXNzYWdlLnN1YmplY3QpIG1lc3NhZ2Uuc3ViamVjdCA9IHN1YmplY3Q7XG4gICAgICBpZiAoaHRtbCAmJiAhbWVzc2FnZS5odG1sKSBtZXNzYWdlLmh0bWwgPSBodG1sO1xuICAgICAgaWYgKHRleHQgJiYgIW1lc3NhZ2UudGV4dCkgbWVzc2FnZS50ZXh0ID0gdGV4dDtcbiAgICB9XG5cbiAgICBpZiAobWVzc2FnZS5zdWJqZWN0ICYmIHRoaXMuY29uZmlnLnN1YmplY3RQcmVmaXgpXG4gICAgICBtZXNzYWdlLnN1YmplY3QgPSB0aGlzLmNvbmZpZy5zdWJqZWN0UHJlZml4ICsgbWVzc2FnZS5zdWJqZWN0O1xuXG4gICAgLy8gdHJpbSBzdWJqZWN0XG4gICAgaWYgKG1lc3NhZ2Uuc3ViamVjdCkgbWVzc2FnZS5zdWJqZWN0ID0gbWVzc2FnZS5zdWJqZWN0LnRyaW0oKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5odG1sVG9UZXh0ICYmIG1lc3NhZ2UuaHRtbCAmJiAhbWVzc2FnZS50ZXh0KVxuICAgICAgLy8gd2UnZCB1c2Ugbm9kZW1haWxlci1odG1sLXRvLXRleHQgcGx1Z2luXG4gICAgICAvLyBidXQgd2UgcmVhbGx5IGRvbid0IG5lZWQgdG8gc3VwcG9ydCBjaWRcbiAgICAgIC8vIDxodHRwczovL2dpdGh1Yi5jb20vYW5kcmlzOS9ub2RlbWFpbGVyLWh0bWwtdG8tdGV4dD5cbiAgICAgIG1lc3NhZ2UudGV4dCA9IGh0bWxUb1RleHQuZnJvbVN0cmluZyhcbiAgICAgICAgbWVzc2FnZS5odG1sLFxuICAgICAgICB0aGlzLmNvbmZpZy5odG1sVG9UZXh0XG4gICAgICApO1xuXG4gICAgLy8gaWYgd2Ugb25seSB3YW50IGEgdGV4dC1iYXNlZCB2ZXJzaW9uIG9mIHRoZSBlbWFpbFxuICAgIGlmICh0aGlzLmNvbmZpZy50ZXh0T25seSkgZGVsZXRlIG1lc3NhZ2UuaHRtbDtcblxuICAgIC8vIGlmIG5vIHN1YmplY3QsIGh0bWwsIG9yIHRleHQgY29udGVudCBleGlzdHMgdGhlbiB3ZSBzaG91bGRcbiAgICAvLyB0aHJvdyBhbiBlcnJvciB0aGF0IHNheXMgYXQgbGVhc3Qgb25lIG11c3QgYmUgZm91bmRcbiAgICAvLyBvdGhlcndpc2UgdGhlIGVtYWlsIHdvdWxkIGJlIGJsYW5rIChkZWZlYXRzIHB1cnBvc2Ugb2YgZW1haWwtdGVtcGxhdGVzKVxuICAgIGlmIChcbiAgICAgICghXy5pc1N0cmluZyhtZXNzYWdlLnN1YmplY3QpIHx8IF8uaXNFbXB0eShfLnRyaW0obWVzc2FnZS5zdWJqZWN0KSkpICYmXG4gICAgICAoIV8uaXNTdHJpbmcobWVzc2FnZS50ZXh0KSB8fCBfLmlzRW1wdHkoXy50cmltKG1lc3NhZ2UudGV4dCkpKSAmJlxuICAgICAgKCFfLmlzU3RyaW5nKG1lc3NhZ2UuaHRtbCkgfHwgXy5pc0VtcHR5KF8udHJpbShtZXNzYWdlLmh0bWwpKSkgJiZcbiAgICAgIF8uaXNFbXB0eShtZXNzYWdlLmF0dGFjaG1lbnRzKVxuICAgIClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE5vIGNvbnRlbnQgd2FzIHBhc3NlZCBmb3Igc3ViamVjdCwgaHRtbCwgdGV4dCwgbm9yIGF0dGFjaG1lbnRzIG1lc3NhZ2UgcHJvcHMuIENoZWNrIHRoYXQgdGhlIGZpbGVzIGZvciB0aGUgdGVtcGxhdGUgXCIke3RlbXBsYXRlfVwiIGV4aXN0LmBcbiAgICAgICk7XG5cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfVxuXG4gIGFzeW5jIHNlbmQob3B0aW9ucyA9IHt9KSB7XG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIHRlbXBsYXRlOiAnJyxcbiAgICAgIG1lc3NhZ2U6IHt9LFxuICAgICAgbG9jYWxzOiB7fSxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9O1xuXG4gICAgbGV0IHsgdGVtcGxhdGUsIG1lc3NhZ2UsIGxvY2FscyB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGF0dGFjaG1lbnRzID1cbiAgICAgIG1lc3NhZ2UuYXR0YWNobWVudHMgfHwgdGhpcy5jb25maWcubWVzc2FnZS5hdHRhY2htZW50cyB8fCBbXTtcblxuICAgIG1lc3NhZ2UgPSBfLmRlZmF1bHRzRGVlcChcbiAgICAgIHt9LFxuICAgICAgXy5vbWl0KG1lc3NhZ2UsICdhdHRhY2htZW50cycpLFxuICAgICAgXy5vbWl0KHRoaXMuY29uZmlnLm1lc3NhZ2UsICdhdHRhY2htZW50cycpXG4gICAgKTtcbiAgICBsb2NhbHMgPSBfLmRlZmF1bHRzRGVlcCh7fSwgdGhpcy5jb25maWcudmlld3MubG9jYWxzLCBsb2NhbHMpO1xuXG4gICAgaWYgKGF0dGFjaG1lbnRzKSBtZXNzYWdlLmF0dGFjaG1lbnRzID0gYXR0YWNobWVudHM7XG5cbiAgICBkZWJ1ZygndGVtcGxhdGUgJXMnLCB0ZW1wbGF0ZSk7XG4gICAgZGVidWcoJ21lc3NhZ2UgJU8nLCBtZXNzYWdlKTtcbiAgICBkZWJ1ZygnbG9jYWxzIChrZXlzIG9ubHkpOiAlTycsIE9iamVjdC5rZXlzKGxvY2FscykpO1xuXG4gICAgLy8gZ2V0IGFsbCBhdmFpbGFibGUgdGVtcGxhdGVzXG4gICAgY29uc3Qgb2JqZWN0ID0gYXdhaXQgdGhpcy5yZW5kZXJBbGwodGVtcGxhdGUsIGxvY2FscywgbWVzc2FnZSk7XG5cbiAgICAvLyBhc3NpZ24gdGhlIG9iamVjdCB2YXJpYWJsZXMgb3ZlciB0byB0aGUgbWVzc2FnZVxuICAgIE9iamVjdC5hc3NpZ24obWVzc2FnZSwgb2JqZWN0KTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5wcmV2aWV3KSB7XG4gICAgICBkZWJ1ZygndXNpbmcgYHByZXZpZXctZW1haWxgIHRvIHByZXZpZXcgZW1haWwnKTtcbiAgICAgIGF3YWl0IChfLmlzT2JqZWN0KHRoaXMuY29uZmlnLnByZXZpZXcpXG4gICAgICAgID8gcHJldmlld0VtYWlsKG1lc3NhZ2UsIHRoaXMuY29uZmlnLnByZXZpZXcpXG4gICAgICAgIDogcHJldmlld0VtYWlsKG1lc3NhZ2UpKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLnNlbmQpIHtcbiAgICAgIGRlYnVnKCdzZW5kIGRpc2FibGVkIHNvIHdlIGFyZSBlbnN1cmluZyBKU09OVHJhbnNwb3J0Jyk7XG4gICAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL25vZGVtYWlsZXIvbm9kZW1haWxlci9pc3N1ZXMvNzk4PlxuICAgICAgLy8gaWYgKHRoaXMuY29uZmlnLnRyYW5zcG9ydC5uYW1lICE9PSAnSlNPTlRyYW5zcG9ydCcpXG4gICAgICB0aGlzLmNvbmZpZy50cmFuc3BvcnQgPSBub2RlbWFpbGVyLmNyZWF0ZVRyYW5zcG9ydCh7XG4gICAgICAgIGpzb25UcmFuc3BvcnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuY29uZmlnLnRyYW5zcG9ydC5zZW5kTWFpbChtZXNzYWdlKTtcbiAgICBkZWJ1ZygnbWVzc2FnZSBzZW50Jyk7XG4gICAgcmVzLm9yaWdpbmFsTWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVtYWlsO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJwcm9jZXNzIiwicmVxdWlyZSIsImZzIiwicGF0aCIsInV0aWwiLCJJMThOIiwiXyIsImNvbnNvbGlkYXRlIiwiZGVidWciLCJnZXRQYXRocyIsImh0bWxUb1RleHQiLCJqdWljZSIsIm5vZGVtYWlsZXIiLCJwcmV2aWV3RW1haWwiLCJqdWljZVJlc291cmNlcyIsImh0bWwiLCJvcHRpb25zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJlcnIiLCJlbnYiLCJOT0RFX0VOViIsInRvTG93ZXJDYXNlIiwic3RhdCIsInByb21pc2lmeSIsInJlYWRGaWxlIiwiRW1haWwiLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsImp1aWNlT3B0aW9ucyIsImRpc2FibGVKdWljZSIsInJlbmRlciIsImN1c3RvbVJlbmRlciIsIm1lcmdlIiwidmlld3MiLCJyb290IiwiZXh0ZW5zaW9uIiwibWFwIiwiaGJzIiwibmprIiwiZW5naW5lU291cmNlIiwibG9jYWxzIiwiY2FjaGUiLCJpbmNsdWRlcyIsInByZXR0eSIsIm1lc3NhZ2UiLCJzZW5kIiwicHJldmlldyIsImkxOG4iLCJiaW5kIiwidGV4dE9ubHkiLCJpZ25vcmVJbWFnZSIsInN1YmplY3RQcmVmaXgiLCJqdWljZVNldHRpbmdzIiwidGFibGVFbGVtZW50cyIsInByZXNlcnZlSW1wb3J0YW50Iiwid2ViUmVzb3VyY2VzIiwicmVsYXRpdmVUbyIsImltYWdlcyIsInRyYW5zcG9ydCIsImxhc3RMb2NhbGVGaWVsZCIsImdldFBhdGgiLCJ0eXBlIiwidGVtcGxhdGUiLCJqb2luIiwiaXNGdW5jdGlvbiIsInNlbmRNYWlsIiwiY3JlYXRlVHJhbnNwb3J0IiwiaXNPYmplY3QiLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiLCJnZXRUZW1wbGF0ZVBhdGgiLCJ0ZW1wbGF0ZUV4aXN0cyIsImNoZWNrQW5kUmVuZGVyIiwicmVuZGVyQWxsIiwianVpY2VSZW5kZXJSZXNvdXJjZXMiLCJqdWljZVIiLCJ2aWV3IiwiaXNBYnNvbHV0ZSIsImRpcm5hbWUiLCJiYXNlbmFtZSIsInBhdGhzIiwiZmlsZVBhdGgiLCJyZWwiLCJzdGF0cyIsImlzRmlsZSIsIkVycm9yIiwic3RyaW5nIiwiZXhpc3RzIiwiZXh0IiwicmVzIiwiZW5naW5lTmFtZSIsInJlbmRlckZuIiwicmVnaXN0ZXIiLCJsb2NhbGUiLCJnZXRMb2NhbGUiLCJ1c2VyIiwiaXNTdHJpbmciLCJzZXRMb2NhbGUiLCJub2RlbWFpbGVyTWVzc2FnZSIsInN1YmplY3QiLCJ0ZXh0IiwiYWxsIiwidHJpbSIsImZyb21TdHJpbmciLCJpc0VtcHR5IiwiYXR0YWNobWVudHMiLCJkZWZhdWx0c0RlZXAiLCJvbWl0Iiwia2V5cyIsIm9iamVjdCIsImFzc2lnbiIsImpzb25UcmFuc3BvcnQiLCJvcmlnaW5hbE1lc3NhZ2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsSUFBRCxDQUFsQjs7QUFDQSxNQUFNRSxJQUFJLEdBQUdGLE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUNBLE1BQU1HLElBQUksR0FBR0gsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBRUEsTUFBTUksSUFBSSxHQUFHSixPQUFPLENBQUMsYUFBRCxDQUFwQjs7QUFDQSxNQUFNSyxDQUFDLEdBQUdMLE9BQU8sQ0FBQyxRQUFELENBQWpCOztBQUNBLE1BQU1NLFdBQVcsR0FBR04sT0FBTyxDQUFDLGFBQUQsQ0FBM0I7O0FBQ0EsTUFBTU8sS0FBSyxHQUFHUCxPQUFPLENBQUMsT0FBRCxDQUFQLENBQWlCLGlCQUFqQixDQUFkOztBQUNBLE1BQU1RLFFBQVEsR0FBR1IsT0FBTyxDQUFDLFdBQUQsQ0FBeEI7O0FBQ0EsTUFBTVMsVUFBVSxHQUFHVCxPQUFPLENBQUMsY0FBRCxDQUExQjs7QUFDQSxNQUFNVSxLQUFLLEdBQUdWLE9BQU8sQ0FBQyxPQUFELENBQXJCOztBQUNBLE1BQU1XLFVBQVUsR0FBR1gsT0FBTyxDQUFDLFlBQUQsQ0FBMUI7O0FBQ0EsTUFBTVksWUFBWSxHQUFHWixPQUFPLENBQUMsZUFBRCxDQUE1QixDLENBRUE7OztBQUNBLE1BQU1hLGNBQWMsR0FBRyxDQUFDQyxJQUFELEVBQU9DLE9BQVAsS0FBbUI7QUFDeEMsU0FBTyxJQUFJQyxPQUFKLENBQVksQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3RDUixJQUFBQSxLQUFLLENBQUNHLGNBQU4sQ0FBcUJDLElBQXJCLEVBQTJCQyxPQUEzQixFQUFvQyxDQUFDSSxHQUFELEVBQU1MLElBQU4sS0FBZTtBQUNqRCxVQUFJSyxHQUFKLEVBQVMsT0FBT0QsTUFBTSxDQUFDQyxHQUFELENBQWI7QUFDVEYsTUFBQUEsT0FBTyxDQUFDSCxJQUFELENBQVA7QUFDRCxLQUhEO0FBSUQsR0FMTSxDQUFQO0FBTUQsQ0FQRDs7QUFTQSxNQUFNTSxHQUFHLEdBQUcsQ0FBQ3JCLE9BQU8sQ0FBQ3FCLEdBQVIsQ0FBWUMsUUFBWixJQUF3QixhQUF6QixFQUF3Q0MsV0FBeEMsRUFBWjtBQUNBLE1BQU1DLElBQUksR0FBR3BCLElBQUksQ0FBQ3FCLFNBQUwsQ0FBZXZCLEVBQUUsQ0FBQ3NCLElBQWxCLENBQWI7QUFDQSxNQUFNRSxRQUFRLEdBQUd0QixJQUFJLENBQUNxQixTQUFMLENBQWV2QixFQUFFLENBQUN3QixRQUFsQixDQUFqQjs7QUFFQSxNQUFNQyxLQUFOLENBQVk7QUFDVkMsRUFBQUEsV0FBVyxDQUFDQyxNQUFNLEdBQUcsRUFBVixFQUFjO0FBQ3ZCckIsSUFBQUEsS0FBSyxDQUFDLGtCQUFELEVBQXFCcUIsTUFBckIsQ0FBTCxDQUR1QixDQUd2Qjs7QUFDQSxRQUFJQSxNQUFNLENBQUNDLFlBQVgsRUFBeUI7QUFDdkJELE1BQUFBLE1BQU0sQ0FBQ2YsY0FBUCxHQUF3QmUsTUFBTSxDQUFDQyxZQUEvQjtBQUNBLGFBQU9ELE1BQU0sQ0FBQ0MsWUFBZDtBQUNEOztBQUVELFFBQUlELE1BQU0sQ0FBQ0UsWUFBWCxFQUF5QjtBQUN2QkYsTUFBQUEsTUFBTSxDQUFDbEIsS0FBUCxHQUFlLEtBQWY7QUFDQSxhQUFPa0IsTUFBTSxDQUFDRSxZQUFkO0FBQ0Q7O0FBRUQsUUFBSUYsTUFBTSxDQUFDRyxNQUFYLEVBQW1CO0FBQ2pCSCxNQUFBQSxNQUFNLENBQUNJLFlBQVAsR0FBc0IsSUFBdEI7QUFDRDs7QUFFRCxTQUFLSixNQUFMLEdBQWN2QixDQUFDLENBQUM0QixLQUFGLENBQ1o7QUFDRUMsTUFBQUEsS0FBSyxFQUFFO0FBQ0w7QUFDQUMsUUFBQUEsSUFBSSxFQUFFakMsSUFBSSxDQUFDZSxPQUFMLENBQWEsUUFBYixDQUZEO0FBR0xGLFFBQUFBLE9BQU8sRUFBRTtBQUNQO0FBQ0FxQixVQUFBQSxTQUFTLEVBQUUsS0FGSjtBQUdQQyxVQUFBQSxHQUFHLEVBQUU7QUFDSEMsWUFBQUEsR0FBRyxFQUFFLFlBREY7QUFFSEMsWUFBQUEsR0FBRyxFQUFFO0FBRkYsV0FIRTtBQU9QQyxVQUFBQSxZQUFZLEVBQUVsQztBQVBQLFNBSEo7QUFZTDtBQUNBbUMsUUFBQUEsTUFBTSxFQUFFO0FBQ047QUFDQUMsVUFBQUEsS0FBSyxFQUFFLENBQUMsQ0FBQyxhQUFELEVBQWdCLE1BQWhCLEVBQXdCQyxRQUF4QixDQUFpQ3ZCLEdBQWpDLENBRkY7QUFHTjtBQUNBd0IsVUFBQUEsTUFBTSxFQUFFO0FBSkY7QUFiSCxPQURUO0FBcUJFO0FBQ0FDLE1BQUFBLE9BQU8sRUFBRSxFQXRCWDtBQXVCRUMsTUFBQUEsSUFBSSxFQUFFLENBQUMsQ0FBQyxhQUFELEVBQWdCLE1BQWhCLEVBQXdCSCxRQUF4QixDQUFpQ3ZCLEdBQWpDLENBdkJUO0FBd0JFMkIsTUFBQUEsT0FBTyxFQUFFM0IsR0FBRyxLQUFLLGFBeEJuQjtBQXlCRTtBQUNBO0FBQ0E0QixNQUFBQSxJQUFJLEVBQUUsS0EzQlI7QUE0QkU7QUFDQWpCLE1BQUFBLE1BQU0sRUFBRSxLQUFLQSxNQUFMLENBQVlrQixJQUFaLENBQWlCLElBQWpCLENBN0JWO0FBOEJFakIsTUFBQUEsWUFBWSxFQUFFLEtBOUJoQjtBQStCRTtBQUNBa0IsTUFBQUEsUUFBUSxFQUFFLEtBaENaO0FBaUNFO0FBQ0F6QyxNQUFBQSxVQUFVLEVBQUU7QUFDVjBDLFFBQUFBLFdBQVcsRUFBRTtBQURILE9BbENkO0FBcUNFQyxNQUFBQSxhQUFhLEVBQUUsS0FyQ2pCO0FBc0NFO0FBQ0ExQyxNQUFBQSxLQUFLLEVBQUUsSUF2Q1Q7QUF3Q0U7QUFDQTJDLE1BQUFBLGFBQWEsRUFBRTtBQUNiQyxRQUFBQSxhQUFhLEVBQUUsQ0FBQyxPQUFEO0FBREYsT0F6Q2pCO0FBNENFekMsTUFBQUEsY0FBYyxFQUFFO0FBQ2QwQyxRQUFBQSxpQkFBaUIsRUFBRSxJQURMO0FBRWRDLFFBQUFBLFlBQVksRUFBRTtBQUNaQyxVQUFBQSxVQUFVLEVBQUV2RCxJQUFJLENBQUNlLE9BQUwsQ0FBYSxPQUFiLENBREE7QUFFWnlDLFVBQUFBLE1BQU0sRUFBRTtBQUZJO0FBRkEsT0E1Q2xCO0FBbURFO0FBQ0E7QUFDQTtBQUNBQyxNQUFBQSxTQUFTLEVBQUUsRUF0RGI7QUF1REU7QUFDQUMsTUFBQUEsZUFBZSxFQUFFLGFBeERuQjs7QUF5REVDLE1BQUFBLE9BQU8sQ0FBQ0MsSUFBRCxFQUFPQyxRQUFQLEVBQWlCO0FBQ3RCLGVBQU83RCxJQUFJLENBQUM4RCxJQUFMLENBQVVELFFBQVYsRUFBb0JELElBQXBCLENBQVA7QUFDRDs7QUEzREgsS0FEWSxFQThEWmxDLE1BOURZLENBQWQsQ0FsQnVCLENBbUZ2Qjs7QUFDQSxTQUFLRyxNQUFMLEdBQWMsS0FBS0gsTUFBTCxDQUFZRyxNQUExQjtBQUVBLFFBQUksQ0FBQzFCLENBQUMsQ0FBQzRELFVBQUYsQ0FBYSxLQUFLckMsTUFBTCxDQUFZK0IsU0FBWixDQUFzQk8sUUFBbkMsQ0FBTCxFQUNFLEtBQUt0QyxNQUFMLENBQVkrQixTQUFaLEdBQXdCaEQsVUFBVSxDQUFDd0QsZUFBWCxDQUEyQixLQUFLdkMsTUFBTCxDQUFZK0IsU0FBdkMsQ0FBeEIsQ0F2RnFCLENBeUZ2Qjs7QUFDQSxRQUFJdEQsQ0FBQyxDQUFDK0QsUUFBRixDQUFXLEtBQUt4QyxNQUFMLENBQVl5QixhQUF2QixDQUFKLEVBQTJDO0FBQ3pDLFdBQUssTUFBTSxDQUFDZ0IsR0FBRCxFQUFNQyxLQUFOLENBQVgsSUFBMkJDLE1BQU0sQ0FBQ0MsT0FBUCxDQUFlLEtBQUs1QyxNQUFMLENBQVl5QixhQUEzQixDQUEzQixFQUFzRTtBQUNwRTNDLFFBQUFBLEtBQUssQ0FBQzJELEdBQUQsQ0FBTCxHQUFhQyxLQUFiO0FBQ0Q7QUFDRjs7QUFFRC9ELElBQUFBLEtBQUssQ0FBQyx1QkFBRCxFQUEwQixLQUFLcUIsTUFBL0IsQ0FBTDtBQUVBLFNBQUtmLGNBQUwsR0FBc0IsS0FBS0EsY0FBTCxDQUFvQm9DLElBQXBCLENBQXlCLElBQXpCLENBQXRCO0FBQ0EsU0FBS3dCLGVBQUwsR0FBdUIsS0FBS0EsZUFBTCxDQUFxQnhCLElBQXJCLENBQTBCLElBQTFCLENBQXZCO0FBQ0EsU0FBS3lCLGNBQUwsR0FBc0IsS0FBS0EsY0FBTCxDQUFvQnpCLElBQXBCLENBQXlCLElBQXpCLENBQXRCO0FBQ0EsU0FBSzBCLGNBQUwsR0FBc0IsS0FBS0EsY0FBTCxDQUFvQjFCLElBQXBCLENBQXlCLElBQXpCLENBQXRCO0FBQ0EsU0FBS2xCLE1BQUwsR0FBYyxLQUFLQSxNQUFMLENBQVlrQixJQUFaLENBQWlCLElBQWpCLENBQWQ7QUFDQSxTQUFLMkIsU0FBTCxHQUFpQixLQUFLQSxTQUFMLENBQWUzQixJQUFmLENBQW9CLElBQXBCLENBQWpCO0FBQ0EsU0FBS0gsSUFBTCxHQUFZLEtBQUtBLElBQUwsQ0FBVUcsSUFBVixDQUFlLElBQWYsQ0FBWjtBQUNELEdBMUdTLENBNEdWO0FBQ0E7OztBQUNBcEMsRUFBQUEsY0FBYyxDQUFDQyxJQUFELEVBQU8rRCxvQkFBb0IsR0FBRyxFQUE5QixFQUFrQztBQUM5QyxVQUFNQyxNQUFNLEdBQUd6RSxDQUFDLENBQUM0QixLQUFGLENBQVEsS0FBS0wsTUFBTCxDQUFZZixjQUFwQixFQUFvQ2dFLG9CQUFwQyxDQUFmOztBQUNBLFdBQU9oRSxjQUFjLENBQUNDLElBQUQsRUFBT2dFLE1BQVAsQ0FBckI7QUFDRCxHQWpIUyxDQW1IVjs7O0FBQ3FCLFFBQWZMLGVBQWUsQ0FBQ1YsUUFBRCxFQUFXO0FBQzlCLFFBQUljLG9CQUFvQixHQUFHLEVBQTNCOztBQUVBLFFBQUl4RSxDQUFDLENBQUMrRCxRQUFGLENBQVdMLFFBQVgsQ0FBSixFQUEwQjtBQUN4QmMsTUFBQUEsb0JBQW9CLEdBQUdkLFFBQVEsQ0FBQ2xELGNBQWhDO0FBQ0FrRCxNQUFBQSxRQUFRLEdBQUdBLFFBQVEsQ0FBQzdELElBQXBCO0FBQ0Q7O0FBRUQsVUFBTSxDQUFDaUMsSUFBRCxFQUFPNEMsSUFBUCxJQUFlN0UsSUFBSSxDQUFDOEUsVUFBTCxDQUFnQmpCLFFBQWhCLElBQ2pCLENBQUM3RCxJQUFJLENBQUMrRSxPQUFMLENBQWFsQixRQUFiLENBQUQsRUFBeUI3RCxJQUFJLENBQUNnRixRQUFMLENBQWNuQixRQUFkLENBQXpCLENBRGlCLEdBRWpCLENBQUMsS0FBS25DLE1BQUwsQ0FBWU0sS0FBWixDQUFrQkMsSUFBbkIsRUFBeUI0QixRQUF6QixDQUZKO0FBR0EsVUFBTW9CLEtBQUssR0FBRyxNQUFNM0UsUUFBUSxDQUMxQjJCLElBRDBCLEVBRTFCNEMsSUFGMEIsRUFHMUIsS0FBS25ELE1BQUwsQ0FBWU0sS0FBWixDQUFrQm5CLE9BQWxCLENBQTBCcUIsU0FIQSxDQUE1QjtBQUtBLFVBQU1nRCxRQUFRLEdBQUdsRixJQUFJLENBQUNlLE9BQUwsQ0FBYWtCLElBQWIsRUFBbUJnRCxLQUFLLENBQUNFLEdBQXpCLENBQWpCO0FBQ0EsV0FBTztBQUFFRCxNQUFBQSxRQUFGO0FBQVlELE1BQUFBLEtBQVo7QUFBbUJOLE1BQUFBO0FBQW5CLEtBQVA7QUFDRCxHQXRJUyxDQXdJVjtBQUNBOzs7QUFDb0IsUUFBZEgsY0FBYyxDQUFDSyxJQUFELEVBQU87QUFDekIsUUFBSTtBQUNGLFlBQU07QUFBRUssUUFBQUE7QUFBRixVQUFlLE1BQU0sS0FBS1gsZUFBTCxDQUFxQk0sSUFBckIsQ0FBM0I7QUFDQSxZQUFNTyxLQUFLLEdBQUcsTUFBTS9ELElBQUksQ0FBQzZELFFBQUQsQ0FBeEI7QUFDQSxVQUFJLENBQUNFLEtBQUssQ0FBQ0MsTUFBTixFQUFMLEVBQXFCLE1BQU0sSUFBSUMsS0FBSixDQUFXLEdBQUVKLFFBQVMsaUJBQXRCLENBQU47QUFDckIsYUFBTyxJQUFQO0FBQ0QsS0FMRCxDQUtFLE9BQU9qRSxHQUFQLEVBQVk7QUFDWlosTUFBQUEsS0FBSyxDQUFDLGdCQUFELEVBQW1CWSxHQUFuQixDQUFMO0FBQ0EsYUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFFbUIsUUFBZHdELGNBQWMsQ0FBQ2IsSUFBRCxFQUFPQyxRQUFQLEVBQWlCdEIsTUFBakIsRUFBeUI7QUFDM0MsUUFBSW9DLG9CQUFvQixHQUFHLEVBQTNCOztBQUVBLFFBQUl4RSxDQUFDLENBQUMrRCxRQUFGLENBQVdMLFFBQVgsQ0FBSixFQUEwQjtBQUN4QmMsTUFBQUEsb0JBQW9CLEdBQUdkLFFBQVEsQ0FBQ2xELGNBQWhDO0FBQ0FrRCxNQUFBQSxRQUFRLEdBQUdBLFFBQVEsQ0FBQzdELElBQXBCO0FBQ0Q7O0FBRUQsVUFBTXVGLE1BQU0sR0FBRyxLQUFLN0QsTUFBTCxDQUFZaUMsT0FBWixDQUFvQkMsSUFBcEIsRUFBMEJDLFFBQTFCLEVBQW9DdEIsTUFBcEMsQ0FBZjs7QUFDQSxRQUFJLENBQUMsS0FBS2IsTUFBTCxDQUFZSSxZQUFqQixFQUErQjtBQUM3QixZQUFNMEQsTUFBTSxHQUFHLE1BQU0sS0FBS2hCLGNBQUwsQ0FBb0JlLE1BQXBCLENBQXJCO0FBQ0EsVUFBSSxDQUFDQyxNQUFMLEVBQWE7QUFDZDs7QUFFRCxXQUFPLEtBQUszRCxNQUFMLENBQ0wwRCxNQURLLGtDQUdBaEQsTUFIQSxHQUlDcUIsSUFBSSxLQUFLLE1BQVQsR0FBa0IsRUFBbEIsR0FBdUI7QUFBRWxCLE1BQUFBLE1BQU0sRUFBRTtBQUFWLEtBSnhCLEdBTUxpQyxvQkFOSyxDQUFQO0FBUUQsR0E1S1MsQ0E4S1Y7QUFDQTtBQUNBOzs7QUFDWSxRQUFOOUMsTUFBTSxDQUFDZ0QsSUFBRCxFQUFPdEMsTUFBTSxHQUFHLEVBQWhCLEVBQW9CO0FBQzlCLFVBQU07QUFBRUosTUFBQUEsR0FBRjtBQUFPRyxNQUFBQTtBQUFQLFFBQXdCLEtBQUtaLE1BQUwsQ0FBWU0sS0FBWixDQUFrQm5CLE9BQWhEO0FBQ0EsVUFBTTtBQUFFcUUsTUFBQUEsUUFBRjtBQUFZRCxNQUFBQSxLQUFaO0FBQW1CTixNQUFBQTtBQUFuQixRQUNKLE1BQU0sS0FBS0osZUFBTCxDQUFxQk0sSUFBckIsQ0FEUjs7QUFFQSxRQUFJSSxLQUFLLENBQUNRLEdBQU4sS0FBYyxNQUFkLElBQXdCLENBQUN0RCxHQUE3QixFQUFrQztBQUNoQyxZQUFNdUQsR0FBRyxHQUFHLE1BQU1uRSxRQUFRLENBQUMyRCxRQUFELEVBQVcsTUFBWCxDQUExQjtBQUNBLGFBQU9RLEdBQVA7QUFDRDs7QUFFRCxVQUFNQyxVQUFVLEdBQUd4RCxHQUFHLElBQUlBLEdBQUcsQ0FBQzhDLEtBQUssQ0FBQ1EsR0FBUCxDQUFWLEdBQXdCdEQsR0FBRyxDQUFDOEMsS0FBSyxDQUFDUSxHQUFQLENBQTNCLEdBQXlDUixLQUFLLENBQUNRLEdBQWxFO0FBQ0EsVUFBTUcsUUFBUSxHQUFHdEQsWUFBWSxDQUFDcUQsVUFBRCxDQUE3QjtBQUNBLFFBQUksQ0FBQ0EsVUFBRCxJQUFlLENBQUNDLFFBQXBCLEVBQ0UsTUFBTSxJQUFJTixLQUFKLENBQ0gsOEJBQTZCTCxLQUFLLENBQUNRLEdBQUksa0JBRHBDLENBQU47O0FBSUYsUUFBSXRGLENBQUMsQ0FBQytELFFBQUYsQ0FBVyxLQUFLeEMsTUFBTCxDQUFZb0IsSUFBdkIsQ0FBSixFQUFrQztBQUNoQyxVQUNFLEtBQUtwQixNQUFMLENBQVlvQixJQUFaLENBQWlCWSxlQUFqQixJQUNBLEtBQUtoQyxNQUFMLENBQVlnQyxlQURaLElBRUEsS0FBS2hDLE1BQUwsQ0FBWW9CLElBQVosQ0FBaUJZLGVBQWpCLEtBQXFDLEtBQUtoQyxNQUFMLENBQVlnQyxlQUhuRCxFQUtFLE1BQU0sSUFBSTRCLEtBQUosQ0FDSCwwR0FBeUcsS0FBSzVELE1BQUwsQ0FBWW9CLElBQVosQ0FBaUJZLGVBQWdCLGtDQUFpQyxLQUFLaEMsTUFBTCxDQUFZZ0MsZUFBZ0IsRUFEcE0sQ0FBTjtBQUlGLFlBQU1aLElBQUksR0FBRyxJQUFJNUMsSUFBSixpQ0FBYyxLQUFLd0IsTUFBTCxDQUFZb0IsSUFBMUI7QUFBZ0MrQyxRQUFBQSxRQUFRLEVBQUV0RDtBQUExQyxTQUFiLENBVmdDLENBWWhDO0FBQ0E7O0FBQ0EsWUFBTXVELE1BQU0sR0FBR2hELElBQUksQ0FBQ2lELFNBQUwsRUFBZjtBQUNBLFVBQ0U1RixDQUFDLENBQUMrRCxRQUFGLENBQVczQixNQUFNLENBQUN5RCxJQUFsQixLQUNBN0YsQ0FBQyxDQUFDOEYsUUFBRixDQUFXMUQsTUFBTSxDQUFDeUQsSUFBUCxDQUFZLEtBQUt0RSxNQUFMLENBQVlnQyxlQUF4QixDQUFYLENBRkYsRUFJRW5CLE1BQU0sQ0FBQ3VELE1BQVAsR0FBZ0J2RCxNQUFNLENBQUN5RCxJQUFQLENBQVksS0FBS3RFLE1BQUwsQ0FBWWdDLGVBQXhCLENBQWhCLENBSkYsS0FLSyxJQUFJLENBQUN2RCxDQUFDLENBQUM4RixRQUFGLENBQVcxRCxNQUFNLENBQUN1RCxNQUFsQixDQUFMLEVBQWdDdkQsTUFBTSxDQUFDdUQsTUFBUCxHQUFnQkEsTUFBaEI7QUFFckMsVUFBSUEsTUFBTSxLQUFLdkQsTUFBTSxDQUFDdUQsTUFBdEIsRUFBOEJoRCxJQUFJLENBQUNvRCxTQUFMLENBQWUzRCxNQUFNLENBQUN1RCxNQUF0QjtBQUMvQjs7QUFFRCxVQUFNSixHQUFHLEdBQUcsTUFBTXpGLElBQUksQ0FBQ3FCLFNBQUwsQ0FBZXNFLFFBQWYsRUFBeUJWLFFBQXpCLEVBQW1DM0MsTUFBbkMsQ0FBbEIsQ0F6QzhCLENBMEM5QjtBQUNBO0FBQ0E7O0FBQ0EsUUFBSSxDQUFDLEtBQUtiLE1BQUwsQ0FBWWxCLEtBQWpCLEVBQXdCLE9BQU9rRixHQUFQO0FBQ3hCLFVBQU05RSxJQUFJLEdBQUcsTUFBTSxLQUFLRCxjQUFMLENBQW9CK0UsR0FBcEIsRUFBeUJmLG9CQUF6QixDQUFuQjtBQUNBLFdBQU8vRCxJQUFQO0FBQ0QsR0FqT1MsQ0FtT1Y7OztBQUNlLFFBQVQ4RCxTQUFTLENBQUNiLFFBQUQsRUFBV3RCLE1BQU0sR0FBRyxFQUFwQixFQUF3QjRELGlCQUFpQixHQUFHLEVBQTVDLEVBQWdEO0FBQzdELFVBQU14RCxPQUFPLHFCQUFRd0QsaUJBQVIsQ0FBYjs7QUFFQSxRQUFJdEMsUUFBUSxLQUFLLENBQUNsQixPQUFPLENBQUN5RCxPQUFULElBQW9CLENBQUN6RCxPQUFPLENBQUMvQixJQUE3QixJQUFxQyxDQUFDK0IsT0FBTyxDQUFDMEQsSUFBbkQsQ0FBWixFQUFzRTtBQUNwRSxZQUFNLENBQUNELE9BQUQsRUFBVXhGLElBQVYsRUFBZ0J5RixJQUFoQixJQUF3QixNQUFNdkYsT0FBTyxDQUFDd0YsR0FBUixDQUNsQyxDQUFDLFNBQUQsRUFBWSxNQUFaLEVBQW9CLE1BQXBCLEVBQTRCbkUsR0FBNUIsQ0FBaUN5QixJQUFELElBQzlCLEtBQUthLGNBQUwsQ0FBb0JiLElBQXBCLEVBQTBCQyxRQUExQixFQUFvQ3RCLE1BQXBDLENBREYsQ0FEa0MsQ0FBcEM7QUFNQSxVQUFJNkQsT0FBTyxJQUFJLENBQUN6RCxPQUFPLENBQUN5RCxPQUF4QixFQUFpQ3pELE9BQU8sQ0FBQ3lELE9BQVIsR0FBa0JBLE9BQWxCO0FBQ2pDLFVBQUl4RixJQUFJLElBQUksQ0FBQytCLE9BQU8sQ0FBQy9CLElBQXJCLEVBQTJCK0IsT0FBTyxDQUFDL0IsSUFBUixHQUFlQSxJQUFmO0FBQzNCLFVBQUl5RixJQUFJLElBQUksQ0FBQzFELE9BQU8sQ0FBQzBELElBQXJCLEVBQTJCMUQsT0FBTyxDQUFDMEQsSUFBUixHQUFlQSxJQUFmO0FBQzVCOztBQUVELFFBQUkxRCxPQUFPLENBQUN5RCxPQUFSLElBQW1CLEtBQUsxRSxNQUFMLENBQVl3QixhQUFuQyxFQUNFUCxPQUFPLENBQUN5RCxPQUFSLEdBQWtCLEtBQUsxRSxNQUFMLENBQVl3QixhQUFaLEdBQTRCUCxPQUFPLENBQUN5RCxPQUF0RCxDQWhCMkQsQ0FrQjdEOztBQUNBLFFBQUl6RCxPQUFPLENBQUN5RCxPQUFaLEVBQXFCekQsT0FBTyxDQUFDeUQsT0FBUixHQUFrQnpELE9BQU8sQ0FBQ3lELE9BQVIsQ0FBZ0JHLElBQWhCLEVBQWxCO0FBRXJCLFFBQUksS0FBSzdFLE1BQUwsQ0FBWW5CLFVBQVosSUFBMEJvQyxPQUFPLENBQUMvQixJQUFsQyxJQUEwQyxDQUFDK0IsT0FBTyxDQUFDMEQsSUFBdkQsRUFDRTtBQUNBO0FBQ0E7QUFDQTFELE1BQUFBLE9BQU8sQ0FBQzBELElBQVIsR0FBZTlGLFVBQVUsQ0FBQ2lHLFVBQVgsQ0FDYjdELE9BQU8sQ0FBQy9CLElBREssRUFFYixLQUFLYyxNQUFMLENBQVluQixVQUZDLENBQWYsQ0F6QjJELENBOEI3RDs7QUFDQSxRQUFJLEtBQUttQixNQUFMLENBQVlzQixRQUFoQixFQUEwQixPQUFPTCxPQUFPLENBQUMvQixJQUFmLENBL0JtQyxDQWlDN0Q7QUFDQTtBQUNBOztBQUNBLFFBQ0UsQ0FBQyxDQUFDVCxDQUFDLENBQUM4RixRQUFGLENBQVd0RCxPQUFPLENBQUN5RCxPQUFuQixDQUFELElBQWdDakcsQ0FBQyxDQUFDc0csT0FBRixDQUFVdEcsQ0FBQyxDQUFDb0csSUFBRixDQUFPNUQsT0FBTyxDQUFDeUQsT0FBZixDQUFWLENBQWpDLE1BQ0MsQ0FBQ2pHLENBQUMsQ0FBQzhGLFFBQUYsQ0FBV3RELE9BQU8sQ0FBQzBELElBQW5CLENBQUQsSUFBNkJsRyxDQUFDLENBQUNzRyxPQUFGLENBQVV0RyxDQUFDLENBQUNvRyxJQUFGLENBQU81RCxPQUFPLENBQUMwRCxJQUFmLENBQVYsQ0FEOUIsTUFFQyxDQUFDbEcsQ0FBQyxDQUFDOEYsUUFBRixDQUFXdEQsT0FBTyxDQUFDL0IsSUFBbkIsQ0FBRCxJQUE2QlQsQ0FBQyxDQUFDc0csT0FBRixDQUFVdEcsQ0FBQyxDQUFDb0csSUFBRixDQUFPNUQsT0FBTyxDQUFDL0IsSUFBZixDQUFWLENBRjlCLEtBR0FULENBQUMsQ0FBQ3NHLE9BQUYsQ0FBVTlELE9BQU8sQ0FBQytELFdBQWxCLENBSkYsRUFNRSxNQUFNLElBQUlwQixLQUFKLENBQ0gsd0hBQXVIekIsUUFBUyxVQUQ3SCxDQUFOO0FBSUYsV0FBT2xCLE9BQVA7QUFDRDs7QUFFUyxRQUFKQyxJQUFJLENBQUMvQixPQUFPLEdBQUcsRUFBWCxFQUFlO0FBQ3ZCQSxJQUFBQSxPQUFPO0FBQ0xnRCxNQUFBQSxRQUFRLEVBQUUsRUFETDtBQUVMbEIsTUFBQUEsT0FBTyxFQUFFLEVBRko7QUFHTEosTUFBQUEsTUFBTSxFQUFFO0FBSEgsT0FJRjFCLE9BSkUsQ0FBUDtBQU9BLFFBQUk7QUFBRWdELE1BQUFBLFFBQUY7QUFBWWxCLE1BQUFBLE9BQVo7QUFBcUJKLE1BQUFBO0FBQXJCLFFBQWdDMUIsT0FBcEM7QUFFQSxVQUFNNkYsV0FBVyxHQUNmL0QsT0FBTyxDQUFDK0QsV0FBUixJQUF1QixLQUFLaEYsTUFBTCxDQUFZaUIsT0FBWixDQUFvQitELFdBQTNDLElBQTBELEVBRDVEO0FBR0EvRCxJQUFBQSxPQUFPLEdBQUd4QyxDQUFDLENBQUN3RyxZQUFGLENBQ1IsRUFEUSxFQUVSeEcsQ0FBQyxDQUFDeUcsSUFBRixDQUFPakUsT0FBUCxFQUFnQixhQUFoQixDQUZRLEVBR1J4QyxDQUFDLENBQUN5RyxJQUFGLENBQU8sS0FBS2xGLE1BQUwsQ0FBWWlCLE9BQW5CLEVBQTRCLGFBQTVCLENBSFEsQ0FBVjtBQUtBSixJQUFBQSxNQUFNLEdBQUdwQyxDQUFDLENBQUN3RyxZQUFGLENBQWUsRUFBZixFQUFtQixLQUFLakYsTUFBTCxDQUFZTSxLQUFaLENBQWtCTyxNQUFyQyxFQUE2Q0EsTUFBN0MsQ0FBVDtBQUVBLFFBQUltRSxXQUFKLEVBQWlCL0QsT0FBTyxDQUFDK0QsV0FBUixHQUFzQkEsV0FBdEI7QUFFakJyRyxJQUFBQSxLQUFLLENBQUMsYUFBRCxFQUFnQndELFFBQWhCLENBQUw7QUFDQXhELElBQUFBLEtBQUssQ0FBQyxZQUFELEVBQWVzQyxPQUFmLENBQUw7QUFDQXRDLElBQUFBLEtBQUssQ0FBQyx3QkFBRCxFQUEyQmdFLE1BQU0sQ0FBQ3dDLElBQVAsQ0FBWXRFLE1BQVosQ0FBM0IsQ0FBTCxDQXhCdUIsQ0EwQnZCOztBQUNBLFVBQU11RSxNQUFNLEdBQUcsTUFBTSxLQUFLcEMsU0FBTCxDQUFlYixRQUFmLEVBQXlCdEIsTUFBekIsRUFBaUNJLE9BQWpDLENBQXJCLENBM0J1QixDQTZCdkI7O0FBQ0EwQixJQUFBQSxNQUFNLENBQUMwQyxNQUFQLENBQWNwRSxPQUFkLEVBQXVCbUUsTUFBdkI7O0FBRUEsUUFBSSxLQUFLcEYsTUFBTCxDQUFZbUIsT0FBaEIsRUFBeUI7QUFDdkJ4QyxNQUFBQSxLQUFLLENBQUMsd0NBQUQsQ0FBTDtBQUNBLGFBQU9GLENBQUMsQ0FBQytELFFBQUYsQ0FBVyxLQUFLeEMsTUFBTCxDQUFZbUIsT0FBdkIsSUFDSG5DLFlBQVksQ0FBQ2lDLE9BQUQsRUFBVSxLQUFLakIsTUFBTCxDQUFZbUIsT0FBdEIsQ0FEVCxHQUVIbkMsWUFBWSxDQUFDaUMsT0FBRCxDQUZoQjtBQUdEOztBQUVELFFBQUksQ0FBQyxLQUFLakIsTUFBTCxDQUFZa0IsSUFBakIsRUFBdUI7QUFDckJ2QyxNQUFBQSxLQUFLLENBQUMsZ0RBQUQsQ0FBTCxDQURxQixDQUVyQjtBQUNBOztBQUNBLFdBQUtxQixNQUFMLENBQVkrQixTQUFaLEdBQXdCaEQsVUFBVSxDQUFDd0QsZUFBWCxDQUEyQjtBQUNqRCtDLFFBQUFBLGFBQWEsRUFBRTtBQURrQyxPQUEzQixDQUF4QjtBQUdEOztBQUVELFVBQU10QixHQUFHLEdBQUcsTUFBTSxLQUFLaEUsTUFBTCxDQUFZK0IsU0FBWixDQUFzQk8sUUFBdEIsQ0FBK0JyQixPQUEvQixDQUFsQjtBQUNBdEMsSUFBQUEsS0FBSyxDQUFDLGNBQUQsQ0FBTDtBQUNBcUYsSUFBQUEsR0FBRyxDQUFDdUIsZUFBSixHQUFzQnRFLE9BQXRCO0FBQ0EsV0FBTytDLEdBQVA7QUFDRDs7QUF6VVM7O0FBNFVad0IsTUFBTSxDQUFDQyxPQUFQLEdBQWlCM0YsS0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBwcm9jZXNzID0gcmVxdWlyZSgncHJvY2VzcycpO1xuY29uc3QgZnMgPSByZXF1aXJlKCdmcycpO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbmNvbnN0IEkxOE4gPSByZXF1aXJlKCdAbGFkanMvaTE4bicpO1xuY29uc3QgXyA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xuY29uc3QgY29uc29saWRhdGUgPSByZXF1aXJlKCdjb25zb2xpZGF0ZScpO1xuY29uc3QgZGVidWcgPSByZXF1aXJlKCdkZWJ1ZycpKCdlbWFpbC10ZW1wbGF0ZXMnKTtcbmNvbnN0IGdldFBhdGhzID0gcmVxdWlyZSgnZ2V0LXBhdGhzJyk7XG5jb25zdCBodG1sVG9UZXh0ID0gcmVxdWlyZSgnaHRtbC10by10ZXh0Jyk7XG5jb25zdCBqdWljZSA9IHJlcXVpcmUoJ2p1aWNlJyk7XG5jb25zdCBub2RlbWFpbGVyID0gcmVxdWlyZSgnbm9kZW1haWxlcicpO1xuY29uc3QgcHJldmlld0VtYWlsID0gcmVxdWlyZSgncHJldmlldy1lbWFpbCcpO1xuXG4vLyBwcm9taXNlIHZlcnNpb24gb2YgYGp1aWNlLmp1aWNlUmVzb3VyY2VzYFxuY29uc3QganVpY2VSZXNvdXJjZXMgPSAoaHRtbCwgb3B0aW9ucykgPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGp1aWNlLmp1aWNlUmVzb3VyY2VzKGh0bWwsIG9wdGlvbnMsIChlcnIsIGh0bWwpID0+IHtcbiAgICAgIGlmIChlcnIpIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgIHJlc29sdmUoaHRtbCk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuY29uc3QgZW52ID0gKHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8ICdkZXZlbG9wbWVudCcpLnRvTG93ZXJDYXNlKCk7XG5jb25zdCBzdGF0ID0gdXRpbC5wcm9taXNpZnkoZnMuc3RhdCk7XG5jb25zdCByZWFkRmlsZSA9IHV0aWwucHJvbWlzaWZ5KGZzLnJlYWRGaWxlKTtcblxuY2xhc3MgRW1haWwge1xuICBjb25zdHJ1Y3Rvcihjb25maWcgPSB7fSkge1xuICAgIGRlYnVnKCdjb25maWcgcGFzc2VkICVPJywgY29uZmlnKTtcblxuICAgIC8vIDIueCBiYWNrd2FyZHMgY29tcGF0aWJsZSBzdXBwb3J0XG4gICAgaWYgKGNvbmZpZy5qdWljZU9wdGlvbnMpIHtcbiAgICAgIGNvbmZpZy5qdWljZVJlc291cmNlcyA9IGNvbmZpZy5qdWljZU9wdGlvbnM7XG4gICAgICBkZWxldGUgY29uZmlnLmp1aWNlT3B0aW9ucztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmRpc2FibGVKdWljZSkge1xuICAgICAgY29uZmlnLmp1aWNlID0gZmFsc2U7XG4gICAgICBkZWxldGUgY29uZmlnLmRpc2FibGVKdWljZTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLnJlbmRlcikge1xuICAgICAgY29uZmlnLmN1c3RvbVJlbmRlciA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5jb25maWcgPSBfLm1lcmdlKFxuICAgICAge1xuICAgICAgICB2aWV3czoge1xuICAgICAgICAgIC8vIGRpcmVjdG9yeSB3aGVyZSBlbWFpbCB0ZW1wbGF0ZXMgcmVzaWRlXG4gICAgICAgICAgcm9vdDogcGF0aC5yZXNvbHZlKCdlbWFpbHMnKSxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAvLyBkZWZhdWx0IGZpbGUgZXh0ZW5zaW9uIGZvciB0ZW1wbGF0ZVxuICAgICAgICAgICAgZXh0ZW5zaW9uOiAncHVnJyxcbiAgICAgICAgICAgIG1hcDoge1xuICAgICAgICAgICAgICBoYnM6ICdoYW5kbGViYXJzJyxcbiAgICAgICAgICAgICAgbmprOiAnbnVuanVja3MnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZW5naW5lU291cmNlOiBjb25zb2xpZGF0ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gbG9jYWxzIHRvIHBhc3MgdG8gdGVtcGxhdGVzIGZvciByZW5kZXJpbmdcbiAgICAgICAgICBsb2NhbHM6IHtcbiAgICAgICAgICAgIC8vIHR1cm4gb24gY2FjaGluZyBmb3Igbm9uLWRldmVsb3BtZW50IGVudmlyb25tZW50c1xuICAgICAgICAgICAgY2FjaGU6ICFbJ2RldmVsb3BtZW50JywgJ3Rlc3QnXS5pbmNsdWRlcyhlbnYpLFxuICAgICAgICAgICAgLy8gcHJldHR5IGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvIGBmYWxzZWAgZm9yIHN1YmplY3QvdGV4dFxuICAgICAgICAgICAgcHJldHR5OiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAvLyA8aHR0cHM6Ly9ub2RlbWFpbGVyLmNvbS9tZXNzYWdlLz5cbiAgICAgICAgbWVzc2FnZToge30sXG4gICAgICAgIHNlbmQ6ICFbJ2RldmVsb3BtZW50JywgJ3Rlc3QnXS5pbmNsdWRlcyhlbnYpLFxuICAgICAgICBwcmV2aWV3OiBlbnYgPT09ICdkZXZlbG9wbWVudCcsXG4gICAgICAgIC8vIDxodHRwczovL2dpdGh1Yi5jb20vbGFkanMvaTE4bj5cbiAgICAgICAgLy8gc2V0IHRvIGFuIG9iamVjdCB0byBjb25maWd1cmUgYW5kIGVuYWJsZSBpdFxuICAgICAgICBpMThuOiBmYWxzZSxcbiAgICAgICAgLy8gcGFzcyBhIGN1c3RvbSByZW5kZXIgZnVuY3Rpb24gaWYgbmVjZXNzYXJ5XG4gICAgICAgIHJlbmRlcjogdGhpcy5yZW5kZXIuYmluZCh0aGlzKSxcbiAgICAgICAgY3VzdG9tUmVuZGVyOiBmYWxzZSxcbiAgICAgICAgLy8gZm9yY2UgdGV4dC1vbmx5IHJlbmRlcmluZyBvZiB0ZW1wbGF0ZSAoZGlzcmVnYXJkcyB0ZW1wbGF0ZSBmb2xkZXIpXG4gICAgICAgIHRleHRPbmx5OiBmYWxzZSxcbiAgICAgICAgLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS93ZXJrODUvbm9kZS1odG1sLXRvLXRleHQ+XG4gICAgICAgIGh0bWxUb1RleHQ6IHtcbiAgICAgICAgICBpZ25vcmVJbWFnZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBzdWJqZWN0UHJlZml4OiBmYWxzZSxcbiAgICAgICAgLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS9BdXRvbWF0dGljL2p1aWNlPlxuICAgICAgICBqdWljZTogdHJ1ZSxcbiAgICAgICAgLy8gT3ZlcnJpZGUganVpY2UgZ2xvYmFsIHNldHRpbmdzIDxodHRwczovL2dpdGh1Yi5jb20vQXV0b21hdHRpYy9qdWljZSNqdWljZWNvZGVibG9ja3NzPlxuICAgICAgICBqdWljZVNldHRpbmdzOiB7XG4gICAgICAgICAgdGFibGVFbGVtZW50czogWydUQUJMRSddXG4gICAgICAgIH0sXG4gICAgICAgIGp1aWNlUmVzb3VyY2VzOiB7XG4gICAgICAgICAgcHJlc2VydmVJbXBvcnRhbnQ6IHRydWUsXG4gICAgICAgICAgd2ViUmVzb3VyY2VzOiB7XG4gICAgICAgICAgICByZWxhdGl2ZVRvOiBwYXRoLnJlc29sdmUoJ2J1aWxkJyksXG4gICAgICAgICAgICBpbWFnZXM6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAvLyBwYXNzIGEgdHJhbnNwb3J0IGNvbmZpZ3VyYXRpb24gb2JqZWN0IG9yIGEgdHJhbnNwb3J0IGluc3RhbmNlXG4gICAgICAgIC8vIChlLmcuIGFuIGluc3RhbmNlIGlzIGNyZWF0ZWQgdmlhIGBub2RlbWFpbGVyLmNyZWF0ZVRyYW5zcG9ydGApXG4gICAgICAgIC8vIDxodHRwczovL25vZGVtYWlsZXIuY29tL3RyYW5zcG9ydHMvPlxuICAgICAgICB0cmFuc3BvcnQ6IHt9LFxuICAgICAgICAvLyBsYXN0IGxvY2FsZSBmaWVsZCBuYW1lIChhbHNvIHVzZWQgYnkgQGxhZGpzL2kxOG4pXG4gICAgICAgIGxhc3RMb2NhbGVGaWVsZDogJ2xhc3RfbG9jYWxlJyxcbiAgICAgICAgZ2V0UGF0aCh0eXBlLCB0ZW1wbGF0ZSkge1xuICAgICAgICAgIHJldHVybiBwYXRoLmpvaW4odGVtcGxhdGUsIHR5cGUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY29uZmlnXG4gICAgKTtcblxuICAgIC8vIG92ZXJyaWRlIGV4aXN0aW5nIG1ldGhvZFxuICAgIHRoaXMucmVuZGVyID0gdGhpcy5jb25maWcucmVuZGVyO1xuXG4gICAgaWYgKCFfLmlzRnVuY3Rpb24odGhpcy5jb25maWcudHJhbnNwb3J0LnNlbmRNYWlsKSlcbiAgICAgIHRoaXMuY29uZmlnLnRyYW5zcG9ydCA9IG5vZGVtYWlsZXIuY3JlYXRlVHJhbnNwb3J0KHRoaXMuY29uZmlnLnRyYW5zcG9ydCk7XG5cbiAgICAvLyBPdmVycmlkZSBqdWljZSBnbG9iYWwgc2V0dGluZ3MgaHR0cHM6Ly9naXRodWIuY29tL0F1dG9tYXR0aWMvanVpY2UjanVpY2Vjb2RlYmxvY2tzXG4gICAgaWYgKF8uaXNPYmplY3QodGhpcy5jb25maWcuanVpY2VTZXR0aW5ncykpIHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuY29uZmlnLmp1aWNlU2V0dGluZ3MpKSB7XG4gICAgICAgIGp1aWNlW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkZWJ1ZygndHJhbnNmb3JtZWQgY29uZmlnICVPJywgdGhpcy5jb25maWcpO1xuXG4gICAgdGhpcy5qdWljZVJlc291cmNlcyA9IHRoaXMuanVpY2VSZXNvdXJjZXMuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldFRlbXBsYXRlUGF0aCA9IHRoaXMuZ2V0VGVtcGxhdGVQYXRoLmJpbmQodGhpcyk7XG4gICAgdGhpcy50ZW1wbGF0ZUV4aXN0cyA9IHRoaXMudGVtcGxhdGVFeGlzdHMuYmluZCh0aGlzKTtcbiAgICB0aGlzLmNoZWNrQW5kUmVuZGVyID0gdGhpcy5jaGVja0FuZFJlbmRlci5iaW5kKHRoaXMpO1xuICAgIHRoaXMucmVuZGVyID0gdGhpcy5yZW5kZXIuYmluZCh0aGlzKTtcbiAgICB0aGlzLnJlbmRlckFsbCA9IHRoaXMucmVuZGVyQWxsLmJpbmQodGhpcyk7XG4gICAgdGhpcy5zZW5kID0gdGhpcy5zZW5kLmJpbmQodGhpcyk7XG4gIH1cblxuICAvLyBzaG9ydGhhbmQgdXNlIG9mIGBqdWljZVJlc291cmNlc2Agd2l0aCB0aGUgY29uZmlnXG4gIC8vIChtYWlubHkgZm9yIGN1c3RvbSByZW5kZXJzIGxpa2UgZnJvbSBhIGRhdGFiYXNlKVxuICBqdWljZVJlc291cmNlcyhodG1sLCBqdWljZVJlbmRlclJlc291cmNlcyA9IHt9KSB7XG4gICAgY29uc3QganVpY2VSID0gXy5tZXJnZSh0aGlzLmNvbmZpZy5qdWljZVJlc291cmNlcywganVpY2VSZW5kZXJSZXNvdXJjZXMpO1xuICAgIHJldHVybiBqdWljZVJlc291cmNlcyhodG1sLCBqdWljZVIpO1xuICB9XG5cbiAgLy8gYSBzaW1wbGUgaGVscGVyIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgYWN0dWFsIGZpbGUgcGF0aCBmb3IgdGhlIHRlbXBsYXRlXG4gIGFzeW5jIGdldFRlbXBsYXRlUGF0aCh0ZW1wbGF0ZSkge1xuICAgIGxldCBqdWljZVJlbmRlclJlc291cmNlcyA9IHt9O1xuXG4gICAgaWYgKF8uaXNPYmplY3QodGVtcGxhdGUpKSB7XG4gICAgICBqdWljZVJlbmRlclJlc291cmNlcyA9IHRlbXBsYXRlLmp1aWNlUmVzb3VyY2VzO1xuICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5wYXRoO1xuICAgIH1cblxuICAgIGNvbnN0IFtyb290LCB2aWV3XSA9IHBhdGguaXNBYnNvbHV0ZSh0ZW1wbGF0ZSlcbiAgICAgID8gW3BhdGguZGlybmFtZSh0ZW1wbGF0ZSksIHBhdGguYmFzZW5hbWUodGVtcGxhdGUpXVxuICAgICAgOiBbdGhpcy5jb25maWcudmlld3Mucm9vdCwgdGVtcGxhdGVdO1xuICAgIGNvbnN0IHBhdGhzID0gYXdhaXQgZ2V0UGF0aHMoXG4gICAgICByb290LFxuICAgICAgdmlldyxcbiAgICAgIHRoaXMuY29uZmlnLnZpZXdzLm9wdGlvbnMuZXh0ZW5zaW9uXG4gICAgKTtcbiAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGgucmVzb2x2ZShyb290LCBwYXRocy5yZWwpO1xuICAgIHJldHVybiB7IGZpbGVQYXRoLCBwYXRocywganVpY2VSZW5kZXJSZXNvdXJjZXMgfTtcbiAgfVxuXG4gIC8vIHJldHVybnMgdHJ1ZSBvciBmYWxzZSBpZiBhIHRlbXBsYXRlIGV4aXN0c1xuICAvLyAodXNlcyBzYW1lIGxvb2stdXAgYXBwcm9hY2ggYXMgYHJlbmRlcmAgZnVuY3Rpb24pXG4gIGFzeW5jIHRlbXBsYXRlRXhpc3RzKHZpZXcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBmaWxlUGF0aCB9ID0gYXdhaXQgdGhpcy5nZXRUZW1wbGF0ZVBhdGgodmlldyk7XG4gICAgICBjb25zdCBzdGF0cyA9IGF3YWl0IHN0YXQoZmlsZVBhdGgpO1xuICAgICAgaWYgKCFzdGF0cy5pc0ZpbGUoKSkgdGhyb3cgbmV3IEVycm9yKGAke2ZpbGVQYXRofSB3YXMgbm90IGEgZmlsZWApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBkZWJ1ZygndGVtcGxhdGVFeGlzdHMnLCBlcnIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNoZWNrQW5kUmVuZGVyKHR5cGUsIHRlbXBsYXRlLCBsb2NhbHMpIHtcbiAgICBsZXQganVpY2VSZW5kZXJSZXNvdXJjZXMgPSB7fTtcblxuICAgIGlmIChfLmlzT2JqZWN0KHRlbXBsYXRlKSkge1xuICAgICAganVpY2VSZW5kZXJSZXNvdXJjZXMgPSB0ZW1wbGF0ZS5qdWljZVJlc291cmNlcztcbiAgICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucGF0aDtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmNvbmZpZy5nZXRQYXRoKHR5cGUsIHRlbXBsYXRlLCBsb2NhbHMpO1xuICAgIGlmICghdGhpcy5jb25maWcuY3VzdG9tUmVuZGVyKSB7XG4gICAgICBjb25zdCBleGlzdHMgPSBhd2FpdCB0aGlzLnRlbXBsYXRlRXhpc3RzKHN0cmluZyk7XG4gICAgICBpZiAoIWV4aXN0cykgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlbmRlcihcbiAgICAgIHN0cmluZyxcbiAgICAgIHtcbiAgICAgICAgLi4ubG9jYWxzLFxuICAgICAgICAuLi4odHlwZSA9PT0gJ2h0bWwnID8ge30gOiB7IHByZXR0eTogZmFsc2UgfSlcbiAgICAgIH0sXG4gICAgICBqdWljZVJlbmRlclJlc291cmNlc1xuICAgICk7XG4gIH1cblxuICAvLyBwcm9taXNlIHZlcnNpb24gb2YgY29uc29saWRhdGUncyByZW5kZXJcbiAgLy8gaW5zcGlyZWQgYnkga29hLXZpZXdzIGFuZCByZS11c2VzIHRoZSBzYW1lIGNvbmZpZ1xuICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL3F1ZWNrZXp6L2tvYS12aWV3cz5cbiAgYXN5bmMgcmVuZGVyKHZpZXcsIGxvY2FscyA9IHt9KSB7XG4gICAgY29uc3QgeyBtYXAsIGVuZ2luZVNvdXJjZSB9ID0gdGhpcy5jb25maWcudmlld3Mub3B0aW9ucztcbiAgICBjb25zdCB7IGZpbGVQYXRoLCBwYXRocywganVpY2VSZW5kZXJSZXNvdXJjZXMgfSA9XG4gICAgICBhd2FpdCB0aGlzLmdldFRlbXBsYXRlUGF0aCh2aWV3KTtcbiAgICBpZiAocGF0aHMuZXh0ID09PSAnaHRtbCcgJiYgIW1hcCkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgcmVhZEZpbGUoZmlsZVBhdGgsICd1dGY4Jyk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGNvbnN0IGVuZ2luZU5hbWUgPSBtYXAgJiYgbWFwW3BhdGhzLmV4dF0gPyBtYXBbcGF0aHMuZXh0XSA6IHBhdGhzLmV4dDtcbiAgICBjb25zdCByZW5kZXJGbiA9IGVuZ2luZVNvdXJjZVtlbmdpbmVOYW1lXTtcbiAgICBpZiAoIWVuZ2luZU5hbWUgfHwgIXJlbmRlckZuKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRW5naW5lIG5vdCBmb3VuZCBmb3IgdGhlIFwiLiR7cGF0aHMuZXh0fVwiIGZpbGUgZXh0ZW5zaW9uYFxuICAgICAgKTtcblxuICAgIGlmIChfLmlzT2JqZWN0KHRoaXMuY29uZmlnLmkxOG4pKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuY29uZmlnLmkxOG4ubGFzdExvY2FsZUZpZWxkICYmXG4gICAgICAgIHRoaXMuY29uZmlnLmxhc3RMb2NhbGVGaWVsZCAmJlxuICAgICAgICB0aGlzLmNvbmZpZy5pMThuLmxhc3RMb2NhbGVGaWVsZCAhPT0gdGhpcy5jb25maWcubGFzdExvY2FsZUZpZWxkXG4gICAgICApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGhlICdsYXN0TG9jYWxlRmllbGQnIChTdHJpbmcpIG9wdGlvbiBmb3IgQGxhZGpzL2kxOG4gYW5kIGVtYWlsLXRlbXBsYXRlcyBkbyBub3QgbWF0Y2gsIGkxOG4gdmFsdWUgd2FzICR7dGhpcy5jb25maWcuaTE4bi5sYXN0TG9jYWxlRmllbGR9IGFuZCBlbWFpbC10ZW1wbGF0ZXMgdmFsdWUgd2FzICR7dGhpcy5jb25maWcubGFzdExvY2FsZUZpZWxkfWBcbiAgICAgICAgKTtcblxuICAgICAgY29uc3QgaTE4biA9IG5ldyBJMThOKHsgLi4udGhpcy5jb25maWcuaTE4biwgcmVnaXN0ZXI6IGxvY2FscyB9KTtcblxuICAgICAgLy8gc3VwcG9ydCBgbG9jYWxzLnVzZXIubGFzdF9sb2NhbGVgICh2YXJpYWJsZSBiYXNlZCBuYW1lIGxhc3RMb2NhbGVGaWVsZClcbiAgICAgIC8vIChlLmcuIGZvciA8aHR0cHM6Ly9sYWQuanMub3JnPilcbiAgICAgIGNvbnN0IGxvY2FsZSA9IGkxOG4uZ2V0TG9jYWxlKCk7XG4gICAgICBpZiAoXG4gICAgICAgIF8uaXNPYmplY3QobG9jYWxzLnVzZXIpICYmXG4gICAgICAgIF8uaXNTdHJpbmcobG9jYWxzLnVzZXJbdGhpcy5jb25maWcubGFzdExvY2FsZUZpZWxkXSlcbiAgICAgIClcbiAgICAgICAgbG9jYWxzLmxvY2FsZSA9IGxvY2Fscy51c2VyW3RoaXMuY29uZmlnLmxhc3RMb2NhbGVGaWVsZF07XG4gICAgICBlbHNlIGlmICghXy5pc1N0cmluZyhsb2NhbHMubG9jYWxlKSkgbG9jYWxzLmxvY2FsZSA9IGxvY2FsZTtcblxuICAgICAgaWYgKGxvY2FsZSAhPT0gbG9jYWxzLmxvY2FsZSkgaTE4bi5zZXRMb2NhbGUobG9jYWxzLmxvY2FsZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdXRpbC5wcm9taXNpZnkocmVuZGVyRm4pKGZpbGVQYXRoLCBsb2NhbHMpO1xuICAgIC8vIHRyYW5zZm9ybSB0aGUgaHRtbCB3aXRoIGp1aWNlIHVzaW5nIHJlbW90ZSBwYXRoc1xuICAgIC8vIGdvb2dsZSBub3cgc3VwcG9ydHMgbWVkaWEgcXVlcmllc1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2dtYWlsL2Rlc2lnbi9yZWZlcmVuY2Uvc3VwcG9ydGVkX2Nzc1xuICAgIGlmICghdGhpcy5jb25maWcuanVpY2UpIHJldHVybiByZXM7XG4gICAgY29uc3QgaHRtbCA9IGF3YWl0IHRoaXMuanVpY2VSZXNvdXJjZXMocmVzLCBqdWljZVJlbmRlclJlc291cmNlcyk7XG4gICAgcmV0dXJuIGh0bWw7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICBhc3luYyByZW5kZXJBbGwodGVtcGxhdGUsIGxvY2FscyA9IHt9LCBub2RlbWFpbGVyTWVzc2FnZSA9IHt9KSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHsgLi4ubm9kZW1haWxlck1lc3NhZ2UgfTtcblxuICAgIGlmICh0ZW1wbGF0ZSAmJiAoIW1lc3NhZ2Uuc3ViamVjdCB8fCAhbWVzc2FnZS5odG1sIHx8ICFtZXNzYWdlLnRleHQpKSB7XG4gICAgICBjb25zdCBbc3ViamVjdCwgaHRtbCwgdGV4dF0gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgWydzdWJqZWN0JywgJ2h0bWwnLCAndGV4dCddLm1hcCgodHlwZSkgPT5cbiAgICAgICAgICB0aGlzLmNoZWNrQW5kUmVuZGVyKHR5cGUsIHRlbXBsYXRlLCBsb2NhbHMpXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIGlmIChzdWJqZWN0ICYmICFtZXNzYWdlLnN1YmplY3QpIG1lc3NhZ2Uuc3ViamVjdCA9IHN1YmplY3Q7XG4gICAgICBpZiAoaHRtbCAmJiAhbWVzc2FnZS5odG1sKSBtZXNzYWdlLmh0bWwgPSBodG1sO1xuICAgICAgaWYgKHRleHQgJiYgIW1lc3NhZ2UudGV4dCkgbWVzc2FnZS50ZXh0ID0gdGV4dDtcbiAgICB9XG5cbiAgICBpZiAobWVzc2FnZS5zdWJqZWN0ICYmIHRoaXMuY29uZmlnLnN1YmplY3RQcmVmaXgpXG4gICAgICBtZXNzYWdlLnN1YmplY3QgPSB0aGlzLmNvbmZpZy5zdWJqZWN0UHJlZml4ICsgbWVzc2FnZS5zdWJqZWN0O1xuXG4gICAgLy8gdHJpbSBzdWJqZWN0XG4gICAgaWYgKG1lc3NhZ2Uuc3ViamVjdCkgbWVzc2FnZS5zdWJqZWN0ID0gbWVzc2FnZS5zdWJqZWN0LnRyaW0oKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5odG1sVG9UZXh0ICYmIG1lc3NhZ2UuaHRtbCAmJiAhbWVzc2FnZS50ZXh0KVxuICAgICAgLy8gd2UnZCB1c2Ugbm9kZW1haWxlci1odG1sLXRvLXRleHQgcGx1Z2luXG4gICAgICAvLyBidXQgd2UgcmVhbGx5IGRvbid0IG5lZWQgdG8gc3VwcG9ydCBjaWRcbiAgICAgIC8vIDxodHRwczovL2dpdGh1Yi5jb20vYW5kcmlzOS9ub2RlbWFpbGVyLWh0bWwtdG8tdGV4dD5cbiAgICAgIG1lc3NhZ2UudGV4dCA9IGh0bWxUb1RleHQuZnJvbVN0cmluZyhcbiAgICAgICAgbWVzc2FnZS5odG1sLFxuICAgICAgICB0aGlzLmNvbmZpZy5odG1sVG9UZXh0XG4gICAgICApO1xuXG4gICAgLy8gaWYgd2Ugb25seSB3YW50IGEgdGV4dC1iYXNlZCB2ZXJzaW9uIG9mIHRoZSBlbWFpbFxuICAgIGlmICh0aGlzLmNvbmZpZy50ZXh0T25seSkgZGVsZXRlIG1lc3NhZ2UuaHRtbDtcblxuICAgIC8vIGlmIG5vIHN1YmplY3QsIGh0bWwsIG9yIHRleHQgY29udGVudCBleGlzdHMgdGhlbiB3ZSBzaG91bGRcbiAgICAvLyB0aHJvdyBhbiBlcnJvciB0aGF0IHNheXMgYXQgbGVhc3Qgb25lIG11c3QgYmUgZm91bmRcbiAgICAvLyBvdGhlcndpc2UgdGhlIGVtYWlsIHdvdWxkIGJlIGJsYW5rIChkZWZlYXRzIHB1cnBvc2Ugb2YgZW1haWwtdGVtcGxhdGVzKVxuICAgIGlmIChcbiAgICAgICghXy5pc1N0cmluZyhtZXNzYWdlLnN1YmplY3QpIHx8IF8uaXNFbXB0eShfLnRyaW0obWVzc2FnZS5zdWJqZWN0KSkpICYmXG4gICAgICAoIV8uaXNTdHJpbmcobWVzc2FnZS50ZXh0KSB8fCBfLmlzRW1wdHkoXy50cmltKG1lc3NhZ2UudGV4dCkpKSAmJlxuICAgICAgKCFfLmlzU3RyaW5nKG1lc3NhZ2UuaHRtbCkgfHwgXy5pc0VtcHR5KF8udHJpbShtZXNzYWdlLmh0bWwpKSkgJiZcbiAgICAgIF8uaXNFbXB0eShtZXNzYWdlLmF0dGFjaG1lbnRzKVxuICAgIClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE5vIGNvbnRlbnQgd2FzIHBhc3NlZCBmb3Igc3ViamVjdCwgaHRtbCwgdGV4dCwgbm9yIGF0dGFjaG1lbnRzIG1lc3NhZ2UgcHJvcHMuIENoZWNrIHRoYXQgdGhlIGZpbGVzIGZvciB0aGUgdGVtcGxhdGUgXCIke3RlbXBsYXRlfVwiIGV4aXN0LmBcbiAgICAgICk7XG5cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfVxuXG4gIGFzeW5jIHNlbmQob3B0aW9ucyA9IHt9KSB7XG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIHRlbXBsYXRlOiAnJyxcbiAgICAgIG1lc3NhZ2U6IHt9LFxuICAgICAgbG9jYWxzOiB7fSxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9O1xuXG4gICAgbGV0IHsgdGVtcGxhdGUsIG1lc3NhZ2UsIGxvY2FscyB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGF0dGFjaG1lbnRzID1cbiAgICAgIG1lc3NhZ2UuYXR0YWNobWVudHMgfHwgdGhpcy5jb25maWcubWVzc2FnZS5hdHRhY2htZW50cyB8fCBbXTtcblxuICAgIG1lc3NhZ2UgPSBfLmRlZmF1bHRzRGVlcChcbiAgICAgIHt9LFxuICAgICAgXy5vbWl0KG1lc3NhZ2UsICdhdHRhY2htZW50cycpLFxuICAgICAgXy5vbWl0KHRoaXMuY29uZmlnLm1lc3NhZ2UsICdhdHRhY2htZW50cycpXG4gICAgKTtcbiAgICBsb2NhbHMgPSBfLmRlZmF1bHRzRGVlcCh7fSwgdGhpcy5jb25maWcudmlld3MubG9jYWxzLCBsb2NhbHMpO1xuXG4gICAgaWYgKGF0dGFjaG1lbnRzKSBtZXNzYWdlLmF0dGFjaG1lbnRzID0gYXR0YWNobWVudHM7XG5cbiAgICBkZWJ1ZygndGVtcGxhdGUgJXMnLCB0ZW1wbGF0ZSk7XG4gICAgZGVidWcoJ21lc3NhZ2UgJU8nLCBtZXNzYWdlKTtcbiAgICBkZWJ1ZygnbG9jYWxzIChrZXlzIG9ubHkpOiAlTycsIE9iamVjdC5rZXlzKGxvY2FscykpO1xuXG4gICAgLy8gZ2V0IGFsbCBhdmFpbGFibGUgdGVtcGxhdGVzXG4gICAgY29uc3Qgb2JqZWN0ID0gYXdhaXQgdGhpcy5yZW5kZXJBbGwodGVtcGxhdGUsIGxvY2FscywgbWVzc2FnZSk7XG5cbiAgICAvLyBhc3NpZ24gdGhlIG9iamVjdCB2YXJpYWJsZXMgb3ZlciB0byB0aGUgbWVzc2FnZVxuICAgIE9iamVjdC5hc3NpZ24obWVzc2FnZSwgb2JqZWN0KTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5wcmV2aWV3KSB7XG4gICAgICBkZWJ1ZygndXNpbmcgYHByZXZpZXctZW1haWxgIHRvIHByZXZpZXcgZW1haWwnKTtcbiAgICAgIGF3YWl0IChfLmlzT2JqZWN0KHRoaXMuY29uZmlnLnByZXZpZXcpXG4gICAgICAgID8gcHJldmlld0VtYWlsKG1lc3NhZ2UsIHRoaXMuY29uZmlnLnByZXZpZXcpXG4gICAgICAgIDogcHJldmlld0VtYWlsKG1lc3NhZ2UpKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLnNlbmQpIHtcbiAgICAgIGRlYnVnKCdzZW5kIGRpc2FibGVkIHNvIHdlIGFyZSBlbnN1cmluZyBKU09OVHJhbnNwb3J0Jyk7XG4gICAgICAvLyA8aHR0cHM6Ly9naXRodWIuY29tL25vZGVtYWlsZXIvbm9kZW1haWxlci9pc3N1ZXMvNzk4PlxuICAgICAgLy8gaWYgKHRoaXMuY29uZmlnLnRyYW5zcG9ydC5uYW1lICE9PSAnSlNPTlRyYW5zcG9ydCcpXG4gICAgICB0aGlzLmNvbmZpZy50cmFuc3BvcnQgPSBub2RlbWFpbGVyLmNyZWF0ZVRyYW5zcG9ydCh7XG4gICAgICAgIGpzb25UcmFuc3BvcnQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuY29uZmlnLnRyYW5zcG9ydC5zZW5kTWFpbChtZXNzYWdlKTtcbiAgICBkZWJ1ZygnbWVzc2FnZSBzZW50Jyk7XG4gICAgcmVzLm9yaWdpbmFsTWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVtYWlsO1xuIl19
{
"name": "email-templates",
"description": "Create, preview, and send custom email templates for Node.js. Highly configurable and supports automatic inline CSS, stylesheets, embedded images and fonts, and much more! Made for sending beautiful emails with Lad.",
"version": "8.0.9",
"version": "8.0.10",
"author": "Nick Baugh <niftylettuce@gmail.com> (http://niftylettuce.com)",

@@ -35,3 +35,3 @@ "bugs": {

"@commitlint/config-conventional": "^16.2.1",
"ava": "^4.0.1",
"ava": "^4.1.0",
"cheerio": "^1.0.0-rc.10",

@@ -41,3 +41,3 @@ "codecov": "^3.8.3",

"ejs": "^3.1.6",
"eslint": "^8.9.0",
"eslint": "^8.10.0",
"eslint-config-xo-lass": "^1.0.6",

@@ -47,3 +47,3 @@ "eslint-plugin-node": "^11.1.0",

"husky": "^7.0.4",
"lint-staged": "^12.3.4",
"lint-staged": "^12.3.5",
"nodemailer-sendgrid": "^1.0.3",

@@ -50,0 +50,0 @@ "nyc": "^15.1.0",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc