israeli-bank-scrapers 3.8.1 → 3.10.0

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.
@@ -88,3 +88,13 @@ export declare const SCRAPERS: {
88
88
  loginFields: string[];
89
89
  };
90
90
  };
91
+ export declare enum ScraperProgressTypes {
92
+ Initializing = "INITIALIZING",
93
+ StartScraping = "START_SCRAPING",
94
+ LoggingIn = "LOGGING_IN",
95
+ LoginSuccess = "LOGIN_SUCCESS",
96
+ LoginFailed = "LOGIN_FAILED",
97
+ ChangePassword = "CHANGE_PASSWORD",
98
+ EndScraping = "END_SCRAPING",
99
+ Terminating = "TERMINATING"
100
+ }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.SCRAPERS = exports.CompanyTypes = exports.PASSWORD_FIELD = void 0;
6
+ exports.ScraperProgressTypes = exports.SCRAPERS = exports.CompanyTypes = exports.PASSWORD_FIELD = void 0;
7
7
  // NOTICE: avoid changing exported keys as they are part of the public api
8
8
  const PASSWORD_FIELD = 'password';
9
9
  exports.PASSWORD_FIELD = PASSWORD_FIELD;
@@ -103,4 +103,17 @@ const SCRAPERS = {
103
103
  }
104
104
  };
105
105
  exports.SCRAPERS = SCRAPERS;
106
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbml0aW9ucy50cyJdLCJuYW1lcyI6WyJQQVNTV09SRF9GSUVMRCIsIkNvbXBhbnlUeXBlcyIsIlNDUkFQRVJTIiwiaGFwb2FsaW0iLCJuYW1lIiwibG9naW5GaWVsZHMiLCJoYXBvYWxpbUJlT25saW5lIiwibGV1bWkiLCJtaXpyYWhpIiwiZGlzY291bnQiLCJvdHNhckhhaGF5YWwiLCJsZXVtaUNhcmQiLCJtYXgiLCJ2aXNhQ2FsIiwiaXNyYWNhcmQiLCJhbWV4IiwidW5pb24iLCJiZWlubGV1bWkiLCJtYXNzYWQiLCJ5YWhhdiIsImJleWFoYWRCaXNodmlsaGEiLCJvbmVaZXJvIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUVPLE1BQU1BLGNBQWMsR0FBRyxVQUF2Qjs7SUFFS0MsWTs7O1dBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0dBQUFBLFksNEJBQUFBLFk7O0FBb0JMLE1BQU1DLFFBQVEsR0FBRztBQUN0QixHQUFDRCxZQUFZLENBQUNFLFFBQWQsR0FBeUI7QUFDdkJDLElBQUFBLElBQUksRUFBRSxlQURpQjtBQUV2QkMsSUFBQUEsV0FBVyxFQUFFLENBQUMsVUFBRCxFQUFhTCxjQUFiO0FBRlUsR0FESDtBQUt0QixHQUFDQyxZQUFZLENBQUNLLGdCQUFkLEdBQWlDO0FBQUU7QUFDakNGLElBQUFBLElBQUksRUFBRSxlQUR5QjtBQUUvQkMsSUFBQUEsV0FBVyxFQUFFLENBQUMsVUFBRCxFQUFhTCxjQUFiO0FBRmtCLEdBTFg7QUFT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QUFFLENBQUMsT0FBRCxFQUFVTCxjQUFWLEVBQTBCLGtCQUExQixFQUE4QyxhQUE5QyxFQUE2RCxrQkFBN0Q7QUFGUztBQWpFRixDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIE5PVElDRTogYXZvaWQgY2hhbmdpbmcgZXhwb3J0ZWQga2V5cyBhcyB0aGV5IGFyZSBwYXJ0IG9mIHRoZSBwdWJsaWMgYXBpXG5cbmV4cG9ydCBjb25zdCBQQVNTV09SRF9GSUVMRCA9ICdwYXNzd29yZCc7XG5cbmV4cG9ydCBlbnVtIENvbXBhbnlUeXBlcyB7XG4gIGhhcG9hbGltID0gJ2hhcG9hbGltJyxcbiAgaGFwb2FsaW1CZU9ubGluZSA9ICdoYXBvYWxpbUJlT25saW5lJyxcbiAgYmVpbmxldW1pID0gJ2JlaW5sZXVtaScsXG4gIHVuaW9uID0gJ3VuaW9uJyxcbiAgYW1leCA9ICdhbWV4JyxcbiAgaXNyYWNhcmQgPSAnaXNyYWNhcmQnLFxuICB2aXNhQ2FsID0gJ3Zpc2FDYWwnLFxuICBtYXggPSAnbWF4JyxcbiAgbGV1bWlDYXJkID0gJ2xldW1pQ2FyZCcsXG4gIG90c2FySGFoYXlhbCA9ICdvdHNhckhhaGF5YWwnLFxuICBkaXNjb3VudCA9ICdkaXNjb3VudCcsXG4gIG1penJhaGkgPSAnbWl6cmFoaScsXG4gIGxldW1pID0gJ2xldW1pJyxcbiAgbWFzc2FkID0gJ21hc3NhZCcsXG4gIHlhaGF2ID0gJ3lhaGF2JyxcbiAgYmV5YWhhZEJpc2h2aWxoYSA9ICdiZXlhaGFkQmlzaHZpbGhhJyxcbiAgb25lWmVybyA9ICdvbmVaZXJvJ1xufVxuXG5leHBvcnQgY29uc3QgU0NSQVBFUlMgPSB7XG4gIFtDb21wYW55VHlwZXMuaGFwb2FsaW1dOiB7XG4gICAgbmFtZTogJ0JhbmsgSGFwb2FsaW0nLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJDb2RlJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLmhhcG9hbGltQmVPbmxpbmVdOiB7IC8vIFRPRE8gcmVtb3ZlIGluIE1ham9yIHZlcnNpb25cbiAgICBuYW1lOiAnQmFuayBIYXBvYWxpbScsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlckNvZGUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMubGV1bWldOiB7XG4gICAgbmFtZTogJ0JhbmsgTGV1bWknLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJuYW1lJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLm1penJhaGldOiB7XG4gICAgbmFtZTogJ01penJhaGkgQmFuaycsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMuZGlzY291bnRdOiB7XG4gICAgbmFtZTogJ0Rpc2NvdW50IEJhbmsnLFxuICAgIGxvZ2luRmllbGRzOiBbJ2lkJywgUEFTU1dPUkRfRklFTEQsICdudW0nXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy5vdHNhckhhaGF5YWxdOiB7XG4gICAgbmFtZTogJ0JhbmsgT3RzYXIgSGFoYXlhbCcsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMubGV1bWlDYXJkXTogeyAvLyBUT0RPIHJlbW92ZSBpbiBNYWpvciB2ZXJzaW9uXG4gICAgbmFtZTogJ0xldW1pIENhcmQnLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJuYW1lJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLm1heF06IHtcbiAgICBuYW1lOiAnTWF4JyxcbiAgICBsb2dpbkZpZWxkczogWyd1c2VybmFtZScsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy52aXNhQ2FsXToge1xuICAgIG5hbWU6ICdWaXNhIENhbCcsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMuaXNyYWNhcmRdOiB7XG4gICAgbmFtZTogJ0lzcmFjYXJkJyxcbiAgICBsb2dpbkZpZWxkczogWydpZCcsICdjYXJkNkRpZ2l0cycsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy5hbWV4XToge1xuICAgIG5hbWU6ICdBbWV4JyxcbiAgICBsb2dpbkZpZWxkczogWydpZCcsICdjYXJkNkRpZ2l0cycsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy51bmlvbl06IHtcbiAgICBuYW1lOiAnVW5pb24nLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJuYW1lJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLmJlaW5sZXVtaV06IHtcbiAgICBuYW1lOiAnQmVpbmxldW1pJyxcbiAgICBsb2dpbkZpZWxkczogWyd1c2VybmFtZScsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy5tYXNzYWRdOiB7XG4gICAgbmFtZTogJ01hc3NhZCcsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMueWFoYXZdOiB7XG4gICAgbmFtZTogJ0JhbmsgWWFoYXYnLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJuYW1lJywgJ25hdGlvbmFsSUQnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMuYmV5YWhhZEJpc2h2aWxoYV06IHtcbiAgICBuYW1lOiAnQmV5YWhhZCBCaXNodmlsaGEnLFxuICAgIGxvZ2luRmllbGRzOiBbJ2lkJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLm9uZVplcm9dOiB7XG4gICAgbmFtZTogJ09uZSBaZXJvJyxcbiAgICBsb2dpbkZpZWxkczogWydlbWFpbCcsIFBBU1NXT1JEX0ZJRUxELCAnb3RwQ29kZVJldHJpZXZlcicsICdwaG9uZU51bWJlcicsICdvdHBMb25nVGVybVRva2VuJ10sXG4gIH0sXG59O1xuIl19
106
+ let ScraperProgressTypes;
107
+ exports.ScraperProgressTypes = ScraperProgressTypes;
108
+
109
+ (function (ScraperProgressTypes) {
110
+ ScraperProgressTypes["Initializing"] = "INITIALIZING";
111
+ ScraperProgressTypes["StartScraping"] = "START_SCRAPING";
112
+ ScraperProgressTypes["LoggingIn"] = "LOGGING_IN";
113
+ ScraperProgressTypes["LoginSuccess"] = "LOGIN_SUCCESS";
114
+ ScraperProgressTypes["LoginFailed"] = "LOGIN_FAILED";
115
+ ScraperProgressTypes["ChangePassword"] = "CHANGE_PASSWORD";
116
+ ScraperProgressTypes["EndScraping"] = "END_SCRAPING";
117
+ ScraperProgressTypes["Terminating"] = "TERMINATING";
118
+ })(ScraperProgressTypes || (exports.ScraperProgressTypes = ScraperProgressTypes = {}));
119
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbml0aW9ucy50cyJdLCJuYW1lcyI6WyJQQVNTV09SRF9GSUVMRCIsIkNvbXBhbnlUeXBlcyIsIlNDUkFQRVJTIiwiaGFwb2FsaW0iLCJuYW1lIiwibG9naW5GaWVsZHMiLCJoYXBvYWxpbUJlT25saW5lIiwibGV1bWkiLCJtaXpyYWhpIiwiZGlzY291bnQiLCJvdHNhckhhaGF5YWwiLCJsZXVtaUNhcmQiLCJtYXgiLCJ2aXNhQ2FsIiwiaXNyYWNhcmQiLCJhbWV4IiwidW5pb24iLCJiZWlubGV1bWkiLCJtYXNzYWQiLCJ5YWhhdiIsImJleWFoYWRCaXNodmlsaGEiLCJvbmVaZXJvIiwiU2NyYXBlclByb2dyZXNzVHlwZXMiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBRU8sTUFBTUEsY0FBYyxHQUFHLFVBQXZCOztJQUVLQyxZOzs7V0FBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7QUFBQUEsRUFBQUEsWTtBQUFBQSxFQUFBQSxZO0FBQUFBLEVBQUFBLFk7R0FBQUEsWSw0QkFBQUEsWTs7QUFvQkwsTUFBTUMsUUFBUSxHQUFHO0FBQ3RCLEdBQUNELFlBQVksQ0FBQ0UsUUFBZCxHQUF5QjtBQUN2QkMsSUFBQUEsSUFBSSxFQUFFLGVBRGlCO0FBRXZCQyxJQUFBQSxXQUFXLEVBQUUsQ0FBQyxVQUFELEVBQWFMLGNBQWI7QUFGVSxHQURIO0FBS3RCLEdBQUNDLFlBQVksQ0FBQ0ssZ0JBQWQsR0FBaUM7QUFBRTtBQUNqQ0YsSUFBQUEsSUFBSSxFQUFFLGVBRHlCO0FBRS9CQyxJQUFBQSxXQUFXLEVBQUUsQ0FBQyxVQUFELEVB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RGdCO0FBRXRCQyxJQUFBQSxXQUFXLEVBQUUsQ0FBQyxPQUFELEVBQVVMLGNBQVYsRUFBMEIsa0JBQTFCLEVBQThDLGFBQTlDLEVBQTZELGtCQUE3RDtBQUZTO0FBakVGLENBQWpCOztJQXVFS3NCLG9COzs7V0FBQUEsb0I7QUFBQUEsRUFBQUEsb0I7QUFBQUEsRUFBQUEsb0I7QUFBQUEsRUFBQUEsb0I7QUFBQUEsRUFBQUEsb0I7QUFBQUEsRUFBQUEsb0I7QUFBQUEsRUFBQUEsb0I7QUFBQUEsRUFBQUEsb0I7QUFBQUEsRUFBQUEsb0I7R0FBQUEsb0Isb0NBQUFBLG9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTk9USUNFOiBhdm9pZCBjaGFuZ2luZyBleHBvcnRlZCBrZXlzIGFzIHRoZXkgYXJlIHBhcnQgb2YgdGhlIHB1YmxpYyBhcGlcblxuZXhwb3J0IGNvbnN0IFBBU1NXT1JEX0ZJRUxEID0gJ3Bhc3N3b3JkJztcblxuZXhwb3J0IGVudW0gQ29tcGFueVR5cGVzIHtcbiAgaGFwb2FsaW0gPSAnaGFwb2FsaW0nLFxuICBoYXBvYWxpbUJlT25saW5lID0gJ2hhcG9hbGltQmVPbmxpbmUnLFxuICBiZWlubGV1bWkgPSAnYmVpbmxldW1pJyxcbiAgdW5pb24gPSAndW5pb24nLFxuICBhbWV4ID0gJ2FtZXgnLFxuICBpc3JhY2FyZCA9ICdpc3JhY2FyZCcsXG4gIHZpc2FDYWwgPSAndmlzYUNhbCcsXG4gIG1heCA9ICdtYXgnLFxuICBsZXVtaUNhcmQgPSAnbGV1bWlDYXJkJyxcbiAgb3RzYXJIYWhheWFsID0gJ290c2FySGFoYXlhbCcsXG4gIGRpc2NvdW50ID0gJ2Rpc2NvdW50JyxcbiAgbWl6cmFoaSA9ICdtaXpyYWhpJyxcbiAgbGV1bWkgPSAnbGV1bWknLFxuICBtYXNzYWQgPSAnbWFzc2FkJyxcbiAgeWFoYXYgPSAneWFoYXYnLFxuICBiZXlhaGFkQmlzaHZpbGhhID0gJ2JleWFoYWRCaXNodmlsaGEnLFxuICBvbmVaZXJvID0gJ29uZVplcm8nXG59XG5cbmV4cG9ydCBjb25zdCBTQ1JBUEVSUyA9IHtcbiAgW0NvbXBhbnlUeXBlcy5oYXBvYWxpbV06IHtcbiAgICBuYW1lOiAnQmFuayBIYXBvYWxpbScsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlckNvZGUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMuaGFwb2FsaW1CZU9ubGluZV06IHsgLy8gVE9ETyByZW1vdmUgaW4gTWFqb3IgdmVyc2lvblxuICAgIG5hbWU6ICdCYW5rIEhhcG9hbGltJyxcbiAgICBsb2dpbkZpZWxkczogWyd1c2VyQ29kZScsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy5sZXVtaV06IHtcbiAgICBuYW1lOiAnQmFuayBMZXVtaScsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMubWl6cmFoaV06IHtcbiAgICBuYW1lOiAnTWl6cmFoaSBCYW5rJyxcbiAgICBsb2dpbkZpZWxkczogWyd1c2VybmFtZScsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy5kaXNjb3VudF06IHtcbiAgICBuYW1lOiAnRGlzY291bnQgQmFuaycsXG4gICAgbG9naW5GaWVsZHM6IFsnaWQnLCBQQVNTV09SRF9GSUVMRCwgJ251bSddLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLm90c2FySGFoYXlhbF06IHtcbiAgICBuYW1lOiAnQmFuayBPdHNhciBIYWhheWFsJyxcbiAgICBsb2dpbkZpZWxkczogWyd1c2VybmFtZScsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy5sZXVtaUNhcmRdOiB7IC8vIFRPRE8gcmVtb3ZlIGluIE1ham9yIHZlcnNpb25cbiAgICBuYW1lOiAnTGV1bWkgQ2FyZCcsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMubWF4XToge1xuICAgIG5hbWU6ICdNYXgnLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJuYW1lJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLnZpc2FDYWxdOiB7XG4gICAgbmFtZTogJ1Zpc2EgQ2FsJyxcbiAgICBsb2dpbkZpZWxkczogWyd1c2VybmFtZScsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy5pc3JhY2FyZF06IHtcbiAgICBuYW1lOiAnSXNyYWNhcmQnLFxuICAgIGxvZ2luRmllbGRzOiBbJ2lkJywgJ2NhcmQ2RGlnaXRzJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLmFtZXhdOiB7XG4gICAgbmFtZTogJ0FtZXgnLFxuICAgIGxvZ2luRmllbGRzOiBbJ2lkJywgJ2NhcmQ2RGlnaXRzJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLnVuaW9uXToge1xuICAgIG5hbWU6ICdVbmlvbicsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMuYmVpbmxldW1pXToge1xuICAgIG5hbWU6ICdCZWlubGV1bWknLFxuICAgIGxvZ2luRmllbGRzOiBbJ3VzZXJuYW1lJywgUEFTU1dPUkRfRklFTERdLFxuICB9LFxuICBbQ29tcGFueVR5cGVzLm1hc3NhZF06IHtcbiAgICBuYW1lOiAnTWFzc2FkJyxcbiAgICBsb2dpbkZpZWxkczogWyd1c2VybmFtZScsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy55YWhhdl06IHtcbiAgICBuYW1lOiAnQmFuayBZYWhhdicsXG4gICAgbG9naW5GaWVsZHM6IFsndXNlcm5hbWUnLCAnbmF0aW9uYWxJRCcsIFBBU1NXT1JEX0ZJRUxEXSxcbiAgfSxcbiAgW0NvbXBhbnlUeXBlcy5iZXlhaGFkQmlzaHZpbGhhXToge1xuICAgIG5hbWU6ICdCZXlhaGFkIEJpc2h2aWxoYScsXG4gICAgbG9naW5GaWVsZHM6IFsnaWQnLCBQQVNTV09SRF9GSUVMRF0sXG4gIH0sXG4gIFtDb21wYW55VHlwZXMub25lWmVyb106IHtcbiAgICBuYW1lOiAnT25lIFplcm8nLFxuICAgIGxvZ2luRmllbGRzOiBbJ2VtYWlsJywgUEFTU1dPUkRfRklFTEQsICdvdHBDb2RlUmV0cmlldmVyJywgJ3Bob25lTnVtYmVyJywgJ290cExvbmdUZXJtVG9rZW4nXSxcbiAgfSxcbn07XG5cbmV4cG9ydCBlbnVtIFNjcmFwZXJQcm9ncmVzc1R5cGVzIHtcbiAgSW5pdGlhbGl6aW5nID0gJ0lOSVRJQUxJWklORycsXG4gIFN0YXJ0U2NyYXBpbmcgPSAnU1RBUlRfU0NSQVBJTkcnLFxuICBMb2dnaW5nSW4gPSAnTE9HR0lOR19JTicsXG4gIExvZ2luU3VjY2VzcyA9ICdMT0dJTl9TVUNDRVNTJyxcbiAgTG9naW5GYWlsZWQgPSAnTE9HSU5fRkFJTEVEJyxcbiAgQ2hhbmdlUGFzc3dvcmQgPSAnQ0hBTkdFX1BBU1NXT1JEJyxcbiAgRW5kU2NyYXBpbmcgPSAnRU5EX1NDUkFQSU5HJyxcbiAgVGVybWluYXRpbmcgPSAnVEVSTUlOQVRJTkcnLFxufVxuIl19
@@ -1,6 +1,9 @@
1
1
  export declare class TimeoutError extends Error {
2
2
  }
3
3
  export declare const SECOND = 1000;
4
- export declare function waitUntil(asyncTest: () => Promise<any>, description?: string, timeout?: number, interval?: number): Promise<any>;
4
+ /**
5
+ * Wait until a promise resolves with a truthy value or reject after a timeout
6
+ */
7
+ export declare function waitUntil<T>(asyncTest: () => Promise<T>, description?: string, timeout?: number, interval?: number): Promise<T>;
5
8
  export declare function raceTimeout(ms: number, promise: Promise<any>): Promise<any>;
6
9
  export declare function runSerial<T>(actions: (() => Promise<T>)[]): Promise<T[]>;
@@ -26,15 +26,20 @@ function timeoutPromise(ms, promise, description) {
26
26
  reject(error);
27
27
  }, ms);
28
28
  });
29
- return Promise.race([promise, timeout]);
29
+ return Promise.race([promise, // casting to avoid type error- safe since this promise will always reject
30
+ timeout]);
30
31
  }
32
+ /**
33
+ * Wait until a promise resolves with a truthy value or reject after a timeout
34
+ */
35
+
31
36
 
32
37
  function waitUntil(asyncTest, description = '', timeout = 10000, interval = 100) {
33
38
  const promise = new Promise((resolve, reject) => {
34
39
  function wait() {
35
40
  asyncTest().then(value => {
36
- if (value === true) {
37
- resolve();
41
+ if (value) {
42
+ resolve(value);
38
43
  } else {
39
44
  setTimeout(wait, interval);
40
45
  }
@@ -57,4 +62,4 @@ function raceTimeout(ms, promise) {
57
62
  function runSerial(actions) {
58
63
  return actions.reduce((m, a) => m.then(async x => [...x, await a()]), Promise.resolve(new Array()));
59
64
  }
60
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL3dhaXRpbmcudHMiXSwibmFtZXMiOlsiVGltZW91dEVycm9yIiwiRXJyb3IiLCJTRUNPTkQiLCJ0aW1lb3V0UHJvbWlzZSIsIm1zIiwicHJvbWlzZSIsImRlc2NyaXB0aW9uIiwidGltZW91dCIsIlByb21pc2UiLCJfIiwicmVqZWN0IiwiaWQiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiZXJyb3IiLCJyYWNlIiwid2FpdFVudGlsIiwiYXN5bmNUZXN0IiwiaW50ZXJ2YWwiLCJyZXNvbHZlIiwid2FpdCIsInRoZW4iLCJ2YWx1ZSIsImNhdGNoIiwicmFjZVRpbWVvdXQiLCJlcnIiLCJydW5TZXJpYWwiLCJhY3Rpb25zIiwicmVkdWNlIiwibSIsImEiLCJ4IiwiQXJyYXkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQ08sTUFBTUEsWUFBTixTQUEyQkMsS0FBM0IsQ0FBaUM7OztBQUlqQyxNQUFNQyxNQUFNLEdBQUcsSUFBZjs7O0FBRVAsU0FBU0MsY0FBVCxDQUF3QkMsRUFBeEIsRUFBb0NDLE9BQXBDLEVBQTJEQyxXQUEzRCxFQUFnRjtBQUM5RSxRQUFNQyxPQUFPLEdBQUcsSUFBSUMsT0FBSixDQUFZLENBQUNDLENBQUQsRUFBSUMsTUFBSixLQUFlO0FBQ3pDLFVBQU1DLEVBQUUsR0FBR0MsVUFBVSxDQUFDLE1BQU07QUFDMUJDLE1BQUFBLFlBQVksQ0FBQ0YsRUFBRCxDQUFaO0FBQ0EsWUFBTUcsS0FBSyxHQUFHLElBQUlkLFlBQUosQ0FBaUJNLFdBQWpCLENBQWQ7QUFDQUksTUFBQUEsTUFBTSxDQUFDSSxLQUFELENBQU47QUFDRCxLQUpvQixFQUlsQlYsRUFKa0IsQ0FBckI7QUFLRCxHQU5lLENBQWhCO0FBUUEsU0FBT0ksT0FBTyxDQUFDTyxJQUFSLENBQWEsQ0FDbEJWLE9BRGtCLEVBRWxCRSxPQUZrQixDQUFiLENBQVA7QUFJRDs7QUFFTSxTQUFTUyxTQUFULENBQW1CQyxTQUFuQixFQUFrRFgsV0FBVyxHQUFHLEVBQWhFLEVBQW9FQyxPQUFPLEdBQUcsS0FBOUUsRUFBcUZXLFFBQVEsR0FBRyxHQUFoRyxFQUFxRztBQUMxRyxRQUFNYixPQUFPLEdBQUcsSUFBSUcsT0FBSixDQUFZLENBQUNXLE9BQUQsRUFBVVQsTUFBVixLQUFxQjtBQUMvQyxhQUFTVSxJQUFULEdBQWdCO0FBQ2RILE1BQUFBLFNBQVMsR0FBR0ksSUFBWixDQUFrQkMsS0FBRCxJQUFXO0FBQzFCLFlBQUlBLEtBQUssS0FBSyxJQUFkLEVBQW9CO0FBQ2xCSCxVQUFBQSxPQUFPO0FBQ1IsU0FGRCxNQUVPO0FBQ0xQLFVBQUFBLFVBQVUsQ0FBQ1EsSUFBRCxFQUFPRixRQUFQLENBQVY7QUFDRDtBQUNGLE9BTkQsRUFNR0ssS0FOSCxDQU1TLE1BQU07QUFDYmIsUUFBQUEsTUFBTTtBQUNQLE9BUkQ7QUFTRDs7QUFDRFUsSUFBQUEsSUFBSTtBQUNMLEdBYmUsQ0FBaEI7QUFjQSxTQUFPakIsY0FBYyxDQUFDSSxPQUFELEVBQVVGLE9BQVYsRUFBbUJDLFdBQW5CLENBQXJCO0FBQ0Q7O0FBRU0sU0FBU2tCLFdBQVQsQ0FBcUJwQixFQUFyQixFQUFpQ0MsT0FBakMsRUFBd0Q7QUFDN0QsU0FBT0YsY0FBYyxDQUFDQyxFQUFELEVBQUtDLE9BQUwsRUFBYyxTQUFkLENBQWQsQ0FBdUNrQixLQUF2QyxDQUE4Q0UsR0FBRCxJQUFTO0FBQzNELFFBQUksRUFBRUEsR0FBRyxZQUFZekIsWUFBakIsQ0FBSixFQUFvQyxNQUFNeUIsR0FBTjtBQUNyQyxHQUZNLENBQVA7QUFHRDs7QUFFTSxTQUFTQyxTQUFULENBQXNCQyxPQUF0QixFQUFtRTtBQUN4RSxTQUFPQSxPQUFPLENBQUNDLE1BQVIsQ0FBZSxDQUFDQyxDQUFELEVBQUlDLENBQUosS0FBVUQsQ0FBQyxDQUFDUixJQUFGLENBQU8sTUFBT1UsQ0FBUCxJQUFhLENBQUMsR0FBR0EsQ0FBSixFQUFPLE1BQU1ELENBQUMsRUFBZCxDQUFwQixDQUF6QixFQUFpRXRCLE9BQU8sQ0FBQ1csT0FBUixDQUFxQixJQUFJYSxLQUFKLEVBQXJCLENBQWpFLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGNsYXNzIFRpbWVvdXRFcnJvciBleHRlbmRzIEVycm9yIHtcblxufVxuXG5leHBvcnQgY29uc3QgU0VDT05EID0gMTAwMDtcblxuZnVuY3Rpb24gdGltZW91dFByb21pc2UobXM6IG51bWJlciwgcHJvbWlzZTogUHJvbWlzZTxhbnk+LCBkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gIGNvbnN0IHRpbWVvdXQgPSBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgaWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dChpZCk7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBUaW1lb3V0RXJyb3IoZGVzY3JpcHRpb24pO1xuICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICB9LCBtcyk7XG4gIH0pO1xuXG4gIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgIHByb21pc2UsXG4gICAgdGltZW91dCxcbiAgXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3YWl0VW50aWwoYXN5bmNUZXN0OiAoKSA9PiBQcm9taXNlPGFueT4sIGRlc2NyaXB0aW9uID0gJycsIHRpbWVvdXQgPSAxMDAwMCwgaW50ZXJ2YWwgPSAxMDApIHtcbiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBmdW5jdGlvbiB3YWl0KCkge1xuICAgICAgYXN5bmNUZXN0KCkudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldFRpbWVvdXQod2FpdCwgaW50ZXJ2YWwpO1xuICAgICAgICB9XG4gICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHJlamVjdCgpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHdhaXQoKTtcbiAgfSk7XG4gIHJldHVybiB0aW1lb3V0UHJvbWlzZSh0aW1lb3V0LCBwcm9taXNlLCBkZXNjcmlwdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYWNlVGltZW91dChtczogbnVtYmVyLCBwcm9taXNlOiBQcm9taXNlPGFueT4pIHtcbiAgcmV0dXJuIHRpbWVvdXRQcm9taXNlKG1zLCBwcm9taXNlLCAndGltZW91dCcpLmNhdGNoKChlcnIpID0+IHtcbiAgICBpZiAoIShlcnIgaW5zdGFuY2VvZiBUaW1lb3V0RXJyb3IpKSB0aHJvdyBlcnI7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuU2VyaWFsPFQ+KGFjdGlvbnM6ICgoKSA9PiBQcm9taXNlPFQ+KVtdKTogUHJvbWlzZTxUW10+IHtcbiAgcmV0dXJuIGFjdGlvbnMucmVkdWNlKChtLCBhKSA9PiBtLnRoZW4oYXN5bmMgKHgpID0+IFsuLi54LCBhd2FpdCBhKCldKSwgUHJvbWlzZS5yZXNvbHZlPFRbXT4obmV3IEFycmF5PFQ+KCkpKTtcbn1cbiJdfQ==
65
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL3dhaXRpbmcudHMiXSwibmFtZXMiOlsiVGltZW91dEVycm9yIiwiRXJyb3IiLCJTRUNPTkQiLCJ0aW1lb3V0UHJvbWlzZSIsIm1zIiwicHJvbWlzZSIsImRlc2NyaXB0aW9uIiwidGltZW91dCIsIlByb21pc2UiLCJfIiwicmVqZWN0IiwiaWQiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiZXJyb3IiLCJyYWNlIiwid2FpdFVudGlsIiwiYXN5bmNUZXN0IiwiaW50ZXJ2YWwiLCJyZXNvbHZlIiwid2FpdCIsInRoZW4iLCJ2YWx1ZSIsImNhdGNoIiwicmFjZVRpbWVvdXQiLCJlcnIiLCJydW5TZXJpYWwiLCJhY3Rpb25zIiwicmVkdWNlIiwibSIsImEiLCJ4IiwiQXJyYXkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQ08sTUFBTUEsWUFBTixTQUEyQkMsS0FBM0IsQ0FBaUM7OztBQUlqQyxNQUFNQyxNQUFNLEdBQUcsSUFBZjs7O0FBRVAsU0FBU0MsY0FBVCxDQUEyQkMsRUFBM0IsRUFBdUNDLE9BQXZDLEVBQTREQyxXQUE1RCxFQUE2RjtBQUMzRixRQUFNQyxPQUFPLEdBQUcsSUFBSUMsT0FBSixDQUFZLENBQUNDLENBQUQsRUFBSUMsTUFBSixLQUFlO0FBQ3pDLFVBQU1DLEVBQUUsR0FBR0MsVUFBVSxDQUFDLE1BQU07QUFDMUJDLE1BQUFBLFlBQVksQ0FBQ0YsRUFBRCxDQUFaO0FBQ0EsWUFBTUcsS0FBSyxHQUFHLElBQUlkLFlBQUosQ0FBaUJNLFdBQWpCLENBQWQ7QUFDQUksTUFBQUEsTUFBTSxDQUFDSSxLQUFELENBQU47QUFDRCxLQUpvQixFQUlsQlYsRUFKa0IsQ0FBckI7QUFLRCxHQU5lLENBQWhCO0FBUUEsU0FBT0ksT0FBTyxDQUFDTyxJQUFSLENBQWEsQ0FDbEJWLE9BRGtCLEVBRWxCO0FBQ0FFLEVBQUFBLE9BSGtCLENBQWIsQ0FBUDtBQUtEO0FBRUQ7Ozs7O0FBR08sU0FBU1MsU0FBVCxDQUFzQkMsU0FBdEIsRUFBbURYLFdBQVcsR0FBRyxFQUFqRSxFQUFxRUMsT0FBTyxHQUFHLEtBQS9FLEVBQXNGVyxRQUFRLEdBQUcsR0FBakcsRUFBc0c7QUFDM0csUUFBTWIsT0FBTyxHQUFHLElBQUlHLE9BQUosQ0FBZSxDQUFDVyxPQUFELEVBQVVULE1BQVYsS0FBcUI7QUFDbEQsYUFBU1UsSUFBVCxHQUFnQjtBQUNkSCxNQUFBQSxTQUFTLEdBQUdJLElBQVosQ0FBa0JDLEtBQUQsSUFBVztBQUMxQixZQUFJQSxLQUFKLEVBQVc7QUFDVEgsVUFBQUEsT0FBTyxDQUFDRyxLQUFELENBQVA7QUFDRCxTQUZELE1BRU87QUFDTFYsVUFBQUEsVUFBVSxDQUFDUSxJQUFELEVBQU9GLFFBQVAsQ0FBVjtBQUNEO0FBQ0YsT0FORCxFQU1HSyxLQU5ILENBTVMsTUFBTTtBQUNiYixRQUFBQSxNQUFNO0FBQ1AsT0FSRDtBQVNEOztBQUNEVSxJQUFBQSxJQUFJO0FBQ0wsR0FiZSxDQUFoQjtBQWNBLFNBQU9qQixjQUFjLENBQUNJLE9BQUQsRUFBVUYsT0FBVixFQUFtQkMsV0FBbkIsQ0FBckI7QUFDRDs7QUFFTSxTQUFTa0IsV0FBVCxDQUFxQnBCLEVBQXJCLEVBQWlDQyxPQUFqQyxFQUF3RDtBQUM3RCxTQUFPRixjQUFjLENBQUNDLEVBQUQsRUFBS0MsT0FBTCxFQUFjLFNBQWQsQ0FBZCxDQUF1Q2tCLEtBQXZDLENBQThDRSxHQUFELElBQVM7QUFDM0QsUUFBSSxFQUFFQSxHQUFHLFlBQVl6QixZQUFqQixDQUFKLEVBQW9DLE1BQU15QixHQUFOO0FBQ3JDLEdBRk0sQ0FBUDtBQUdEOztBQUVNLFNBQVNDLFNBQVQsQ0FBc0JDLE9BQXRCLEVBQW1FO0FBQ3hFLFNBQU9BLE9BQU8sQ0FBQ0MsTUFBUixDQUFlLENBQUNDLENBQUQsRUFBSUMsQ0FBSixLQUFVRCxDQUFDLENBQUNSLElBQUYsQ0FBTyxNQUFPVSxDQUFQLElBQWEsQ0FBQyxHQUFHQSxDQUFKLEVBQU8sTUFBTUQsQ0FBQyxFQUFkLENBQXBCLENBQXpCLEVBQWlFdEIsT0FBTyxDQUFDVyxPQUFSLENBQXFCLElBQUlhLEtBQUosRUFBckIsQ0FBakUsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgY2xhc3MgVGltZW91dEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuXG59XG5cbmV4cG9ydCBjb25zdCBTRUNPTkQgPSAxMDAwO1xuXG5mdW5jdGlvbiB0aW1lb3V0UHJvbWlzZTxUPihtczogbnVtYmVyLCBwcm9taXNlOiBQcm9taXNlPFQ+LCBkZXNjcmlwdGlvbjogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHRpbWVvdXQgPSBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgaWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dChpZCk7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBUaW1lb3V0RXJyb3IoZGVzY3JpcHRpb24pO1xuICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICB9LCBtcyk7XG4gIH0pO1xuXG4gIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgIHByb21pc2UsXG4gICAgLy8gY2FzdGluZyB0byBhdm9pZCB0eXBlIGVycm9yLSBzYWZlIHNpbmNlIHRoaXMgcHJvbWlzZSB3aWxsIGFsd2F5cyByZWplY3RcbiAgICB0aW1lb3V0IGFzIFByb21pc2U8VD4sXG4gIF0pO1xufVxuXG4vKipcbiAqIFdhaXQgdW50aWwgYSBwcm9taXNlIHJlc29sdmVzIHdpdGggYSB0cnV0aHkgdmFsdWUgb3IgcmVqZWN0IGFmdGVyIGEgdGltZW91dFxuICovXG5leHBvcnQgZnVuY3Rpb24gd2FpdFVudGlsPFQ+KGFzeW5jVGVzdDogKCkgPT4gUHJvbWlzZTxUPiwgZGVzY3JpcHRpb24gPSAnJywgdGltZW91dCA9IDEwMDAwLCBpbnRlcnZhbCA9IDEwMCkge1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8VD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGZ1bmN0aW9uIHdhaXQoKSB7XG4gICAgICBhc3luY1Rlc3QoKS50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KHdhaXQsIGludGVydmFsKTtcbiAgICAgICAgfVxuICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICByZWplY3QoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB3YWl0KCk7XG4gIH0pO1xuICByZXR1cm4gdGltZW91dFByb21pc2UodGltZW91dCwgcHJvbWlzZSwgZGVzY3JpcHRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmFjZVRpbWVvdXQobXM6IG51bWJlciwgcHJvbWlzZTogUHJvbWlzZTxhbnk+KSB7XG4gIHJldHVybiB0aW1lb3V0UHJvbWlzZShtcywgcHJvbWlzZSwgJ3RpbWVvdXQnKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgaWYgKCEoZXJyIGluc3RhbmNlb2YgVGltZW91dEVycm9yKSkgdGhyb3cgZXJyO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1blNlcmlhbDxUPihhY3Rpb25zOiAoKCkgPT4gUHJvbWlzZTxUPilbXSk6IFByb21pc2U8VFtdPiB7XG4gIHJldHVybiBhY3Rpb25zLnJlZHVjZSgobSwgYSkgPT4gbS50aGVuKGFzeW5jICh4KSA9PiBbLi4ueCwgYXdhaXQgYSgpXSksIFByb21pc2UucmVzb2x2ZTxUW10+KG5ldyBBcnJheTxUPigpKSk7XG59XG4iXX0=
@@ -29,14 +29,14 @@ var _transactions = require("../helpers/transactions");
29
29
 
30
30
  var _transactions2 = require("../transactions");
31
31
 
32
- var _baseScraper = require("./base-scraper");
33
-
34
32
  var _debug = require("../helpers/debug");
35
33
 
36
34
  var _waiting = require("../helpers/waiting");
37
35
 
38
36
  var _errors = require("./errors");
39
37
 
38
+ var _definitions = require("../definitions");
39
+
40
40
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41
41
 
42
42
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
@@ -305,7 +305,7 @@ class IsracardAmexBaseScraper extends _baseScraperWithBrowser.BaseScraperWithBro
305
305
  });
306
306
  debug('navigate to login page');
307
307
  await this.navigateTo(`${this.baseUrl}/personalarea/Login`);
308
- this.emitProgress(_baseScraper.ScraperProgressTypes.LoggingIn);
308
+ this.emitProgress(_definitions.ScraperProgressTypes.LoggingIn);
309
309
  const validateUrl = `${this.servicesUrl}?reqName=ValidateIdData`;
310
310
  const validateRequest = {
311
311
  id: credentials.id,
@@ -341,21 +341,21 @@ class IsracardAmexBaseScraper extends _baseScraperWithBrowser.BaseScraperWithBro
341
341
  debug(`user login with status '${loginResult === null || loginResult === void 0 ? void 0 : loginResult.status}'`);
342
342
 
343
343
  if (loginResult && loginResult.status === '1') {
344
- this.emitProgress(_baseScraper.ScraperProgressTypes.LoginSuccess);
344
+ this.emitProgress(_definitions.ScraperProgressTypes.LoginSuccess);
345
345
  return {
346
346
  success: true
347
347
  };
348
348
  }
349
349
 
350
350
  if (loginResult && loginResult.status === '3') {
351
- this.emitProgress(_baseScraper.ScraperProgressTypes.ChangePassword);
351
+ this.emitProgress(_definitions.ScraperProgressTypes.ChangePassword);
352
352
  return {
353
353
  success: false,
354
354
  errorType: _errors.ScraperErrorTypes.ChangePassword
355
355
  };
356
356
  }
357
357
 
358
- this.emitProgress(_baseScraper.ScraperProgressTypes.LoginFailed);
358
+ this.emitProgress(_definitions.ScraperProgressTypes.LoginFailed);
359
359
  return {
360
360
  success: false,
361
361
  errorType: _errors.ScraperErrorTypes.InvalidPassword
@@ -363,14 +363,14 @@ class IsracardAmexBaseScraper extends _baseScraperWithBrowser.BaseScraperWithBro
363
363
  }
364
364
 
365
365
  if (validateReturnCode === '4') {
366
- this.emitProgress(_baseScraper.ScraperProgressTypes.ChangePassword);
366
+ this.emitProgress(_definitions.ScraperProgressTypes.ChangePassword);
367
367
  return {
368
368
  success: false,
369
369
  errorType: _errors.ScraperErrorTypes.ChangePassword
370
370
  };
371
371
  }
372
372
 
373
- this.emitProgress(_baseScraper.ScraperProgressTypes.LoginFailed);
373
+ this.emitProgress(_definitions.ScraperProgressTypes.LoginFailed);
374
374
  return {
375
375
  success: false,
376
376
  errorType: _errors.ScraperErrorTypes.InvalidPassword
@@ -393,4 +393,4 @@ class IsracardAmexBaseScraper extends _baseScraperWithBrowser.BaseScraperWithBro
393
393
 
394
394
  var _default = IsracardAmexBaseScraper;
395
395
  exports.default = _default;
396
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLWlzcmFjYXJkLWFtZXgudHMiXSwibmFtZXMiOlsiQ09VTlRSWV9DT0RFIiwiSURfVFlQRSIsIklOU1RBTExNRU5UU19LRVlXT1JEIiwiREFURV9GT1JNQVQiLCJkZWJ1ZyIsImdldEFjY291bnRzVXJsIiwic2VydmljZXNVcmwiLCJtb250aE1vbWVudCIsImJpbGxpbmdEYXRlIiwiZm9ybWF0IiwicXVlcnlQYXJhbXMiLCJyZXFOYW1lIiwiYWN0aW9uQ29kZSIsImZldGNoQWNjb3VudHMiLCJwYWdlIiwiZGF0YVVybCIsImRhdGFSZXN1bHQiLCJfIiwiZ2V0IiwiRGFzaGJvYXJkTW9udGhCZWFuIiwiY2FyZHNDaGFyZ2VzIiwibWFwIiwiY2FyZENoYXJnZSIsImluZGV4IiwicGFyc2VJbnQiLCJjYXJkSW5kZXgiLCJhY2NvdW50TnVtYmVyIiwiY2FyZE51bWJlciIsInByb2Nlc3NlZERhdGUiLCJ0b0lTT1N0cmluZyIsImdldFRyYW5zYWN0aW9uc1VybCIsIm1vbnRoIiwieWVhciIsIm1vbnRoU3RyIiwidG9TdHJpbmciLCJyZXF1aXJlZERhdGUiLCJjb252ZXJ0Q3VycmVuY3kiLCJjdXJyZW5jeVN0ciIsIlNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIiwiQUxUX1NIRUtFTF9DVVJSRU5DWSIsIlNIRUtFTF9DVVJSRU5DWSIsImdldEluc3RhbGxtZW50c0luZm8iLCJ0eG4iLCJtb3JlSW5mbyIsImluY2x1ZGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibGVuZ3RoIiwibnVtYmVyIiwidG90YWwiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJmaWx0ZXJlZFR4bnMiLCJmaWx0ZXIiLCJkZWFsU3VtVHlwZSIsInZvdWNoZXJOdW1iZXJSYXR6Iiwidm91Y2hlck51bWJlclJhdHpPdXRib3VuZCIsImlzT3V0Ym91bmQiLCJkZWFsU3VtT3V0Ym91bmQiLCJ0eG5EYXRlU3RyIiwiZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIiwiZnVsbFB1cmNoYXNlRGF0ZSIsInR4bk1vbWVudCIsImN1cnJlbnRQcm9jZXNzZWREYXRlIiwiZnVsbFBheW1lbnREYXRlIiwicmVzdWx0IiwidHlwZSIsImlkZW50aWZpZXIiLCJkYXRlIiwib3JpZ2luYWxBbW91bnQiLCJkZWFsU3VtIiwib3JpZ2luYWxDdXJyZW5jeSIsImN1cnJlbmN5SWQiLCJjaGFyZ2VkQW1vdW50IiwicGF5bWVudFN1bU91dGJvdW5kIiwicGF5bWVudFN1bSIsImRlc2NyaXB0aW9uIiwiZnVsbFN1cHBsaWVyTmFtZU91dGJvdW5kIiwiZnVsbFN1cHBsaWVyTmFtZUhlYiIsIm1lbW8iLCJpbnN0YWxsbWVudHMiLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwiZmV0Y2hUcmFuc2FjdGlvbnMiLCJvcHRpb25zIiwic3RhcnRNb21lbnQiLCJhY2NvdW50cyIsIkNhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4iLCJhY2NvdW50VHhucyIsImZvckVhY2giLCJhY2NvdW50IiwidHhuR3JvdXBzIiwiYWxsVHhucyIsInR4bkdyb3VwIiwidHhuSXNyYWVsIiwicHVzaCIsInR4bkFicm9hZCIsImNvbWJpbmVJbnN0YWxsbWVudHMiLCJvdXRwdXREYXRhIiwiZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlIiwiZ2V0VHJhbnNhY3Rpb25FeHRyYURldGFpbHMiLCJhY2NvdW50SW5kZXgiLCJ0cmFuc2FjdGlvbiIsIm1vZWRDaGl1diIsIkNhcmRJbmRleCIsInNob3ZhclJhdHoiLCJnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24iLCJkYXRhIiwicmF3Q2F0ZWdvcnkiLCJjYXRlZ29yeSIsInRyaW0iLCJnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb25zIiwiYWNjb3VudFdpdGhJbmRleCIsInByb21pc2VzIiwidCIsIlByb21pc2UiLCJhbGwiLCJnZXRFeHRyYVNjcmFwQWNjb3VudCIsImFjY291bnRNYXAiLCJPYmplY3QiLCJrZXlzIiwiYSIsInJlZHVjZSIsIm0iLCJ4IiwiZ2V0RXh0cmFTY3JhcCIsImFjY291bnRzV2l0aEluZGV4IiwiYWxsTW9udGhzIiwiYWN0aW9ucyIsImkiLCJmZXRjaEFsbFRyYW5zYWN0aW9ucyIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwicmVzdWx0cyIsImZpbmFsUmVzdWx0IiwiYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24iLCJjb21iaW5lZFR4bnMiLCJ0eG5zRm9yQWNjb3VudCIsInRvQmVBZGRlZFR4bnMiLCJzdWNjZXNzIiwiSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiY29uc3RydWN0b3IiLCJiYXNlVXJsIiwiY29tcGFueUNvZGUiLCJsb2dpbiIsImNyZWRlbnRpYWxzIiwic2V0UmVxdWVzdEludGVyY2VwdGlvbiIsIm9uIiwicmVxdWVzdCIsInVybCIsImFib3J0IiwiY29udGludWUiLCJuYXZpZ2F0ZVRvIiwiZW1pdFByb2dyZXNzIiwiU2NyYXBlclByb2dyZXNzVHlwZXMiLCJMb2dnaW5nSW4iLCJ2YWxpZGF0ZVVybCIsInZhbGlkYXRlUmVxdWVzdCIsImlkIiwiY2FyZFN1ZmZpeCIsImNhcmQ2RGlnaXRzIiwiY291bnRyeUNvZGUiLCJpZFR5cGUiLCJjaGVja0xldmVsIiwidmFsaWRhdGVSZXN1bHQiLCJIZWFkZXIiLCJTdGF0dXMiLCJWYWxpZGF0ZUlkRGF0YUJlYW4iLCJFcnJvciIsInZhbGlkYXRlUmV0dXJuQ29kZSIsInJldHVybkNvZGUiLCJ1c2VyTmFtZSIsImxvZ2luVXJsIiwiS29kTWlzaHRhbWVzaCIsIk1pc3BhclppaHV5IiwiU2lzbWEiLCJwYXNzd29yZCIsImxvZ2luUmVzdWx0IiwiTG9naW5TdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJlcnJvclR5cGUiLCJTY3JhcGVyRXJyb3JUeXBlcyIsIkxvZ2luRmFpbGVkIiwiSW52YWxpZFBhc3N3b3JkIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtb21lbnQiLCJtYXgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFJQTs7QUFJQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUdBLE1BQU1BLFlBQVksR0FBRyxLQUFyQjtBQUNBLE1BQU1DLE9BQU8sR0FBRyxHQUFoQjtBQUNBLE1BQU1DLG9CQUFvQixHQUFHLE9BQTdCO0FBRUEsTUFBTUMsV0FBVyxHQUFHLFlBQXBCO0FBRUEsTUFBTUMsS0FBSyxHQUFHLHFCQUFTLG9CQUFULENBQWQ7O0FBc0VBLFNBQVNDLGNBQVQsQ0FBd0JDLFdBQXhCLEVBQTZDQyxXQUE3QyxFQUFrRTtBQUNoRSxRQUFNQyxXQUFXLEdBQUdELFdBQVcsQ0FBQ0UsTUFBWixDQUFtQixZQUFuQixDQUFwQjtBQUNBLFNBQU8sdUJBQVNILFdBQVQsRUFBc0I7QUFDM0JJLElBQUFBLFdBQVcsRUFBRTtBQUNYQyxNQUFBQSxPQUFPLEVBQUUsZ0JBREU7QUFFWEMsTUFBQUEsVUFBVSxFQUFFLEdBRkQ7QUFHWEosTUFBQUEsV0FIVztBQUlYQyxNQUFBQSxNQUFNLEVBQUU7QUFKRztBQURjLEdBQXRCLENBQVA7QUFRRDs7QUFFRCxlQUFlSSxhQUFmLENBQTZCQyxJQUE3QixFQUF5Q1IsV0FBekMsRUFBOERDLFdBQTlELEVBQThHO0FBQzVHLFFBQU1RLE9BQU8sR0FBR1YsY0FBYyxDQUFDQyxXQUFELEVBQWNDLFdBQWQsQ0FBOUI7QUFDQSxRQUFNUyxVQUFVLEdBQUcsTUFBTSwrQkFBc0RGLElBQXRELEVBQTREQyxPQUE1RCxDQUF6Qjs7QUFDQSxNQUFJQyxVQUFVLElBQUlDLGdCQUFFQyxHQUFGLENBQU1GLFVBQU4sRUFBa0IsZUFBbEIsTUFBdUMsR0FBckQsSUFBNERB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QUFBQSxPQUFPLEVBQUUsS0FESjtBQUVMMEMsUUFBQUEsU0FBUyxFQUFFQywwQkFBa0JGO0FBRnhCLE9BQVA7QUFJRDs7QUFFRCxTQUFLMUIsWUFBTCxDQUFrQkMsa0NBQXFCNEIsV0FBdkM7QUFDQSxXQUFPO0FBQ0w1QyxNQUFBQSxPQUFPLEVBQUUsS0FESjtBQUVMMEMsTUFBQUEsU0FBUyxFQUFFQywwQkFBa0JFO0FBRnhCLEtBQVA7QUFJRDs7QUFFRCxRQUFNQyxTQUFOLEdBQWtCO0FBQ2hCLFVBQU1DLGtCQUFrQixHQUFHLHVCQUFTQyxRQUFULENBQWtCLENBQWxCLEVBQXFCLE9BQXJCLENBQTNCO0FBQ0EsVUFBTUMsU0FBUyxHQUFHLEtBQUt2RyxPQUFMLENBQWF1RyxTQUFiLElBQTBCRixrQkFBa0IsQ0FBQ0csTUFBbkIsRUFBNUM7O0FBQ0EsVUFBTXZHLFdBQVcsR0FBR3dHLGdCQUFPQyxHQUFQLENBQVdMLGtCQUFYLEVBQStCLHFCQUFPRSxTQUFQLENBQS9CLENBQXBCOztBQUVBLFdBQU96RCxvQkFBb0IsQ0FBQyxLQUFLMUgsSUFBTixvQkFDdEIsS0FBSzRFLE9BRGlCO0FBRXpCcEYsTUFBQUEsV0FBVyxFQUFFLEtBQUtBLFdBRk87QUFHekIrSSxNQUFBQSxXQUFXLEVBQUUsS0FBS0E7QUFITyxRQUl4QjFELFdBSndCLENBQTNCO0FBS0Q7O0FBM0dzRjs7ZUE4RzFFc0QsdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGJ1aWxkVXJsIGZyb20gJ2J1aWxkLXVybCc7XG5pbXBvcnQgbW9tZW50LCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyBmZXRjaEdldFdpdGhpblBhZ2UsIGZldGNoUG9zdFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7XG4gIFNIRUtFTF9DVVJSRU5DWV9LRVlXT1JELFxuICBTSEVLRUxfQ1VSUkVOQ1ksXG4gIEFMVF9TSEVLRUxfQ1VSUkVOQ1ksXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgZ2V0QWxsTW9udGhNb21lbnRzIGZyb20gJy4uL2hlbHBlcnMvZGF0ZXMnO1xuaW1wb3J0IHsgZml4SW5zdGFsbG1lbnRzLCBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbnNBY2NvdW50LCBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25JbnN0YWxsbWVudHMsXG4gIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQge1xuICBTY3JhcGVyUHJvZ3Jlc3NUeXBlcyxcblxufSBmcm9tICcuL2Jhc2Utc2NyYXBlcic7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgcnVuU2VyaWFsIH0gZnJvbSAnLi4vaGVscGVycy93YWl0aW5nJztcbmltcG9ydCB7IFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgU2NyYXBlclNjcmFwaW5nUmVzdWx0LCBTY3JhcGVyT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuY29uc3QgQ09VTlRSWV9DT0RFID0gJzIxMic7XG5jb25zdCBJRF9UWVBFID0gJzEnO1xuY29uc3QgSU5TVEFMTE1FTlRTX0tFWVdPUkQgPSAn16rXqdec15XXnSc7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ0REL01NL1lZWVknO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdiYXNlLWlzcmFjYXJkLWFtZXgnKTtcblxuaW50ZXJmYWNlIEV4dGVuZGVkU2NyYXBlck9wdGlvbnMgZXh0ZW5kcyBTY3JhcGVyT3B0aW9ucyB7XG4gIHNlcnZpY2VzVXJsOiBzdHJpbmc7XG4gIGNvbXBhbnlDb2RlOiBzdHJpbmc7XG59XG5cbnR5cGUgU2NyYXBlZEFjY291bnRzV2l0aEluZGV4ID0gUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25zQWNjb3VudCAmIHsgaW5kZXg6IG51bWJlciB9PjtcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIGRlYWxTdW1UeXBlOiBzdHJpbmc7XG4gIHZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQ6IHN0cmluZztcbiAgdm91Y2hlck51bWJlclJhdHo6IHN0cmluZztcbiAgbW9yZUluZm8/OiBzdHJpbmc7XG4gIGRlYWxTdW1PdXRib3VuZDogYm9vbGVhbjtcbiAgY3VycmVuY3lJZDogc3RyaW5nO1xuICBkZWFsU3VtOiBudW1iZXI7XG4gIGZ1bGxQYXltZW50RGF0ZT86IHN0cmluZztcbiAgZnVsbFB1cmNoYXNlRGF0ZT86IHN0cmluZztcbiAgZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kPzogc3RyaW5nO1xuICBmdWxsU3VwcGxpZXJOYW1lSGViOiBzdHJpbmc7XG4gIGZ1bGxTdXBwbGllck5hbWVPdXRib3VuZDogc3RyaW5nO1xuICBwYXltZW50U3VtOiBudW1iZXI7XG4gIHBheW1lbnRTdW1PdXRib3VuZDogbnVtYmVyO1xufVxuXG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudCB7XG4gIGluZGV4OiBudW1iZXI7XG4gIGFjY291bnROdW1iZXI6IHN0cmluZztcbiAgcHJvY2Vzc2VkRGF0ZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZExvZ2luVmFsaWRhdGlvbiB7XG4gIEhlYWRlcjoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBWYWxpZGF0ZUlkRGF0YUJlYW4/OiB7XG4gICAgdXNlck5hbWU/OiBzdHJpbmc7XG4gICAgcmV0dXJuQ29kZTogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZEFjY291bnRzV2l0aGluUGFnZVJlc3BvbnNlIHtcbiAgSGVhZGVyOiB7XG4gICAgU3RhdHVzOiBzdHJpbmc7XG4gIH07XG4gIERhc2hib2FyZE1vbnRoQmVhbj86IHtcbiAgICBjYXJkc0NoYXJnZXM6IHtcbiAgICAgIGNhcmRJbmRleDogc3RyaW5nO1xuICAgICAgY2FyZE51bWJlcjogc3RyaW5nO1xuICAgICAgYmlsbGluZ0RhdGU6IHN0cmluZztcbiAgICB9W107XG4gIH07XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnMge1xuICB0eG5Jc3JhZWw/OiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgdHhuQWJyb2FkPzogU2NyYXBlZFRyYW5zYWN0aW9uW107XG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb25EYXRhIHtcbiAgSGVhZGVyPzoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuPzogUmVjb3JkPHN0cmluZywge1xuICAgIEN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zOiBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnNbXTtcbiAgfT47XG59XG5cbmZ1bmN0aW9uIGdldEFjY291bnRzVXJsKHNlcnZpY2VzVXJsOiBzdHJpbmcsIG1vbnRoTW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgYmlsbGluZ0RhdGUgPSBtb250aE1vbWVudC5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgcmV0dXJuIGJ1aWxkVXJsKHNlcnZpY2VzVXJsLCB7XG4gICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgIHJlcU5hbWU6ICdEYXNoYm9hcmRNb250aCcsXG4gICAgICBhY3Rpb25Db2RlOiAnMCcsXG4gICAgICBiaWxsaW5nRGF0ZSxcbiAgICAgIGZvcm1hdDogJ0pzb24nLFxuICAgIH0sXG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFjY291bnRzKHBhZ2U6IFBhZ2UsIHNlcnZpY2VzVXJsOiBzdHJpbmcsIG1vbnRoTW9tZW50OiBNb21lbnQpOiBQcm9taXNlPFNjcmFwZWRBY2NvdW50W10+IHtcbiAgY29uc3QgZGF0YVVybCA9IGdldEFjY291bnRzVXJsKHNlcnZpY2VzVXJsLCBtb250aE1vbWVudCk7XG4gIGNvbnN0IGRhdGFSZXN1bHQgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZEFjY291bnRzV2l0aGluUGFnZVJlc3BvbnNlPihwYWdlLCBkYXRhVXJsKTtcbiAgaWYgKGRhdGFSZXN1bHQgJiYgXy5nZXQoZGF0YVJlc3VsdCwgJ0hlYWRlci5TdGF0dXMnKSA9PT0gJzEnICYmIGRhdGFSZXN1bHQuRGFzaGJvYXJkTW9udGhCZWFuKSB7XG4gICAgY29uc3QgeyBjYXJkc0NoYXJnZXMgfSA9IGRhdGFSZXN1bHQuRGFzaGJvYXJkTW9udGhCZWFuO1xuICAgIGlmIChjYXJkc0NoYXJnZXMpIHtcbiAgICAgIHJldHVybiBjYXJkc0NoYXJnZXMubWFwKChjYXJkQ2hhcmdlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW5kZXg6IHBhcnNlSW50KGNhcmRDaGFyZ2UuY2FyZEluZGV4LCAxMCksXG4gICAgICAgICAgYWNjb3VudE51bWJlcjogY2FyZENoYXJnZS5jYXJkTnVtYmVyLFxuICAgICAgICAgIHByb2Nlc3NlZERhdGU6IG1vbWVudChjYXJkQ2hhcmdlLmJpbGxpbmdEYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW107XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uc1VybChzZXJ2aWNlc1VybDogc3RyaW5nLCBtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IG1vbnRoID0gbW9udGhNb21lbnQubW9udGgoKSArIDE7XG4gIGNvbnN0IHllYXIgPSBtb250aE1vbWVudC55ZWFyKCk7XG4gIGNvbnN0IG1vbnRoU3RyID0gbW9udGggPCAxMCA/IGAwJHttb250aH1gIDogbW9udGgudG9TdHJpbmcoKTtcbiAgcmV0dXJuIGJ1aWxkVXJsKHNlcnZpY2VzVXJsLCB7XG4gICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgIHJlcU5hbWU6ICdDYXJkc1RyYW5zYWN0aW9uc0xpc3QnLFxuICAgICAgbW9udGg6IG1vbnRoU3RyLFxuICAgICAgeWVhcjogYCR7eWVhcn1gLFxuICAgICAgcmVxdWlyZWREYXRlOiAnTicsXG4gICAgfSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRDdXJyZW5jeShjdXJyZW5jeVN0cjogc3RyaW5nKSB7XG4gIGlmIChjdXJyZW5jeVN0ciA9PT0gU0hFS0VMX0NVUlJFTkNZX0tFWVdPUkQgfHwgY3VycmVuY3lTdHIgPT09IEFMVF9TSEVLRUxfQ1VSUkVOQ1kpIHtcbiAgICByZXR1cm4gU0hFS0VMX0NVUlJFTkNZO1xuICB9XG4gIHJldHVybiBjdXJyZW5jeVN0cjtcbn1cblxuZnVuY3Rpb24gZ2V0SW5zdGFsbG1lbnRzSW5mbyh0eG46IFNjcmFwZWRUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF0eG4ubW9yZUluZm8gfHwgIXR4bi5tb3JlSW5mby5pbmNsdWRlcyhJTlNUQUxMTUVOVFNfS0VZV09SRCkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IG1hdGNoZXMgPSB0eG4ubW9yZUluZm8ubWF0Y2goL1xcZCsvZyk7XG4gIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBudW1iZXI6IHBhcnNlSW50KG1hdGNoZXNbMF0sIDEwKSxcbiAgICB0b3RhbDogcGFyc2VJbnQobWF0Y2hlc1sxXSwgMTApLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvblR5cGUodHhuOiBTY3JhcGVkVHJhbnNhY3Rpb24pIHtcbiAgcmV0dXJuIGdldEluc3RhbGxtZW50c0luZm8odHhuKSA/IFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzIDogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWw7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIHByb2Nlc3NlZERhdGU6IHN0cmluZyk6IFRyYW5zYWN0aW9uW10ge1xuICBjb25zdCBmaWx0ZXJlZFR4bnMgPSB0eG5zLmZpbHRlcigodHhuKSA9PiB0eG4uZGVhbFN1bVR5cGUgIT09ICcxJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eG4udm91Y2hlck51bWJlclJhdHogIT09ICcwMDAwMDAwMDAnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4bi52b3VjaGVyTnVtYmVyUmF0ek91dGJvdW5kICE9PSAnMDAwMDAwMDAwJyk7XG5cbiAgcmV0dXJuIGZpbHRlcmVkVHhucy5tYXAoKHR4bikgPT4ge1xuICAgIGNvbnN0IGlzT3V0Ym91bmQgPSB0eG4uZGVhbFN1bU91dGJvdW5kO1xuICAgIGNvbnN0IHR4bkRhdGVTdHIgPSBpc091dGJvdW5kID8gdHhuLmZ1bGxQdXJjaGFzZURhdGVPdXRib3VuZCA6IHR4bi5mdWxsUHVyY2hhc2VEYXRlO1xuICAgIGNvbnN0IHR4bk1vbWVudCA9IG1vbWVudCh0eG5EYXRlU3RyLCBEQVRFX0ZPUk1BVCk7XG5cbiAgICBjb25zdCBjdXJyZW50UHJvY2Vzc2VkRGF0ZSA9IHR4bi5mdWxsUGF5bWVudERhdGUgP1xuICAgICAgbW9tZW50KHR4bi5mdWxsUGF5bWVudERhdGUsIERBVEVfRk9STUFUKS50b0lTT1N0cmluZygpIDpcbiAgICAgIHByb2Nlc3NlZERhdGU7XG4gICAgY29uc3QgcmVzdWx0OiBUcmFuc2FjdGlvbiA9IHtcbiAgICAgIHR5cGU6IGdldFRyYW5zYWN0aW9uVHlwZSh0eG4pLFxuICAgICAgaWRlbnRpZmllcjogcGFyc2VJbnQoaXNPdXRib3VuZCA/IHR4bi52b3VjaGVyTnVtYmVyUmF0ek91dGJvdW5kIDogdHhuLnZvdWNoZXJOdW1iZXJSYXR6LCAxMCksXG4gICAgICBkYXRlOiB0eG5Nb21lbnQudG9JU09TdHJpbmcoKSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGN1cnJlbnRQcm9jZXNzZWREYXRlLFxuICAgICAgb3JpZ2luYWxBbW91bnQ6IGlzT3V0Ym91bmQgPyAtdHhuLmRlYWxTdW1PdXRib3VuZCA6IC10eG4uZGVhbFN1bSxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IGNvbnZlcnRDdXJyZW5jeSh0eG4uY3VycmVuY3lJZCksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBpc091dGJvdW5kID8gLXR4bi5wYXltZW50U3VtT3V0Ym91bmQgOiAtdHhuLnBheW1lbnRTdW0sXG4gICAgICBkZXNjcmlwdGlvbjogaXNPdXRib3VuZCA/IHR4bi5mdWxsU3VwcGxpZXJOYW1lT3V0Ym91bmQgOiB0eG4uZnVsbFN1cHBsaWVyTmFtZUhlYixcbiAgICAgIG1lbW86IHR4bi5tb3JlSW5mbyB8fCAnJyxcbiAgICAgIGluc3RhbGxtZW50czogZ2V0SW5zdGFsbG1lbnRzSW5mbyh0eG4pIHx8IHVuZGVmaW5lZCxcbiAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlLCBvcHRpb25zOiBFeHRlbmRlZFNjcmFwZXJPcHRpb25zLCBzdGFydE1vbWVudDogTW9tZW50LCBtb250aE1vbWVudDogTW9tZW50KTogUHJvbWlzZTxTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXg+IHtcbiAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBmZXRjaEFjY291bnRzKHBhZ2UsIG9wdGlvbnMuc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVVybCA9IGdldFRyYW5zYWN0aW9uc1VybChvcHRpb25zLnNlcnZpY2VzVXJsLCBtb250aE1vbWVudCk7XG4gIGNvbnN0IGRhdGFSZXN1bHQgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uRGF0YT4ocGFnZSwgZGF0YVVybCk7XG4gIGlmIChkYXRhUmVzdWx0ICYmIF8uZ2V0KGRhdGFSZXN1bHQsICdIZWFkZXIuU3RhdHVzJykgPT09ICcxJyAmJiBkYXRhUmVzdWx0LkNhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4pIHtcbiAgICBjb25zdCBhY2NvdW50VHhuczogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4ID0ge307XG4gICAgYWNjb3VudHMuZm9yRWFjaCgoYWNjb3VudCkgPT4ge1xuICAgICAgY29uc3QgdHhuR3JvdXBzOiBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnNbXSA9IF8uZ2V0KGRhdGFSZXN1bHQsIGBDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuLkluZGV4JHthY2NvdW50LmluZGV4fS5DdXJyZW50Q2FyZFRyYW5zYWN0aW9uc2ApO1xuICAgICAgaWYgKHR4bkdyb3Vwcykge1xuICAgICAgICBsZXQgYWxsVHhuczogVHJhbnNhY3Rpb25bXSA9IFtdO1xuICAgICAgICB0eG5Hcm91cHMuZm9yRWFjaCgodHhuR3JvdXApID0+IHtcbiAgICAgICAgICBpZiAodHhuR3JvdXAudHhuSXNyYWVsKSB7XG4gICAgICAgICAgICBjb25zdCB0eG5zID0gY29udmVydFRyYW5zYWN0aW9ucyh0eG5Hcm91cC50eG5Jc3JhZWwsIGFjY291bnQucHJvY2Vzc2VkRGF0ZSk7XG4gICAgICAgICAgICBhbGxUeG5zLnB1c2goLi4udHhucyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eG5Hcm91cC50eG5BYnJvYWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHR4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bkdyb3VwLnR4bkFicm9hZCwgYWNjb3VudC5wcm9jZXNzZWREYXRlKTtcbiAgICAgICAgICAgIGFsbFR4bnMucHVzaCguLi50eG5zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghb3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzKSB7XG4gICAgICAgICAgYWxsVHhucyA9IGZpeEluc3RhbGxtZW50cyhhbGxUeG5zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5vdXRwdXREYXRhPy5lbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUgPz8gdHJ1ZSkge1xuICAgICAgICAgIGFsbFR4bnMgPSBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMoYWxsVHhucywgc3RhcnRNb21lbnQsIG9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgYWNjb3VudFR4bnNbYWNjb3VudC5hY2NvdW50TnVtYmVyXSA9IHtcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiBhY2NvdW50LmFjY291bnROdW1iZXIsXG4gICAgICAgICAgaW5kZXg6IGFjY291bnQuaW5kZXgsXG4gICAgICAgICAgdHhuczogYWxsVHhucyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWNjb3VudFR4bnM7XG4gIH1cblxuICByZXR1cm4ge307XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzKHNlcnZpY2VzVXJsOiBzdHJpbmcsIG1vbnRoOiBNb21lbnQsIGFjY291bnRJbmRleDogbnVtYmVyLCB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBzdHJpbmcge1xuICBjb25zdCBtb2VkQ2hpdXYgPSBtb250aC5mb3JtYXQoJ01NWVlZWScpO1xuICByZXR1cm4gYnVpbGRVcmwoc2VydmljZXNVcmwsIHtcbiAgICBxdWVyeVBhcmFtczoge1xuICAgICAgcmVxTmFtZTogJ1BpcnRleUlza2FfMjA0JyxcbiAgICAgIENhcmRJbmRleDogYWNjb3VudEluZGV4LnRvU3RyaW5nKCksXG4gICAgICBzaG92YXJSYXR6OiB0cmFuc2FjdGlvbi5pZGVudGlmaWVyIS50b1N0cmluZygpLFxuICAgICAgbW9lZENoaXV2LFxuICAgIH0sXG4gIH0pO1xufVxuYXN5bmMgZnVuY3Rpb24gZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9uKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IEV4dGVuZGVkU2NyYXBlck9wdGlvbnMsIG1vbnRoOiBNb21lbnQsIGFjY291bnRJbmRleDogbnVtYmVyLCB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gIGNvbnN0IGRhdGFVcmwgPSBnZXRUcmFuc2FjdGlvbkV4dHJhRGV0YWlscyhvcHRpb25zLnNlcnZpY2VzVXJsLCBtb250aCwgYWNjb3VudEluZGV4LCB0cmFuc2FjdGlvbik7XG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uRGF0YT4ocGFnZSwgZGF0YVVybCk7XG4gIGNvbnN0IHJhd0NhdGVnb3J5ID0gXy5nZXQoZGF0YSwgJ1BpcnRleUlza2FfMjA0QmVhbi5zZWN0b3InKTtcbiAgcmV0dXJuIHtcbiAgICAuLi50cmFuc2FjdGlvbixcbiAgICBjYXRlZ29yeTogcmF3Q2F0ZWdvcnkudHJpbSgpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb25zKGFjY291bnRXaXRoSW5kZXg6IFRyYW5zYWN0aW9uc0FjY291bnQgJiB7IGluZGV4OiBudW1iZXIgfSwgcGFnZTogUGFnZSwgb3B0aW9uczogRXh0ZW5kZWRTY3JhcGVyT3B0aW9ucywgbW9udGg6IG1vbWVudC5Nb21lbnQpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgY29uc3QgcHJvbWlzZXMgPSBhY2NvdW50V2l0aEluZGV4LnR4bnNcbiAgICAubWFwKCh0KSA9PiBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24ocGFnZSwgb3B0aW9ucywgbW9udGgsIGFjY291bnRXaXRoSW5kZXguaW5kZXgsIHQpKTtcbiAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RXh0cmFTY3JhcEFjY291bnQocGFnZTogUGFnZSwgb3B0aW9uczogRXh0ZW5kZWRTY3JhcGVyT3B0aW9ucywgYWNjb3VudE1hcDogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4LCBtb250aDogbW9tZW50Lk1vbWVudCk6IFByb21pc2U8U2NyYXBlZEFjY291bnRzV2l0aEluZGV4PiB7XG4gIGNvbnN0IHByb21pc2VzID0gT2JqZWN0LmtleXMoYWNjb3VudE1hcClcbiAgICAubWFwKGFzeW5jIChhKSA9PiAoe1xuICAgICAgLi4uYWNjb3VudE1hcFthXSxcbiAgICAgIHR4bnM6IGF3YWl0IGdldEV4dHJhU2NyYXBUcmFuc2FjdGlvbnMoYWNjb3VudE1hcFthXSwgcGFnZSwgb3B0aW9ucywgbW9udGgpLFxuICAgIH0pKTtcbiAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gIHJldHVybiBhY2NvdW50cy5yZWR1Y2UoKG0sIHgpID0+ICh7IC4uLm0sIFt4LmFjY291bnROdW1iZXJdOiB4IH0pLCB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldEV4dHJhU2NyYXAoYWNjb3VudHNXaXRoSW5kZXg6IFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleFtdLCBwYWdlOiBQYWdlLCBvcHRpb25zOiBFeHRlbmRlZFNjcmFwZXJPcHRpb25zLCBhbGxNb250aHM6IG1vbWVudC5Nb21lbnRbXSk6IFByb21pc2U8U2NyYXBlZEFjY291bnRzV2l0aEluZGV4W10+IHtcbiAgY29uc3QgYWN0aW9ucyA9IGFjY291bnRzV2l0aEluZGV4Lm1hcCgoYSwgaSkgPT4gKCkgPT4gZ2V0RXh0cmFTY3JhcEFjY291bnQocGFnZSwgb3B0aW9ucywgYSwgYWxsTW9udGhzW2ldKSk7XG4gIHJldHVybiBydW5TZXJpYWwoYWN0aW9ucyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWxsVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IEV4dGVuZGVkU2NyYXBlck9wdGlvbnMsIHN0YXJ0TW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSBvcHRpb25zLmZ1dHVyZU1vbnRoc1RvU2NyYXBlID8/IDE7XG4gIGNvbnN0IGFsbE1vbnRocyA9IGdldEFsbE1vbnRoTW9tZW50cyhzdGFydE1vbWVudCwgZnV0dXJlTW9udGhzVG9TY3JhcGUpO1xuICBjb25zdCByZXN1bHRzOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXSA9IGF3YWl0IFByb21pc2UuYWxsKGFsbE1vbnRocy5tYXAoYXN5bmMgKG1vbnRoTW9tZW50KSA9PiB7XG4gICAgcmV0dXJuIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2UsIG9wdGlvbnMsIHN0YXJ0TW9tZW50LCBtb250aE1vbWVudCk7XG4gIH0pKTtcblxuICBjb25zdCBmaW5hbFJlc3VsdCA9IG9wdGlvbnMuYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24gP1xuICAgIGF3YWl0IGdldEV4dHJhU2NyYXAocmVzdWx0cywgcGFnZSwgb3B0aW9ucywgYWxsTW9udGhzKSA6IHJlc3VsdHM7XG5cbiAgY29uc3QgY29tYmluZWRUeG5zOiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiA9IHt9O1xuXG4gIGZpbmFsUmVzdWx0LmZvckVhY2goKHJlc3VsdCkgPT4ge1xuICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaCgoYWNjb3VudE51bWJlcikgPT4ge1xuICAgICAgbGV0IHR4bnNGb3JBY2NvdW50ID0gY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdO1xuICAgICAgaWYgKCF0eG5zRm9yQWNjb3VudCkge1xuICAgICAgICB0eG5zRm9yQWNjb3VudCA9IFtdO1xuICAgICAgICBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl0gPSB0eG5zRm9yQWNjb3VudDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRvQmVBZGRlZFR4bnMgPSByZXN1bHRbYWNjb3VudE51bWJlcl0udHhucztcbiAgICAgIGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXS5wdXNoKC4uLnRvQmVBZGRlZFR4bnMpO1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdCBhY2NvdW50cyA9IE9iamVjdC5rZXlzKGNvbWJpbmVkVHhucykubWFwKChhY2NvdW50TnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICB0eG5zOiBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl0sXG4gICAgfTtcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICAgIGFjY291bnRzLFxuICB9O1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0ge2lkOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGNhcmQ2RGlnaXRzOiBzdHJpbmd9O1xuY2xhc3MgSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIHByaXZhdGUgYmFzZVVybDogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29tcGFueUNvZGU6IHN0cmluZztcblxuICBwcml2YXRlIHNlcnZpY2VzVXJsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU2NyYXBlck9wdGlvbnMsIGJhc2VVcmw6IHN0cmluZywgY29tcGFueUNvZGU6IHN0cmluZykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5iYXNlVXJsID0gYmFzZVVybDtcbiAgICB0aGlzLmNvbXBhbnlDb2RlID0gY29tcGFueUNvZGU7XG4gICAgdGhpcy5zZXJ2aWNlc1VybCA9IGAke2Jhc2VVcmx9L3NlcnZpY2VzL1Byb3h5UmVxdWVzdEhhbmRsZXIuYXNoeGA7XG4gIH1cblxuICBhc3luYyBsb2dpbihjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGF3YWl0IHRoaXMucGFnZS5zZXRSZXF1ZXN0SW50ZXJjZXB0aW9uKHRydWUpO1xuICAgIHRoaXMucGFnZS5vbigncmVxdWVzdCcsIChyZXF1ZXN0KSA9PiB7XG4gICAgICBpZiAocmVxdWVzdC51cmwoKS5pbmNsdWRlcygnZGV0ZWN0b3ItZG9tLm1pbi5qcycpKSB7XG4gICAgICAgIGRlYnVnKCdmb3JjZSBhYm9ydCBmb3IgcmVxdWVzdCBkbyBkb3dubG9hZCBkZXRlY3Rvci1kb20ubWluLmpzIHJlc291cmNlJyk7XG4gICAgICAgIHJlcXVlc3QuYWJvcnQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcXVlc3QuY29udGludWUoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGRlYnVnKCduYXZpZ2F0ZSB0byBsb2dpbiBwYWdlJyk7XG4gICAgYXdhaXQgdGhpcy5uYXZpZ2F0ZVRvKGAke3RoaXMuYmFzZVVybH0vcGVyc29uYWxhcmVhL0xvZ2luYCk7XG5cbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dnaW5nSW4pO1xuXG4gICAgY29uc3QgdmFsaWRhdGVVcmwgPSBgJHt0aGlzLnNlcnZpY2VzVXJsfT9yZXFOYW1lPVZhbGlkYXRlSWREYXRhYDtcbiAgICBjb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSB7XG4gICAgICBpZDogY3JlZGVudGlhbHMuaWQsXG4gICAgICBjYXJkU3VmZml4OiBjcmVkZW50aWFscy5jYXJkNkRpZ2l0cyxcbiAgICAgIGNvdW50cnlDb2RlOiBDT1VOVFJZX0NPREUsXG4gICAgICBpZFR5cGU6IElEX1RZUEUsXG4gICAgICBjaGVja0xldmVsOiAnMScsXG4gICAgICBjb21wYW55Q29kZTogdGhpcy5jb21wYW55Q29kZSxcbiAgICB9O1xuICAgIGNvbnN0IHZhbGlkYXRlUmVzdWx0ID0gYXdhaXQgZmV0Y2hQb3N0V2l0aGluUGFnZTxTY3JhcGVkTG9naW5WYWxpZGF0aW9uPih0aGlzLnBhZ2UsIHZhbGlkYXRlVXJsLCB2YWxpZGF0ZVJlcXVlc3QpO1xuICAgIGlmICghdmFsaWRhdGVSZXN1bHQgfHwgIXZhbGlkYXRlUmVzdWx0LkhlYWRlciB8fCB2YWxpZGF0ZVJlc3VsdC5IZWFkZXIuU3RhdHVzICE9PSAnMScgfHwgIXZhbGlkYXRlUmVzdWx0LlZhbGlkYXRlSWREYXRhQmVhbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGVycm9yIGR1cmluZyBsb2dpbicpO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkYXRlUmV0dXJuQ29kZSA9IHZhbGlkYXRlUmVzdWx0LlZhbGlkYXRlSWREYXRhQmVhbi5yZXR1cm5Db2RlO1xuICAgIGRlYnVnKGB1c2VyIHZhbGlkYXRlIHdpdGggcmV0dXJuIGNvZGUgJyR7dmFsaWRhdGVSZXR1cm5Db2RlfSdgKTtcbiAgICBpZiAodmFsaWRhdGVSZXR1cm5Db2RlID09PSAnMScpIHtcbiAgICAgIGNvbnN0IHsgdXNlck5hbWUgfSA9IHZhbGlkYXRlUmVzdWx0LlZhbGlkYXRlSWREYXRhQmVhbjtcblxuICAgICAgY29uc3QgbG9naW5VcmwgPSBgJHt0aGlzLnNlcnZpY2VzVXJsfT9yZXFOYW1lPXBlcmZvcm1Mb2dvbklgO1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgS29kTWlzaHRhbWVzaDogdXNlck5hbWUsXG4gICAgICAgIE1pc3BhclppaHV5OiBjcmVkZW50aWFscy5pZCxcbiAgICAgICAgU2lzbWE6IGNyZWRlbnRpYWxzLnBhc3N3b3JkLFxuICAgICAgICBjYXJkU3VmZml4OiBjcmVkZW50aWFscy5jYXJkNkRpZ2l0cyxcbiAgICAgICAgY291bnRyeUNvZGU6IENPVU5UUllfQ09ERSxcbiAgICAgICAgaWRUeXBlOiBJRF9UWVBFLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGxvZ2luUmVzdWx0ID0gYXdhaXQgZmV0Y2hQb3N0V2l0aGluUGFnZTx7c3RhdHVzOiBzdHJpbmd9Pih0aGlzLnBhZ2UsIGxvZ2luVXJsLCByZXF1ZXN0KTtcbiAgICAgIGRlYnVnKGB1c2VyIGxvZ2luIHdpdGggc3RhdHVzICcke2xvZ2luUmVzdWx0Py5zdGF0dXN9J2ApO1xuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMScpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5TdWNjZXNzKTtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMycpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuQ2hhbmdlUGFzc3dvcmQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuQ2hhbmdlUGFzc3dvcmQsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkludmFsaWRQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlUmV0dXJuQ29kZSA9PT0gJzQnKSB7XG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5DaGFuZ2VQYXNzd29yZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5DaGFuZ2VQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5GYWlsZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuSW52YWxpZFBhc3N3b3JkLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gICAgcmV0dXJuIGZldGNoQWxsVHJhbnNhY3Rpb25zKHRoaXMucGFnZSwge1xuICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgc2VydmljZXNVcmw6IHRoaXMuc2VydmljZXNVcmwsXG4gICAgICBjb21wYW55Q29kZTogdGhpcy5jb21wYW55Q29kZSxcbiAgICB9LCBzdGFydE1vbWVudCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXI7XG4iXX0=
396
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLWlzcmFjYXJkLWFtZXgudHMiXSwibmFtZXMiOlsiQ09VTlRSWV9DT0RFIiwiSURfVFlQRSIsIklOU1RBTExNRU5UU19LRVlXT1JEIiwiREFURV9GT1JNQVQiLCJkZWJ1ZyIsImdldEFjY291bnRzVXJsIiwic2VydmljZXNVcmwiLCJtb250aE1vbWVudCIsImJpbGxpbmdEYXRlIiwiZm9ybWF0IiwicXVlcnlQYXJhbXMiLCJyZXFOYW1lIiwiYWN0aW9uQ29kZSIsImZldGNoQWNjb3VudHMiLCJwYWdlIiwiZGF0YVVybCIsImRhdGFSZXN1bHQiLCJfIiwiZ2V0IiwiRGFzaGJvYXJkTW9udGhCZWFuIiwiY2FyZHNDaGFyZ2VzIiwibWFwIiwiY2FyZENoYXJnZSIsImluZGV4IiwicGFyc2VJbnQiLCJjYXJkSW5kZXgiLCJhY2NvdW50TnVtYmVyIiwiY2FyZE51bWJlciIsInByb2Nlc3NlZERhdGUiLCJ0b0lTT1N0cmluZyIsImdldFRyYW5zYWN0aW9uc1VybCIsIm1vbnRoIiwieWVhciIsIm1vbnRoU3RyIiwidG9TdHJpbmciLCJyZXF1aXJlZERhdGUiLCJjb252ZXJ0Q3VycmVuY3kiLCJjdXJyZW5jeVN0ciIsIlNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIiwiQUxUX1NIRUtFTF9DVVJSRU5DWSIsIlNIRUtFTF9DVVJSRU5DWSIsImdldEluc3RhbGxtZW50c0luZm8iLCJ0eG4iLCJtb3JlSW5mbyIsImluY2x1ZGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibGVuZ3RoIiwibnVtYmVyIiwidG90YWwiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJmaWx0ZXJlZFR4bnMiLCJmaWx0ZXIiLCJkZWFsU3VtVHlwZSIsInZvdWNoZXJOdW1iZXJSYXR6Iiwidm91Y2hlck51bWJlclJhdHpPdXRib3VuZCIsImlzT3V0Ym91bmQiLCJkZWFsU3VtT3V0Ym91bmQiLCJ0eG5EYXRlU3RyIiwiZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIiwiZnVsbFB1cmNoYXNlRGF0ZSIsInR4bk1vbWVudCIsImN1cnJlbnRQcm9jZXNzZWREYXRlIiwiZnVsbFBheW1lbnREYXRlIiwicmVzdWx0IiwidHlwZSIsImlkZW50aWZpZXIiLCJkYXRlIiwib3JpZ2luYWxBbW91bnQiLCJkZWFsU3VtIiwib3JpZ2luYWxDdXJyZW5jeSIsImN1cnJlbmN5SWQiLCJjaGFyZ2VkQW1vdW50IiwicGF5bWVudFN1bU91dGJvdW5kIiwicGF5bWVudFN1bSIsImRlc2NyaXB0aW9uIiwiZnVsbFN1cHBsaWVyTmFtZU91dGJvdW5kIiwiZnVsbFN1cHBsaWVyTmFtZUhlYiIsIm1lbW8iLCJpbnN0YWxsbWVudHMiLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwiZmV0Y2hUcmFuc2FjdGlvbnMiLCJvcHRpb25zIiwic3RhcnRNb21lbnQiLCJhY2NvdW50cyIsIkNhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4iLCJhY2NvdW50VHhucyIsImZvckVhY2giLCJhY2NvdW50IiwidHhuR3JvdXBzIiwiYWxsVHhucyIsInR4bkdyb3VwIiwidHhuSXNyYWVsIiwicHVzaCIsInR4bkFicm9hZCIsImNvbWJpbmVJbnN0YWxsbWVudHMiLCJvdXRwdXREYXRhIiwiZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlIiwiZ2V0VHJhbnNhY3Rpb25FeHRyYURldGFpbHMiLCJhY2NvdW50SW5kZXgiLCJ0cmFuc2FjdGlvbiIsIm1vZWRDaGl1diIsIkNhcmRJbmRleCIsInNob3ZhclJhdHoiLCJnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24iLCJkYXRhIiwicmF3Q2F0ZWdvcnkiLCJjYXRlZ29yeSIsInRyaW0iLCJnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb25zIiwiYWNjb3VudFdpdGhJbmRleCIsInByb21pc2VzIiwidCIsIlByb21pc2UiLCJhbGwiLCJnZXRFeHRyYVNjcmFwQWNjb3VudCIsImFjY291bnRNYXAiLCJPYmplY3QiLCJrZXlzIiwiYSIsInJlZHVjZSIsIm0iLCJ4IiwiZ2V0RXh0cmFTY3JhcCIsImFjY291bnRzV2l0aEluZGV4IiwiYWxsTW9udGhzIiwiYWN0aW9ucyIsImkiLCJmZXRjaEFsbFRyYW5zYWN0aW9ucyIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwicmVzdWx0cyIsImZpbmFsUmVzdWx0IiwiYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24iLCJjb21iaW5lZFR4bnMiLCJ0eG5zRm9yQWNjb3VudCIsInRvQmVBZGRlZFR4bnMiLCJzdWNjZXNzIiwiSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiY29uc3RydWN0b3IiLCJiYXNlVXJsIiwiY29tcGFueUNvZGUiLCJsb2dpbiIsImNyZWRlbnRpYWxzIiwic2V0UmVxdWVzdEludGVyY2VwdGlvbiIsIm9uIiwicmVxdWVzdCIsInVybCIsImFib3J0IiwiY29udGludWUiLCJuYXZpZ2F0ZVRvIiwiZW1pdFByb2dyZXNzIiwiU2NyYXBlclByb2dyZXNzVHlwZXMiLCJMb2dnaW5nSW4iLCJ2YWxpZGF0ZVVybCIsInZhbGlkYXRlUmVxdWVzdCIsImlkIiwiY2FyZFN1ZmZpeCIsImNhcmQ2RGlnaXRzIiwiY291bnRyeUNvZGUiLCJpZFR5cGUiLCJjaGVja0xldmVsIiwidmFsaWRhdGVSZXN1bHQiLCJIZWFkZXIiLCJTdGF0dXMiLCJWYWxpZGF0ZUlkRGF0YUJlYW4iLCJFcnJvciIsInZhbGlkYXRlUmV0dXJuQ29kZSIsInJldHVybkNvZGUiLCJ1c2VyTmFtZSIsImxvZ2luVXJsIiwiS29kTWlzaHRhbWVzaCIsIk1pc3BhclppaHV5IiwiU2lzbWEiLCJwYXNzd29yZCIsImxvZ2luUmVzdWx0IiwiTG9naW5TdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJlcnJvclR5cGUiLCJTY3JhcGVyRXJyb3JUeXBlcyIsIkxvZ2luRmFpbGVkIiwiSW52YWxpZFBhc3N3b3JkIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtb21lbnQiLCJtYXgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7OztBQUVBLE1BQU1BLFlBQVksR0FBRyxLQUFyQjtBQUNBLE1BQU1DLE9BQU8sR0FBRyxHQUFoQjtBQUNBLE1BQU1DLG9CQUFvQixHQUFHLE9BQTdCO0FBRUEsTUFBTUMsV0FBVyxHQUFHLFlBQXBCO0FBRUEsTUFBTUMsS0FBSyxHQUFHLHFCQUFTLG9CQUFULENBQWQ7O0FBc0VBLFNBQVNDLGNBQVQsQ0FBd0JDLFdBQXhCLEVBQTZDQyxXQUE3QyxFQUFrRTtBQUNoRSxRQUFNQyxXQUFXLEdBQUdELFdBQVcsQ0FBQ0UsTUFBWixDQUFtQixZQUFuQixDQUFwQjtBQUNBLFNBQU8sdUJBQVNILFdBQVQsRUFBc0I7QUFDM0JJLElBQUFBLFdBQVcsRUFBRTtBQUNYQyxNQUFBQSxPQUFPLEVBQUUsZ0JBREU7QUFFWEMsTUFBQUEsVUFBVSxFQUFFLEdBRkQ7QUFHWEosTUFBQUEsV0FIVztBQUlYQyxNQUFBQSxNQUFNLEVBQUU7QUFKRztBQURjLEdBQXRCLENBQVA7QUFRRDs7QUFFRCxlQUFlSSxhQUFmLENBQTZCQyxJQUE3QixFQUF5Q1IsV0FBekMsRUFBOERDLFdBQTlELEVBQThHO0FBQzVHLFFBQU1RLE9BQU8sR0FBR1YsY0FBYyxDQUFDQyxXQUFELEVBQWNDLFdBQWQsQ0FBOUI7QUFDQSxRQUFNUyxVQUFVLEdBQUcsTUFBTSwrQkFBc0RGLElBQXRELEVBQTREQyxPQUE1RCxDQUF6Qjs7QUFDQSxNQUFJQyxVQUFVLElBQUlDLGdCQUFFQyxHQUFGLENBQU1GLFVBQU4sRUFBa0IsZUFBbEIsTUFBdUMsR0FBckQsSUFBNERB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QUFBQSxPQUFPLEVBQUUsS0FESjtBQUVMMEMsUUFBQUEsU0FBUyxFQUFFQywwQkFBa0JGO0FBRnhCLE9BQVA7QUFJRDs7QUFFRCxTQUFLMUIsWUFBTCxDQUFrQkMsa0NBQXFCNEIsV0FBdkM7QUFDQSxXQUFPO0FBQ0w1QyxNQUFBQSxPQUFPLEVBQUUsS0FESjtBQUVMMEMsTUFBQUEsU0FBUyxFQUFFQywwQkFBa0JFO0FBRnhCLEtBQVA7QUFJRDs7QUFFRCxRQUFNQyxTQUFOLEdBQWtCO0FBQ2hCLFVBQU1DLGtCQUFrQixHQUFHLHVCQUFTQyxRQUFULENBQWtCLENBQWxCLEVBQXFCLE9BQXJCLENBQTNCO0FBQ0EsVUFBTUMsU0FBUyxHQUFHLEtBQUt2RyxPQUFMLENBQWF1RyxTQUFiLElBQTBCRixrQkFBa0IsQ0FBQ0csTUFBbkIsRUFBNUM7O0FBQ0EsVUFBTXZHLFdBQVcsR0FBR3dHLGdCQUFPQyxHQUFQLENBQVdMLGtCQUFYLEVBQStCLHFCQUFPRSxTQUFQLENBQS9CLENBQXBCOztBQUVBLFdBQU96RCxvQkFBb0IsQ0FBQyxLQUFLMUgsSUFBTixvQkFDdEIsS0FBSzRFLE9BRGlCO0FBRXpCcEYsTUFBQUEsV0FBVyxFQUFFLEtBQUtBLFdBRk87QUFHekIrSSxNQUFBQSxXQUFXLEVBQUUsS0FBS0E7QUFITyxRQUl4QjFELFdBSndCLENBQTNCO0FBS0Q7O0FBM0dzRjs7ZUE4RzFFc0QsdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGJ1aWxkVXJsIGZyb20gJ2J1aWxkLXVybCc7XG5pbXBvcnQgbW9tZW50LCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyBmZXRjaEdldFdpdGhpblBhZ2UsIGZldGNoUG9zdFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7XG4gIFNIRUtFTF9DVVJSRU5DWV9LRVlXT1JELFxuICBTSEVLRUxfQ1VSUkVOQ1ksXG4gIEFMVF9TSEVLRUxfQ1VSUkVOQ1ksXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgZ2V0QWxsTW9udGhNb21lbnRzIGZyb20gJy4uL2hlbHBlcnMvZGF0ZXMnO1xuaW1wb3J0IHsgZml4SW5zdGFsbG1lbnRzLCBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbnNBY2NvdW50LCBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25JbnN0YWxsbWVudHMsXG4gIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgcnVuU2VyaWFsIH0gZnJvbSAnLi4vaGVscGVycy93YWl0aW5nJztcbmltcG9ydCB7IFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgU2NyYXBlclNjcmFwaW5nUmVzdWx0LCBTY3JhcGVyT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IFNjcmFwZXJQcm9ncmVzc1R5cGVzIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuXG5jb25zdCBDT1VOVFJZX0NPREUgPSAnMjEyJztcbmNvbnN0IElEX1RZUEUgPSAnMSc7XG5jb25zdCBJTlNUQUxMTUVOVFNfS0VZV09SRCA9ICfXqtep15zXldedJztcblxuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2Jhc2UtaXNyYWNhcmQtYW1leCcpO1xuXG5pbnRlcmZhY2UgRXh0ZW5kZWRTY3JhcGVyT3B0aW9ucyBleHRlbmRzIFNjcmFwZXJPcHRpb25zIHtcbiAgc2VydmljZXNVcmw6IHN0cmluZztcbiAgY29tcGFueUNvZGU6IHN0cmluZztcbn1cblxudHlwZSBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXggPSBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbnNBY2NvdW50ICYgeyBpbmRleDogbnVtYmVyIH0+O1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgZGVhbFN1bVR5cGU6IHN0cmluZztcbiAgdm91Y2hlck51bWJlclJhdHpPdXRib3VuZDogc3RyaW5nO1xuICB2b3VjaGVyTnVtYmVyUmF0ejogc3RyaW5nO1xuICBtb3JlSW5mbz86IHN0cmluZztcbiAgZGVhbFN1bU91dGJvdW5kOiBib29sZWFuO1xuICBjdXJyZW5jeUlkOiBzdHJpbmc7XG4gIGRlYWxTdW06IG51bWJlcjtcbiAgZnVsbFBheW1lbnREYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlT3V0Ym91bmQ/OiBzdHJpbmc7XG4gIGZ1bGxTdXBwbGllck5hbWVIZWI6IHN0cmluZztcbiAgZnVsbFN1cHBsaWVyTmFtZU91dGJvdW5kOiBzdHJpbmc7XG4gIHBheW1lbnRTdW06IG51bWJlcjtcbiAgcGF5bWVudFN1bU91dGJvdW5kOiBudW1iZXI7XG59XG5cblxuaW50ZXJmYWNlIFNjcmFwZWRBY2NvdW50IHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgYWNjb3VudE51bWJlcjogc3RyaW5nO1xuICBwcm9jZXNzZWREYXRlOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkTG9naW5WYWxpZGF0aW9uIHtcbiAgSGVhZGVyOiB7XG4gICAgU3RhdHVzOiBzdHJpbmc7XG4gIH07XG4gIFZhbGlkYXRlSWREYXRhQmVhbj86IHtcbiAgICB1c2VyTmFtZT86IHN0cmluZztcbiAgICByZXR1cm5Db2RlOiBzdHJpbmc7XG4gIH07XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudHNXaXRoaW5QYWdlUmVzcG9uc2Uge1xuICBIZWFkZXI6IHtcbiAgICBTdGF0dXM6IHN0cmluZztcbiAgfTtcbiAgRGFzaGJvYXJkTW9udGhCZWFuPzoge1xuICAgIGNhcmRzQ2hhcmdlczoge1xuICAgICAgY2FyZEluZGV4OiBzdHJpbmc7XG4gICAgICBjYXJkTnVtYmVyOiBzdHJpbmc7XG4gICAgICBiaWxsaW5nRGF0ZTogc3RyaW5nO1xuICAgIH1bXTtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9ucyB7XG4gIHR4bklzcmFlbD86IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICB0eG5BYnJvYWQ/OiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbkRhdGEge1xuICBIZWFkZXI/OiB7XG4gICAgU3RhdHVzOiBzdHJpbmc7XG4gIH07XG4gIENhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4/OiBSZWNvcmQ8c3RyaW5nLCB7XG4gICAgQ3VycmVudENhcmRUcmFuc2FjdGlvbnM6IFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9uc1tdO1xuICB9Pjtcbn1cblxuZnVuY3Rpb24gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCBiaWxsaW5nRGF0ZSA9IG1vbnRoTW9tZW50LmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICByZXR1cm4gYnVpbGRVcmwoc2VydmljZXNVcmwsIHtcbiAgICBxdWVyeVBhcmFtczoge1xuICAgICAgcmVxTmFtZTogJ0Rhc2hib2FyZE1vbnRoJyxcbiAgICAgIGFjdGlvbkNvZGU6ICcwJyxcbiAgICAgIGJpbGxpbmdEYXRlLFxuICAgICAgZm9ybWF0OiAnSnNvbicsXG4gICAgfSxcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudHMocGFnZTogUGFnZSwgc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCk6IFByb21pc2U8U2NyYXBlZEFjY291bnRbXT4ge1xuICBjb25zdCBkYXRhVXJsID0gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkQWNjb3VudHNXaXRoaW5QYWdlUmVzcG9uc2U+KHBhZ2UsIGRhdGFVcmwpO1xuICBpZiAoZGF0YVJlc3VsdCAmJiBfLmdldChkYXRhUmVzdWx0LCAnSGVhZGVyLlN0YXR1cycpID09PSAnMScgJiYgZGF0YVJlc3VsdC5EYXNoYm9hcmRNb250aEJlYW4pIHtcbiAgICBjb25zdCB7IGNhcmRzQ2hhcmdlcyB9ID0gZGF0YVJlc3VsdC5EYXNoYm9hcmRNb250aEJlYW47XG4gICAgaWYgKGNhcmRzQ2hhcmdlcykge1xuICAgICAgcmV0dXJuIGNhcmRzQ2hhcmdlcy5tYXAoKGNhcmRDaGFyZ2UpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpbmRleDogcGFyc2VJbnQoY2FyZENoYXJnZS5jYXJkSW5kZXgsIDEwKSxcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiBjYXJkQ2hhcmdlLmNhcmROdW1iZXIsXG4gICAgICAgICAgcHJvY2Vzc2VkRGF0ZTogbW9tZW50KGNhcmRDaGFyZ2UuYmlsbGluZ0RhdGUsIERBVEVfRk9STUFUKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbXTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25zVXJsKHNlcnZpY2VzVXJsOiBzdHJpbmcsIG1vbnRoTW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgbW9udGggPSBtb250aE1vbWVudC5tb250aCgpICsgMTtcbiAgY29uc3QgeWVhciA9IG1vbnRoTW9tZW50LnllYXIoKTtcbiAgY29uc3QgbW9udGhTdHIgPSBtb250aCA8IDEwID8gYDAke21vbnRofWAgOiBtb250aC50b1N0cmluZygpO1xuICByZXR1cm4gYnVpbGRVcmwoc2VydmljZXNVcmwsIHtcbiAgICBxdWVyeVBhcmFtczoge1xuICAgICAgcmVxTmFtZTogJ0NhcmRzVHJhbnNhY3Rpb25zTGlzdCcsXG4gICAgICBtb250aDogbW9udGhTdHIsXG4gICAgICB5ZWFyOiBgJHt5ZWFyfWAsXG4gICAgICByZXF1aXJlZERhdGU6ICdOJyxcbiAgICB9LFxuICB9KTtcbn1cblxuZnVuY3Rpb24gY29udmVydEN1cnJlbmN5KGN1cnJlbmN5U3RyOiBzdHJpbmcpIHtcbiAgaWYgKGN1cnJlbmN5U3RyID09PSBTSEVLRUxfQ1VSUkVOQ1lfS0VZV09SRCB8fCBjdXJyZW5jeVN0ciA9PT0gQUxUX1NIRUtFTF9DVVJSRU5DWSkge1xuICAgIHJldHVybiBTSEVLRUxfQ1VSUkVOQ1k7XG4gIH1cbiAgcmV0dXJuIGN1cnJlbmN5U3RyO1xufVxuXG5mdW5jdGlvbiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bjogU2NyYXBlZFRyYW5zYWN0aW9uKTogVHJhbnNhY3Rpb25JbnN0YWxsbWVudHMgfCB1bmRlZmluZWQge1xuICBpZiAoIXR4bi5tb3JlSW5mbyB8fCAhdHhuLm1vcmVJbmZvLmluY2x1ZGVzKElOU1RBTExNRU5UU19LRVlXT1JEKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgbWF0Y2hlcyA9IHR4bi5tb3JlSW5mby5tYXRjaCgvXFxkKy9nKTtcbiAgaWYgKCFtYXRjaGVzIHx8IG1hdGNoZXMubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG51bWJlcjogcGFyc2VJbnQobWF0Y2hlc1swXSwgMTApLFxuICAgIHRvdGFsOiBwYXJzZUludChtYXRjaGVzWzFdLCAxMCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uVHlwZSh0eG46IFNjcmFwZWRUcmFuc2FjdGlvbikge1xuICByZXR1cm4gZ2V0SW5zdGFsbG1lbnRzSW5mbyh0eG4pID8gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHMgOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbn1cblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSwgcHJvY2Vzc2VkRGF0ZTogc3RyaW5nKTogVHJhbnNhY3Rpb25bXSB7XG4gIGNvbnN0IGZpbHRlcmVkVHhucyA9IHR4bnMuZmlsdGVyKCh0eG4pID0+IHR4bi5kZWFsU3VtVHlwZSAhPT0gJzEnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4bi52b3VjaGVyTnVtYmVyUmF0eiAhPT0gJzAwMDAwMDAwMCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHhuLnZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQgIT09ICcwMDAwMDAwMDAnKTtcblxuICByZXR1cm4gZmlsdGVyZWRUeG5zLm1hcCgodHhuKSA9PiB7XG4gICAgY29uc3QgaXNPdXRib3VuZCA9IHR4bi5kZWFsU3VtT3V0Ym91bmQ7XG4gICAgY29uc3QgdHhuRGF0ZVN0ciA9IGlzT3V0Ym91bmQgPyB0eG4uZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIDogdHhuLmZ1bGxQdXJjaGFzZURhdGU7XG4gICAgY29uc3QgdHhuTW9tZW50ID0gbW9tZW50KHR4bkRhdGVTdHIsIERBVEVfRk9STUFUKTtcblxuICAgIGNvbnN0IGN1cnJlbnRQcm9jZXNzZWREYXRlID0gdHhuLmZ1bGxQYXltZW50RGF0ZSA/XG4gICAgICBtb21lbnQodHhuLmZ1bGxQYXltZW50RGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCkgOlxuICAgICAgcHJvY2Vzc2VkRGF0ZTtcbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgdHlwZTogZ2V0VHJhbnNhY3Rpb25UeXBlKHR4biksXG4gICAgICBpZGVudGlmaWVyOiBwYXJzZUludChpc091dGJvdW5kID8gdHhuLnZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQgOiB0eG4udm91Y2hlck51bWJlclJhdHosIDEwKSxcbiAgICAgIGRhdGU6IHR4bk1vbWVudC50b0lTT1N0cmluZygpLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogY3VycmVudFByb2Nlc3NlZERhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogaXNPdXRib3VuZCA/IC10eG4uZGVhbFN1bU91dGJvdW5kIDogLXR4bi5kZWFsU3VtLFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogY29udmVydEN1cnJlbmN5KHR4bi5jdXJyZW5jeUlkKSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGlzT3V0Ym91bmQgPyAtdHhuLnBheW1lbnRTdW1PdXRib3VuZCA6IC10eG4ucGF5bWVudFN1bSxcbiAgICAgIGRlc2NyaXB0aW9uOiBpc091dGJvdW5kID8gdHhuLmZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCA6IHR4bi5mdWxsU3VwcGxpZXJOYW1lSGViLFxuICAgICAgbWVtbzogdHhuLm1vcmVJbmZvIHx8ICcnLFxuICAgICAgaW5zdGFsbG1lbnRzOiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bikgfHwgdW5kZWZpbmVkLFxuICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IEV4dGVuZGVkU2NyYXBlck9wdGlvbnMsIHN0YXJ0TW9tZW50OiBNb21lbnQsIG1vbnRoTW9tZW50OiBNb21lbnQpOiBQcm9taXNlPFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleD4ge1xuICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoQWNjb3VudHMocGFnZSwgb3B0aW9ucy5zZXJ2aWNlc1VybCwgbW9udGhNb21lbnQpO1xuICBjb25zdCBkYXRhVXJsID0gZ2V0VHJhbnNhY3Rpb25zVXJsKG9wdGlvbnMuc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCBkYXRhVXJsKTtcbiAgaWYgKGRhdGFSZXN1bHQgJiYgXy5nZXQoZGF0YVJlc3VsdCwgJ0hlYWRlci5TdGF0dXMnKSA9PT0gJzEnICYmIGRhdGFSZXN1bHQuQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbikge1xuICAgIGNvbnN0IGFjY291bnRUeG5zOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXggPSB7fTtcbiAgICBhY2NvdW50cy5mb3JFYWNoKChhY2NvdW50KSA9PiB7XG4gICAgICBjb25zdCB0eG5Hcm91cHM6IFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9uc1tdID0gXy5nZXQoZGF0YVJlc3VsdCwgYENhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4uSW5kZXgke2FjY291bnQuaW5kZXh9LkN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zYCk7XG4gICAgICBpZiAodHhuR3JvdXBzKSB7XG4gICAgICAgIGxldCBhbGxUeG5zOiBUcmFuc2FjdGlvbltdID0gW107XG4gICAgICAgIHR4bkdyb3Vwcy5mb3JFYWNoKCh0eG5Hcm91cCkgPT4ge1xuICAgICAgICAgIGlmICh0eG5Hcm91cC50eG5Jc3JhZWwpIHtcbiAgICAgICAgICAgIGNvbnN0IHR4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bkdyb3VwLnR4bklzcmFlbCwgYWNjb3VudC5wcm9jZXNzZWREYXRlKTtcbiAgICAgICAgICAgIGFsbFR4bnMucHVzaCguLi50eG5zKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR4bkdyb3VwLnR4bkFicm9hZCkge1xuICAgICAgICAgICAgY29uc3QgdHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnModHhuR3JvdXAudHhuQWJyb2FkLCBhY2NvdW50LnByb2Nlc3NlZERhdGUpO1xuICAgICAgICAgICAgYWxsVHhucy5wdXNoKC4uLnR4bnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMpIHtcbiAgICAgICAgICBhbGxUeG5zID0gZml4SW5zdGFsbG1lbnRzKGFsbFR4bnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm91dHB1dERhdGE/LmVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/PyB0cnVlKSB7XG4gICAgICAgICAgYWxsVHhucyA9IGZpbHRlck9sZFRyYW5zYWN0aW9ucyhhbGxUeG5zLCBzdGFydE1vbWVudCwgb3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBhY2NvdW50VHhuc1thY2NvdW50LmFjY291bnROdW1iZXJdID0ge1xuICAgICAgICAgIGFjY291bnROdW1iZXI6IGFjY291bnQuYWNjb3VudE51bWJlcixcbiAgICAgICAgICBpbmRleDogYWNjb3VudC5pbmRleCxcbiAgICAgICAgICB0eG5zOiBhbGxUeG5zLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhY2NvdW50VHhucztcbiAgfVxuXG4gIHJldHVybiB7fTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25FeHRyYURldGFpbHMoc2VydmljZXNVcmw6IHN0cmluZywgbW9udGg6IE1vbWVudCwgYWNjb3VudEluZGV4OiBudW1iZXIsIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IHN0cmluZyB7XG4gIGNvbnN0IG1vZWRDaGl1diA9IG1vbnRoLmZvcm1hdCgnTU1ZWVlZJyk7XG4gIHJldHVybiBidWlsZFVybChzZXJ2aWNlc1VybCwge1xuICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICByZXFOYW1lOiAnUGlydGV5SXNrYV8yMDQnLFxuICAgICAgQ2FyZEluZGV4OiBhY2NvdW50SW5kZXgudG9TdHJpbmcoKSxcbiAgICAgIHNob3ZhclJhdHo6IHRyYW5zYWN0aW9uLmlkZW50aWZpZXIhLnRvU3RyaW5nKCksXG4gICAgICBtb2VkQ2hpdXYsXG4gICAgfSxcbiAgfSk7XG59XG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24ocGFnZTogUGFnZSwgb3B0aW9uczogRXh0ZW5kZWRTY3JhcGVyT3B0aW9ucywgbW9udGg6IE1vbWVudCwgYWNjb3VudEluZGV4OiBudW1iZXIsIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgY29uc3QgZGF0YVVybCA9IGdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzKG9wdGlvbnMuc2VydmljZXNVcmwsIG1vbnRoLCBhY2NvdW50SW5kZXgsIHRyYW5zYWN0aW9uKTtcbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCBkYXRhVXJsKTtcbiAgY29uc3QgcmF3Q2F0ZWdvcnkgPSBfLmdldChkYXRhLCAnUGlydGV5SXNrYV8yMDRCZWFuLnNlY3RvcicpO1xuICByZXR1cm4ge1xuICAgIC4uLnRyYW5zYWN0aW9uLFxuICAgIGNhdGVnb3J5OiByYXdDYXRlZ29yeS50cmltKCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEV4dHJhU2NyYXBUcmFuc2FjdGlvbnMoYWNjb3VudFdpdGhJbmRleDogVHJhbnNhY3Rpb25zQWNjb3VudCAmIHsgaW5kZXg6IG51bWJlciB9LCBwYWdlOiBQYWdlLCBvcHRpb25zOiBFeHRlbmRlZFNjcmFwZXJPcHRpb25zLCBtb250aDogbW9tZW50Lk1vbWVudCk6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICBjb25zdCBwcm9taXNlcyA9IGFjY291bnRXaXRoSW5kZXgudHhuc1xuICAgIC5tYXAoKHQpID0+IGdldEV4dHJhU2NyYXBUcmFuc2FjdGlvbihwYWdlLCBvcHRpb25zLCBtb250aCwgYWNjb3VudFdpdGhJbmRleC5pbmRleCwgdCkpO1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVNjcmFwQWNjb3VudChwYWdlOiBQYWdlLCBvcHRpb25zOiBFeHRlbmRlZFNjcmFwZXJPcHRpb25zLCBhY2NvdW50TWFwOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXgsIG1vbnRoOiBtb21lbnQuTW9tZW50KTogUHJvbWlzZTxTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXg+IHtcbiAgY29uc3QgcHJvbWlzZXMgPSBPYmplY3Qua2V5cyhhY2NvdW50TWFwKVxuICAgIC5tYXAoYXN5bmMgKGEpID0+ICh7XG4gICAgICAuLi5hY2NvdW50TWFwW2FdLFxuICAgICAgdHhuczogYXdhaXQgZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9ucyhhY2NvdW50TWFwW2FdLCBwYWdlLCBvcHRpb25zLCBtb250aCksXG4gICAgfSkpO1xuICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgcmV0dXJuIGFjY291bnRzLnJlZHVjZSgobSwgeCkgPT4gKHsgLi4ubSwgW3guYWNjb3VudE51bWJlcl06IHggfSksIHt9KTtcbn1cblxuZnVuY3Rpb24gZ2V0RXh0cmFTY3JhcChhY2NvdW50c1dpdGhJbmRleDogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4W10sIHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IEV4dGVuZGVkU2NyYXBlck9wdGlvbnMsIGFsbE1vbnRoczogbW9tZW50Lk1vbWVudFtdKTogUHJvbWlzZTxTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXT4ge1xuICBjb25zdCBhY3Rpb25zID0gYWNjb3VudHNXaXRoSW5kZXgubWFwKChhLCBpKSA9PiAoKSA9PiBnZXRFeHRyYVNjcmFwQWNjb3VudChwYWdlLCBvcHRpb25zLCBhLCBhbGxNb250aHNbaV0pKTtcbiAgcmV0dXJuIHJ1blNlcmlhbChhY3Rpb25zKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBbGxUcmFuc2FjdGlvbnMocGFnZTogUGFnZSwgb3B0aW9uczogRXh0ZW5kZWRTY3JhcGVyT3B0aW9ucywgc3RhcnRNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCBmdXR1cmVNb250aHNUb1NjcmFwZSA9IG9wdGlvbnMuZnV0dXJlTW9udGhzVG9TY3JhcGUgPz8gMTtcbiAgY29uc3QgYWxsTW9udGhzID0gZ2V0QWxsTW9udGhNb21lbnRzKHN0YXJ0TW9tZW50LCBmdXR1cmVNb250aHNUb1NjcmFwZSk7XG4gIGNvbnN0IHJlc3VsdHM6IFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleFtdID0gYXdhaXQgUHJvbWlzZS5hbGwoYWxsTW9udGhzLm1hcChhc3luYyAobW9udGhNb21lbnQpID0+IHtcbiAgICByZXR1cm4gZmV0Y2hUcmFuc2FjdGlvbnMocGFnZSwgb3B0aW9ucywgc3RhcnRNb21lbnQsIG1vbnRoTW9tZW50KTtcbiAgfSkpO1xuXG4gIGNvbnN0IGZpbmFsUmVzdWx0ID0gb3B0aW9ucy5hZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbiA/XG4gICAgYXdhaXQgZ2V0RXh0cmFTY3JhcChyZXN1bHRzLCBwYWdlLCBvcHRpb25zLCBhbGxNb250aHMpIDogcmVzdWx0cztcblxuICBjb25zdCBjb21iaW5lZFR4bnM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0ge307XG5cbiAgZmluYWxSZXN1bHQuZm9yRWFjaCgocmVzdWx0KSA9PiB7XG4gICAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKChhY2NvdW50TnVtYmVyKSA9PiB7XG4gICAgICBsZXQgdHhuc0ZvckFjY291bnQgPSBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl07XG4gICAgICBpZiAoIXR4bnNGb3JBY2NvdW50KSB7XG4gICAgICAgIHR4bnNGb3JBY2NvdW50ID0gW107XG4gICAgICAgIGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXSA9IHR4bnNGb3JBY2NvdW50O1xuICAgICAgfVxuICAgICAgY29uc3QgdG9CZUFkZGVkVHhucyA9IHJlc3VsdFthY2NvdW50TnVtYmVyXS50eG5zO1xuICAgICAgY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdLnB1c2goLi4udG9CZUFkZGVkVHhucyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IGFjY291bnRzID0gT2JqZWN0LmtleXMoY29tYmluZWRUeG5zKS5tYXAoKGFjY291bnROdW1iZXIpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgIHR4bnM6IGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXSxcbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgYWNjb3VudHMsXG4gIH07XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7aWQ6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgY2FyZDZEaWdpdHM6IHN0cmluZ307XG5jbGFzcyBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgcHJpdmF0ZSBiYXNlVXJsOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb21wYW55Q29kZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgc2VydmljZXNVcmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTY3JhcGVyT3B0aW9ucywgYmFzZVVybDogc3RyaW5nLCBjb21wYW55Q29kZTogc3RyaW5nKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICB0aGlzLmJhc2VVcmwgPSBiYXNlVXJsO1xuICAgIHRoaXMuY29tcGFueUNvZGUgPSBjb21wYW55Q29kZTtcbiAgICB0aGlzLnNlcnZpY2VzVXJsID0gYCR7YmFzZVVybH0vc2VydmljZXMvUHJveHlSZXF1ZXN0SGFuZGxlci5hc2h4YDtcbiAgfVxuXG4gIGFzeW5jIGxvZ2luKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgYXdhaXQgdGhpcy5wYWdlLnNldFJlcXVlc3RJbnRlcmNlcHRpb24odHJ1ZSk7XG4gICAgdGhpcy5wYWdlLm9uKCdyZXF1ZXN0JywgKHJlcXVlc3QpID0+IHtcbiAgICAgIGlmIChyZXF1ZXN0LnVybCgpLmluY2x1ZGVzKCdkZXRlY3Rvci1kb20ubWluLmpzJykpIHtcbiAgICAgICAgZGVidWcoJ2ZvcmNlIGFib3J0IGZvciByZXF1ZXN0IGRvIGRvd25sb2FkIGRldGVjdG9yLWRvbS5taW4uanMgcmVzb3VyY2UnKTtcbiAgICAgICAgcmVxdWVzdC5hYm9ydCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVxdWVzdC5jb250aW51ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZGVidWcoJ25hdmlnYXRlIHRvIGxvZ2luIHBhZ2UnKTtcbiAgICBhd2FpdCB0aGlzLm5hdmlnYXRlVG8oYCR7dGhpcy5iYXNlVXJsfS9wZXJzb25hbGFyZWEvTG9naW5gKTtcblxuICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2dpbmdJbik7XG5cbiAgICBjb25zdCB2YWxpZGF0ZVVybCA9IGAke3RoaXMuc2VydmljZXNVcmx9P3JlcU5hbWU9VmFsaWRhdGVJZERhdGFgO1xuICAgIGNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHtcbiAgICAgIGlkOiBjcmVkZW50aWFscy5pZCxcbiAgICAgIGNhcmRTdWZmaXg6IGNyZWRlbnRpYWxzLmNhcmQ2RGlnaXRzLFxuICAgICAgY291bnRyeUNvZGU6IENPVU5UUllfQ09ERSxcbiAgICAgIGlkVHlwZTogSURfVFlQRSxcbiAgICAgIGNoZWNrTGV2ZWw6ICcxJyxcbiAgICAgIGNvbXBhbnlDb2RlOiB0aGlzLmNvbXBhbnlDb2RlLFxuICAgIH07XG4gICAgY29uc3QgdmFsaWRhdGVSZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPFNjcmFwZWRMb2dpblZhbGlkYXRpb24+KHRoaXMucGFnZSwgdmFsaWRhdGVVcmwsIHZhbGlkYXRlUmVxdWVzdCk7XG4gICAgaWYgKCF2YWxpZGF0ZVJlc3VsdCB8fCAhdmFsaWRhdGVSZXN1bHQuSGVhZGVyIHx8IHZhbGlkYXRlUmVzdWx0LkhlYWRlci5TdGF0dXMgIT09ICcxJyB8fCAhdmFsaWRhdGVSZXN1bHQuVmFsaWRhdGVJZERhdGFCZWFuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gZXJyb3IgZHVyaW5nIGxvZ2luJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGVSZXR1cm5Db2RlID0gdmFsaWRhdGVSZXN1bHQuVmFsaWRhdGVJZERhdGFCZWFuLnJldHVybkNvZGU7XG4gICAgZGVidWcoYHVzZXIgdmFsaWRhdGUgd2l0aCByZXR1cm4gY29kZSAnJHt2YWxpZGF0ZVJldHVybkNvZGV9J2ApO1xuICAgIGlmICh2YWxpZGF0ZVJldHVybkNvZGUgPT09ICcxJykge1xuICAgICAgY29uc3QgeyB1c2VyTmFtZSB9ID0gdmFsaWRhdGVSZXN1bHQuVmFsaWRhdGVJZERhdGFCZWFuO1xuXG4gICAgICBjb25zdCBsb2dpblVybCA9IGAke3RoaXMuc2VydmljZXNVcmx9P3JlcU5hbWU9cGVyZm9ybUxvZ29uSWA7XG4gICAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgICBLb2RNaXNodGFtZXNoOiB1c2VyTmFtZSxcbiAgICAgICAgTWlzcGFyWmlodXk6IGNyZWRlbnRpYWxzLmlkLFxuICAgICAgICBTaXNtYTogY3JlZGVudGlhbHMucGFzc3dvcmQsXG4gICAgICAgIGNhcmRTdWZmaXg6IGNyZWRlbnRpYWxzLmNhcmQ2RGlnaXRzLFxuICAgICAgICBjb3VudHJ5Q29kZTogQ09VTlRSWV9DT0RFLFxuICAgICAgICBpZFR5cGU6IElEX1RZUEUsXG4gICAgICB9O1xuICAgICAgY29uc3QgbG9naW5SZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPHtzdGF0dXM6IHN0cmluZ30+KHRoaXMucGFnZSwgbG9naW5VcmwsIHJlcXVlc3QpO1xuICAgICAgZGVidWcoYHVzZXIgbG9naW4gd2l0aCBzdGF0dXMgJyR7bG9naW5SZXN1bHQ/LnN0YXR1c30nYCk7XG5cbiAgICAgIGlmIChsb2dpblJlc3VsdCAmJiBsb2dpblJlc3VsdC5zdGF0dXMgPT09ICcxJykge1xuICAgICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dpblN1Y2Nlc3MpO1xuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChsb2dpblJlc3VsdCAmJiBsb2dpblJlc3VsdC5zdGF0dXMgPT09ICczJykge1xuICAgICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5DaGFuZ2VQYXNzd29yZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5DaGFuZ2VQYXNzd29yZCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5GYWlsZWQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuSW52YWxpZFBhc3N3b3JkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVSZXR1cm5Db2RlID09PSAnNCcpIHtcbiAgICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkNoYW5nZVBhc3N3b3JkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkNoYW5nZVBhc3N3b3JkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dpbkZhaWxlZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5JbnZhbGlkUGFzc3dvcmQsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgICByZXR1cm4gZmV0Y2hBbGxUcmFuc2FjdGlvbnModGhpcy5wYWdlLCB7XG4gICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICBzZXJ2aWNlc1VybDogdGhpcy5zZXJ2aWNlc1VybCxcbiAgICAgIGNvbXBhbnlDb2RlOiB0aGlzLmNvbXBhbnlDb2RlLFxuICAgIH0sIHN0YXJ0TW9tZW50KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlcjtcbiJdfQ==
@@ -49,5 +49,6 @@ declare class BaseScraperWithBrowser<TCredentials extends ScraperCredentials> ex
49
49
  }[]): Promise<void>;
50
50
  login(credentials: ScraperCredentials): Promise<ScraperScrapingResult>;
51
51
  terminate(_success: boolean): Promise<void>;
52
+ private handleLoginResult;
52
53
  }
53
54
  export { BaseScraperWithBrowser };
@@ -21,6 +21,8 @@ var _debug = require("../helpers/debug");
21
21
 
22
22
  var _errors = require("./errors");
23
23
 
24
+ var _definitions = require("../definitions");
25
+
24
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
27
 
26
28
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
@@ -86,35 +88,6 @@ async function getKeyByValue(object, value, page) {
86
88
  return Promise.resolve(LoginResults.UnknownError);
87
89
  }
88
90
 
89
- function handleLoginResult(scraper, loginResult) {
90
- switch (loginResult) {
91
- case LoginResults.Success:
92
- scraper.emitProgress(_baseScraper.ScraperProgressTypes.LoginSuccess);
93
- return {
94
- success: true
95
- };
96
-
97
- case LoginResults.InvalidPassword:
98
- case LoginResults.UnknownError:
99
- scraper.emitProgress(_baseScraper.ScraperProgressTypes.LoginFailed);
100
- return {
101
- success: false,
102
- errorType: loginResult === LoginResults.InvalidPassword ? _errors.ScraperErrorTypes.InvalidPassword : _errors.ScraperErrorTypes.General,
103
- errorMessage: `Login failed with ${loginResult} error`
104
- };
105
-
106
- case LoginResults.ChangePassword:
107
- scraper.emitProgress(_baseScraper.ScraperProgressTypes.ChangePassword);
108
- return {
109
- success: false,
110
- errorType: _errors.ScraperErrorTypes.ChangePassword
111
- };
112
-
113
- default:
114
- throw new Error(`unexpected login result "${loginResult}"`);
115
- }
116
- }
117
-
118
91
  function createGeneralError() {
119
92
  return {
120
93
  success: false,
@@ -141,7 +114,7 @@ class BaseScraperWithBrowser extends _baseScraper.BaseScraper {
141
114
  async initialize() {
142
115
  await super.initialize();
143
116
  debug('initialize scraper');
144
- this.emitProgress(_baseScraper.ScraperProgressTypes.Initializing);
117
+ this.emitProgress(_definitions.ScraperProgressTypes.Initializing);
145
118
  let env;
146
119
 
147
120
  if (this.options.verbose) {
@@ -291,7 +264,7 @@ class BaseScraperWithBrowser extends _baseScraper.BaseScraper {
291
264
  await loginOptions.submitButtonSelector();
292
265
  }
293
266
 
294
- this.emitProgress(_baseScraper.ScraperProgressTypes.LoggingIn);
267
+ this.emitProgress(_definitions.ScraperProgressTypes.LoggingIn);
295
268
 
296
269
  if (loginOptions.postAction) {
297
270
  debug('execute \'postAction\' interceptor provided in login options');
@@ -305,12 +278,12 @@ class BaseScraperWithBrowser extends _baseScraper.BaseScraper {
305
278
  const current = await (0, _navigation.getCurrentUrl)(this.page, true);
306
279
  const loginResult = await getKeyByValue(loginOptions.possibleResults, current, this.page);
307
280
  debug(`handle login results ${loginResult}`);
308
- return handleLoginResult(this, loginResult);
281
+ return this.handleLoginResult(loginResult);
309
282
  }
310
283
 
311
284
  async terminate(_success) {
312
285
  debug(`terminating browser with success = ${_success}`);
313
- this.emitProgress(_baseScraper.ScraperProgressTypes.Terminating);
286
+ this.emitProgress(_definitions.ScraperProgressTypes.Terminating);
314
287
 
315
288
  if (!_success && !!this.options.storeFailureScreenShotPath) {
316
289
  debug(`create a snapshot before terminated in ${this.options.storeFailureScreenShotPath}`);
@@ -327,7 +300,36 @@ class BaseScraperWithBrowser extends _baseScraper.BaseScraper {
327
300
  await this.browser.close();
328
301
  }
329
302
 
303
+ handleLoginResult(loginResult) {
304
+ switch (loginResult) {
305
+ case LoginResults.Success:
306
+ this.emitProgress(_definitions.ScraperProgressTypes.LoginSuccess);
307
+ return {
308
+ success: true
309
+ };
310
+
311
+ case LoginResults.InvalidPassword:
312
+ case LoginResults.UnknownError:
313
+ this.emitProgress(_definitions.ScraperProgressTypes.LoginFailed);
314
+ return {
315
+ success: false,
316
+ errorType: loginResult === LoginResults.InvalidPassword ? _errors.ScraperErrorTypes.InvalidPassword : _errors.ScraperErrorTypes.General,
317
+ errorMessage: `Login failed with ${loginResult} error`
318
+ };
319
+
320
+ case LoginResults.ChangePassword:
321
+ this.emitProgress(_definitions.ScraperProgressTypes.ChangePassword);
322
+ return {
323
+ success: false,
324
+ errorType: _errors.ScraperErrorTypes.ChangePassword
325
+ };
326
+
327
+ default:
328
+ throw new Error(`unexpected login result "${loginResult}"`);
329
+ }
330
+ }
331
+
330
332
  }
331
333
 
332
334
  exports.BaseScraperWithBrowser = BaseScraperWithBrowser;
333
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyLnRzIl0sIm5hbWVzIjpbIlZJRVdQT1JUX1dJRFRIIiwiVklFV1BPUlRfSEVJR0hUIiwiT0tfU1RBVFVTIiwiZGVidWciLCJMb2dpbkJhc2VSZXN1bHRzIiwiVGltZW91dCIsIkdlbmVyaWMiLCJHZW5lcmFsIiwiU2NyYXBlckVycm9yVHlwZXMiLCJyZXN0IiwiTG9naW5SZXN1bHRzIiwiZ2V0S2V5QnlWYWx1ZSIsIm9iamVjdCIsInZhbHVlIiwicGFnZSIsImtleXMiLCJPYmplY3QiLCJrZXkiLCJjb25kaXRpb25zIiwiY29uZGl0aW9uIiwicmVzdWx0IiwiUmVnRXhwIiwidGVzdCIsInRvTG93ZXJDYXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJVbmtub3duRXJyb3IiLCJoYW5kbGVMb2dpblJlc3VsdCIsInNjcmFwZXIiLCJsb2dpblJlc3VsdCIsIlN1Y2Nlc3MiLCJlbWl0UHJvZ3Jlc3MiLCJTY3JhcGVyUHJvZ3Jlc3NUeXBlcyIsIkxvZ2luU3VjY2VzcyIsInN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJMb2dpbkZhaWxlZCIsImVycm9yVHlwZSIsImVycm9yTWVzc2FnZSIsIkNoYW5nZVBhc3N3b3JkIiwiRXJyb3IiLCJjcmVhdGVHZW5lcmFsRXJyb3IiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiQmFzZVNjcmFwZXIiLCJnZXRWaWV3UG9ydCIsIndpZHRoIiwiaGVpZ2h0IiwiaW5pdGlhbGl6ZSIsIkluaXRpYWxpemluZyIsImVudiIsIm9wdGlvbnMiLCJ2ZXJib3NlIiwiREVCVUciLCJwcm9jZXNzIiwiYnJvd3NlciIsImV4ZWN1dGFibGVQYXRoIiwidW5kZWZpbmVkIiwiYXJncyIsInRpbWVvdXQiLCJoZWFkbGVzcyIsInNob3dCcm93c2VyIiwicHVwcGV0ZWVyIiwibGF1bmNoIiwicHJlcGFyZUJyb3dzZXIiLCJwYWdlcyIsImxlbmd0aCIsIm5ld1BhZ2UiLCJkZWZhdWx0VGltZW91dCIsInNldERlZmF1bHRUaW1lb3V0IiwicHJlcGFyZVBhZ2UiLCJ2aWV3cG9ydCIsInNldFZpZXdwb3J0Iiwib24iLCJyZXF1ZXN0IiwiZmFpbHVyZSIsImVycm9yVGV4dCIsInVybCIsIm5hdmlnYXRlVG8iLCJwYWdlVG9Vc2UiLCJyZXNwb25zZSIsImdvdG8iLCJzdGF0dXMiLCJnZXRMb2dpbk9wdGlvbnMiLCJfY3JlZGVudGlhbHMiLCJjb21wYW55SWQiLCJmaWxsSW5wdXRzIiwicGFnZU9yRnJhbWUiLCJmaWVsZHMiLCJtb2RpZmllZCIsImlucHV0Iiwic2hpZnQiLCJzZWxlY3RvciIsImxvZ2luIiwiY3JlZGVudGlhbHMiLCJsb2dpbk9wdGlvbnMiLCJ1c2VyQWdlbnQiLCJzZXRVc2VyQWdlbnQiLCJsb2dpblVybCIsImNoZWNrUmVhZGluZXNzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJsb2dpbkZyYW1lT3JQYWdlIiwicHJlQWN0aW9uIiwiTG9nZ2luZ0luIiwicG9zdEFjdGlvbiIsImN1cnJlbnQiLCJwb3NzaWJsZVJlc3VsdHMiLCJ0ZXJtaW5hdGUiLCJfc3VjY2VzcyIsIlRlcm1pbmF0aW5nIiwic3RvcmVGYWlsdXJlU2NyZWVuU2hvdFBhdGgiLCJzY3JlZW5zaG90IiwicGF0aCIsImZ1bGxQYWdlIiwiY2xvc2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBSUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FBR0EsTUFBTUEsY0FBYyxHQUFHLElBQXZCO0FBQ0EsTUFBTUMsZUFBZSxHQUFHLEdBQXhCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLEdBQWxCO0FBRUEsTUFBTUMsS0FBSyxHQUFHLHFCQUFTLDJCQUFULENBQWQ7SUFFS0MsZ0I7O1dBQUFBLGdCO0FBQUFBLEVBQUFBLGdCO0FBQUFBLEVBQUFBLGdCO0dBQUFBLGdCLEtBQUFBLGdCOztBQUtMLE1BQU07QUFDSkMsRUFBQUEsT0FESTtBQUNLQyxFQUFBQSxPQURMO0FB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RyxNQUFNLCtCQUFjLEtBQUsxRixJQUFuQixFQUF5QixJQUF6QixDQUF0QjtBQUNBLFVBQU1lLFdBQVcsR0FBRyxNQUFNbEIsYUFBYSxDQUFDbUYsWUFBWSxDQUFDVyxlQUFkLEVBQStCRCxPQUEvQixFQUF3QyxLQUFLMUYsSUFBN0MsQ0FBdkM7QUFDQVgsSUFBQUEsS0FBSyxDQUFFLHdCQUF1QjBCLFdBQVksRUFBckMsQ0FBTDtBQUNBLFdBQU9GLGlCQUFpQixDQUFDLElBQUQsRUFBT0UsV0FBUCxDQUF4QjtBQUNEOztBQUVELFFBQU02RSxTQUFOLENBQWdCQyxRQUFoQixFQUFtQztBQUNqQ3hHLElBQUFBLEtBQUssQ0FBRSxzQ0FBcUN3RyxRQUFTLEVBQWhELENBQUw7QUFDQSxTQUFLNUUsWUFBTCxDQUFrQkMsa0NBQXFCNEUsV0FBdkM7O0FBRUEsUUFBSSxDQUFDRCxRQUFELElBQWEsQ0FBQyxDQUFDLEtBQUt6RCxPQUFMLENBQWEyRCwwQkFBaEMsRUFBNEQ7QUFDMUQxRyxNQUFBQSxLQUFLLENBQUUsMENBQXlDLEtBQUsrQyxPQUFMLENBQWEyRCwwQkFBMkIsRUFBbkYsQ0FBTDtBQUNBLFlBQU0sS0FBSy9GLElBQUwsQ0FBVWdHLFVBQVYsQ0FBcUI7QUFDekJDLFFBQUFBLElBQUksRUFBRSxLQUFLN0QsT0FBTCxDQUFhMkQsMEJBRE07QUFFekJHLFFBQUFBLFFBQVEsRUFBRTtBQUZlLE9BQXJCLENBQU47QUFJRDs7QUFFRCxRQUFJLENBQUMsS0FBSzFELE9BQVYsRUFBbUI7QUFDakI7QUFDRDs7QUFFRCxVQUFNLEtBQUtBLE9BQUwsQ0FBYTJELEtBQWIsRUFBTjtBQUNEOztBQTlMcUciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcHVwcGV0ZWVyLCB7IEJyb3dzZXIsIEZyYW1lLCBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcblxuaW1wb3J0IHtcbiAgQmFzZVNjcmFwZXIsIFNjcmFwZXJQcm9ncmVzc1R5cGVzLFxuXG59IGZyb20gJy4vYmFzZS1zY3JhcGVyJztcbmltcG9ydCB7IGdldEN1cnJlbnRVcmwsIHdhaXRGb3JOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IGNsaWNrQnV0dG9uLCBmaWxsSW5wdXQsIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCB9IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IGdldERlYnVnIH0gZnJvbSAnLi4vaGVscGVycy9kZWJ1Zyc7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcyB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IFNjcmFwZXJTY3JhcGluZ1Jlc3VsdCwgU2NyYXBlckNyZWRlbnRpYWxzIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBWSUVXUE9SVF9XSURUSCA9IDEwMjQ7XG5jb25zdCBWSUVXUE9SVF9IRUlHSFQgPSA3Njg7XG5jb25zdCBPS19TVEFUVVMgPSAyMDA7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInKTtcblxuZW51bSBMb2dpbkJhc2VSZXN1bHRzIHtcbiAgU3VjY2VzcyA9ICdTVUNDRVNTJyxcbiAgVW5rbm93bkVycm9yID0gJ1VOS05PV05fRVJST1InXG59XG5cbmNvbnN0IHtcbiAgVGltZW91dCwgR2VuZXJpYywgR2VuZXJhbCwgLi4ucmVzdFxufSA9IFNjcmFwZXJFcnJvclR5cGVzO1xuZXhwb3J0IGNvbnN0IExvZ2luUmVzdWx0cyA9IHtcbiAgLi4ucmVzdCxcbiAgLi4uTG9naW5CYXNlUmVzdWx0cyxcbn07XG5cbmV4cG9ydCB0eXBlIExvZ2luUmVzdWx0cyA9IEV4Y2x1ZGU8U2NyYXBlckVycm9yVHlwZXMsXG5TY3JhcGVyRXJyb3JUeXBlcy5UaW1lb3V0XG58IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWNcbnwgU2NyYXBlckVycm9yVHlwZXMuR2VuZXJhbD4gfCBMb2dpbkJhc2VSZXN1bHRzO1xuXG5leHBvcnQgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyA9IHtcbiAgW2tleSBpbiBMb2dpblJlc3VsdHNdPzogKHN0cmluZyB8IFJlZ0V4cCB8ICgob3B0aW9ucz86IHsgcGFnZT86IFBhZ2V9KSA9PiBQcm9taXNlPGJvb2xlYW4+KSlbXVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBMb2dpbk9wdGlvbnMge1xuICBsb2dpblVybDogc3RyaW5nO1xuICBjaGVja1JlYWRpbmVzcz86ICgpID0+IFByb21pc2U8dm9pZD47XG4gIGZpZWxkczoge3NlbGVjdG9yOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmd9W107XG4gIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiBzdHJpbmcgfCAoKCkgPT4gUHJvbWlzZTx2b2lkPik7XG4gIHByZUFjdGlvbj86ICgpID0+IFByb21pc2U8RnJhbWUgfCB2b2lkPjtcbiAgcG9zdEFjdGlvbj86ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHBvc3NpYmxlUmVzdWx0czogUG9zc2libGVMb2dpblJlc3VsdHM7XG4gIHVzZXJBZ2VudD86IHN0cmluZztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0S2V5QnlWYWx1ZShvYmplY3Q6IFBvc3NpYmxlTG9naW5SZXN1bHRzLCB2YWx1ZTogc3RyaW5nLCBwYWdlOiBQYWdlKTogUHJvbWlzZTxMb2dpblJlc3VsdHM+IHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgY29uZGl0aW9ucyA9IG9iamVjdFtrZXldO1xuXG4gICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgY29uZGl0aW9ucykge1xuICAgICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xuXG4gICAgICBpZiAoY29uZGl0aW9uIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgIHJlc3VsdCA9IGNvbmRpdGlvbi50ZXN0KHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbmRpdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXN1bHQgPSBhd2FpdCBjb25kaXRpb24oeyBwYWdlLCB2YWx1ZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09IGNvbmRpdGlvbi50b0xvd2VyQ2FzZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoTG9naW5SZXN1bHRzLlVua25vd25FcnJvcik7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUxvZ2luUmVzdWx0KHNjcmFwZXI6IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlckNyZWRlbnRpYWxzPiwgbG9naW5SZXN1bHQ6IExvZ2luUmVzdWx0cykge1xuICBzd2l0Y2ggKGxvZ2luUmVzdWx0KSB7XG4gICAgY2FzZSBMb2dpblJlc3VsdHMuU3VjY2VzczpcbiAgICAgIHNjcmFwZXIuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2luU3VjY2Vzcyk7XG4gICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlIH07XG4gICAgY2FzZSBMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkOlxuICAgIGNhc2UgTG9naW5SZXN1bHRzLlVua25vd25FcnJvcjpcbiAgICAgIHNjcmFwZXIuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IGxvZ2luUmVzdWx0ID09PSBMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkID8gU2NyYXBlckVycm9yVHlwZXMuSW52YWxpZFBhc3N3b3JkIDpcbiAgICAgICAgICBTY3JhcGVyRXJyb3JUeXBlcy5HZW5lcmFsLFxuICAgICAgICBlcnJvck1lc3NhZ2U6IGBMb2dpbiBmYWlsZWQgd2l0aCAke2xvZ2luUmVzdWx0fSBlcnJvcmAsXG4gICAgICB9O1xuICAgIGNhc2UgTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkOlxuICAgICAgc2NyYXBlci5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuQ2hhbmdlUGFzc3dvcmQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuQ2hhbmdlUGFzc3dvcmQsXG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgbG9naW4gcmVzdWx0IFwiJHtsb2dpblJlc3VsdH1cImApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUdlbmVyYWxFcnJvcigpOiBTY3JhcGVyU2NyYXBpbmdSZXN1bHQge1xuICByZXR1cm4ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuR2VuZXJhbCxcbiAgfTtcbn1cblxuY2xhc3MgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxUQ3JlZGVudGlhbHMgZXh0ZW5kcyBTY3JhcGVyQ3JlZGVudGlhbHM+IGV4dGVuZHMgQmFzZVNjcmFwZXI8VENyZWRlbnRpYWxzPiB7XG4gIC8vIE5PVElDRSAtIGl0IGlzIGRpc2NvdXJhZ2UgdG8gdXNlIGJhbmcgKCEpIGluIGdlbmVyYWwuIEl0IGlzIHVzZWQgaGVyZSBiZWNhdXNlXG4gIC8vIGFsbCB0aGUgY2xhc3NlcyB0aGF0IGluaGVyaXQgZnJvbSB0aGlzIGJhc2UgYXNzdW1lIGlzIGl0IG1hbmRhdG9yeS5cbiAgcHJvdGVjdGVkIGJyb3dzZXIhOiBCcm93c2VyO1xuXG4gIC8vIE5PVElDRSAtIGl0IGlzIGRpc2NvdXJhZ2UgdG8gdXNlIGJhbmcgKCEpIGluIGdlbmVyYWwuIEl0IGlzIHVzZWQgaGVyZSBiZWNhdXNlXG4gIC8vIGFsbCB0aGUgY2xhc3NlcyB0aGF0IGluaGVyaXQgZnJvbSB0aGlzIGJhc2UgYXNzdW1lIGlzIGl0IG1hbmRhdG9yeS5cbiAgcHJvdGVjdGVkIHBhZ2UhOiBQYWdlO1xuXG4gIHByb3RlY3RlZCBnZXRWaWV3UG9ydCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IFZJRVdQT1JUX1dJRFRILFxuICAgICAgaGVpZ2h0OiBWSUVXUE9SVF9IRUlHSFQsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGluaXRpYWxpemUoKSB7XG4gICAgYXdhaXQgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgIGRlYnVnKCdpbml0aWFsaXplIHNjcmFwZXInKTtcbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5Jbml0aWFsaXppbmcpO1xuXG4gICAgbGV0IGVudjogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgIGVudiA9IHsgREVCVUc6ICcqJywgLi4ucHJvY2Vzcy5lbnYgfTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5icm93c2VyICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm9wdGlvbnMuYnJvd3NlciAhPT0gbnVsbCkge1xuICAgICAgZGVidWcoJ3VzZSBjdXN0b20gYnJvd3NlciBpbnN0YW5jZSBwcm92aWRlZCBpbiBvcHRpb25zJyk7XG4gICAgICB0aGlzLmJyb3dzZXIgPSB0aGlzLm9wdGlvbnMuYnJvd3NlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXhlY3V0YWJsZVBhdGggPSB0aGlzLm9wdGlvbnMuZXhlY3V0YWJsZVBhdGggfHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgYXJncyA9IHRoaXMub3B0aW9ucy5hcmdzIHx8IFtdO1xuICAgICAgY29uc3QgeyB0aW1lb3V0IH0gPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgIGNvbnN0IGhlYWRsZXNzID0gIXRoaXMub3B0aW9ucy5zaG93QnJvd3NlcjtcbiAgICAgIGRlYnVnKGBsYXVuY2ggYSBicm93c2VyIHdpdGggaGVhZGxlc3MgbW9kZSA9ICR7aGVhZGxlc3N9YCk7XG4gICAgICB0aGlzLmJyb3dzZXIgPSBhd2FpdCBwdXBwZXRlZXIubGF1bmNoKHtcbiAgICAgICAgZW52LFxuICAgICAgICBoZWFkbGVzcyxcbiAgICAgICAgZXhlY3V0YWJsZVBhdGgsXG4gICAgICAgIGFyZ3MsXG4gICAgICAgIHRpbWVvdXQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnByZXBhcmVCcm93c2VyKSB7XG4gICAgICBkZWJ1ZygnZXhlY3V0ZSBcXCdwcmVwYXJlQnJvd3NlclxcJyBpbnRlcmNlcHRvciBwcm92aWRlZCBpbiBvcHRpb25zJyk7XG4gICAgICBhd2FpdCB0aGlzLm9wdGlvbnMucHJlcGFyZUJyb3dzZXIodGhpcy5icm93c2VyKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYnJvd3Nlcikge1xuICAgICAgZGVidWcoJ2ZhaWxlZCB0byBpbml0aWF0ZSBhIGJyb3dzZXIsIGV4aXQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYWdlcyA9IGF3YWl0IHRoaXMuYnJvd3Nlci5wYWdlcygpO1xuICAgIGlmIChwYWdlcy5sZW5ndGgpIHtcbiAgICAgIGRlYnVnKCdicm93c2VyIGhhcyBhbHJlYWR5IHBhZ2VzIG9wZW4sIHVzZSB0aGUgZmlyc3Qgb25lJyk7XG4gICAgICBbdGhpcy5wYWdlXSA9IHBhZ2VzO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWJ1ZygnY3JlYXRlIGEgbmV3IGJyb3dzZXIgcGFnZScpO1xuICAgICAgdGhpcy5wYWdlID0gYXdhaXQgdGhpcy5icm93c2VyLm5ld1BhZ2UoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmRlZmF1bHRUaW1lb3V0KSB7XG4gICAgICB0aGlzLnBhZ2Uuc2V0RGVmYXVsdFRpbWVvdXQodGhpcy5vcHRpb25zLmRlZmF1bHRUaW1lb3V0KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnByZXBhcmVQYWdlKSB7XG4gICAgICBkZWJ1ZygnZXhlY3V0ZSBcXCdwcmVwYXJlUGFnZVxcJyBpbnRlcmNlcHRvciBwcm92aWRlZCBpbiBvcHRpb25zJyk7XG4gICAgICBhd2FpdCB0aGlzLm9wdGlvbnMucHJlcGFyZVBhZ2UodGhpcy5wYWdlKTtcbiAgICB9XG5cbiAgICBjb25zdCB2aWV3cG9ydCA9IHRoaXMuZ2V0Vmlld1BvcnQoKTtcbiAgICBkZWJ1Zyhgc2V0IHZpZXdwb3J0IHRvIHdpZHRoICR7dmlld3BvcnQud2lkdGh9LCBoZWlnaHQgJHt2aWV3cG9ydC5oZWlnaHR9YCk7XG4gICAgYXdhaXQgdGhpcy5wYWdlLnNldFZpZXdwb3J0KHtcbiAgICAgIHdpZHRoOiB2aWV3cG9ydC53aWR0aCxcbiAgICAgIGhlaWdodDogdmlld3BvcnQuaGVpZ2h0LFxuICAgIH0pO1xuXG4gICAgdGhpcy5wYWdlLm9uKCdyZXF1ZXN0ZmFpbGVkJywgKHJlcXVlc3QpID0+IHtcbiAgICAgIGRlYnVnKCdSZXF1ZXN0IGZhaWxlZDogJXMgJXMnLCByZXF1ZXN0LmZhaWx1cmUoKT8uZXJyb3JUZXh0LCByZXF1ZXN0LnVybCgpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG5hdmlnYXRlVG8odXJsOiBzdHJpbmcsIHBhZ2U/OiBQYWdlLCB0aW1lb3V0PzogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGFnZVRvVXNlID0gcGFnZSB8fCB0aGlzLnBhZ2U7XG5cbiAgICBpZiAoIXBhZ2VUb1VzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IC4uLih0aW1lb3V0ID09PSBudWxsID8gbnVsbCA6IHsgdGltZW91dCB9KSB9O1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcGFnZVRvVXNlLmdvdG8odXJsLCBvcHRpb25zKTtcblxuICAgIC8vIG5vdGU6IHJlc3BvbnNlIHdpbGwgYmUgbnVsbCB3aGVuIG5hdmlnYXRpbmcgdG8gc2FtZSB1cmwgd2hpbGUgY2hhbmdpbmcgdGhlIGhhc2ggcGFydC4gdGhlIGNvbmRpdGlvbiBiZWxvdyB3aWxsIGFsd2F5cyBhY2NlcHQgbnVsbCBhcyB2YWxpZCByZXN1bHQuXG4gICAgaWYgKHJlc3BvbnNlICE9PSBudWxsICYmIChyZXNwb25zZSA9PT0gdW5kZWZpbmVkIHx8IHJlc3BvbnNlLnN0YXR1cygpICE9PSBPS19TVEFUVVMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHdoaWxlIHRyeWluZyB0byBuYXZpZ2F0ZSB0byB1cmwgJHt1cmx9YCk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBnZXRMb2dpbk9wdGlvbnMoX2NyZWRlbnRpYWxzOiBTY3JhcGVyQ3JlZGVudGlhbHMpOiBMb2dpbk9wdGlvbnMge1xuICAgIHRocm93IG5ldyBFcnJvcihgZ2V0TG9naW5PcHRpb25zKCkgaXMgbm90IGNyZWF0ZWQgaW4gJHt0aGlzLm9wdGlvbnMuY29tcGFueUlkfWApO1xuICB9XG5cbiAgYXN5bmMgZmlsbElucHV0cyhwYWdlT3JGcmFtZTogUGFnZSB8IEZyYW1lLCBmaWVsZHM6IHsgc2VsZWN0b3I6IHN0cmluZywgdmFsdWU6IHN0cmluZ31bXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG1vZGlmaWVkID0gWy4uLmZpZWxkc107XG4gICAgY29uc3QgaW5wdXQgPSBtb2RpZmllZC5zaGlmdCgpO1xuXG4gICAgaWYgKCFpbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCBmaWxsSW5wdXQocGFnZU9yRnJhbWUsIGlucHV0LnNlbGVjdG9yLCBpbnB1dC52YWx1ZSk7XG4gICAgaWYgKG1vZGlmaWVkLmxlbmd0aCkge1xuICAgICAgYXdhaXQgdGhpcy5maWxsSW5wdXRzKHBhZ2VPckZyYW1lLCBtb2RpZmllZCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9naW4oY3JlZGVudGlhbHM6IFNjcmFwZXJDcmVkZW50aWFscyk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgaWYgKCFjcmVkZW50aWFscyB8fCAhdGhpcy5wYWdlKSB7XG4gICAgICByZXR1cm4gY3JlYXRlR2VuZXJhbEVycm9yKCk7XG4gICAgfVxuXG4gICAgZGVidWcoJ2V4ZWN1dGUgbG9naW4gcHJvY2VzcycpO1xuICAgIGNvbnN0IGxvZ2luT3B0aW9ucyA9IHRoaXMuZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzKTtcblxuICAgIGlmIChsb2dpbk9wdGlvbnMudXNlckFnZW50KSB7XG4gICAgICBkZWJ1Zygnc2V0IGN1c3RvbSB1c2VyIGFnZW50IHByb3ZpZGVkIGluIG9wdGlvbnMnKTtcbiAgICAgIGF3YWl0IHRoaXMucGFnZS5zZXRVc2VyQWdlbnQobG9naW5PcHRpb25zLnVzZXJBZ2VudCk7XG4gICAgfVxuXG4gICAgZGVidWcoJ25hdmlnYXRlIHRvIGxvZ2luIHVybCcpO1xuICAgIGF3YWl0IHRoaXMubmF2aWdhdGVUbyhsb2dpbk9wdGlvbnMubG9naW5VcmwpO1xuICAgIGlmIChsb2dpbk9wdGlvbnMuY2hlY2tSZWFkaW5lc3MpIHtcbiAgICAgIGRlYnVnKCdleGVjdXRlIFxcJ2NoZWNrUmVhZGluZXNzXFwnIGludGVyY2VwdG9yIHByb3ZpZGVkIGluIGxvZ2luIG9wdGlvbnMnKTtcbiAgICAgIGF3YWl0IGxvZ2luT3B0aW9ucy5jaGVja1JlYWRpbmVzcygpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGxvZ2luT3B0aW9ucy5zdWJtaXRCdXR0b25TZWxlY3RvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRlYnVnKCd3YWl0IHVudGlsIHN1Ym1pdCBidXR0b24gaXMgYXZhaWxhYmxlJyk7XG4gICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCBsb2dpbk9wdGlvbnMuc3VibWl0QnV0dG9uU2VsZWN0b3IpO1xuICAgIH1cblxuICAgIGxldCBsb2dpbkZyYW1lT3JQYWdlOiAoUGFnZSB8IEZyYW1lIHwgbnVsbCkgPSB0aGlzLnBhZ2U7XG4gICAgaWYgKGxvZ2luT3B0aW9ucy5wcmVBY3Rpb24pIHtcbiAgICAgIGRlYnVnKCdleGVjdXRlIFxcJ3ByZUFjdGlvblxcJyBpbnRlcmNlcHRvciBwcm92aWRlZCBpbiBsb2dpbiBvcHRpb25zJyk7XG4gICAgICBsb2dpbkZyYW1lT3JQYWdlID0gYXdhaXQgbG9naW5PcHRpb25zLnByZUFjdGlvbigpIHx8IHRoaXMucGFnZTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnZmlsbCBsb2dpbiBjb21wb25lbnRzIGlucHV0IHdpdGggcmVsZXZhbnQgdmFsdWVzJyk7XG4gICAgYXdhaXQgdGhpcy5maWxsSW5wdXRzKGxvZ2luRnJhbWVPclBhZ2UsIGxvZ2luT3B0aW9ucy5maWVsZHMpO1xuICAgIGRlYnVnKCdjbGljayBvbiBsb2dpbiBzdWJtaXQgYnV0dG9uJyk7XG4gICAgaWYgKHR5cGVvZiBsb2dpbk9wdGlvbnMuc3VibWl0QnV0dG9uU2VsZWN0b3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICBhd2FpdCBjbGlja0J1dHRvbihsb2dpbkZyYW1lT3JQYWdlLCBsb2dpbk9wdGlvbnMuc3VibWl0QnV0dG9uU2VsZWN0b3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBsb2dpbk9wdGlvbnMuc3VibWl0QnV0dG9uU2VsZWN0b3IoKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9nZ2luZ0luKTtcblxuICAgIGlmIChsb2dpbk9wdGlvbnMucG9zdEFjdGlvbikge1xuICAgICAgZGVidWcoJ2V4ZWN1dGUgXFwncG9zdEFjdGlvblxcJyBpbnRlcmNlcHRvciBwcm92aWRlZCBpbiBsb2dpbiBvcHRpb25zJyk7XG4gICAgICBhd2FpdCBsb2dpbk9wdGlvbnMucG9zdEFjdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWJ1Zygnd2FpdCBmb3IgcGFnZSBuYXZpZ2F0aW9uJyk7XG4gICAgICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbih0aGlzLnBhZ2UpO1xuICAgIH1cblxuICAgIGRlYnVnKCdjaGVjayBsb2dpbiByZXN1bHQnKTtcbiAgICBjb25zdCBjdXJyZW50ID0gYXdhaXQgZ2V0Q3VycmVudFVybCh0aGlzLnBhZ2UsIHRydWUpO1xuICAgIGNvbnN0IGxvZ2luUmVzdWx0ID0gYXdhaXQgZ2V0S2V5QnlWYWx1ZShsb2dpbk9wdGlvbnMucG9zc2libGVSZXN1bHRzLCBjdXJyZW50LCB0aGlzLnBhZ2UpO1xuICAgIGRlYnVnKGBoYW5kbGUgbG9naW4gcmVzdWx0cyAke2xvZ2luUmVzdWx0fWApO1xuICAgIHJldHVybiBoYW5kbGVMb2dpblJlc3VsdCh0aGlzLCBsb2dpblJlc3VsdCk7XG4gIH1cblxuICBhc3luYyB0ZXJtaW5hdGUoX3N1Y2Nlc3M6IGJvb2xlYW4pIHtcbiAgICBkZWJ1ZyhgdGVybWluYXRpbmcgYnJvd3NlciB3aXRoIHN1Y2Nlc3MgPSAke19zdWNjZXNzfWApO1xuICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLlRlcm1pbmF0aW5nKTtcblxuICAgIGlmICghX3N1Y2Nlc3MgJiYgISF0aGlzLm9wdGlvbnMuc3RvcmVGYWlsdXJlU2NyZWVuU2hvdFBhdGgpIHtcbiAgICAgIGRlYnVnKGBjcmVhdGUgYSBzbmFwc2hvdCBiZWZvcmUgdGVybWluYXRlZCBpbiAke3RoaXMub3B0aW9ucy5zdG9yZUZhaWx1cmVTY3JlZW5TaG90UGF0aH1gKTtcbiAgICAgIGF3YWl0IHRoaXMucGFnZS5zY3JlZW5zaG90KHtcbiAgICAgICAgcGF0aDogdGhpcy5vcHRpb25zLnN0b3JlRmFpbHVyZVNjcmVlblNob3RQYXRoLFxuICAgICAgICBmdWxsUGFnZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5icm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5icm93c2VyLmNsb3NlKCk7XG4gIH1cbn1cblxuZXhwb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciB9O1xuIl19
335
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyLnRzIl0sIm5hbWVzIjpbIlZJRVdQT1JUX1dJRFRIIiwiVklFV1BPUlRfSEVJR0hUIiwiT0tfU1RBVFVTIiwiZGVidWciLCJMb2dpbkJhc2VSZXN1bHRzIiwiVGltZW91dCIsIkdlbmVyaWMiLCJHZW5lcmFsIiwiU2NyYXBlckVycm9yVHlwZXMiLCJyZXN0IiwiTG9naW5SZXN1bHRzIiwiZ2V0S2V5QnlWYWx1ZSIsIm9iamVjdCIsInZhbHVlIiwicGFnZSIsImtleXMiLCJPYmplY3QiLCJrZXkiLCJjb25kaXRpb25zIiwiY29uZGl0aW9uIiwicmVzdWx0IiwiUmVnRXhwIiwidGVzdCIsInRvTG93ZXJDYXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJVbmtub3duRXJyb3IiLCJjcmVhdGVHZW5lcmFsRXJyb3IiLCJzdWNjZXNzIiwiZXJyb3JUeXBlIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsIkJhc2VTY3JhcGVyIiwiZ2V0Vmlld1BvcnQiLCJ3aWR0aCIsImhlaWdodCIsImluaXRpYWxpemUiLCJlbWl0UHJvZ3Jlc3MiLCJTY3JhcGVyUHJvZ3Jlc3NUeXBlcyIsIkluaXRpYWxpemluZyIsImVudiIsIm9wdGlvbnMiLCJ2ZXJib3NlIiwiREVCVUciLCJwcm9jZXNzIiwiYnJvd3NlciIsImV4ZWN1dGFibGVQYXRoIiwidW5kZWZpbmVkIiwiYXJncyIsInRpbWVvdXQiLCJoZWFkbGVzcyIsInNob3dCcm93c2VyIiwicHVwcGV0ZWVyIiwibGF1bmNoIiwicHJlcGFyZUJyb3dzZXIiLCJwYWdlcyIsImxlbmd0aCIsIm5ld1BhZ2UiLCJkZWZhdWx0VGltZW91dCIsInNldERlZmF1bHRUaW1lb3V0IiwicHJlcGFyZVBhZ2UiLCJ2aWV3cG9ydCIsInNldFZpZXdwb3J0Iiwib24iLCJyZXF1ZXN0IiwiZmFpbHVyZSIsImVycm9yVGV4dCIsInVybCIsIm5hdmlnYXRlVG8iLCJwYWdlVG9Vc2UiLCJyZXNwb25zZSIsImdvdG8iLCJzdGF0dXMiLCJFcnJvciIsImdldExvZ2luT3B0aW9ucyIsIl9jcmVkZW50aWFscyIsImNvbXBhbnlJZCIsImZpbGxJbnB1dHMiLCJwYWdlT3JGcmFtZSIsImZpZWxkcyIsIm1vZGlmaWVkIiwiaW5wdXQiLCJzaGlmdCIsInNlbGVjdG9yIiwibG9naW4iLCJjcmVkZW50aWFscyIsImxvZ2luT3B0aW9ucyIsInVzZXJBZ2VudCIsInNldFVzZXJBZ2VudCIsImxvZ2luVXJsIiwiY2hlY2tSZWFkaW5lc3MiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsImxvZ2luRnJhbWVPclBhZ2UiLCJwcmVBY3Rpb24iLCJMb2dnaW5nSW4iLCJwb3N0QWN0aW9uIiwiY3VycmVudCIsImxvZ2luUmVzdWx0IiwicG9zc2libGVSZXN1bHRzIiwiaGFuZGxlTG9naW5SZXN1bHQiLCJ0ZXJtaW5hdGUiLCJfc3VjY2VzcyIsIlRlcm1pbmF0aW5nIiwic3RvcmVGYWlsdXJlU2NyZWVuU2hvdFBhdGgiLCJzY3JlZW5zaG90IiwicGF0aCIsImZ1bGxQYWdlIiwiY2xvc2UiLCJTdWNjZXNzIiwiTG9naW5TdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiTG9naW5GYWlsZWQiLCJlcnJvck1lc3NhZ2UiLCJDaGFuZ2VQYXNzd29yZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFJQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUFFQSxNQUFNQSxjQUFjLEdBQUcsSUFBdkI7QUFDQSxNQUFNQyxlQUFlLEdBQUcsR0FBeEI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsR0FBbEI7QUFFQSxNQUFNQyxLQUFLLEdBQUcscUJBQVMsMkJBQVQsQ0FBZDtJQUVLQyxnQjs7V0FBQUEsZ0I7QUFBQUEsRUFBQUEsZ0I7QUFBQUEsRUFBQUEsZ0I7R0FBQUEsZ0IsS0FBQUEsZ0I7O0FBS0wsTUFBTTtBQUNKQyxFQUFBQSxPQURJO0FBQ0tDLEVBQUFBLE9BREw7QUFDY0Ms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QUFFT1IsRUFBQUEsaUJBQVIsQ0FBMEJGLFdBQTFCLEVBQXFEO0FBQ25ELFlBQVFBLFdBQVI7QUFDRSxXQUFLdEYsWUFBWSxDQUFDaUcsT0FBbEI7QUFDRSxhQUFLdkUsWUFBTCxDQUFrQkMsa0NBQXFCdUUsWUFBdkM7QUFDQSxlQUFPO0FBQUVoRixVQUFBQSxPQUFPLEVBQUU7QUFBWCxTQUFQOztBQUNGLFdBQUtsQixZQUFZLENBQUNtRyxlQUFsQjtBQUNBLFdBQUtuRyxZQUFZLENBQUNnQixZQUFsQjtBQUNFLGFBQUtVLFlBQUwsQ0FBa0JDLGtDQUFxQnlFLFdBQXZDO0FBQ0EsZUFBTztBQUNMbEYsVUFBQUEsT0FBTyxFQUFFLEtBREo7QUFFTEMsVUFBQUEsU0FBUyxFQUFFbUUsV0FBVyxLQUFLdEYsWUFBWSxDQUFDbUcsZUFBN0IsR0FBK0NyRywwQkFBa0JxRyxlQUFqRSxHQUNUckcsMEJBQWtCRCxPQUhmO0FBSUx3RyxVQUFBQSxZQUFZLEVBQUcscUJBQW9CZixXQUFZO0FBSjFDLFNBQVA7O0FBTUYsV0FBS3RGLFlBQVksQ0FBQ3NHLGNBQWxCO0FBQ0UsYUFBSzVFLFlBQUwsQ0FBa0JDLGtDQUFxQjJFLGNBQXZDO0FBQ0EsZUFBTztBQUNMcEYsVUFBQUEsT0FBTyxFQUFFLEtBREo7QUFFTEMsVUFBQUEsU0FBUyxFQUFFckIsMEJBQWtCd0c7QUFGeEIsU0FBUDs7QUFJRjtBQUNFLGNBQU0sSUFBSXhDLEtBQUosQ0FBVyw0QkFBMkJ3QixXQUFZLEdBQWxELENBQU47QUFwQko7QUFzQkQ7O0FBdk5xRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwdXBwZXRlZXIsIHsgQnJvd3NlciwgRnJhbWUsIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuXG5pbXBvcnQge1xuICBCYXNlU2NyYXBlcixcblxufSBmcm9tICcuL2Jhc2Utc2NyYXBlcic7XG5pbXBvcnQgeyBnZXRDdXJyZW50VXJsLCB3YWl0Rm9yTmF2aWdhdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBjbGlja0J1dHRvbiwgZmlsbElucHV0LCB3YWl0VW50aWxFbGVtZW50Rm91bmQgfSBmcm9tICcuLi9oZWxwZXJzL2VsZW1lbnRzLWludGVyYWN0aW9ucyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgU2NyYXBlckVycm9yVHlwZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyBTY3JhcGVyU2NyYXBpbmdSZXN1bHQsIFNjcmFwZXJDcmVkZW50aWFscyB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IFNjcmFwZXJQcm9ncmVzc1R5cGVzIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuXG5jb25zdCBWSUVXUE9SVF9XSURUSCA9IDEwMjQ7XG5jb25zdCBWSUVXUE9SVF9IRUlHSFQgPSA3Njg7XG5jb25zdCBPS19TVEFUVVMgPSAyMDA7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInKTtcblxuZW51bSBMb2dpbkJhc2VSZXN1bHRzIHtcbiAgU3VjY2VzcyA9ICdTVUNDRVNTJyxcbiAgVW5rbm93bkVycm9yID0gJ1VOS05PV05fRVJST1InXG59XG5cbmNvbnN0IHtcbiAgVGltZW91dCwgR2VuZXJpYywgR2VuZXJhbCwgLi4ucmVzdFxufSA9IFNjcmFwZXJFcnJvclR5cGVzO1xuZXhwb3J0IGNvbnN0IExvZ2luUmVzdWx0cyA9IHtcbiAgLi4ucmVzdCxcbiAgLi4uTG9naW5CYXNlUmVzdWx0cyxcbn07XG5cbmV4cG9ydCB0eXBlIExvZ2luUmVzdWx0cyA9IEV4Y2x1ZGU8U2NyYXBlckVycm9yVHlwZXMsXG5TY3JhcGVyRXJyb3JUeXBlcy5UaW1lb3V0XG58IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWNcbnwgU2NyYXBlckVycm9yVHlwZXMuR2VuZXJhbD4gfCBMb2dpbkJhc2VSZXN1bHRzO1xuXG5leHBvcnQgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyA9IHtcbiAgW2tleSBpbiBMb2dpblJlc3VsdHNdPzogKHN0cmluZyB8IFJlZ0V4cCB8ICgob3B0aW9ucz86IHsgcGFnZT86IFBhZ2V9KSA9PiBQcm9taXNlPGJvb2xlYW4+KSlbXVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBMb2dpbk9wdGlvbnMge1xuICBsb2dpblVybDogc3RyaW5nO1xuICBjaGVja1JlYWRpbmVzcz86ICgpID0+IFByb21pc2U8dm9pZD47XG4gIGZpZWxkczoge3NlbGVjdG9yOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmd9W107XG4gIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiBzdHJpbmcgfCAoKCkgPT4gUHJvbWlzZTx2b2lkPik7XG4gIHByZUFjdGlvbj86ICgpID0+IFByb21pc2U8RnJhbWUgfCB2b2lkPjtcbiAgcG9zdEFjdGlvbj86ICgpID0+IFByb21pc2U8dm9pZD47XG4gIHBvc3NpYmxlUmVzdWx0czogUG9zc2libGVMb2dpblJlc3VsdHM7XG4gIHVzZXJBZ2VudD86IHN0cmluZztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0S2V5QnlWYWx1ZShvYmplY3Q6IFBvc3NpYmxlTG9naW5SZXN1bHRzLCB2YWx1ZTogc3RyaW5nLCBwYWdlOiBQYWdlKTogUHJvbWlzZTxMb2dpblJlc3VsdHM+IHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgY29uZGl0aW9ucyA9IG9iamVjdFtrZXldO1xuXG4gICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgY29uZGl0aW9ucykge1xuICAgICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xuXG4gICAgICBpZiAoY29uZGl0aW9uIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgIHJlc3VsdCA9IGNvbmRpdGlvbi50ZXN0KHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbmRpdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXN1bHQgPSBhd2FpdCBjb25kaXRpb24oeyBwYWdlLCB2YWx1ZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09IGNvbmRpdGlvbi50b0xvd2VyQ2FzZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoTG9naW5SZXN1bHRzLlVua25vd25FcnJvcik7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUdlbmVyYWxFcnJvcigpOiBTY3JhcGVyU2NyYXBpbmdSZXN1bHQge1xuICByZXR1cm4ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuR2VuZXJhbCxcbiAgfTtcbn1cblxuY2xhc3MgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxUQ3JlZGVudGlhbHMgZXh0ZW5kcyBTY3JhcGVyQ3JlZGVudGlhbHM+IGV4dGVuZHMgQmFzZVNjcmFwZXI8VENyZWRlbnRpYWxzPiB7XG4gIC8vIE5PVElDRSAtIGl0IGlzIGRpc2NvdXJhZ2VkIHRvIHVzZSBiYW5nICghKSBpbiBnZW5lcmFsLiBJdCBpcyB1c2VkIGhlcmUgYmVjYXVzZVxuICAvLyBhbGwgdGhlIGNsYXNzZXMgdGhhdCBpbmhlcml0IGZyb20gdGhpcyBiYXNlIGFzc3VtZSBpcyBpdCBtYW5kYXRvcnkuXG4gIHByb3RlY3RlZCBicm93c2VyITogQnJvd3NlcjtcblxuICAvLyBOT1RJQ0UgLSBpdCBpcyBkaXNjb3VyYWdlZCB0byB1c2UgYmFuZyAoISkgaW4gZ2VuZXJhbC4gSXQgaXMgdXNlZCBoZXJlIGJlY2F1c2VcbiAgLy8gYWxsIHRoZSBjbGFzc2VzIHRoYXQgaW5oZXJpdCBmcm9tIHRoaXMgYmFzZSBhc3N1bWUgaXMgaXQgbWFuZGF0b3J5LlxuICBwcm90ZWN0ZWQgcGFnZSE6IFBhZ2U7XG5cbiAgcHJvdGVjdGVkIGdldFZpZXdQb3J0KCkge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogVklFV1BPUlRfV0lEVEgsXG4gICAgICBoZWlnaHQ6IFZJRVdQT1JUX0hFSUdIVCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgaW5pdGlhbGl6ZSgpIHtcbiAgICBhd2FpdCBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgZGVidWcoJ2luaXRpYWxpemUgc2NyYXBlcicpO1xuICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkluaXRpYWxpemluZyk7XG5cbiAgICBsZXQgZW52OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgZW52ID0geyBERUJVRzogJyonLCAuLi5wcm9jZXNzLmVudiB9O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLmJyb3dzZXIgIT09ICd1bmRlZmluZWQnICYmIHRoaXMub3B0aW9ucy5icm93c2VyICE9PSBudWxsKSB7XG4gICAgICBkZWJ1ZygndXNlIGN1c3RvbSBicm93c2VyIGluc3RhbmNlIHByb3ZpZGVkIGluIG9wdGlvbnMnKTtcbiAgICAgIHRoaXMuYnJvd3NlciA9IHRoaXMub3B0aW9ucy5icm93c2VyO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBleGVjdXRhYmxlUGF0aCA9IHRoaXMub3B0aW9ucy5leGVjdXRhYmxlUGF0aCB8fCB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBhcmdzID0gdGhpcy5vcHRpb25zLmFyZ3MgfHwgW107XG4gICAgICBjb25zdCB7IHRpbWVvdXQgfSA9IHRoaXMub3B0aW9ucztcblxuICAgICAgY29uc3QgaGVhZGxlc3MgPSAhdGhpcy5vcHRpb25zLnNob3dCcm93c2VyO1xuICAgICAgZGVidWcoYGxhdW5jaCBhIGJyb3dzZXIgd2l0aCBoZWFkbGVzcyBtb2RlID0gJHtoZWFkbGVzc31gKTtcbiAgICAgIHRoaXMuYnJvd3NlciA9IGF3YWl0IHB1cHBldGVlci5sYXVuY2goe1xuICAgICAgICBlbnYsXG4gICAgICAgIGhlYWRsZXNzLFxuICAgICAgICBleGVjdXRhYmxlUGF0aCxcbiAgICAgICAgYXJncyxcbiAgICAgICAgdGltZW91dCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucHJlcGFyZUJyb3dzZXIpIHtcbiAgICAgIGRlYnVnKCdleGVjdXRlIFxcJ3ByZXBhcmVCcm93c2VyXFwnIGludGVyY2VwdG9yIHByb3ZpZGVkIGluIG9wdGlvbnMnKTtcbiAgICAgIGF3YWl0IHRoaXMub3B0aW9ucy5wcmVwYXJlQnJvd3Nlcih0aGlzLmJyb3dzZXIpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5icm93c2VyKSB7XG4gICAgICBkZWJ1ZygnZmFpbGVkIHRvIGluaXRpYXRlIGEgYnJvd3NlciwgZXhpdCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhZ2VzID0gYXdhaXQgdGhpcy5icm93c2VyLnBhZ2VzKCk7XG4gICAgaWYgKHBhZ2VzLmxlbmd0aCkge1xuICAgICAgZGVidWcoJ2Jyb3dzZXIgaGFzIGFscmVhZHkgcGFnZXMgb3BlbiwgdXNlIHRoZSBmaXJzdCBvbmUnKTtcbiAgICAgIFt0aGlzLnBhZ2VdID0gcGFnZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnKCdjcmVhdGUgYSBuZXcgYnJvd3NlciBwYWdlJyk7XG4gICAgICB0aGlzLnBhZ2UgPSBhd2FpdCB0aGlzLmJyb3dzZXIubmV3UGFnZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGVmYXVsdFRpbWVvdXQpIHtcbiAgICAgIHRoaXMucGFnZS5zZXREZWZhdWx0VGltZW91dCh0aGlzLm9wdGlvbnMuZGVmYXVsdFRpbWVvdXQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMucHJlcGFyZVBhZ2UpIHtcbiAgICAgIGRlYnVnKCdleGVjdXRlIFxcJ3ByZXBhcmVQYWdlXFwnIGludGVyY2VwdG9yIHByb3ZpZGVkIGluIG9wdGlvbnMnKTtcbiAgICAgIGF3YWl0IHRoaXMub3B0aW9ucy5wcmVwYXJlUGFnZSh0aGlzLnBhZ2UpO1xuICAgIH1cblxuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5nZXRWaWV3UG9ydCgpO1xuICAgIGRlYnVnKGBzZXQgdmlld3BvcnQgdG8gd2lkdGggJHt2aWV3cG9ydC53aWR0aH0sIGhlaWdodCAke3ZpZXdwb3J0LmhlaWdodH1gKTtcbiAgICBhd2FpdCB0aGlzLnBhZ2Uuc2V0Vmlld3BvcnQoe1xuICAgICAgd2lkdGg6IHZpZXdwb3J0LndpZHRoLFxuICAgICAgaGVpZ2h0OiB2aWV3cG9ydC5oZWlnaHQsXG4gICAgfSk7XG5cbiAgICB0aGlzLnBhZ2Uub24oJ3JlcXVlc3RmYWlsZWQnLCAocmVxdWVzdCkgPT4ge1xuICAgICAgZGVidWcoJ1JlcXVlc3QgZmFpbGVkOiAlcyAlcycsIHJlcXVlc3QuZmFpbHVyZSgpPy5lcnJvclRleHQsIHJlcXVlc3QudXJsKCkpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbmF2aWdhdGVUbyh1cmw6IHN0cmluZywgcGFnZT86IFBhZ2UsIHRpbWVvdXQ/OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwYWdlVG9Vc2UgPSBwYWdlIHx8IHRoaXMucGFnZTtcblxuICAgIGlmICghcGFnZVRvVXNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgLi4uKHRpbWVvdXQgPT09IG51bGwgPyBudWxsIDogeyB0aW1lb3V0IH0pIH07XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBwYWdlVG9Vc2UuZ290byh1cmwsIG9wdGlvbnMpO1xuXG4gICAgLy8gbm90ZTogcmVzcG9uc2Ugd2lsbCBiZSBudWxsIHdoZW4gbmF2aWdhdGluZyB0byBzYW1lIHVybCB3aGlsZSBjaGFuZ2luZyB0aGUgaGFzaCBwYXJ0LiB0aGUgY29uZGl0aW9uIGJlbG93IHdpbGwgYWx3YXlzIGFjY2VwdCBudWxsIGFzIHZhbGlkIHJlc3VsdC5cbiAgICBpZiAocmVzcG9uc2UgIT09IG51bGwgJiYgKHJlc3BvbnNlID09PSB1bmRlZmluZWQgfHwgcmVzcG9uc2Uuc3RhdHVzKCkgIT09IE9LX1NUQVRVUykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIG5hdmlnYXRlIHRvIHVybCAke3VybH1gKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGdldExvZ2luT3B0aW9ucyhfY3JlZGVudGlhbHM6IFNjcmFwZXJDcmVkZW50aWFscyk6IExvZ2luT3B0aW9ucyB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBnZXRMb2dpbk9wdGlvbnMoKSBpcyBub3QgY3JlYXRlZCBpbiAke3RoaXMub3B0aW9ucy5jb21wYW55SWR9YCk7XG4gIH1cblxuICBhc3luYyBmaWxsSW5wdXRzKHBhZ2VPckZyYW1lOiBQYWdlIHwgRnJhbWUsIGZpZWxkczogeyBzZWxlY3Rvcjogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbW9kaWZpZWQgPSBbLi4uZmllbGRzXTtcbiAgICBjb25zdCBpbnB1dCA9IG1vZGlmaWVkLnNoaWZ0KCk7XG5cbiAgICBpZiAoIWlucHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IGZpbGxJbnB1dChwYWdlT3JGcmFtZSwgaW5wdXQuc2VsZWN0b3IsIGlucHV0LnZhbHVlKTtcbiAgICBpZiAobW9kaWZpZWQubGVuZ3RoKSB7XG4gICAgICBhd2FpdCB0aGlzLmZpbGxJbnB1dHMocGFnZU9yRnJhbWUsIG1vZGlmaWVkKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2dpbihjcmVkZW50aWFsczogU2NyYXBlckNyZWRlbnRpYWxzKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgICBpZiAoIWNyZWRlbnRpYWxzIHx8ICF0aGlzLnBhZ2UpIHtcbiAgICAgIHJldHVybiBjcmVhdGVHZW5lcmFsRXJyb3IoKTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnZXhlY3V0ZSBsb2dpbiBwcm9jZXNzJyk7XG4gICAgY29uc3QgbG9naW5PcHRpb25zID0gdGhpcy5nZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHMpO1xuXG4gICAgaWYgKGxvZ2luT3B0aW9ucy51c2VyQWdlbnQpIHtcbiAgICAgIGRlYnVnKCdzZXQgY3VzdG9tIHVzZXIgYWdlbnQgcHJvdmlkZWQgaW4gb3B0aW9ucycpO1xuICAgICAgYXdhaXQgdGhpcy5wYWdlLnNldFVzZXJBZ2VudChsb2dpbk9wdGlvbnMudXNlckFnZW50KTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnbmF2aWdhdGUgdG8gbG9naW4gdXJsJyk7XG4gICAgYXdhaXQgdGhpcy5uYXZpZ2F0ZVRvKGxvZ2luT3B0aW9ucy5sb2dpblVybCk7XG4gICAgaWYgKGxvZ2luT3B0aW9ucy5jaGVja1JlYWRpbmVzcykge1xuICAgICAgZGVidWcoJ2V4ZWN1dGUgXFwnY2hlY2tSZWFkaW5lc3NcXCcgaW50ZXJjZXB0b3IgcHJvdmlkZWQgaW4gbG9naW4gb3B0aW9ucycpO1xuICAgICAgYXdhaXQgbG9naW5PcHRpb25zLmNoZWNrUmVhZGluZXNzKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbG9naW5PcHRpb25zLnN1Ym1pdEJ1dHRvblNlbGVjdG9yID09PSAnc3RyaW5nJykge1xuICAgICAgZGVidWcoJ3dhaXQgdW50aWwgc3VibWl0IGJ1dHRvbiBpcyBhdmFpbGFibGUnKTtcbiAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsIGxvZ2luT3B0aW9ucy5zdWJtaXRCdXR0b25TZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgbGV0IGxvZ2luRnJhbWVPclBhZ2U6IChQYWdlIHwgRnJhbWUgfCBudWxsKSA9IHRoaXMucGFnZTtcbiAgICBpZiAobG9naW5PcHRpb25zLnByZUFjdGlvbikge1xuICAgICAgZGVidWcoJ2V4ZWN1dGUgXFwncHJlQWN0aW9uXFwnIGludGVyY2VwdG9yIHByb3ZpZGVkIGluIGxvZ2luIG9wdGlvbnMnKTtcbiAgICAgIGxvZ2luRnJhbWVPclBhZ2UgPSBhd2FpdCBsb2dpbk9wdGlvbnMucHJlQWN0aW9uKCkgfHwgdGhpcy5wYWdlO1xuICAgIH1cblxuICAgIGRlYnVnKCdmaWxsIGxvZ2luIGNvbXBvbmVudHMgaW5wdXQgd2l0aCByZWxldmFudCB2YWx1ZXMnKTtcbiAgICBhd2FpdCB0aGlzLmZpbGxJbnB1dHMobG9naW5GcmFtZU9yUGFnZSwgbG9naW5PcHRpb25zLmZpZWxkcyk7XG4gICAgZGVidWcoJ2NsaWNrIG9uIGxvZ2luIHN1Ym1pdCBidXR0b24nKTtcbiAgICBpZiAodHlwZW9mIGxvZ2luT3B0aW9ucy5zdWJtaXRCdXR0b25TZWxlY3RvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKGxvZ2luRnJhbWVPclBhZ2UsIGxvZ2luT3B0aW9ucy5zdWJtaXRCdXR0b25TZWxlY3Rvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGxvZ2luT3B0aW9ucy5zdWJtaXRCdXR0b25TZWxlY3RvcigpO1xuICAgIH1cbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dnaW5nSW4pO1xuXG4gICAgaWYgKGxvZ2luT3B0aW9ucy5wb3N0QWN0aW9uKSB7XG4gICAgICBkZWJ1ZygnZXhlY3V0ZSBcXCdwb3N0QWN0aW9uXFwnIGludGVyY2VwdG9yIHByb3ZpZGVkIGluIGxvZ2luIG9wdGlvbnMnKTtcbiAgICAgIGF3YWl0IGxvZ2luT3B0aW9ucy5wb3N0QWN0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnKCd3YWl0IGZvciBwYWdlIG5hdmlnYXRpb24nKTtcbiAgICAgIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHRoaXMucGFnZSk7XG4gICAgfVxuXG4gICAgZGVidWcoJ2NoZWNrIGxvZ2luIHJlc3VsdCcpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCBnZXRDdXJyZW50VXJsKHRoaXMucGFnZSwgdHJ1ZSk7XG4gICAgY29uc3QgbG9naW5SZXN1bHQgPSBhd2FpdCBnZXRLZXlCeVZhbHVlKGxvZ2luT3B0aW9ucy5wb3NzaWJsZVJlc3VsdHMsIGN1cnJlbnQsIHRoaXMucGFnZSk7XG4gICAgZGVidWcoYGhhbmRsZSBsb2dpbiByZXN1bHRzICR7bG9naW5SZXN1bHR9YCk7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlTG9naW5SZXN1bHQobG9naW5SZXN1bHQpO1xuICB9XG5cbiAgYXN5bmMgdGVybWluYXRlKF9zdWNjZXNzOiBib29sZWFuKSB7XG4gICAgZGVidWcoYHRlcm1pbmF0aW5nIGJyb3dzZXIgd2l0aCBzdWNjZXNzID0gJHtfc3VjY2Vzc31gKTtcbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5UZXJtaW5hdGluZyk7XG5cbiAgICBpZiAoIV9zdWNjZXNzICYmICEhdGhpcy5vcHRpb25zLnN0b3JlRmFpbHVyZVNjcmVlblNob3RQYXRoKSB7XG4gICAgICBkZWJ1ZyhgY3JlYXRlIGEgc25hcHNob3QgYmVmb3JlIHRlcm1pbmF0ZWQgaW4gJHt0aGlzLm9wdGlvbnMuc3RvcmVGYWlsdXJlU2NyZWVuU2hvdFBhdGh9YCk7XG4gICAgICBhd2FpdCB0aGlzLnBhZ2Uuc2NyZWVuc2hvdCh7XG4gICAgICAgIHBhdGg6IHRoaXMub3B0aW9ucy5zdG9yZUZhaWx1cmVTY3JlZW5TaG90UGF0aCxcbiAgICAgICAgZnVsbFBhZ2U6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYnJvd3Nlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuYnJvd3Nlci5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVMb2dpblJlc3VsdChsb2dpblJlc3VsdDogTG9naW5SZXN1bHRzKSB7XG4gICAgc3dpdGNoIChsb2dpblJlc3VsdCkge1xuICAgICAgY2FzZSBMb2dpblJlc3VsdHMuU3VjY2VzczpcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5TdWNjZXNzKTtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgY2FzZSBMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkOlxuICAgICAgY2FzZSBMb2dpblJlc3VsdHMuVW5rbm93bkVycm9yOlxuICAgICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dpbkZhaWxlZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgZXJyb3JUeXBlOiBsb2dpblJlc3VsdCA9PT0gTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZCA/IFNjcmFwZXJFcnJvclR5cGVzLkludmFsaWRQYXNzd29yZCA6XG4gICAgICAgICAgICBTY3JhcGVyRXJyb3JUeXBlcy5HZW5lcmFsLFxuICAgICAgICAgIGVycm9yTWVzc2FnZTogYExvZ2luIGZhaWxlZCB3aXRoICR7bG9naW5SZXN1bHR9IGVycm9yYCxcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkOlxuICAgICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5DaGFuZ2VQYXNzd29yZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5DaGFuZ2VQYXNzd29yZCxcbiAgICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5leHBlY3RlZCBsb2dpbiByZXN1bHQgXCIke2xvZ2luUmVzdWx0fVwiYCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIgfTtcbiJdfQ==
@@ -1,14 +1,5 @@
1
1
  import { Scraper, ScraperCredentials, ScraperGetLongTermTwoFactorTokenResult, ScraperLoginResult, ScraperOptions, ScraperScrapingResult, ScraperTwoFactorAuthTriggerResult } from './interface';
2
- export declare enum ScraperProgressTypes {
3
- Initializing = "INITIALIZING",
4
- StartScraping = "START_SCRAPING",
5
- LoggingIn = "LOGGING_IN",
6
- LoginSuccess = "LOGIN_SUCCESS",
7
- LoginFailed = "LOGIN_FAILED",
8
- ChangePassword = "CHANGE_PASSWORD",
9
- EndScraping = "END_SCRAPING",
10
- Terminating = "TERMINATING"
11
- }
2
+ import { CompanyTypes, ScraperProgressTypes } from '../definitions';
12
3
  export declare class BaseScraper<TCredentials extends ScraperCredentials> implements Scraper<TCredentials> {
13
4
  options: ScraperOptions;
14
5
  private eventEmitter;
@@ -17,10 +8,12 @@ export declare class BaseScraper<TCredentials extends ScraperCredentials> implem
17
8
  scrape(credentials: TCredentials): Promise<ScraperScrapingResult>;
18
9
  triggerTwoFactorAuth(_phoneNumber: string): Promise<ScraperTwoFactorAuthTriggerResult>;
19
10
  getLongTermTwoFactorToken(_otpCode: string): Promise<ScraperGetLongTermTwoFactorTokenResult>;
20
- login(_credentials: TCredentials): Promise<ScraperLoginResult>;
21
- fetchData(): Promise<ScraperScrapingResult>;
22
- terminate(_success: boolean): Promise<void>;
23
- emitProgress(type: ScraperProgressTypes): void;
24
- emit(eventName: string, payload: Record<string, any>): void;
25
- onProgress(func: (...args: any[]) => void): void;
11
+ protected login(_credentials: TCredentials): Promise<ScraperLoginResult>;
12
+ protected fetchData(): Promise<ScraperScrapingResult>;
13
+ protected terminate(_success: boolean): Promise<void>;
14
+ protected emitProgress(type: ScraperProgressTypes): void;
15
+ protected emit(eventName: string, payload: Record<string, any>): void;
16
+ onProgress(func: (companyId: CompanyTypes, payload: {
17
+ type: ScraperProgressTypes;
18
+ }) => void): void;
26
19
  }
@@ -5,7 +5,7 @@ require("core-js/modules/es.promise");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.BaseScraper = exports.ScraperProgressTypes = void 0;
8
+ exports.BaseScraper = void 0;
9
9
 
10
10
  var _events = require("events");
11
11
 
@@ -15,24 +15,13 @@ var _waiting = require("../helpers/waiting");
15
15
 
16
16
  var _errors = require("./errors");
17
17
 
18
+ var _definitions = require("../definitions");
19
+
18
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
21
 
20
22
  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; }
21
23
 
22
24
  const SCRAPE_PROGRESS = 'SCRAPE_PROGRESS';
23
- let ScraperProgressTypes;
24
- exports.ScraperProgressTypes = ScraperProgressTypes;
25
-
26
- (function (ScraperProgressTypes) {
27
- ScraperProgressTypes["Initializing"] = "INITIALIZING";
28
- ScraperProgressTypes["StartScraping"] = "START_SCRAPING";
29
- ScraperProgressTypes["LoggingIn"] = "LOGGING_IN";
30
- ScraperProgressTypes["LoginSuccess"] = "LOGIN_SUCCESS";
31
- ScraperProgressTypes["LoginFailed"] = "LOGIN_FAILED";
32
- ScraperProgressTypes["ChangePassword"] = "CHANGE_PASSWORD";
33
- ScraperProgressTypes["EndScraping"] = "END_SCRAPING";
34
- ScraperProgressTypes["Terminating"] = "TERMINATING";
35
- })(ScraperProgressTypes || (exports.ScraperProgressTypes = ScraperProgressTypes = {}));
36
25
 
37
26
  class BaseScraper {
38
27
  constructor(options) {
@@ -43,13 +32,13 @@ class BaseScraper {
43
32
 
44
33
 
45
34
  async initialize() {
46
- this.emitProgress(ScraperProgressTypes.Initializing);
35
+ this.emitProgress(_definitions.ScraperProgressTypes.Initializing);
47
36
 
48
37
  _momentTimezone.default.tz.setDefault('Asia/Jerusalem');
49
38
  }
50
39
 
51
40
  async scrape(credentials) {
52
- this.emitProgress(ScraperProgressTypes.StartScraping);
41
+ this.emitProgress(_definitions.ScraperProgressTypes.StartScraping);
53
42
  await this.initialize();
54
43
  let loginResult;
55
44
 
@@ -78,7 +67,7 @@ class BaseScraper {
78
67
  scrapeResult = (0, _errors.createGenericError)(e.message);
79
68
  }
80
69
 
81
- this.emitProgress(ScraperProgressTypes.EndScraping);
70
+ this.emitProgress(_definitions.ScraperProgressTypes.EndScraping);
82
71
  return scrapeResult;
83
72
  } // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/require-await
84
73
 
@@ -104,7 +93,7 @@ class BaseScraper {
104
93
 
105
94
 
106
95
  async terminate(_success) {
107
- this.emitProgress(ScraperProgressTypes.Terminating);
96
+ this.emitProgress(_definitions.ScraperProgressTypes.Terminating);
108
97
  }
109
98
 
110
99
  emitProgress(type) {
@@ -124,4 +113,4 @@ class BaseScraper {
124
113
  }
125
114
 
126
115
  exports.BaseScraper = BaseScraper;
127
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLXNjcmFwZXIudHMiXSwibmFtZXMiOlsiU0NSQVBFX1BST0dSRVNTIiwiU2NyYXBlclByb2dyZXNzVHlwZXMiLCJCYXNlU2NyYXBlciIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsIkV2ZW50RW1pdHRlciIsImluaXRpYWxpemUiLCJlbWl0UHJvZ3Jlc3MiLCJJbml0aWFsaXppbmciLCJtb21lbnQiLCJ0eiIsInNldERlZmF1bHQiLCJzY3JhcGUiLCJjcmVkZW50aWFscyIsIlN0YXJ0U2NyYXBpbmciLCJsb2dpblJlc3VsdCIsImxvZ2luIiwiZSIsIlRpbWVvdXRFcnJvciIsIm1lc3NhZ2UiLCJzY3JhcGVSZXN1bHQiLCJzdWNjZXNzIiwiZmV0Y2hEYXRhIiwidGVybWluYXRlIiwiRW5kU2NyYXBpbmciLCJ0cmlnZ2VyVHdvRmFjdG9yQXV0aCIsIl9waG9uZU51bWJlciIsIkVycm9yIiwiY29tcGFueUlkIiwiZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbiIsIl9vdHBDb2RlIiwiX2NyZWRlbnRpYWxzIiwiX3N1Y2Nlc3MiLCJUZXJtaW5hdGluZyIsInR5cGUiLCJlbWl0IiwiZXZlbnROYW1lIiwicGF5bG9hZCIsImV2ZW50RW1pdHRlciIsIm9uUHJvZ3Jlc3MiLCJmdW5jIiwib24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFXQSxNQUFNQSxlQUFlLEdBQUcsaUJBQXhCO0lBR1lDLG9COzs7V0FBQUEsb0I7QUFBQUEsRUFBQUEsb0I7QUFBQUEsRUFBQUEsb0I7QUFBQUEsRUFBQUEsb0I7QUFBQUEsRUFBQUEsb0I7QUFBQUEsRUFBQUEsb0I7QUFBQUEsRUFBQUEsb0I7QUFBQUEsRUFBQUEsb0I7QUFBQUEsRUFBQUEsb0I7R0FBQUEsb0Isb0NBQUFBLG9COztBQVdMLE1BQU1DLFdBQU4sQ0FBNEY7QUFHakdDLEVBQUFBLFdBQVcsQ0FBUUMsT0FBUixFQUFpQztBQUFB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QUQsRUFBb0JDLE9BQXBCLEVBQWtEO0FBQ3BELFNBQUtDLFlBQUwsQ0FBa0JILElBQWxCLENBQXVCQyxTQUF2QixFQUFrQyxLQUFLaEMsT0FBTCxDQUFhd0IsU0FBL0MsRUFBMERTLE9BQTFEO0FBQ0Q7O0FBRURFLEVBQUFBLFVBQVUsQ0FBQ0MsSUFBRCxFQUFpQztBQUN6QyxTQUFLRixZQUFMLENBQWtCRyxFQUFsQixDQUFxQnpDLGVBQXJCLEVBQXNDd0MsSUFBdEM7QUFDRDs7QUFyRmdHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50LXRpbWV6b25lJztcbmltcG9ydCB7IFRpbWVvdXRFcnJvciB9IGZyb20gJy4uL2hlbHBlcnMvd2FpdGluZyc7XG5pbXBvcnQgeyBjcmVhdGVHZW5lcmljRXJyb3IsIGNyZWF0ZVRpbWVvdXRFcnJvciB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7XG4gIFNjcmFwZXIsXG4gIFNjcmFwZXJDcmVkZW50aWFscyxcbiAgU2NyYXBlckdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW5SZXN1bHQsXG4gIFNjcmFwZXJMb2dpblJlc3VsdCxcbiAgU2NyYXBlck9wdGlvbnMsXG4gIFNjcmFwZXJTY3JhcGluZ1Jlc3VsdCxcbiAgU2NyYXBlclR3b0ZhY3RvckF1dGhUcmlnZ2VyUmVzdWx0LFxufSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbmNvbnN0IFNDUkFQRV9QUk9HUkVTUyA9ICdTQ1JBUEVfUFJPR1JFU1MnO1xuXG5cbmV4cG9ydCBlbnVtIFNjcmFwZXJQcm9ncmVzc1R5cGVzIHtcbiAgSW5pdGlhbGl6aW5nID0gJ0lOSVRJQUxJWklORycsXG4gIFN0YXJ0U2NyYXBpbmcgPSAnU1RBUlRfU0NSQVBJTkcnLFxuICBMb2dnaW5nSW4gPSAnTE9HR0lOR19JTicsXG4gIExvZ2luU3VjY2VzcyA9ICdMT0dJTl9TVUNDRVNTJyxcbiAgTG9naW5GYWlsZWQgPSAnTE9HSU5fRkFJTEVEJyxcbiAgQ2hhbmdlUGFzc3dvcmQgPSAnQ0hBTkdFX1BBU1NXT1JEJyxcbiAgRW5kU2NyYXBpbmcgPSAnRU5EX1NDUkFQSU5HJyxcbiAgVGVybWluYXRpbmcgPSAnVEVSTUlOQVRJTkcnLFxufVxuXG5leHBvcnQgY2xhc3MgQmFzZVNjcmFwZXI8VENyZWRlbnRpYWxzIGV4dGVuZHMgU2NyYXBlckNyZWRlbnRpYWxzPiBpbXBsZW1lbnRzIFNjcmFwZXI8VENyZWRlbnRpYWxzPiB7XG4gIHByaXZhdGUgZXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucykge1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICBAdHlwZXNjcmlwdC1lc2xpbnQvcmVxdWlyZS1hd2FpdFxuICBhc3luYyBpbml0aWFsaXplKCkge1xuICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkluaXRpYWxpemluZyk7XG4gICAgbW9tZW50LnR6LnNldERlZmF1bHQoJ0FzaWEvSmVydXNhbGVtJyk7XG4gIH1cblxuICBhc3luYyBzY3JhcGUoY3JlZGVudGlhbHM6IFRDcmVkZW50aWFscyk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuU3RhcnRTY3JhcGluZyk7XG4gICAgYXdhaXQgdGhpcy5pbml0aWFsaXplKCk7XG5cbiAgICBsZXQgbG9naW5SZXN1bHQ7XG4gICAgdHJ5IHtcbiAgICAgIGxvZ2luUmVzdWx0ID0gYXdhaXQgdGhpcy5sb2dpbihjcmVkZW50aWFscyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9naW5SZXN1bHQgPSBlIGluc3RhbmNlb2YgVGltZW91dEVycm9yID9cbiAgICAgICAgY3JlYXRlVGltZW91dEVycm9yKGUubWVzc2FnZSkgOlxuICAgICAgICBjcmVhdGVHZW5lcmljRXJyb3IoZS5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICBsZXQgc2NyYXBlUmVzdWx0O1xuICAgIGlmIChsb2dpblJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzY3JhcGVSZXN1bHQgPSBhd2FpdCB0aGlzLmZldGNoRGF0YSgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzY3JhcGVSZXN1bHQgPVxuICAgICAgICAgIGUgaW5zdGFuY2VvZiBUaW1lb3V0RXJyb3IgP1xuICAgICAgICAgICAgY3JlYXRlVGltZW91dEVycm9yKGUubWVzc2FnZSkgOlxuICAgICAgICAgICAgY3JlYXRlR2VuZXJpY0Vycm9yKGUubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjcmFwZVJlc3VsdCA9IGxvZ2luUmVzdWx0O1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdWNjZXNzID0gc2NyYXBlUmVzdWx0ICYmIHNjcmFwZVJlc3VsdC5zdWNjZXNzID09PSB0cnVlO1xuICAgICAgYXdhaXQgdGhpcy50ZXJtaW5hdGUoc3VjY2Vzcyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgc2NyYXBlUmVzdWx0ID0gY3JlYXRlR2VuZXJpY0Vycm9yKGUubWVzc2FnZSk7XG4gICAgfVxuICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkVuZFNjcmFwaW5nKTtcblxuICAgIHJldHVybiBzY3JhcGVSZXN1bHQ7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvcmVxdWlyZS1hd2FpdFxuICB0cmlnZ2VyVHdvRmFjdG9yQXV0aChfcGhvbmVOdW1iZXI6IHN0cmluZyk6IFByb21pc2U8U2NyYXBlclR3b0ZhY3RvckF1dGhUcmlnZ2VyUmVzdWx0PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0cmlnZ2VyT3RwKCkgaXMgbm90IGNyZWF0ZWQgaW4gJHt0aGlzLm9wdGlvbnMuY29tcGFueUlkfWApO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L3JlcXVpcmUtYXdhaXRcbiAgZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbihfb3RwQ29kZTogc3RyaW5nKTogUHJvbWlzZTxTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdD4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgZ2V0UGVybWFuZW50T3RwVG9rZW4oKSBpcyBub3QgY3JlYXRlZCBpbiAke3RoaXMub3B0aW9ucy5jb21wYW55SWR9YCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvcmVxdWlyZS1hd2FpdFxuICBhc3luYyBsb2dpbihfY3JlZGVudGlhbHM6IFRDcmVkZW50aWFscyk6IFByb21pc2U8U2NyYXBlckxvZ2luUmVzdWx0PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBsb2dpbigpIGlzIG5vdCBjcmVhdGVkIGluICR7dGhpcy5vcHRpb25zLmNvbXBhbnlJZH1gKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAgQHR5cGVzY3JpcHQtZXNsaW50L3JlcXVpcmUtYXdhaXRcbiAgYXN5bmMgZmV0Y2hEYXRhKCk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBmZXRjaERhdGEoKSBpcyBub3QgY3JlYXRlZCBpbiAke3RoaXMub3B0aW9ucy5jb21wYW55SWR9YCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvcmVxdWlyZS1hd2FpdFxuICBhc3luYyB0ZXJtaW5hdGUoX3N1Y2Nlc3M6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5UZXJtaW5hdGluZyk7XG4gIH1cblxuICBlbWl0UHJvZ3Jlc3ModHlwZTogU2NyYXBlclByb2dyZXNzVHlwZXMpIHtcbiAgICB0aGlzLmVtaXQoU0NSQVBFX1BST0dSRVNTLCB7IHR5cGUgfSk7XG4gIH1cblxuICBlbWl0KGV2ZW50TmFtZTogc3RyaW5nLCBwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgdGhpcy5ldmVudEVtaXR0ZXIuZW1pdChldmVudE5hbWUsIHRoaXMub3B0aW9ucy5jb21wYW55SWQsIHBheWxvYWQpO1xuICB9XG5cbiAgb25Qcm9ncmVzcyhmdW5jOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpIHtcbiAgICB0aGlzLmV2ZW50RW1pdHRlci5vbihTQ1JBUEVfUFJPR1JFU1MsIGZ1bmMpO1xuICB9XG59XG4iXX0=
116
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLXNjcmFwZXIudHMiXSwibmFtZXMiOlsiU0NSQVBFX1BST0dSRVNTIiwiQmFzZVNjcmFwZXIiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJFdmVudEVtaXR0ZXIiLCJpbml0aWFsaXplIiwiZW1pdFByb2dyZXNzIiwiU2NyYXBlclByb2dyZXNzVHlwZXMiLCJJbml0aWFsaXppbmciLCJtb21lbnQiLCJ0eiIsInNldERlZmF1bHQiLCJzY3JhcGUiLCJjcmVkZW50aWFscyIsIlN0YXJ0U2NyYXBpbmciLCJsb2dpblJlc3VsdCIsImxvZ2luIiwiZSIsIlRpbWVvdXRFcnJvciIsIm1lc3NhZ2UiLCJzY3JhcGVSZXN1bHQiLCJzdWNjZXNzIiwiZmV0Y2hEYXRhIiwidGVybWluYXRlIiwiRW5kU2NyYXBpbmciLCJ0cmlnZ2VyVHdvRmFjdG9yQXV0aCIsIl9waG9uZU51bWJlciIsIkVycm9yIiwiY29tcGFueUlkIiwiZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbiIsIl9vdHBDb2RlIiwiX2NyZWRlbnRpYWxzIiwiX3N1Y2Nlc3MiLCJUZXJtaW5hdGluZyIsInR5cGUiLCJlbWl0IiwiZXZlbnROYW1lIiwicGF5bG9hZCIsImV2ZW50RW1pdHRlciIsIm9uUHJvZ3Jlc3MiLCJmdW5jIiwib24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQVVBOzs7Ozs7QUFFQSxNQUFNQSxlQUFlLEdBQUcsaUJBQXhCOztBQUdPLE1BQU1DLFdBQU4sQ0FBNEY7QUFHakdDLEVBQUFBLFdBQVcsQ0FBUUMsT0FBUixFQUFpQztBQUFBLFNBQXpCQSxPQUF5QixHQUF6QkEsT0FBeUI7O0FBQUEsMENBRnJCLElBQUlDLG9CQUFKLEVBRXFCO0FBQzNDLEdBSmdHLENBTWpHOzs7QUFDQSxRQUFNQyxVQUFOLEdBQW1CO0FBQ2pCLFNBQUtDLFlBQUwsQ0FBa0JDLGtDQUFxQkMsWUFBdkM7O0FBQ0FDLDRCQUFPQyxF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QUwsQ0FBa0JHLEVBQWxCLENBQXFCekMsZUFBckIsRUFBc0N3QyxJQUF0QztBQUNEOztBQXJGZ0ciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IHsgVGltZW91dEVycm9yIH0gZnJvbSAnLi4vaGVscGVycy93YWl0aW5nJztcbmltcG9ydCB7IGNyZWF0ZUdlbmVyaWNFcnJvciwgY3JlYXRlVGltZW91dEVycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgU2NyYXBlcixcbiAgU2NyYXBlckNyZWRlbnRpYWxzLFxuICBTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdCxcbiAgU2NyYXBlckxvZ2luUmVzdWx0LFxuICBTY3JhcGVyT3B0aW9ucyxcbiAgU2NyYXBlclNjcmFwaW5nUmVzdWx0LFxuICBTY3JhcGVyVHdvRmFjdG9yQXV0aFRyaWdnZXJSZXN1bHQsXG59IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbXBhbnlUeXBlcywgU2NyYXBlclByb2dyZXNzVHlwZXMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5cbmNvbnN0IFNDUkFQRV9QUk9HUkVTUyA9ICdTQ1JBUEVfUFJPR1JFU1MnO1xuXG5cbmV4cG9ydCBjbGFzcyBCYXNlU2NyYXBlcjxUQ3JlZGVudGlhbHMgZXh0ZW5kcyBTY3JhcGVyQ3JlZGVudGlhbHM+IGltcGxlbWVudHMgU2NyYXBlcjxUQ3JlZGVudGlhbHM+IHtcbiAgcHJpdmF0ZSBldmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zKSB7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgIEB0eXBlc2NyaXB0LWVzbGludC9yZXF1aXJlLWF3YWl0XG4gIGFzeW5jIGluaXRpYWxpemUoKSB7XG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuSW5pdGlhbGl6aW5nKTtcbiAgICBtb21lbnQudHouc2V0RGVmYXVsdCgnQXNpYS9KZXJ1c2FsZW0nKTtcbiAgfVxuXG4gIGFzeW5jIHNjcmFwZShjcmVkZW50aWFsczogVENyZWRlbnRpYWxzKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5TdGFydFNjcmFwaW5nKTtcbiAgICBhd2FpdCB0aGlzLmluaXRpYWxpemUoKTtcblxuICAgIGxldCBsb2dpblJlc3VsdDtcbiAgICB0cnkge1xuICAgICAgbG9naW5SZXN1bHQgPSBhd2FpdCB0aGlzLmxvZ2luKGNyZWRlbnRpYWxzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dpblJlc3VsdCA9IGUgaW5zdGFuY2VvZiBUaW1lb3V0RXJyb3IgP1xuICAgICAgICBjcmVhdGVUaW1lb3V0RXJyb3IoZS5tZXNzYWdlKSA6XG4gICAgICAgIGNyZWF0ZUdlbmVyaWNFcnJvcihlLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGxldCBzY3JhcGVSZXN1bHQ7XG4gICAgaWYgKGxvZ2luUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNjcmFwZVJlc3VsdCA9IGF3YWl0IHRoaXMuZmV0Y2hEYXRhKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHNjcmFwZVJlc3VsdCA9XG4gICAgICAgICAgZSBpbnN0YW5jZW9mIFRpbWVvdXRFcnJvciA/XG4gICAgICAgICAgICBjcmVhdGVUaW1lb3V0RXJyb3IoZS5tZXNzYWdlKSA6XG4gICAgICAgICAgICBjcmVhdGVHZW5lcmljRXJyb3IoZS5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NyYXBlUmVzdWx0ID0gbG9naW5SZXN1bHQ7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBzY3JhcGVSZXN1bHQgJiYgc2NyYXBlUmVzdWx0LnN1Y2Nlc3MgPT09IHRydWU7XG4gICAgICBhd2FpdCB0aGlzLnRlcm1pbmF0ZShzdWNjZXNzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBzY3JhcGVSZXN1bHQgPSBjcmVhdGVHZW5lcmljRXJyb3IoZS5tZXNzYWdlKTtcbiAgICB9XG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuRW5kU2NyYXBpbmcpO1xuXG4gICAgcmV0dXJuIHNjcmFwZVJlc3VsdDtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9yZXF1aXJlLWF3YWl0XG4gIHRyaWdnZXJUd29GYWN0b3JBdXRoKF9waG9uZU51bWJlcjogc3RyaW5nKTogUHJvbWlzZTxTY3JhcGVyVHdvRmFjdG9yQXV0aFRyaWdnZXJSZXN1bHQ+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHRyaWdnZXJPdHAoKSBpcyBub3QgY3JlYXRlZCBpbiAke3RoaXMub3B0aW9ucy5jb21wYW55SWR9YCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvcmVxdWlyZS1hd2FpdFxuICBnZXRMb25nVGVybVR3b0ZhY3RvclRva2VuKF9vdHBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFNjcmFwZXJHZXRMb25nVGVybVR3b0ZhY3RvclRva2VuUmVzdWx0PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBnZXRQZXJtYW5lbnRPdHBUb2tlbigpIGlzIG5vdCBjcmVhdGVkIGluICR7dGhpcy5vcHRpb25zLmNvbXBhbnlJZH1gKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9yZXF1aXJlLWF3YWl0XG4gIHByb3RlY3RlZCBhc3luYyBsb2dpbihfY3JlZGVudGlhbHM6IFRDcmVkZW50aWFscyk6IFByb21pc2U8U2NyYXBlckxvZ2luUmVzdWx0PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBsb2dpbigpIGlzIG5vdCBjcmVhdGVkIGluICR7dGhpcy5vcHRpb25zLmNvbXBhbnlJZH1gKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAgQHR5cGVzY3JpcHQtZXNsaW50L3JlcXVpcmUtYXdhaXRcbiAgcHJvdGVjdGVkIGFzeW5jIGZldGNoRGF0YSgpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgZmV0Y2hEYXRhKCkgaXMgbm90IGNyZWF0ZWQgaW4gJHt0aGlzLm9wdGlvbnMuY29tcGFueUlkfWApO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L3JlcXVpcmUtYXdhaXRcbiAgcHJvdGVjdGVkIGFzeW5jIHRlcm1pbmF0ZShfc3VjY2VzczogYm9vbGVhbikge1xuICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLlRlcm1pbmF0aW5nKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0UHJvZ3Jlc3ModHlwZTogU2NyYXBlclByb2dyZXNzVHlwZXMpIHtcbiAgICB0aGlzLmVtaXQoU0NSQVBFX1BST0dSRVNTLCB7IHR5cGUgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdChldmVudE5hbWU6IHN0cmluZywgcGF5bG9hZDogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHRoaXMuZXZlbnRFbWl0dGVyLmVtaXQoZXZlbnROYW1lLCB0aGlzLm9wdGlvbnMuY29tcGFueUlkLCBwYXlsb2FkKTtcbiAgfVxuXG4gIG9uUHJvZ3Jlc3MoZnVuYzogKGNvbXBhbnlJZDogQ29tcGFueVR5cGVzLCBwYXlsb2FkOiB7dHlwZTogU2NyYXBlclByb2dyZXNzVHlwZXN9KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5ldmVudEVtaXR0ZXIub24oU0NSQVBFX1BST0dSRVNTLCBmdW5jKTtcbiAgfVxufVxuIl19
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ var _definitions = require("../definitions");
4
+
5
+ var _factory = _interopRequireDefault(require("./factory"));
6
+
7
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+
9
+ /* eslint-disable @typescript-eslint/unbound-method */
10
+ describe('Factory', () => {
11
+ test('should return a scraper instance', () => {
12
+ const scraper = (0, _factory.default)({
13
+ companyId: _definitions.CompanyTypes.hapoalim,
14
+ startDate: new Date()
15
+ });
16
+ expect(scraper).toBeDefined();
17
+ expect(scraper.scrape).toBeInstanceOf(Function);
18
+ expect(scraper.onProgress).toBeInstanceOf(Function);
19
+ });
20
+ });
21
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9mYWN0b3J5LnRlc3QudHMiXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJ0ZXN0Iiwic2NyYXBlciIsImNvbXBhbnlJZCIsIkNvbXBhbnlUeXBlcyIsImhhcG9hbGltIiwic3RhcnREYXRlIiwiRGF0ZSIsImV4cGVjdCIsInRvQmVEZWZpbmVkIiwic2NyYXBlIiwidG9CZUluc3RhbmNlT2YiLCJGdW5jdGlvbiIsIm9uUHJvZ3Jlc3MiXSwibWFwcGluZ3MiOiI7O0FBQ0E7O0FBQ0E7Ozs7QUFGQTtBQUlBQSxRQUFRLENBQUMsU0FBRCxFQUFZLE1BQU07QUFDeEJDLEVBQUFBLElBQUksQ0FBQyxrQ0FBRCxFQUFxQyxNQUFNO0FBQzdDLFVBQU1DLE9BQU8sR0FBRyxzQkFBYztBQUM1QkMsTUFBQUEsU0FBUyxFQUFFQywwQkFBYUMsUUFESTtBQUU1QkMsTUFBQUEsU0FBUyxFQUFFLElBQUlDLElBQUo7QUFGaUIsS0FBZCxDQUFoQjtBQUlBQyxJQUFBQSxNQUFNLENBQUNOLE9BQUQsQ0FBTixDQUFnQk8sV0FBaEI7QUFFQUQsSUFBQUEsTUFBTSxDQUFDTixPQUFPLENBQUNRLE1BQVQsQ0FBTixDQUF1QkMsY0FBdkIsQ0FBc0NDLFFBQXRDO0FBQ0FKLElBQUFBLE1BQU0sQ0FBQ04sT0FBTyxDQUFDVyxVQUFULENBQU4sQ0FBMkJGLGNBQTNCLENBQTBDQyxRQUExQztBQUNELEdBVEcsQ0FBSjtBQVVELENBWE8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCAqL1xuaW1wb3J0IHsgQ29tcGFueVR5cGVzIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IGNyZWF0ZVNjcmFwZXIgZnJvbSAnLi9mYWN0b3J5JztcblxuZGVzY3JpYmUoJ0ZhY3RvcnknLCAoKSA9PiB7XG4gIHRlc3QoJ3Nob3VsZCByZXR1cm4gYSBzY3JhcGVyIGluc3RhbmNlJywgKCkgPT4ge1xuICAgIGNvbnN0IHNjcmFwZXIgPSBjcmVhdGVTY3JhcGVyKHtcbiAgICAgIGNvbXBhbnlJZDogQ29tcGFueVR5cGVzLmhhcG9hbGltLFxuICAgICAgc3RhcnREYXRlOiBuZXcgRGF0ZSgpLFxuICAgIH0pO1xuICAgIGV4cGVjdChzY3JhcGVyKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgZXhwZWN0KHNjcmFwZXIuc2NyYXBlKS50b0JlSW5zdGFuY2VPZihGdW5jdGlvbik7XG4gICAgZXhwZWN0KHNjcmFwZXIub25Qcm9ncmVzcykudG9CZUluc3RhbmNlT2YoRnVuY3Rpb24pO1xuICB9KTtcbn0pO1xuIl19
@@ -1,5 +1,5 @@
1
1
  import { Browser, Page } from 'puppeteer';
2
- import { CompanyTypes } from '../definitions';
2
+ import { CompanyTypes, ScraperProgressTypes } from '../definitions';
3
3
  import { TransactionsAccount } from '../transactions';
4
4
  import { ErrorResult, ScraperErrorTypes } from './errors';
5
5
  export declare type ScraperCredentials = {
@@ -130,6 +130,11 @@ export interface ScraperScrapingResult {
130
130
  }
131
131
  export interface Scraper<TCredentials extends ScraperCredentials> {
132
132
  scrape(credentials: TCredentials): Promise<ScraperScrapingResult>;
133
+ onProgress(func: (companyId: CompanyTypes, payload: {
134
+ type: ScraperProgressTypes;
135
+ }) => void): void;
136
+ triggerTwoFactorAuth(phoneNumber: string): Promise<ScraperTwoFactorAuthTriggerResult>;
137
+ getLongTermTwoFactorToken(otpCode: string): Promise<ScraperGetLongTermTwoFactorTokenResult>;
133
138
  }
134
139
  export declare type ScraperTwoFactorAuthTriggerResult = ErrorResult | {
135
140
  success: true;
@@ -122,13 +122,16 @@ function convertParsedDataToTransactions(parsedData) {
122
122
 
123
123
  const result = {
124
124
  chargedAmount,
125
+ identifier: transaction.trnIntId,
125
126
  description: transaction.merchantName,
126
127
  originalAmount,
127
128
  originalCurrency: transaction.trnCurrencySymbol,
128
129
  processedDate: transaction.debCrdDate,
129
130
  status: _transactions2.TransactionStatuses.Completed,
130
131
  date: installments ? date.add(installments.number - 1, 'month').toISOString() : date.toISOString(),
131
- type: [trnTypeCode.regular, trnTypeCode.standingOrder].includes(transaction.trnTypeCode) ? _transactions2.TransactionTypes.Normal : _transactions2.TransactionTypes.Installments
132
+ type: [trnTypeCode.regular, trnTypeCode.standingOrder].includes(transaction.trnTypeCode) ? _transactions2.TransactionTypes.Normal : _transactions2.TransactionTypes.Installments,
133
+ memo: transaction.transTypeCommentDetails.toString() || undefined,
134
+ category: transaction.branchCodeDesc
132
135
  };
133
136
 
134
137
  if (installments) {
@@ -161,7 +164,7 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
161
164
  }
162
165
 
163
166
  async getCards() {
164
- const initData = await (0, _storage.getFromSessionStorage)(this.page, 'init');
167
+ const initData = await (0, _waiting.waitUntil)(() => (0, _storage.getFromSessionStorage)(this.page, 'init'), 'get init data in session storage', 10000, 1000);
165
168
 
166
169
  if (!initData) {
167
170
  throw new Error('could not find \'init\' data in session storage');
@@ -241,9 +244,7 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
241
244
  const startMoment = _moment.default.max(defaultStartMoment, (0, _moment.default)(startDate));
242
245
 
243
246
  debug(`fetch transactions starting ${startMoment.format()}`);
244
- const Authorization = await this.getAuthorizationHeader(); // Wait a little before `this.getCards` so that it would exist
245
-
246
- await new Promise(resolve => setTimeout(resolve, 1000));
247
+ const Authorization = await this.getAuthorizationHeader();
247
248
  const cards = await this.getCards();
248
249
  const xSiteId = await this.getXSiteId();
249
250
  const futureMonthsToScrape = (_this$options$futureM = this.options.futureMonthsToScrape) !== null && _this$options$futureM !== void 0 ? _this$options$futureM : 1;
@@ -295,4 +296,4 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
295
296
 
296
297
  var _default = VisaCalScraper;
297
298
  exports.default = _default;
298
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy92aXNhLWNhbC50cyJdLCJuYW1lcyI6WyJMT0dJTl9VUkwiLCJUUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCIsIkludmFsaWRQYXNzd29yZE1lc3NhZ2UiLCJkZWJ1ZyIsInRyblR5cGVDb2RlIiwiZ2V0TG9naW5GcmFtZSIsInBhZ2UiLCJmcmFtZSIsImZyYW1lcyIsImZpbmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkVycm9yIiwiaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IiLCJlcnJvckZvdW5kIiwiZXJyb3JNZXNzYWdlIiwiaXRlbSIsImlubmVyVGV4dCIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJvcHRpb25zIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyIsInBhcnNlZERhdGEiLCJmbGF0TWFwIiwibW9udGhEYXRhIiwicmVzdWx0IiwiYmFua0FjY291bnRzIiwiYWNjb3VudHMiLCJkZWJpdERhdGVzIiwiZGViaXREYXRlIiwidHJhbnNhY3Rpb25zIiwibWFwIiwidHJhbnNhY3Rpb24iLCJpbnN0YWxsbWVudHMiLCJjdXJQYXltZW50TnVtIiwibnVtT2ZQYXltZW50cyIsIm51bWJlciIsInRvdGFsIiwidW5kZWZpbmVkIiwiZGF0ZSIsInRyblB1cmNoYXNlRGF0ZSIsImNoYXJnZWRBbW91bnQiLCJhbXRCZWZvcmVDb252QW5kSW5kZXgiLCJvcmlnaW5hbEFtb3VudCIsInRybkFtdCIsImNyZWRpdCIsImRlc2NyaXB0aW9uIiwibWVyY2hhbnROYW1lIiwib3JpZ2luYWxDdXJyZW5jeSIsInRybkN1cnJlbmN5U3ltYm9sIiwicHJvY2Vzc2VkRGF0ZSIsImRlYkNyZERhdGUiLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwiYWRkIiwidG9JU09TdHJpbmciLCJ0eXBlIiwicmVndWxhciIsInN0YW5kaW5nT3JkZXIiLCJUcmFuc2FjdGlvblR5cGVzIiwiTm9ybWFsIiwiSW5zdGFsbG1lbnRzIiwiVmlzYUNhbFNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0Q2FyZHMiLCJpbml0RGF0YSIsImNhcmRzIiwiY2FyZFVuaXF1ZUlkIiwibGFzdDREaWdpdHMiLCJnZXRBdXRob3JpemF0aW9uSGVhZGVyIiwiYXV0aE1vZHVsZSIsImF1dGgiLCJjYWxDb25uZWN0VG9rZW4iLCJnZXRYU2l0ZUlkIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInBvc3NpYmxlUmVzdWx0cyIsImNoZWNrUmVhZGluZXNzIiwicHJlQWN0aW9uIiwib3BlbkxvZ2luUG9wdXAiLCJwb3N0QWN0aW9uIiwiY3VycmVudFVybCIsImVuZHNXaXRoIiwiZSIsInVzZXJBZ2VudCIsImlzQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyIsImZldGNoRGF0YSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0Iiwic3RhcnREYXRlIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtb21lbnQiLCJtYXgiLCJmb3JtYXQiLCJBdXRob3JpemF0aW9uIiwic2V0VGltZW91dCIsInhTaXRlSWQiLCJmdXR1cmVNb250aHNUb1NjcmFwZSIsImFsbCIsImNhcmQiLCJmaW5hbE1vbnRoVG9GZXRjaE1vbWVudCIsIm1vbnRocyIsImRpZmYiLCJhbGxNb250aHNEYXRhIiwiaSIsIm1vbnRoIiwiY2xvbmUiLCJ5ZWFyIiwic3RhdHVzQ29kZSIsInRpdGxlIiwicHVzaCIsInR4bnMiLCJvdXRwdXREYXRhIiwiZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlIiwiY29tYmluZUlu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QUFHLG9EQUFDLEtBQUtyRyxPQUFMLENBQWFzRyxVQUFkLDJEQUFDLHVCQUF5QkMsOEJBQTFCLHlFQUE0RCxJQUE1RCxJQUNYLHlDQUFzQnZGLFlBQXRCLEVBQW9DLHFCQUFPOEQsU0FBUCxDQUFwQyxFQUF1RCxLQUFLOUUsT0FBTCxDQUFhd0csbUJBQWIsSUFBb0MsS0FBM0YsQ0FEVyxHQUVYeEYsWUFGRjtBQUlBLGFBQU87QUFDTHFGLFFBQUFBLElBREs7QUFFTEksUUFBQUEsYUFBYSxFQUFFaEIsSUFBSSxDQUFDbEM7QUFGZixPQUFQO0FBSUQsS0F2Q0QsQ0FEcUIsQ0FBdkI7QUEyQ0E5RSxJQUFBQSxLQUFLLENBQUMsNkJBQUQsQ0FBTDtBQUVBQSxJQUFBQSxLQUFLLENBQUNpSSxJQUFJLENBQUNDLFNBQUwsQ0FBZTlGLFFBQWYsRUFBeUIsSUFBekIsRUFBK0IsQ0FBL0IsQ0FBRCxDQUFMO0FBQ0EsV0FBTztBQUNMK0YsTUFBQUEsT0FBTyxFQUFFLElBREo7QUFFTC9GLE1BQUFBO0FBRkssS0FBUDtBQUlEOztBQWpKNkU7O2VBb0pqRW9DLGMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBGcmFtZSwgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5cbmltcG9ydCB7IGdldERlYnVnIH0gZnJvbSAnLi4vaGVscGVycy9kZWJ1Zyc7XG5pbXBvcnQge1xuICBjbGlja0J1dHRvbiwgZWxlbWVudFByZXNlbnRPblBhZ2UsIHBhZ2VFdmFsLCB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IGZldGNoUG9zdFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7IGdldEN1cnJlbnRVcmwgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgZ2V0RnJvbVNlc3Npb25TdG9yYWdlIH0gZnJvbSAnLi4vaGVscGVycy9zdG9yYWdlJztcbmltcG9ydCB7IGZpbHRlck9sZFRyYW5zYWN0aW9ucyB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHdhaXRVbnRpbCB9IGZyb20gJy4uL2hlbHBlcnMvd2FpdGluZyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25TdGF0dXNlcyxcbiAgVHJhbnNhY3Rpb25UeXBlcyxcbiAgVHJhbnNhY3Rpb25zQWNjb3VudCxcbn0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luT3B0aW9ucywgTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IFNjcmFwZXJTY3JhcGluZ1Jlc3VsdCB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuY29uc3QgTE9HSU5fVVJMID0gJ2h0dHBzOi8vd3d3LmNhbC1vbmxpbmUuY28uaWwvJztcbmNvbnN0IFRSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UID0gJ2h0dHBzOi8vYXBpLmNhbC1vbmxpbmUuY28uaWwvVHJhbnNhY3Rpb25zL2FwaS90cmFuc2FjdGlvbnNEZXRhaWxzL2dldENhcmRUcmFuc2FjdGlvbnNEZXRhaWxzJztcblxuY29uc3QgSW52YWxpZFBhc3N3b3JkTWVzc2FnZSA9ICfXqdedINeU157Xqdeq157XqSDXkNeVINeU16HXmdeh157XlCDXqdeU15XXlteg15Ug16nXkteV15nXmdedJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygndmlzYS1jYWwnKTtcblxuZW51bSB0cm5UeXBlQ29kZSB7XG4gIHJlZ3VsYXIgPSAnNScsXG4gIGNyZWRpdCA9ICc2JyxcbiAgaW5zdGFsbG1lbnRzID0gJzgnLFxuICBzdGFuZGluZ09yZGVyID0gJzknLFxufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgYW10QmVmb3JlQ29udkFuZEluZGV4OiBudW1iZXI7XG4gIGJyYW5jaENvZGVEZXNjOiBzdHJpbmc7XG4gIGNhc2hBY2NNYW5hZ2VyTmFtZTogbnVsbDtcbiAgY2FzaEFjY291bnRNYW5hZ2VyOiBudWxsO1xuICBjYXNoQWNjb3VudFRybkFtdDogbnVtYmVyO1xuICBjaGFyZ2VFeHRlcm5hbFRvQ2FyZENvbW1lbnQ6IHN0cmluZztcbiAgY29tbWVudHM6IFtdO1xuICBjdXJQYXltZW50TnVtOiBudW1iZXI7XG4gIGRlYkNyZEN1cnJlbmN5U3ltYm9sOiBDdXJyZW5jeVN5bWJvbDtcbiAgZGViQ3JkRGF0ZTogc3RyaW5nO1xuICBkZWJpdFNwcmVhZEluZDogYm9vbGVhbjtcbiAgZGlzY291bnRBbW91bnQ6IHVua25vd247XG4gIGRpc2NvdW50UmVhc29uOiB1bmtub3duO1xuICBpbW1lZGlhdGVDb21tZW50czogW107XG4gIGlzSW1tZWRpYXRlQ29tbWVudEluZDogYm9vbGVhbjtcbiAgaXNJbW1lZGlhdGVISEtJbmQ6IGJvb2xlYW47XG4gIGlzTWFyZ2FyaXRhOiBib29sZWFuO1xuICBpc1NwcmVhZFBheW1lbnN0QWJyb2FkOiBib29sZWFuO1xuICBsaW5rZWRDb21tZW50czogW107XG4gIG1lcmNoYW50QWRkcmVzczogc3RyaW5nO1xuICBtZXJjaGFudE5hbWU6IHN0cmluZztcbiAgbWVyY2hhbnRQaG9uZU5vOiBzdHJpbmc7XG4gIG51bU9mUGF5bWVudHM6IG51bWJlcjtcbiAgb25Hb2luZ1RyYW5zYWN0aW9uc0NvbW1lbnQ6IHN0cmluZztcbiAgcmVmdW5kSW5kOiBib29sZWFuO1xuICByb3VuZGluZ0Ftb3VudDogdW5rbm93bjtcbiAgcm91bmRpbmdSZWFzb246IHVua25vd247XG4gIHRva2VuSW5kOiAwO1xuICB0b2tlbk51bWJlclBhcnQ0OiAnJztcbiAgdHJhbnNDYXJkUHJlc2VudEluZDogYm9vbGVhbjtcbiAgdHJhbnNUeXBlQ29tbWVudERldGFpbHM6IFtdO1xuICB0cm5BbXQ6IG51bWJlcjtcbiAgdHJuQ3VycmVuY3lTeW1ib2w6IEN1cnJlbmN5U3ltYm9sO1xuICB0cm5FeGFjV2F5OiBudW1iZXI7XG4gIHRybkludElkOiBzdHJpbmc7XG4gIHRybk51bWFyZXRvcjogbnVtYmVyO1xuICB0cm5QdXJjaGFzZURhdGU6IHN0cmluZztcbiAgdHJuVHlwZTogc3RyaW5nO1xuICB0cm5UeXBlQ29kZTogdHJuVHlwZUNvZGU7XG4gIHdhbGxldFByb3ZpZGVyQ29kZTogMDtcbiAgd2FsbGV0UHJvdmlkZXJEZXNjOiAnJztcbn1cbmludGVyZmFjZSBJbml0UmVzcG9uc2Uge1xuICByZXN1bHQ6IHtcbiAgICBjYXJkczoge1xuICAgICAgY2FyZFVuaXF1ZUlkOiBzdHJpbmc7XG4gICAgICBsYXN0NERpZ2l0czogc3RyaW5nO1xuICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICB9W107XG4gIH07XG59XG50eXBlIEN1cnJlbmN5U3ltYm9sID0gJ+KCqicgfCBzdHJpbmc7XG5pbnRlcmZhY2UgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xufVxuaW50ZXJmYWNlIENhcmRUcmFuc2FjdGlvbkRldGFpbHMgZXh0ZW5kcyBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3Ige1xuICByZXN1bHQ6IHtcbiAgICBiYW5rQWNjb3VudHM6IHtcbiAgICAgIGJhbmtBY2NvdW50TnVtOiBzdHJpbmc7XG4gICAgICBiYW5rTmFtZTogc3RyaW5nO1xuICAgICAgY2hvaWNlRXh0ZXJuYWxUcmFuc2FjdGlvbnM6IGFueTtcbiAgICAgIGN1cnJlbnRCYW5rQWNjb3VudEluZDogYm9vbGVhbjtcbiAgICAgIGRlYml0RGF0ZXM6IHtcbiAgICAgICAgYmFza2V0QW1vdW50Q29tbWVudDogdW5rbm93bjtcbiAgICAgICAgY2hvaWNlSEhLRGViaXQ6IG51bWJlcjtcbiAgICAgICAgZGF0ZTogc3RyaW5nO1xuICAgICAgICBkZWJpdFJlYXNvbjogdW5rbm93bjtcbiAgICAgICAgZml4RGViaXRBbW91bnQ6IG51bWJlcjtcbiAgICAgICAgZnJvbVB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICAgICAgICBpc0Nob2ljZVJlcGFpbWVudDogYm9vbGVhbjtcbiAgICAgICAgdG9QdXJjaGFzZURhdGU6IHN0cmluZztcbiAgICAgICAgdG90YWxCYXNrZXRBbW91bnQ6IG51bWJlcjtcbiAgICAgICAgdG90YWxEZWJpdHM6IHtcbiAgICAgICAgICBjdXJyZW5jeVN5bWJvbDogQ3VycmVuY3lTeW1ib2w7XG4gICAgICAgICAgYW1vdW50OiBudW1iZXI7XG4gICAgICAgIH1bXTtcbiAgICAgICAgdHJhbnNhY3Rpb25zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgICAgIH1bXTtcbiAgICAgIGltbWlkaWF0ZURlYml0czogeyB0b3RhbERlYml0czogW10sIGRlYml0RGF5czogW10gfTtcbiAgICB9W107XG4gICAgYmxvY2tlZENhcmRJbmQ6IGJvb2xlYW47XG4gIH07XG4gIHN0YXR1c0NvZGU6IDE7XG4gIHN0YXR1c0Rlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHN0YXR1c1RpdGxlOiBzdHJpbmc7XG59XG5cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TG9naW5GcmFtZShwYWdlOiBQYWdlKSB7XG4gIGxldCBmcmFtZTogRnJhbWUgfCBudWxsID0gbnVsbDtcbiAgZGVidWcoJ3dhaXQgdW50aWwgbG9naW4gZnJhbWUgZm91bmQnKTtcbiAgYXdhaXQgd2FpdFVudGlsKCgpID0+IHtcbiAgICBmcmFtZSA9IHBhZ2VcbiAgICAgIC5mcmFtZXMoKVxuICAgICAgLmZpbmQoKGYpID0+IGYudXJsKCkuaW5jbHVkZXMoJ2NhbGNvbm5lY3QnKSkgfHwgbnVsbDtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEhZnJhbWUpO1xuICB9LCAnd2FpdCBmb3IgaWZyYW1lIHdpdGggbG9naW4gZm9ybScsIDEwMDAwLCAxMDAwKTtcblxuICBpZiAoIWZyYW1lKSB7XG4gICAgZGVidWcoJ2ZhaWxlZCB0byBmaW5kIGxvZ2luIGZyYW1lIGZvciAxMCBzZWNvbmRzJyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gZXh0cmFjdCBsb2dpbiBpZnJhbWUnKTtcbiAgfVxuXG4gIHJldHVybiBmcmFtZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IocGFnZTogUGFnZSkge1xuICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUocGFnZSk7XG4gIGNvbnN0IGVycm9yRm91bmQgPSBhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZShmcmFtZSwgJ2Rpdi5nZW5lcmFsLWVycm9yID4gZGl2Jyk7XG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yRm91bmQgPyBhd2FpdCBwYWdlRXZhbChmcmFtZSwgJ2Rpdi5nZW5lcmFsLWVycm9yID4gZGl2JywgJycsIChpdGVtKSA9PiB7XG4gICAgcmV0dXJuIChpdGVtIGFzIEhUTUxEaXZFbGVtZW50KS5pbm5lclRleHQ7XG4gIH0pIDogJyc7XG4gIHJldHVybiBlcnJvck1lc3NhZ2UgPT09IEludmFsaWRQYXNzd29yZE1lc3NhZ2U7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCkge1xuICBkZWJ1ZygncmV0dXJuIHBvc3NpYmxlIGxvZ2luIHJlc3VsdHMnKTtcbiAgY29uc3QgdXJsczogTG9naW5PcHRpb25zWydwb3NzaWJsZVJlc3VsdHMnXSA9IHtcbiAgICBbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdOiBbL2Rhc2hib2FyZC9pXSxcbiAgICBbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF06IFthc3luYyAob3B0aW9ucz86IHsgcGFnZT86IFBhZ2UgfSkgPT4ge1xuICAgICAgY29uc3QgcGFnZSA9IG9wdGlvbnM/LnBhZ2U7XG4gICAgICBpZiAoIXBhZ2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc0ludmFsaWRQYXNzd29yZEVycm9yKHBhZ2UpO1xuICAgIH1dLFxuICAgIC8vIFtMb2dpblJlc3VsdHMuQWNjb3VudEJsb2NrZWRdOiBbXSwgLy8gVE9ETyBhZGQgd2hlbiByZWFjaGluZyB0aGlzIHNjZW5hcmlvXG4gICAgLy8gW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFtdLCAvLyBUT0RPIGFkZCB3aGVuIHJlYWNoaW5nIHRoaXMgc2NlbmFyaW9cbiAgfTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICBkZWJ1ZygnY3JlYXRlIGxvZ2luIGZpZWxkcyBmb3IgdXNlcm5hbWUgYW5kIHBhc3N3b3JkJyk7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJ1tmb3JtY29udHJvbG5hbWU9XCJ1c2VyTmFtZVwiXScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICdbZm9ybWNvbnRyb2xuYW1lPVwicGFzc3dvcmRcIl0nLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyhwYXJzZWREYXRhOiBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzW10pOiBUcmFuc2FjdGlvbltdIHtcbiAgcmV0dXJuIHBhcnNlZERhdGFcbiAgICAuZmxhdE1hcCgobW9udGhEYXRhKSA9PiBtb250aERhdGEucmVzdWx0LmJhbmtBY2NvdW50cylcbiAgICAuZmxhdE1hcCgoYWNjb3VudHMpID0+IGFjY291bnRzLmRlYml0RGF0ZXMpXG4gICAgLmZsYXRNYXAoKGRlYml0RGF0ZSkgPT4gZGViaXREYXRlLnRyYW5zYWN0aW9ucylcbiAgICAubWFwKCh0cmFuc2FjdGlvbikgPT4ge1xuICAgICAgY29uc3QgaW5zdGFsbG1lbnRzID0gKHRyYW5zYWN0aW9uLmN1clBheW1lbnROdW0gJiYgdHJhbnNhY3Rpb24ubnVtT2ZQYXltZW50cyAmJlxuICAgICAge1xuICAgICAgICBudW1iZXI6IHRyYW5zYWN0aW9uLmN1clBheW1lbnROdW0sXG4gICAgICAgIHRvdGFsOiB0cmFuc2FjdGlvbi5udW1PZlBheW1lbnRzLFxuICAgICAgfSkgfHxcbiAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KHRyYW5zYWN0aW9uLnRyblB1cmNoYXNlRGF0ZSk7XG5cbiAgICAgIGxldCBjaGFyZ2VkQW1vdW50ID0gdHJhbnNhY3Rpb24uYW10QmVmb3JlQ29udkFuZEluZGV4ICogKC0xKTtcbiAgICAgIGxldCBvcmlnaW5hbEFtb3VudCA9IHRyYW5zYWN0aW9uLnRybkFtdCAqICgtMSk7XG5cbiAgICAgIGlmICh0cmFuc2FjdGlvbi50cm5UeXBlQ29kZSA9PT0gdHJuVHlwZUNvZGUuY3JlZGl0KSB7XG4gICAgICAgIGNoYXJnZWRBbW91bnQgPSB0cmFuc2FjdGlvbi5hbXRCZWZvcmVDb252QW5kSW5kZXg7XG4gICAgICAgIG9yaWdpbmFsQW1vdW50ID0gdHJhbnNhY3Rpb24udHJuQW10O1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgICBjaGFyZ2VkQW1vdW50LFxuICAgICAgICBkZXNjcmlwdGlvbjogdHJhbnNhY3Rpb24ubWVyY2hhbnROYW1lLFxuICAgICAgICBvcmlnaW5hbEFtb3VudCxcbiAgICAgICAgb3JpZ2luYWxDdXJyZW5jeTogdHJhbnNhY3Rpb24udHJuQ3VycmVuY3lTeW1ib2wsXG4gICAgICAgIHByb2Nlc3NlZERhdGU6IHRyYW5zYWN0aW9uLmRlYkNyZERhdGUsXG4gICAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICAgIGRhdGU6IGluc3RhbGxtZW50cyA/XG4gICAgICAgICAgZGF0ZS5hZGQoaW5zdGFsbG1lbnRzLm51bWJlciAtIDEsICdtb250aCcpLnRvSVNPU3RyaW5nKCkgOlxuICAgICAgICAgIGRhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgICAgdHlwZTogW3RyblR5cGVDb2RlLnJlZ3VsYXIsIHRyblR5cGVDb2RlLnN0YW5kaW5nT3JkZXJdLmluY2x1ZGVzKHRyYW5zYWN0aW9uLnRyblR5cGVDb2RlKSA/XG4gICAgICAgICAgVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwgOlxuICAgICAgICAgIFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzLFxuICAgICAgfTtcblxuICAgICAgaWYgKGluc3RhbGxtZW50cykge1xuICAgICAgICByZXN1bHQuaW5zdGFsbG1lbnRzID0gaW5zdGFsbG1lbnRzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIFZpc2FDYWxTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBvcGVuTG9naW5Qb3B1cCA9IGFzeW5jICgpID0+IHtcbiAgICBkZWJ1Zygnb3BlbiBsb2dpbiBwb3B1cCwgd2FpdCB1bnRpbCBsb2dpbiBidXR0b24gYXZhaWxhYmxlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicsIHRydWUpO1xuICAgIGRlYnVnKCdjbGljayBvbiB0aGUgbG9naW4gYnV0dG9uJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2NjTG9naW5EZXNrdG9wQnRuJyk7XG4gICAgZGVidWcoJ2dldCB0aGUgZnJhbWUgdGhhdCBob2xkcyB0aGUgbG9naW4nKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUodGhpcy5wYWdlKTtcbiAgICBkZWJ1Zygnd2FpdCB1bnRpbCB0aGUgcGFzc3dvcmQgbG9naW4gdGFiIGhlYWRlciBpcyBhdmFpbGFibGUnKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQoZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCduYXZpZ2F0ZSB0byB0aGUgcGFzc3dvcmQgbG9naW4gdGFiJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24oZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCd3YWl0IHVudGlsIHRoZSBwYXNzd29yZCBsb2dpbiB0YWIgaXMgYWN0aXZlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKGZyYW1lLCAncmVndWxhci1sb2dpbicpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9O1xuXG4gIGFzeW5jIGdldENhcmRzKCkge1xuICAgIGNvbnN0IGluaXREYXRhID0gYXdhaXQgZ2V0RnJvbVNlc3Npb25TdG9yYWdlPEluaXRSZXNwb25zZT4odGhpcy5wYWdlLCAnaW5pdCcpO1xuICAgIGlmICghaW5pdERhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IGZpbmQgXFwnaW5pdFxcJyBkYXRhIGluIHNlc3Npb24gc3RvcmFnZScpO1xuICAgIH1cbiAgICByZXR1cm4gaW5pdERhdGE/LnJlc3VsdC5jYXJkcy5tYXAoKHsgY2FyZFVuaXF1ZUlkLCBsYXN0NERpZ2l0cyB9KSA9PiAoeyBjYXJkVW5pcXVlSWQsIGxhc3Q0RGlnaXRzIH0pKTtcbiAgfVxuXG4gIGFzeW5jIGdldEF1dGhvcml6YXRpb25IZWFkZXIoKSB7XG4gICAgY29uc3QgYXV0aE1vZHVsZSA9IGF3YWl0IGdldEZyb21TZXNzaW9uU3RvcmFnZTx7IGF1dGg6IHsgY2FsQ29ubmVjdFRva2VuOiBzdHJpbmcgfSB9Pih0aGlzLnBhZ2UsICdhdXRoLW1vZHVsZScpO1xuICAgIGlmICghYXV0aE1vZHVsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgZmluZCBcXCdhdXRoLW1vZHVsZVxcJyBpbiBzZXNzaW9uIHN0b3JhZ2UnKTtcbiAgICB9XG4gICAgcmV0dXJuIGBDQUxBdXRoU2NoZW1lICR7YXV0aE1vZHVsZS5hdXRoLmNhbENvbm5lY3RUb2tlbn1gO1xuICB9XG5cbiAgYXN5bmMgZ2V0WFNpdGVJZCgpIHtcbiAgICAvKlxuICAgICAgSSBkb24ndCBrbm93IGlmIHRoZSBjb25zdGFudCBiZWxvdyB3aWxsIGNoYW5nZSBpbiB0aGUgZmVhdHVyZS5cbiAgICAgIElmIHNvLCB1c2UgdGhlIG5leHQgY29kZTpcblxuICAgICAgcmV0dXJuIHRoaXMucGFnZS5ldmFsdWF0ZSgoKSA9PiBuZXcgVXQoKS54U2l0ZUlkKTtcblxuICAgICAgVG8gZ2V0IHRoZSBjbGFzc25hbWUgc2VhcmNoIGZvciAneFNpdGVJZCcgaW4gdGhlIHBhZ2Ugc291cmNlXG4gICAgICBjbGFzcyBVdCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKF9lLCBvbiwgeW4pIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUgPSBfZSxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnID0gb24sXG4gICAgICAgICAgICB0aGlzLmV2ZW50QnVzU2VydmljZSA9IHluLFxuICAgICAgICAgICAgdGhpcy54U2l0ZUlkID0gXCIwOTAzMTk4Ny0yNzNFLTIzMTEtOTA2Qy04QUY4NUIxN0M4RDlcIixcbiAgICAqL1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJzA5MDMxOTg3LTI3M0UtMjMxMS05MDZDLThBRjg1QjE3QzhEOScpO1xuICB9XG5cbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyk6IExvZ2luT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBgJHtMT0dJTl9VUkx9YCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICdidXR0b25bdHlwZT1cInN1Ym1pdFwiXScsXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4gd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicpLFxuICAgICAgcHJlQWN0aW9uOiB0aGlzLm9wZW5Mb2dpblBvcHVwLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICdidXR0b24uYnRuLWNsb3NlJyk7XG4gICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IGF3YWl0IGdldEN1cnJlbnRVcmwodGhpcy5wYWdlKTtcbiAgICAgICAgICBpZiAoY3VycmVudFVybC5lbmRzV2l0aCgnc2l0ZS10dXRvcmlhbCcpKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICdidXR0b24uYnRuLWNsb3NlJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IGF3YWl0IGdldEN1cnJlbnRVcmwodGhpcy5wYWdlKTtcbiAgICAgICAgICBpZiAoY3VycmVudFVybC5lbmRzV2l0aCgnZGFzaGJvYXJkJykpIHJldHVybjtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXNlckFnZW50OiAnTW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNzguMC4zOTA0LjEwOCBTYWZhcmkvNTM3LjM2JyxcbiAgICB9O1xuICB9XG5cbiAgaXNDYXJkVHJhbnNhY3Rpb25EZXRhaWxzKHJlc3VsdDogQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyB8IENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvcik6XG4gICAgcmVzdWx0IGlzIENhcmRUcmFuc2FjdGlvbkRldGFpbHMge1xuICAgIHJldHVybiAocmVzdWx0IGFzIENhcmRUcmFuc2FjdGlvbkRldGFpbHMpLnJlc3VsdCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuc3VidHJhY3QoNiwgJ21vbnRocycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuICAgIGRlYnVnKGBmZXRjaCB0cmFuc2FjdGlvbnMgc3RhcnRpbmcgJHtzdGFydE1vbWVudC5mb3JtYXQoKX1gKTtcblxuICAgIGNvbnN0IEF1dGhvcml6YXRpb24gPSBhd2FpdCB0aGlzLmdldEF1dGhvcml6YXRpb25IZWFkZXIoKTtcbiAgICAvLyBXYWl0IGEgbGl0dGxlIGJlZm9yZSBgdGhpcy5nZXRDYXJkc2Agc28gdGhhdCBpdCB3b3VsZCBleGlzdFxuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTtcbiAgICBjb25zdCBjYXJkcyA9IGF3YWl0IHRoaXMuZ2V0Q2FyZHMoKTtcbiAgICBjb25zdCB4U2l0ZUlkID0gYXdhaXQgdGhpcy5nZXRYU2l0ZUlkKCk7XG4gICAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSB0aGlzLm9wdGlvbnMuZnV0dXJlTW9udGhzVG9TY3JhcGUgPz8gMTtcblxuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjYXJkcy5tYXAoYXN5bmMgKGNhcmQpID0+IHtcbiAgICAgICAgZGVidWcoYGZldGNoIHRyYW5zYWN0aW9ucyBmb3IgY2FyZCAke2NhcmQuY2FyZFVuaXF1ZUlkfWApO1xuXG4gICAgICAgIGNvbnN0IGZpbmFsTW9udGhUb0ZldGNoTW9tZW50ID0gbW9tZW50KCkuYWRkKGZ1dHVyZU1vbnRoc1RvU2NyYXBlLCAnbW9udGgnKTtcbiAgICAgICAgY29uc3QgbW9udGhzID0gZmluYWxNb250aFRvRmV0Y2hNb21lbnQuZGlmZihzdGFydE1vbWVudCwgJ21vbnRocycpO1xuXG4gICAgICAgIGNvbnN0IGFsbE1vbnRoc0RhdGE6IChDYXJkVHJhbnNhY3Rpb25EZXRhaWxzKVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG1vbnRoczsgaSArPSAxKSB7XG4gICAgICAgICAgY29uc3QgbW9udGggPSBmaW5hbE1vbnRoVG9GZXRjaE1vbWVudC5jbG9uZSgpLnN1YnRyYWN0KGksICdtb250aHMnKTtcbiAgICAgICAgICBjb25zdCBtb250aERhdGEgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPENhcmRUcmFuc2FjdGlvbkRldGFpbHMgfCBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3I+KFxuICAgICAgICAgICAgdGhpcy5wYWdlLCBUUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCxcbiAgICAgICAgICAgIHsgY2FyZFVuaXF1ZUlkOiBjYXJkLmNhcmRVbmlxdWVJZCwgbW9udGg6IG1vbnRoLmZvcm1hdCgnTScpLCB5ZWFyOiBtb250aC5mb3JtYXQoJ1lZWVknKSB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBdXRob3JpemF0aW9uLFxuICAgICAgICAgICAgICAnWC1TaXRlLUlkJzogeFNpdGVJZCxcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChtb250aERhdGE/LnN0YXR1c0NvZGUgIT09IDEpIHRocm93IG5ldyBFcnJvcihgZmFpbGVkIHRvIGZldGNoIHRyYW5zYWN0aW9ucyBmb3IgY2FyZCAke2NhcmQubGFzdDREaWdpdHN9LiBNZXNzYWdlOiAke21vbnRoRGF0YT8udGl0bGUgfHwgJyd9YCk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuaXNDYXJkVHJhbnNhY3Rpb25EZXRhaWxzKG1vbnRoRGF0YSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbW9udGhEYXRhIGlzIG5vdCBvZiB0eXBlIENhcmRUcmFuc2FjdGlvbkRldGFpbHMnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhbGxNb250aHNEYXRhLnB1c2gobW9udGhEYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9ucyA9IGNvbnZlcnRQYXJzZWREYXRhVG9UcmFuc2FjdGlvbnMoYWxsTW9udGhzRGF0YSk7XG5cbiAgICAgICAgZGVidWcoJ2ZpbGVyIG91dCBvbGQgdHJhbnNhY3Rpb25zJyk7XG4gICAgICAgIGNvbnN0IHR4bnMgPSAodGhpcy5vcHRpb25zLm91dHB1dERhdGE/LmVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/PyB0cnVlKSA/XG4gICAgICAgICAgZmlsdGVyT2xkVHJhbnNhY3Rpb25zKHRyYW5zYWN0aW9ucywgbW9tZW50KHN0YXJ0RGF0ZSksIHRoaXMub3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKSA6XG4gICAgICAgICAgdHJhbnNhY3Rpb25zO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHhucyxcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiBjYXJkLmxhc3Q0RGlnaXRzLFxuICAgICAgICB9IGFzIFRyYW5zYWN0aW9uc0FjY291bnQ7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgZGVidWcoJ3JldHVybiB0aGUgc2NyYXBlZCBhY2NvdW50cycpO1xuXG4gICAgZGVidWcoSlNPTi5zdHJpbmdpZnkoYWNjb3VudHMsIG51bGwsIDIpKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlzYUNhbFNjcmFwZXI7XG4iXX0=
299
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy92aXNhLWNhbC50cyJdLCJuYW1lcyI6WyJMT0dJTl9VUkwiLCJUUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCIsIkludmFsaWRQYXNzd29yZE1lc3NhZ2UiLCJkZWJ1ZyIsInRyblR5cGVDb2RlIiwiZ2V0TG9naW5GcmFtZSIsInBhZ2UiLCJmcmFtZSIsImZyYW1lcyIsImZpbmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkVycm9yIiwiaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IiLCJlcnJvckZvdW5kIiwiZXJyb3JNZXNzYWdlIiwiaXRlbSIsImlubmVyVGV4dCIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJvcHRpb25zIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyIsInBhcnNlZERhdGEiLCJmbGF0TWFwIiwibW9udGhEYXRhIiwicmVzdWx0IiwiYmFua0FjY291bnRzIiwiYWNjb3VudHMiLCJkZWJpdERhdGVzIiwiZGViaXREYXRlIiwidHJhbnNhY3Rpb25zIiwibWFwIiwidHJhbnNhY3Rpb24iLCJpbnN0YWxsbWVudHMiLCJjdXJQYXltZW50TnVtIiwibnVtT2ZQYXltZW50cyIsIm51bWJlciIsInRvdGFsIiwidW5kZWZpbmVkIiwiZGF0ZSIsInRyblB1cmNoYXNlRGF0ZSIsImNoYXJnZWRBbW91bnQiLCJhbXRCZWZvcmVDb252QW5kSW5kZXgiLCJvcmlnaW5hbEFtb3VudCIsInRybkFtdCIsImNyZWRpdCIsImlkZW50aWZpZXIiLCJ0cm5JbnRJZCIsImRlc2NyaXB0aW9uIiwibWVyY2hhbnROYW1lIiwib3JpZ2luYWxDdXJyZW5jeSIsInRybkN1cnJlbmN5U3ltYm9sIiwicHJvY2Vzc2VkRGF0ZSIsImRlYkNyZERhdGUiLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwiYWRkIiwidG9JU09TdHJpbmciLCJ0eXBlIiwicmVndWxhciIsInN0YW5kaW5nT3JkZXIiLCJUcmFuc2FjdGlvblR5cGVzIiwiTm9ybWFsIiwiSW5zdGFsbG1lbnRzIiwibWVtbyIsInRyYW5zVHlwZUNvbW1lbnREZXRhaWxzIiwidG9TdHJpbmciLCJjYXRlZ29yeSIsImJyYW5jaENvZGVEZXNjIiwiVmlzYUNhbFNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0Q2FyZHMiLCJpbml0RGF0YSIsImNhcmRzIiwiY2FyZFVuaXF1ZUlkIiwibGFzdDREaWdpdHMiLCJnZXRBdXRob3JpemF0aW9uSGVhZGVyIiwiYXV0aE1vZHVsZSIsImF1dGgiLCJjYWxDb25uZWN0VG9rZW4iLCJnZXRYU2l0ZUlkIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInBvc3NpYmxlUmVzdWx0cyIsImNoZWNrUmVhZGluZXNzIiwicHJlQWN0aW9uIiwib3BlbkxvZ2luUG9wdXAiLCJwb3N0QWN0aW9uIiwiY3VycmVudFVybCIsImVuZHNXaXRoIiwiZSIsInVzZXJBZ2VudCIsImlzQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyIsImZldGNoRGF0YSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0Iiwic3RhcnREYXRlIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtb21lbnQiLCJtYXgiLCJmb3JtYXQiLCJBdXRob3JpemF0aW9uIiwieFNpdGVJZCIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiYWxsIiwiY2FyZCIsImZpbmFsTW9udGhUb0ZldGNoTW9tZW50IiwibW9udGhzIiwiZGlmZiIsImFsbE1vbnRoc0RhdGEiLCJpIiwibW9udGgiLCJjbG9uZSIsInllYXIiLCJzdGF0dXNDb2RlIiwidGl0bGUiLCJwdXNoIiwidHhucyIsIm91dHB1dERhdGEiLCJlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiYWNjb3VudE51bWJlciIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdWNjZXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFHQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFNQTs7Ozs7O0FBR0EsTUFBTUEsU0FBUyxHQUFHLCtCQUFsQjtBQUNBLE1BQU1DLDZCQUE2QixHQUFHLDhGQUF0QztBQUVBLE1BQU1DLHNCQUFzQixHQUFHLG1DQUEvQjtBQUVBLE1BQU1DLEtBQUssR0FBRyxxQkFBUyxVQUFULENBQWQ7SUFFS0MsVzs7V0FBQUEsVztBQUFBQSxFQUFBQSxXO0FBQUFBLEVBQUFBLFc7QUFBQUEsRUFBQUEsVztBQUFBQSxFQUFBQSxXO0dBQUFBLFcsS0FBQUEsVzs7QUFpR0wsZUFBZUMsYUFBZixDQUE2QkMsSUFBN0IsRUFBeUM7QUFDdkMsTUFBSUMsS0FBbUIsR0FBRyxJQUExQjtBQUNBSixFQUFBQSxLQUFLLENBQUMsOEJBQUQsQ0FBTDtBQUNBLFFBQU0sd0JBQVUsTUFBTTtBQUNwQkksSUFBQUEsS0FBSyxHQUFHRCxJQUFJLENBQ1RFLE1BREssR0FFTEMsSUFGSyxDQUVDQyxDQUFELElBQU9BLENBQUMsQ0FBQ0MsR0FBRixHQUFRQyxRQUFSLENBQWlCLFlBQWpCLENBRlAsS0FFMEMsSUFGbEQ7QUFHQSxXQUFPQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsQ0FBQyxDQUFDUCxLQUFsQixDQUFQO0FBQ0QsR0FMSyxFQUtILGlDQUxHLEVBS2dDLEtBTGhDLEVBS3VDLElBTHZDLENBQU47O0FBT0EsTUFBSSxDQUFDQSxLQUFMLEVBQVk7QUFDVkosSUFBQUEsS0FBSyxDQUFDLDJDQUFELENBQUw7QUFDQSxVQUFNLElBQUlZLEtBQUosQ0FBVSxnQ0FBVixDQUFOO0FBQ0Q7O0FB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TCxFQUErQztBQUM3QyxnQkFBTSxJQUFJckIsS0FBSixDQUFVLGlEQUFWLENBQU47QUFDRDs7QUFFRDhHLFFBQUFBLGFBQWEsQ0FBQ08sSUFBZCxDQUFtQmhHLFNBQW5CO0FBQ0Q7O0FBRUQsWUFBTU0sWUFBWSxHQUFHVCwrQkFBK0IsQ0FBQzRGLGFBQUQsQ0FBcEQ7QUFFQTFILE1BQUFBLEtBQUssQ0FBQyw0QkFBRCxDQUFMO0FBQ0EsWUFBTWtJLElBQUksR0FBRyxvREFBQyxLQUFLM0csT0FBTCxDQUFhNEcsVUFBZCwyREFBQyx1QkFBeUJDLDhCQUExQix5RUFBNEQsSUFBNUQsSUFDWCx5Q0FBc0I3RixZQUF0QixFQUFvQyxxQkFBT3FFLFNBQVAsQ0FBcEMsRUFBdUQsS0FBS3JGLE9BQUwsQ0FBYThHLG1CQUFiLElBQW9DLEtBQTNGLENBRFcsR0FFWDlGLFlBRkY7QUFJQSxhQUFPO0FBQ0wyRixRQUFBQSxJQURLO0FBRUxJLFFBQUFBLGFBQWEsRUFBRWhCLElBQUksQ0FBQ2pDO0FBRmYsT0FBUDtBQUlELEtBdkNELENBRHFCLENBQXZCO0FBMkNBckYsSUFBQUEsS0FBSyxDQUFDLDZCQUFELENBQUw7QUFFQUEsSUFBQUEsS0FBSyxDQUFDdUksSUFBSSxDQUFDQyxTQUFMLENBQWVwRyxRQUFmLEVBQXlCLElBQXpCLEVBQStCLENBQS9CLENBQUQsQ0FBTDtBQUNBLFdBQU87QUFDTHFHLE1BQUFBLE9BQU8sRUFBRSxJQURKO0FBRUxyRyxNQUFBQTtBQUZLLEtBQVA7QUFJRDs7QUFwSjZFOztlQXVKakUyQyxjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgRnJhbWUsIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuXG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHtcbiAgY2xpY2tCdXR0b24sIGVsZW1lbnRQcmVzZW50T25QYWdlLCBwYWdlRXZhbCwgd2FpdFVudGlsRWxlbWVudEZvdW5kLFxufSBmcm9tICcuLi9oZWxwZXJzL2VsZW1lbnRzLWludGVyYWN0aW9ucyc7XG5pbXBvcnQgeyBmZXRjaFBvc3RXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyBnZXRDdXJyZW50VXJsIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IGdldEZyb21TZXNzaW9uU3RvcmFnZSB9IGZyb20gJy4uL2hlbHBlcnMvc3RvcmFnZSc7XG5pbXBvcnQgeyBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyB3YWl0VW50aWwgfSBmcm9tICcuLi9oZWxwZXJzL3dhaXRpbmcnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uU3RhdHVzZXMsXG4gIFRyYW5zYWN0aW9uVHlwZXMsXG4gIFRyYW5zYWN0aW9uc0FjY291bnQsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBMb2dpbk9wdGlvbnMsIExvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyBTY3JhcGVyU2NyYXBpbmdSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbmNvbnN0IExPR0lOX1VSTCA9ICdodHRwczovL3d3dy5jYWwtb25saW5lLmNvLmlsLyc7XG5jb25zdCBUUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCA9ICdodHRwczovL2FwaS5jYWwtb25saW5lLmNvLmlsL1RyYW5zYWN0aW9ucy9hcGkvdHJhbnNhY3Rpb25zRGV0YWlscy9nZXRDYXJkVHJhbnNhY3Rpb25zRGV0YWlscyc7XG5cbmNvbnN0IEludmFsaWRQYXNzd29yZE1lc3NhZ2UgPSAn16nXnSDXlNee16nXqtee16kg15DXlSDXlNeh15nXodee15Qg16nXlNeV15bXoNeVINep15LXldeZ15nXnSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ3Zpc2EtY2FsJyk7XG5cbmVudW0gdHJuVHlwZUNvZGUge1xuICByZWd1bGFyID0gJzUnLFxuICBjcmVkaXQgPSAnNicsXG4gIGluc3RhbGxtZW50cyA9ICc4JyxcbiAgc3RhbmRpbmdPcmRlciA9ICc5Jyxcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIGFtdEJlZm9yZUNvbnZBbmRJbmRleDogbnVtYmVyO1xuICBicmFuY2hDb2RlRGVzYzogc3RyaW5nO1xuICBjYXNoQWNjTWFuYWdlck5hbWU6IG51bGw7XG4gIGNhc2hBY2NvdW50TWFuYWdlcjogbnVsbDtcbiAgY2FzaEFjY291bnRUcm5BbXQ6IG51bWJlcjtcbiAgY2hhcmdlRXh0ZXJuYWxUb0NhcmRDb21tZW50OiBzdHJpbmc7XG4gIGNvbW1lbnRzOiBbXTtcbiAgY3VyUGF5bWVudE51bTogbnVtYmVyO1xuICBkZWJDcmRDdXJyZW5jeVN5bWJvbDogQ3VycmVuY3lTeW1ib2w7XG4gIGRlYkNyZERhdGU6IHN0cmluZztcbiAgZGViaXRTcHJlYWRJbmQ6IGJvb2xlYW47XG4gIGRpc2NvdW50QW1vdW50OiB1bmtub3duO1xuICBkaXNjb3VudFJlYXNvbjogdW5rbm93bjtcbiAgaW1tZWRpYXRlQ29tbWVudHM6IFtdO1xuICBpc0ltbWVkaWF0ZUNvbW1lbnRJbmQ6IGJvb2xlYW47XG4gIGlzSW1tZWRpYXRlSEhLSW5kOiBib29sZWFuO1xuICBpc01hcmdhcml0YTogYm9vbGVhbjtcbiAgaXNTcHJlYWRQYXltZW5zdEFicm9hZDogYm9vbGVhbjtcbiAgbGlua2VkQ29tbWVudHM6IFtdO1xuICBtZXJjaGFudEFkZHJlc3M6IHN0cmluZztcbiAgbWVyY2hhbnROYW1lOiBzdHJpbmc7XG4gIG1lcmNoYW50UGhvbmVObzogc3RyaW5nO1xuICBudW1PZlBheW1lbnRzOiBudW1iZXI7XG4gIG9uR29pbmdUcmFuc2FjdGlvbnNDb21tZW50OiBzdHJpbmc7XG4gIHJlZnVuZEluZDogYm9vbGVhbjtcbiAgcm91bmRpbmdBbW91bnQ6IHVua25vd247XG4gIHJvdW5kaW5nUmVhc29uOiB1bmtub3duO1xuICB0b2tlbkluZDogMDtcbiAgdG9rZW5OdW1iZXJQYXJ0NDogJyc7XG4gIHRyYW5zQ2FyZFByZXNlbnRJbmQ6IGJvb2xlYW47XG4gIHRyYW5zVHlwZUNvbW1lbnREZXRhaWxzOiBbXTtcbiAgdHJuQW10OiBudW1iZXI7XG4gIHRybkN1cnJlbmN5U3ltYm9sOiBDdXJyZW5jeVN5bWJvbDtcbiAgdHJuRXhhY1dheTogbnVtYmVyO1xuICB0cm5JbnRJZDogc3RyaW5nO1xuICB0cm5OdW1hcmV0b3I6IG51bWJlcjtcbiAgdHJuUHVyY2hhc2VEYXRlOiBzdHJpbmc7XG4gIHRyblR5cGU6IHN0cmluZztcbiAgdHJuVHlwZUNvZGU6IHRyblR5cGVDb2RlO1xuICB3YWxsZXRQcm92aWRlckNvZGU6IDA7XG4gIHdhbGxldFByb3ZpZGVyRGVzYzogJyc7XG59XG5pbnRlcmZhY2UgSW5pdFJlc3BvbnNlIHtcbiAgcmVzdWx0OiB7XG4gICAgY2FyZHM6IHtcbiAgICAgIGNhcmRVbmlxdWVJZDogc3RyaW5nO1xuICAgICAgbGFzdDREaWdpdHM6IHN0cmluZztcbiAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgfVtdO1xuICB9O1xufVxudHlwZSBDdXJyZW5jeVN5bWJvbCA9ICfigqonIHwgc3RyaW5nO1xuaW50ZXJmYWNlIENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvciB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcbn1cbmludGVyZmFjZSBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzIGV4dGVuZHMgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yIHtcbiAgcmVzdWx0OiB7XG4gICAgYmFua0FjY291bnRzOiB7XG4gICAgICBiYW5rQWNjb3VudE51bTogc3RyaW5nO1xuICAgICAgYmFua05hbWU6IHN0cmluZztcbiAgICAgIGNob2ljZUV4dGVybmFsVHJhbnNhY3Rpb25zOiBhbnk7XG4gICAgICBjdXJyZW50QmFua0FjY291bnRJbmQ6IGJvb2xlYW47XG4gICAgICBkZWJpdERhdGVzOiB7XG4gICAgICAgIGJhc2tldEFtb3VudENvbW1lbnQ6IHVua25vd247XG4gICAgICAgIGNob2ljZUhIS0RlYml0OiBudW1iZXI7XG4gICAgICAgIGRhdGU6IHN0cmluZztcbiAgICAgICAgZGViaXRSZWFzb246IHVua25vd247XG4gICAgICAgIGZpeERlYml0QW1vdW50OiBudW1iZXI7XG4gICAgICAgIGZyb21QdXJjaGFzZURhdGU6IHN0cmluZztcbiAgICAgICAgaXNDaG9pY2VSZXBhaW1lbnQ6IGJvb2xlYW47XG4gICAgICAgIHRvUHVyY2hhc2VEYXRlOiBzdHJpbmc7XG4gICAgICAgIHRvdGFsQmFza2V0QW1vdW50OiBudW1iZXI7XG4gICAgICAgIHRvdGFsRGViaXRzOiB7XG4gICAgICAgICAgY3VycmVuY3lTeW1ib2w6IEN1cnJlbmN5U3ltYm9sO1xuICAgICAgICAgIGFtb3VudDogbnVtYmVyO1xuICAgICAgICB9W107XG4gICAgICAgIHRyYW5zYWN0aW9uczogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgICB9W107XG4gICAgICBpbW1pZGlhdGVEZWJpdHM6IHsgdG90YWxEZWJpdHM6IFtdLCBkZWJpdERheXM6IFtdIH07XG4gICAgfVtdO1xuICAgIGJsb2NrZWRDYXJkSW5kOiBib29sZWFuO1xuICB9O1xuICBzdGF0dXNDb2RlOiAxO1xuICBzdGF0dXNEZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXNUaXRsZTogc3RyaW5nO1xufVxuXG5cbmFzeW5jIGZ1bmN0aW9uIGdldExvZ2luRnJhbWUocGFnZTogUGFnZSkge1xuICBsZXQgZnJhbWU6IEZyYW1lIHwgbnVsbCA9IG51bGw7XG4gIGRlYnVnKCd3YWl0IHVudGlsIGxvZ2luIGZyYW1lIGZvdW5kJyk7XG4gIGF3YWl0IHdhaXRVbnRpbCgoKSA9PiB7XG4gICAgZnJhbWUgPSBwYWdlXG4gICAgICAuZnJhbWVzKClcbiAgICAgIC5maW5kKChmKSA9PiBmLnVybCgpLmluY2x1ZGVzKCdjYWxjb25uZWN0JykpIHx8IG51bGw7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSghIWZyYW1lKTtcbiAgfSwgJ3dhaXQgZm9yIGlmcmFtZSB3aXRoIGxvZ2luIGZvcm0nLCAxMDAwMCwgMTAwMCk7XG5cbiAgaWYgKCFmcmFtZSkge1xuICAgIGRlYnVnKCdmYWlsZWQgdG8gZmluZCBsb2dpbiBmcmFtZSBmb3IgMTAgc2Vjb25kcycpO1xuICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGV4dHJhY3QgbG9naW4gaWZyYW1lJyk7XG4gIH1cblxuICByZXR1cm4gZnJhbWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhc0ludmFsaWRQYXNzd29yZEVycm9yKHBhZ2U6IFBhZ2UpIHtcbiAgY29uc3QgZnJhbWUgPSBhd2FpdCBnZXRMb2dpbkZyYW1lKHBhZ2UpO1xuICBjb25zdCBlcnJvckZvdW5kID0gYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UoZnJhbWUsICdkaXYuZ2VuZXJhbC1lcnJvciA+IGRpdicpO1xuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvckZvdW5kID8gYXdhaXQgcGFnZUV2YWwoZnJhbWUsICdkaXYuZ2VuZXJhbC1lcnJvciA+IGRpdicsICcnLCAoaXRlbSkgPT4ge1xuICAgIHJldHVybiAoaXRlbSBhcyBIVE1MRGl2RWxlbWVudCkuaW5uZXJUZXh0O1xuICB9KSA6ICcnO1xuICByZXR1cm4gZXJyb3JNZXNzYWdlID09PSBJbnZhbGlkUGFzc3dvcmRNZXNzYWdlO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpIHtcbiAgZGVidWcoJ3JldHVybiBwb3NzaWJsZSBsb2dpbiByZXN1bHRzJyk7XG4gIGNvbnN0IHVybHM6IExvZ2luT3B0aW9uc1sncG9zc2libGVSZXN1bHRzJ10gPSB7XG4gICAgW0xvZ2luUmVzdWx0cy5TdWNjZXNzXTogWy9kYXNoYm9hcmQvaV0sXG4gICAgW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdOiBbYXN5bmMgKG9wdGlvbnM/OiB7IHBhZ2U/OiBQYWdlIH0pID0+IHtcbiAgICAgIGNvbnN0IHBhZ2UgPSBvcHRpb25zPy5wYWdlO1xuICAgICAgaWYgKCFwYWdlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNJbnZhbGlkUGFzc3dvcmRFcnJvcihwYWdlKTtcbiAgICB9XSxcbiAgICAvLyBbTG9naW5SZXN1bHRzLkFjY291bnRCbG9ja2VkXTogW10sIC8vIFRPRE8gYWRkIHdoZW4gcmVhY2hpbmcgdGhpcyBzY2VuYXJpb1xuICAgIC8vIFtMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdOiBbXSwgLy8gVE9ETyBhZGQgd2hlbiByZWFjaGluZyB0aGlzIHNjZW5hcmlvXG4gIH07XG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgZGVidWcoJ2NyZWF0ZSBsb2dpbiBmaWVsZHMgZm9yIHVzZXJuYW1lIGFuZCBwYXNzd29yZCcpO1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICdbZm9ybWNvbnRyb2xuYW1lPVwidXNlck5hbWVcIl0nLCB2YWx1ZTogY3JlZGVudGlhbHMudXNlcm5hbWUgfSxcbiAgICB7IHNlbGVjdG9yOiAnW2Zvcm1jb250cm9sbmFtZT1cInBhc3N3b3JkXCJdJywgdmFsdWU6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRQYXJzZWREYXRhVG9UcmFuc2FjdGlvbnMocGFyc2VkRGF0YTogQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc1tdKTogVHJhbnNhY3Rpb25bXSB7XG4gIHJldHVybiBwYXJzZWREYXRhXG4gICAgLmZsYXRNYXAoKG1vbnRoRGF0YSkgPT4gbW9udGhEYXRhLnJlc3VsdC5iYW5rQWNjb3VudHMpXG4gICAgLmZsYXRNYXAoKGFjY291bnRzKSA9PiBhY2NvdW50cy5kZWJpdERhdGVzKVxuICAgIC5mbGF0TWFwKChkZWJpdERhdGUpID0+IGRlYml0RGF0ZS50cmFuc2FjdGlvbnMpXG4gICAgLm1hcCgodHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIGNvbnN0IGluc3RhbGxtZW50cyA9ICh0cmFuc2FjdGlvbi5jdXJQYXltZW50TnVtICYmIHRyYW5zYWN0aW9uLm51bU9mUGF5bWVudHMgJiZcbiAgICAgIHtcbiAgICAgICAgbnVtYmVyOiB0cmFuc2FjdGlvbi5jdXJQYXltZW50TnVtLFxuICAgICAgICB0b3RhbDogdHJhbnNhY3Rpb24ubnVtT2ZQYXltZW50cyxcbiAgICAgIH0pIHx8XG4gICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudCh0cmFuc2FjdGlvbi50cm5QdXJjaGFzZURhdGUpO1xuXG4gICAgICBsZXQgY2hhcmdlZEFtb3VudCA9IHRyYW5zYWN0aW9uLmFtdEJlZm9yZUNvbnZBbmRJbmRleCAqICgtMSk7XG4gICAgICBsZXQgb3JpZ2luYWxBbW91bnQgPSB0cmFuc2FjdGlvbi50cm5BbXQgKiAoLTEpO1xuXG4gICAgICBpZiAodHJhbnNhY3Rpb24udHJuVHlwZUNvZGUgPT09IHRyblR5cGVDb2RlLmNyZWRpdCkge1xuICAgICAgICBjaGFyZ2VkQW1vdW50ID0gdHJhbnNhY3Rpb24uYW10QmVmb3JlQ29udkFuZEluZGV4O1xuICAgICAgICBvcmlnaW5hbEFtb3VudCA9IHRyYW5zYWN0aW9uLnRybkFtdDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0OiBUcmFuc2FjdGlvbiA9IHtcbiAgICAgICAgY2hhcmdlZEFtb3VudCxcbiAgICAgICAgaWRlbnRpZmllcjogdHJhbnNhY3Rpb24udHJuSW50SWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0cmFuc2FjdGlvbi5tZXJjaGFudE5hbWUsXG4gICAgICAgIG9yaWdpbmFsQW1vdW50LFxuICAgICAgICBvcmlnaW5hbEN1cnJlbmN5OiB0cmFuc2FjdGlvbi50cm5DdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgcHJvY2Vzc2VkRGF0ZTogdHJhbnNhY3Rpb24uZGViQ3JkRGF0ZSxcbiAgICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICAgICAgZGF0ZTogaW5zdGFsbG1lbnRzID9cbiAgICAgICAgICBkYXRlLmFkZChpbnN0YWxsbWVudHMubnVtYmVyIC0gMSwgJ21vbnRoJykudG9JU09TdHJpbmcoKSA6XG4gICAgICAgICAgZGF0ZS50b0lTT1N0cmluZygpLFxuICAgICAgICB0eXBlOiBbdHJuVHlwZUNvZGUucmVndWxhciwgdHJuVHlwZUNvZGUuc3RhbmRpbmdPcmRlcl0uaW5jbHVkZXModHJhbnNhY3Rpb24udHJuVHlwZUNvZGUpID9cbiAgICAgICAgICBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCA6XG4gICAgICAgICAgVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHMsXG4gICAgICAgIG1lbW86IHRyYW5zYWN0aW9uLnRyYW5zVHlwZUNvbW1lbnREZXRhaWxzLnRvU3RyaW5nKCkgfHwgdW5kZWZpbmVkLFxuICAgICAgICBjYXRlZ29yeTogdHJhbnNhY3Rpb24uYnJhbmNoQ29kZURlc2MsXG4gICAgICB9O1xuXG4gICAgICBpZiAoaW5zdGFsbG1lbnRzKSB7XG4gICAgICAgIHJlc3VsdC5pbnN0YWxsbWVudHMgPSBpbnN0YWxsbWVudHM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcgfTtcblxuY2xhc3MgVmlzYUNhbFNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIG9wZW5Mb2dpblBvcHVwID0gYXN5bmMgKCkgPT4ge1xuICAgIGRlYnVnKCdvcGVuIGxvZ2luIHBvcHVwLCB3YWl0IHVudGlsIGxvZ2luIGJ1dHRvbiBhdmFpbGFibGUnKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2NjTG9naW5EZXNrdG9wQnRuJywgdHJ1ZSk7XG4gICAgZGVidWcoJ2NsaWNrIG9uIHRoZSBsb2dpbiBidXR0b24nKTtcbiAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcjY2NMb2dpbkRlc2t0b3BCdG4nKTtcbiAgICBkZWJ1ZygnZ2V0IHRoZSBmcmFtZSB0aGF0IGhvbGRzIHRoZSBsb2dpbicpO1xuICAgIGNvbnN0IGZyYW1lID0gYXdhaXQgZ2V0TG9naW5GcmFtZSh0aGlzLnBhZ2UpO1xuICAgIGRlYnVnKCd3YWl0IHVudGlsIHRoZSBwYXNzd29yZCBsb2dpbiB0YWIgaGVhZGVyIGlzIGF2YWlsYWJsZScpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChmcmFtZSwgJyNyZWd1bGFyLWxvZ2luJyk7XG4gICAgZGVidWcoJ25hdmlnYXRlIHRvIHRoZSBwYXNzd29yZCBsb2dpbiB0YWInKTtcbiAgICBhd2FpdCBjbGlja0J1dHRvbihmcmFtZSwgJyNyZWd1bGFyLWxvZ2luJyk7XG4gICAgZGVidWcoJ3dhaXQgdW50aWwgdGhlIHBhc3N3b3JkIGxvZ2luIHRhYiBpcyBhY3RpdmUnKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQoZnJhbWUsICdyZWd1bGFyLWxvZ2luJyk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH07XG5cbiAgYXN5bmMgZ2V0Q2FyZHMoKSB7XG4gICAgY29uc3QgaW5pdERhdGEgPSBhd2FpdCB3YWl0VW50aWwoXG4gICAgICAoKSA9PiBnZXRGcm9tU2Vzc2lvblN0b3JhZ2U8SW5pdFJlc3BvbnNlPih0aGlzLnBhZ2UsICdpbml0JyksXG4gICAgICAnZ2V0IGluaXQgZGF0YSBpbiBzZXNzaW9uIHN0b3JhZ2UnLFxuICAgICAgMTAwMDAsXG4gICAgICAxMDAwLFxuICAgICk7XG4gICAgaWYgKCFpbml0RGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgZmluZCBcXCdpbml0XFwnIGRhdGEgaW4gc2Vzc2lvbiBzdG9yYWdlJyk7XG4gICAgfVxuICAgIHJldHVybiBpbml0RGF0YT8ucmVzdWx0LmNhcmRzLm1hcCgoeyBjYXJkVW5pcXVlSWQsIGxhc3Q0RGlnaXRzIH0pID0+ICh7IGNhcmRVbmlxdWVJZCwgbGFzdDREaWdpdHMgfSkpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QXV0aG9yaXphdGlvbkhlYWRlcigpIHtcbiAgICBjb25zdCBhdXRoTW9kdWxlID0gYXdhaXQgZ2V0RnJvbVNlc3Npb25TdG9yYWdlPHsgYXV0aDogeyBjYWxDb25uZWN0VG9rZW46IHN0cmluZyB9IH0+KHRoaXMucGFnZSwgJ2F1dGgtbW9kdWxlJyk7XG4gICAgaWYgKCFhdXRoTW9kdWxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCBmaW5kIFxcJ2F1dGgtbW9kdWxlXFwnIGluIHNlc3Npb24gc3RvcmFnZScpO1xuICAgIH1cbiAgICByZXR1cm4gYENBTEF1dGhTY2hlbWUgJHthdXRoTW9kdWxlLmF1dGguY2FsQ29ubmVjdFRva2VufWA7XG4gIH1cblxuICBhc3luYyBnZXRYU2l0ZUlkKCkge1xuICAgIC8qXG4gICAgICBJIGRvbid0IGtub3cgaWYgdGhlIGNvbnN0YW50IGJlbG93IHdpbGwgY2hhbmdlIGluIHRoZSBmZWF0dXJlLlxuICAgICAgSWYgc28sIHVzZSB0aGUgbmV4dCBjb2RlOlxuXG4gICAgICByZXR1cm4gdGhpcy5wYWdlLmV2YWx1YXRlKCgpID0+IG5ldyBVdCgpLnhTaXRlSWQpO1xuXG4gICAgICBUbyBnZXQgdGhlIGNsYXNzbmFtZSBzZWFyY2ggZm9yICd4U2l0ZUlkJyBpbiB0aGUgcGFnZSBzb3VyY2VcbiAgICAgIGNsYXNzIFV0IHtcbiAgICAgICAgY29uc3RydWN0b3IoX2UsIG9uLCB5bikge1xuICAgICAgICAgICAgdGhpcy5zdG9yZSA9IF9lLFxuICAgICAgICAgICAgdGhpcy5jb25maWcgPSBvbixcbiAgICAgICAgICAgIHRoaXMuZXZlbnRCdXNTZXJ2aWNlID0geW4sXG4gICAgICAgICAgICB0aGlzLnhTaXRlSWQgPSBcIjA5MDMxOTg3LTI3M0UtMjMxMS05MDZDLThBRjg1QjE3QzhEOVwiLFxuICAgICovXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgnMDkwMzE5ODctMjczRS0yMzExLTkwNkMtOEFGODVCMTdDOEQ5Jyk7XG4gIH1cblxuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKTogTG9naW5PcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IGAke0xPR0lOX1VSTH1gLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJ2J1dHRvblt0eXBlPVwic3VibWl0XCJdJyxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKSxcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2NjTG9naW5EZXNrdG9wQnRuJyksXG4gICAgICBwcmVBY3Rpb246IHRoaXMub3BlbkxvZ2luUG9wdXAsXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJ2J1dHRvbi5idG4tY2xvc2UnKTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50VXJsID0gYXdhaXQgZ2V0Q3VycmVudFVybCh0aGlzLnBhZ2UpO1xuICAgICAgICAgIGlmIChjdXJyZW50VXJsLmVuZHNXaXRoKCdzaXRlLXR1dG9yaWFsJykpIHtcbiAgICAgICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJ2J1dHRvbi5idG4tY2xvc2UnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50VXJsID0gYXdhaXQgZ2V0Q3VycmVudFVybCh0aGlzLnBhZ2UpO1xuICAgICAgICAgIGlmIChjdXJyZW50VXJsLmVuZHNXaXRoKCdkYXNoYm9hcmQnKSkgcmV0dXJuO1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1c2VyQWdlbnQ6ICdNb3ppbGxhLzUuMCAoWDExOyBMaW51eCB4ODZfNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS83OC4wLjM5MDQuMTA4IFNhZmFyaS81MzcuMzYnLFxuICAgIH07XG4gIH1cblxuICBpc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMocmVzdWx0OiBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzIHwgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yKTpcbiAgICByZXN1bHQgaXMgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyB7XG4gICAgcmV0dXJuIChyZXN1bHQgYXMgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscykucmVzdWx0ICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKS5zdWJ0cmFjdCg2LCAnbW9udGhzJykuYWRkKDEsICdkYXknKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG4gICAgZGVidWcoYGZldGNoIHRyYW5zYWN0aW9ucyBzdGFydGluZyAke3N0YXJ0TW9tZW50LmZvcm1hdCgpfWApO1xuXG4gICAgY29uc3QgQXV0aG9yaXphdGlvbiA9IGF3YWl0IHRoaXMuZ2V0QXV0aG9yaXphdGlvbkhlYWRlcigpO1xuICAgIGNvbnN0IGNhcmRzID0gYXdhaXQgdGhpcy5nZXRDYXJkcygpO1xuICAgIGNvbnN0IHhTaXRlSWQgPSBhd2FpdCB0aGlzLmdldFhTaXRlSWQoKTtcbiAgICBjb25zdCBmdXR1cmVNb250aHNUb1NjcmFwZSA9IHRoaXMub3B0aW9ucy5mdXR1cmVNb250aHNUb1NjcmFwZSA/PyAxO1xuXG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGNhcmRzLm1hcChhc3luYyAoY2FyZCkgPT4ge1xuICAgICAgICBkZWJ1ZyhgZmV0Y2ggdHJhbnNhY3Rpb25zIGZvciBjYXJkICR7Y2FyZC5jYXJkVW5pcXVlSWR9YCk7XG5cbiAgICAgICAgY29uc3QgZmluYWxNb250aFRvRmV0Y2hNb21lbnQgPSBtb21lbnQoKS5hZGQoZnV0dXJlTW9udGhzVG9TY3JhcGUsICdtb250aCcpO1xuICAgICAgICBjb25zdCBtb250aHMgPSBmaW5hbE1vbnRoVG9GZXRjaE1vbWVudC5kaWZmKHN0YXJ0TW9tZW50LCAnbW9udGhzJyk7XG5cbiAgICAgICAgY29uc3QgYWxsTW9udGhzRGF0YTogKENhcmRUcmFuc2FjdGlvbkRldGFpbHMpW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gbW9udGhzOyBpICs9IDEpIHtcbiAgICAgICAgICBjb25zdCBtb250aCA9IGZpbmFsTW9udGhUb0ZldGNoTW9tZW50LmNsb25lKCkuc3VidHJhY3QoaSwgJ21vbnRocycpO1xuICAgICAgICAgIGNvbnN0IG1vbnRoRGF0YSA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8Q2FyZFRyYW5zYWN0aW9uRGV0YWlscyB8IENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvcj4oXG4gICAgICAgICAgICB0aGlzLnBhZ2UsIFRSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5ULFxuICAgICAgICAgICAgeyBjYXJkVW5pcXVlSWQ6IGNhcmQuY2FyZFVuaXF1ZUlkLCBtb250aDogbW9udGguZm9ybWF0KCdNJyksIHllYXI6IG1vbnRoLmZvcm1hdCgnWVlZWScpIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEF1dGhvcml6YXRpb24sXG4gICAgICAgICAgICAgICdYLVNpdGUtSWQnOiB4U2l0ZUlkLFxuICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKG1vbnRoRGF0YT8uc3RhdHVzQ29kZSAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKGBmYWlsZWQgdG8gZmV0Y2ggdHJhbnNhY3Rpb25zIGZvciBjYXJkICR7Y2FyZC5sYXN0NERpZ2l0c30uIE1lc3NhZ2U6ICR7bW9udGhEYXRhPy50aXRsZSB8fCAnJ31gKTtcblxuICAgICAgICAgIGlmICghdGhpcy5pc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMobW9udGhEYXRhKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtb250aERhdGEgaXMgbm90IG9mIHR5cGUgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscycpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFsbE1vbnRoc0RhdGEucHVzaChtb250aERhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25zID0gY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyhhbGxNb250aHNEYXRhKTtcblxuICAgICAgICBkZWJ1ZygnZmlsZXIgb3V0IG9sZCB0cmFuc2FjdGlvbnMnKTtcbiAgICAgICAgY29uc3QgdHhucyA9ICh0aGlzLm9wdGlvbnMub3V0cHV0RGF0YT8uZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlID8/IHRydWUpID9cbiAgICAgICAgICBmaWx0ZXJPbGRUcmFuc2FjdGlvbnModHJhbnNhY3Rpb25zLCBtb21lbnQoc3RhcnREYXRlKSwgdGhpcy5vcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMgfHwgZmFsc2UpIDpcbiAgICAgICAgICB0cmFuc2FjdGlvbnM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eG5zLFxuICAgICAgICAgIGFjY291bnROdW1iZXI6IGNhcmQubGFzdDREaWdpdHMsXG4gICAgICAgIH0gYXMgVHJhbnNhY3Rpb25zQWNjb3VudDtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBkZWJ1ZygncmV0dXJuIHRoZSBzY3JhcGVkIGFjY291bnRzJyk7XG5cbiAgICBkZWJ1ZyhKU09OLnN0cmluZ2lmeShhY2NvdW50cywgbnVsbCwgMikpO1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHMsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBWaXNhQ2FsU2NyYXBlcjtcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "israeli-bank-scrapers",
3
- "version": "3.8.1",
3
+ "version": "3.10.0",
4
4
  "private": false,
5
5
  "description": "Provide scrapers for all major Israeli banks and credit card companies",
6
6
  "engines": {