israeli-bank-scrapers 3.10.0 → 3.10.2
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.
- package/lib/scrapers/hapoalim.js +47 -5
- package/lib/scrapers/visa-cal.js +9 -8
- package/package.json +1 -1
package/lib/scrapers/hapoalim.js
CHANGED
|
@@ -27,6 +27,12 @@ var _debug = require("../helpers/debug");
|
|
|
27
27
|
|
|
28
28
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
29
|
|
|
30
|
+
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; }
|
|
31
|
+
|
|
32
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
33
|
+
|
|
34
|
+
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; }
|
|
35
|
+
|
|
30
36
|
const debug = (0, _debug.getDebug)('hapoalim');
|
|
31
37
|
const DATE_FORMAT = 'YYYYMMDD'; // eslint-disable-next-line @typescript-eslint/no-namespace
|
|
32
38
|
|
|
@@ -106,12 +112,45 @@ async function fetchPoalimXSRFWithinPage(page, url, pageUuid) {
|
|
|
106
112
|
return (0, _fetch.fetchPostWithinPage)(page, url, [], headers);
|
|
107
113
|
}
|
|
108
114
|
|
|
109
|
-
async function
|
|
110
|
-
|
|
115
|
+
async function getExtraScrap(txnsResult, baseUrl, page, accountNumber) {
|
|
116
|
+
const promises = txnsResult.transactions.map(async transaction => {
|
|
117
|
+
const {
|
|
118
|
+
pfmDetails,
|
|
119
|
+
serialNumber
|
|
120
|
+
} = transaction;
|
|
121
|
+
|
|
122
|
+
if (serialNumber !== 0) {
|
|
123
|
+
const url = `${baseUrl}${pfmDetails}&accountId=${accountNumber}&lang=he`;
|
|
124
|
+
const extraTransactionDetails = (await (0, _fetch.fetchGetWithinPage)(page, url)) || [];
|
|
125
|
+
|
|
126
|
+
if (extraTransactionDetails && extraTransactionDetails.length) {
|
|
127
|
+
const {
|
|
128
|
+
transactionNumber
|
|
129
|
+
} = extraTransactionDetails[0];
|
|
130
|
+
|
|
131
|
+
if (transactionNumber) {
|
|
132
|
+
return _objectSpread({}, transaction, {
|
|
133
|
+
referenceNumber: transactionNumber
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return transaction;
|
|
140
|
+
});
|
|
141
|
+
const res = await Promise.all(promises);
|
|
142
|
+
return {
|
|
143
|
+
transactions: res
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
async function getAccountTransactions(baseUrl, apiSiteUrl, page, accountNumber, startDate, endDate, additionalTransactionInformation = false) {
|
|
148
|
+
var _finalResult$transact;
|
|
111
149
|
|
|
112
150
|
const txnsUrl = `${apiSiteUrl}/current-account/transactions?accountId=${accountNumber}&numItemsPerPage=1000&retrievalEndDate=${endDate}&retrievalStartDate=${startDate}&sortCode=1`;
|
|
113
151
|
const txnsResult = await fetchPoalimXSRFWithinPage(page, txnsUrl, '/current-account/transactions');
|
|
114
|
-
|
|
152
|
+
const finalResult = additionalTransactionInformation && (txnsResult === null || txnsResult === void 0 ? void 0 : txnsResult.transactions.length) ? await getExtraScrap(txnsResult, baseUrl, page, accountNumber) : txnsResult;
|
|
153
|
+
return convertTransactions((_finalResult$transact = finalResult === null || finalResult === void 0 ? void 0 : finalResult.transactions) !== null && _finalResult$transact !== void 0 ? _finalResult$transact : []);
|
|
115
154
|
}
|
|
116
155
|
|
|
117
156
|
async function getAccountBalance(apiSiteUrl, page, accountNumber) {
|
|
@@ -132,6 +171,9 @@ async function fetchAccountData(page, baseUrl, options) {
|
|
|
132
171
|
|
|
133
172
|
const startMoment = _moment.default.max(defaultStartMoment, (0, _moment.default)(startDate));
|
|
134
173
|
|
|
174
|
+
const {
|
|
175
|
+
additionalTransactionInformation
|
|
176
|
+
} = options;
|
|
135
177
|
const startDateStr = startMoment.format(DATE_FORMAT);
|
|
136
178
|
const endDateStr = (0, _moment.default)().format(DATE_FORMAT);
|
|
137
179
|
const accounts = [];
|
|
@@ -147,7 +189,7 @@ async function fetchAccountData(page, baseUrl, options) {
|
|
|
147
189
|
debug('Skipping balance for a closed account, balance will be undefined');
|
|
148
190
|
}
|
|
149
191
|
|
|
150
|
-
const txns = await getAccountTransactions(apiSiteUrl, page, accountNumber, startDateStr, endDateStr);
|
|
192
|
+
const txns = await getAccountTransactions(baseUrl, apiSiteUrl, page, accountNumber, startDateStr, endDateStr, additionalTransactionInformation);
|
|
151
193
|
accounts.push({
|
|
152
194
|
accountNumber,
|
|
153
195
|
balance,
|
|
@@ -205,4 +247,4 @@ class HapoalimScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
205
247
|
|
|
206
248
|
var _default = HapoalimScraper;
|
|
207
249
|
exports.default = _default;
|
|
208
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9oYXBvYWxpbS50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsIkRBVEVfRk9STUFUIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJtYXAiLCJ0eG4iLCJpc091dGJvdW5kIiwiZXZlbnRBY3Rpdml0eVR5cGVDb2RlIiwibWVtbyIsImJlbmVmaWNpYXJ5RGV0YWlsc0RhdGEiLCJwYXJ0eUhlYWRsaW5lIiwicGFydHlOYW1lIiwibWVzc2FnZUhlYWRsaW5lIiwibWVzc2FnZURldGFpbCIsIm1lbW9MaW5lcyIsInB1c2giLCJsZW5ndGgiLCJqb2luIiwicmVzdWx0IiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwicmVmZXJlbmNlTnVtYmVyIiwiZGF0ZSIsImV2ZW50RGF0ZSIsInRvSVNPU3RyaW5nIiwicHJvY2Vzc2VkRGF0ZSIsInZhbHVlRGF0ZSIsIm9yaWdpbmFsQW1vdW50IiwiZXZlbnRBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiY2hhcmdlZEFtb3VudCIsImRlc2NyaXB0aW9uIiwiYWN0aXZpdHlEZXNjcmlwdGlvbiIsInN0YXR1cyIsInNlcmlhbE51bWJlciIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJQZW5kaW5nIiwiQ29tcGxldGVkIiwiZ2V0UmVzdENvbnRleHQiLCJwYWdlIiwiZXZhbHVhdGUiLCJ3aW5kb3ciLCJibmhwQXBwIiwicmVzdENvbnRleHQiLCJzbGljZSIsImZldGNoUG9hbGltWFNSRldpdGhpblBhZ2UiLCJ1cmwiLCJwYWdlVXVpZCIsImNvb2tpZXMiLCJYU1JGQ29va2llIiwiZmluZCIsImNvb2tpZSIsIm5hbWUiLCJoZWFkZXJzIiwidmFsdWUiLCJ1dWlkIiwiZ2V0QWNjb3VudFRyYW5zYWN0aW9ucyIsImFwaVNpdGVVcmwiLCJhY2NvdW50TnVtYmVyIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsInR4bnNVcmwiLCJ0eG5zUmVzdWx0IiwidHJhbnNhY3Rpb25zIiwiZ2V0QWNjb3VudEJhbGFuY2UiLCJiYWxhbmNlQW5kQ3JlZGl0TGltaXRVcmwiLCJiYWxhbmNlQW5kQ3JlZGl0TGltaXQiLCJjdXJyZW50QmFsYW5jZSIsImZldGNoQWNjb3VudERhdGEiLCJiYXNlVXJsIiwib3B0aW9ucyIsImFjY291bnREYXRhVXJsIiwiYWNjb3VudHNJbmZvIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJhZGQiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1vbWVudCIsIm1heCIsInN0YXJ0RGF0ZVN0ciIsImZvcm1hdCIsImVuZERhdGVTdHIiLCJhY2NvdW50cyIsImFjY291bnQiLCJiYWxhbmNlIiwiYmFua051bWJlciIsImJyYW5jaE51bWJlciIsImlzQWN0aXZlQWNjb3VudCIsImFjY291bnRDbG9zaW5nUmVhc29uQ29kZSIsImFjY291bnREYXRhIiwic3VjY2VzcyIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJDaGFuZ2VQYXNzd29yZCIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInVzZXJDb2RlIiwicGFzc3dvcmQiLCJIYXBvYWxpbVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7Ozs7QUFHQSxNQUFNQSxLQUFLLEdBQUcscUJBQVMsVUFBVCxDQUFkO0FBRUEsTUFBTUMsV0FBVyxHQUFHLFVBQXBCLEMsQ0FFQTs7QUE2Q0EsU0FBU0MsbUJBQVQsQ0FBNkJDLElBQTdCLEVBQXdFO0FB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XG5pbXBvcnQgdXVpZDQgZnJvbSAndXVpZC92NCc7XG5cbmltcG9ydCB7IFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB3YWl0Rm9yUmVkaXJlY3QgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnLi4vaGVscGVycy93YWl0aW5nJztcbmltcG9ydCB7IGZldGNoR2V0V2l0aGluUGFnZSwgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25zQWNjb3VudCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgU2NyYXBlck9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2hhcG9hbGltJyk7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ1lZWVlNTUREJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcbmRlY2xhcmUgbmFtZXNwYWNlIHdpbmRvdyB7XG4gIGNvbnN0IGJuaHBBcHA6IGFueTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIHNlcmlhbE51bWJlcj86IG51bWJlcjtcbiAgYWN0aXZpdHlEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZXZlbnRBbW91bnQ6IG51bWJlcjtcbiAgdmFsdWVEYXRlPzogc3RyaW5nO1xuICBldmVudERhdGU/OiBzdHJpbmc7XG4gIHJlZmVyZW5jZU51bWJlcj86IG51bWJlcjtcbiAgU2NyYXBlZFRyYW5zYWN0aW9uPzogc3RyaW5nO1xuICBldmVudEFjdGl2aXR5VHlwZUNvZGU6IG51bWJlcjtcbiAgY3VycmVudEJhbGFuY2U6IG51bWJlcjtcbiAgYmVuZWZpY2lhcnlEZXRhaWxzRGF0YT86IHtcbiAgICBwYXJ0eUhlYWRsaW5lPzogc3RyaW5nO1xuICAgIHBhcnR5TmFtZT86IHN0cmluZztcbiAgICBtZXNzYWdlSGVhZGxpbmU/OiBzdHJpbmc7XG4gICAgbWVzc2FnZURldGFpbD86IHN0cmluZztcbiAgfTtcbn1cblxudHlwZSBGZXRjaGVkQWNjb3VudERhdGEgPSB7XG4gIGJhbmtOdW1iZXI6IHN0cmluZztcbiAgYWNjb3VudE51bWJlcjogc3RyaW5nO1xuICBicmFuY2hOdW1iZXI6IHN0cmluZztcbiAgYWNjb3VudENsb3NpbmdSZWFzb25Db2RlOiBudW1iZXI7XG59W107XG5cbnR5cGUgRmV0Y2hlZEFjY291bnRUcmFuc2FjdGlvbnNEYXRhID0ge1xuICB0cmFuc2FjdGlvbnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xufTtcblxudHlwZSBCYWxhbmNlQW5kQ3JlZGl0TGltaXQgPSB7XG4gIGNyZWRpdExpbWl0QW1vdW50OiBudW1iZXI7XG4gIGNyZWRpdExpbWl0RGVzY3JpcHRpb246IHN0cmluZztcbiAgY3JlZGl0TGltaXRVdGlsaXphdGlvbkFtb3VudDogbnVtYmVyO1xuICBjcmVkaXRMaW1pdFV0aWxpemF0aW9uRXhpc3RhbmNlQ29kZTogbnVtYmVyO1xuICBjcmVkaXRMaW1pdFV0aWxpemF0aW9uUGVyY2VudDogbnVtYmVyO1xuICBjdXJyZW50QWNjb3VudExpbWl0c0Ftb3VudDogbnVtYmVyO1xuICBjdXJyZW50QmFsYW5jZTogbnVtYmVyO1xuICB3aXRoZHJhd2FsQmFsYW5jZTogbnVtYmVyO1xufTtcblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10ge1xuICByZXR1cm4gdHhucy5tYXAoKHR4bikgPT4ge1xuICAgIGNvbnN0IGlzT3V0Ym91bmQgPSB0eG4uZXZlbnRBY3Rpdml0eVR5cGVDb2RlID09PSAyO1xuXG4gICAgbGV0IG1lbW8gPSAnJztcbiAgICBpZiAodHhuLmJlbmVmaWNpYXJ5RGV0YWlsc0RhdGEpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFydHlIZWFkbGluZSxcbiAgICAgICAgcGFydHlOYW1lLFxuICAgICAgICBtZXNzYWdlSGVhZGxpbmUsXG4gICAgICAgIG1lc3NhZ2VEZXRhaWwsXG4gICAgICB9ID0gdHhuLmJlbmVmaWNpYXJ5RGV0YWlsc0RhdGE7XG4gICAgICBjb25zdCBtZW1vTGluZXM6IHN0cmluZ1tdID0gW107XG4gICAgICBpZiAocGFydHlIZWFkbGluZSkge1xuICAgICAgICBtZW1vTGluZXMucHVzaChwYXJ0eUhlYWRsaW5lKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcnR5TmFtZSkge1xuICAgICAgICBtZW1vTGluZXMucHVzaChgJHtwYXJ0eU5hbWV9LmApO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVzc2FnZUhlYWRsaW5lKSB7XG4gICAgICAgIG1lbW9MaW5lcy5wdXNoKG1lc3NhZ2VIZWFkbGluZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXNzYWdlRGV0YWlsKSB7XG4gICAgICAgIG1lbW9MaW5lcy5wdXNoKGAke21lc3NhZ2VEZXRhaWx9LmApO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVtb0xpbmVzLmxlbmd0aCkge1xuICAgICAgICBtZW1vID0gbWVtb0xpbmVzLmpvaW4oJyAnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBpZGVudGlmaWVyOiB0eG4ucmVmZXJlbmNlTnVtYmVyLFxuICAgICAgZGF0ZTogbW9tZW50KHR4bi5ldmVudERhdGUsIERBVEVfRk9STUFUKS50b0lTT1N0cmluZygpLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogbW9tZW50KHR4bi52YWx1ZURhdGUsIERBVEVfRk9STUFUKS50b0lTT1N0cmluZygpLFxuICAgICAgb3JpZ2luYWxBbW91bnQ6IGlzT3V0Ym91bmQgPyAtdHhuLmV2ZW50QW1vdW50IDogdHhuLmV2ZW50QW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogJ0lMUycsXG4gICAgICBjaGFyZ2VkQW1vdW50OiBpc091dGJvdW5kID8gLXR4bi5ldmVudEFtb3VudCA6IHR4bi5ldmVudEFtb3VudCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG4uYWN0aXZpdHlEZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIHN0YXR1czogdHhuLnNlcmlhbE51bWJlciA9PT0gMCA/IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyA6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgbWVtbyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFJlc3RDb250ZXh0KHBhZ2U6IFBhZ2UpIHtcbiAgYXdhaXQgd2FpdFVudGlsKCgpID0+IHtcbiAgICByZXR1cm4gcGFnZS5ldmFsdWF0ZSgoKSA9PiAhIXdpbmRvdy5ibmhwQXBwKTtcbiAgfSwgJ3dhaXRpbmcgZm9yIGFwcCBkYXRhIGxvYWQnKTtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYWdlLmV2YWx1YXRlKCgpID0+IHtcbiAgICByZXR1cm4gd2luZG93LmJuaHBBcHAucmVzdENvbnRleHQ7XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHQuc2xpY2UoMSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoUG9hbGltWFNSRldpdGhpblBhZ2UocGFnZTogUGFnZSwgdXJsOiBzdHJpbmcsIHBhZ2VVdWlkOiBzdHJpbmcpOiBQcm9taXNlPEZldGNoZWRBY2NvdW50VHJhbnNhY3Rpb25zRGF0YSB8IG51bGw+IHtcbiAgY29uc3QgY29va2llcyA9IGF3YWl0IHBhZ2UuY29va2llcygpO1xuICBjb25zdCBYU1JGQ29va2llID0gY29va2llcy5maW5kKChjb29raWUpID0+IGNvb2tpZS5uYW1lID09PSAnWFNSRi1UT0tFTicpO1xuICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGlmIChYU1JGQ29va2llICE9IG51bGwpIHtcbiAgICBoZWFkZXJzWydYLVhTUkYtVE9LRU4nXSA9IFhTUkZDb29raWUudmFsdWU7XG4gIH1cbiAgaGVhZGVycy5wYWdlVXVpZCA9IHBhZ2VVdWlkO1xuICBoZWFkZXJzLnV1aWQgPSB1dWlkNCgpO1xuICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLTgnO1xuICByZXR1cm4gZmV0Y2hQb3N0V2l0aGluUGFnZTxGZXRjaGVkQWNjb3VudFRyYW5zYWN0aW9uc0RhdGE+KHBhZ2UsIHVybCwgW10sIGhlYWRlcnMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50VHJhbnNhY3Rpb25zKGFwaVNpdGVVcmw6IHN0cmluZywgcGFnZTogUGFnZSwgYWNjb3VudE51bWJlcjogc3RyaW5nLCBzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTogc3RyaW5nKSB7XG4gIGNvbnN0IHR4bnNVcmwgPSBgJHthcGlTaXRlVXJsfS9jdXJyZW50LWFjY291bnQvdHJhbnNhY3Rpb25zP2FjY291bnRJZD0ke2FjY291bnROdW1iZXJ9Jm51bUl0ZW1zUGVyUGFnZT0xMDAwJnJldHJpZXZhbEVuZERhdGU9JHtlbmREYXRlfSZyZXRyaWV2YWxTdGFydERhdGU9JHtzdGFydERhdGV9JnNvcnRDb2RlPTFgO1xuICBjb25zdCB0eG5zUmVzdWx0ID0gYXdhaXQgZmV0Y2hQb2FsaW1YU1JGV2l0aGluUGFnZShwYWdlLCB0eG5zVXJsLCAnL2N1cnJlbnQtYWNjb3VudC90cmFuc2FjdGlvbnMnKTtcblxuICByZXR1cm4gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zUmVzdWx0Py50cmFuc2FjdGlvbnMgPz8gW10pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50QmFsYW5jZShhcGlTaXRlVXJsOiBzdHJpbmcsIHBhZ2U6IFBhZ2UsIGFjY291bnROdW1iZXI6IHN0cmluZykge1xuICBjb25zdCBiYWxhbmNlQW5kQ3JlZGl0TGltaXRVcmwgPSBgJHthcGlTaXRlVXJsfS9jdXJyZW50LWFjY291bnQvY29tcG9zaXRlL2JhbGFuY2VBbmRDcmVkaXRMaW1pdD9hY2NvdW50SWQ9JHthY2NvdW50TnVtYmVyfSZ2aWV3PWRldGFpbHMmbGFuZz1oZWA7XG4gIGNvbnN0IGJhbGFuY2VBbmRDcmVkaXRMaW1pdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxCYWxhbmNlQW5kQ3JlZGl0TGltaXQ+KHBhZ2UsIGJhbGFuY2VBbmRDcmVkaXRMaW1pdFVybCk7XG5cbiAgcmV0dXJuIGJhbGFuY2VBbmRDcmVkaXRMaW1pdD8uY3VycmVudEJhbGFuY2U7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudERhdGEocGFnZTogUGFnZSwgYmFzZVVybDogc3RyaW5nLCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucykge1xuICBjb25zdCByZXN0Q29udGV4dCA9IGF3YWl0IGdldFJlc3RDb250ZXh0KHBhZ2UpO1xuICBjb25zdCBhcGlTaXRlVXJsID0gYCR7YmFzZVVybH0vJHtyZXN0Q29udGV4dH1gO1xuICBjb25zdCBhY2NvdW50RGF0YVVybCA9IGAke2Jhc2VVcmx9L1NlcnZlclNlcnZpY2VzL2dlbmVyYWwvYWNjb3VudHNgO1xuXG4gIGRlYnVnKCdmZXRjaGluZyBhY2NvdW50cyBkYXRhJyk7XG4gIGNvbnN0IGFjY291bnRzSW5mbyA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxGZXRjaGVkQWNjb3VudERhdGE+KHBhZ2UsIGFjY291bnREYXRhVXJsKSB8fCBbXTtcbiAgZGVidWcoJ2dvdCAlZCBhY2NvdW50cywgZmV0Y2hpbmcgdHhucyBhbmQgYmFsYW5jZScsIGFjY291bnRzSW5mby5sZW5ndGgpO1xuXG4gIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLmFkZCgxLCAnZGF5Jyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IG9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZVN0ciA9IHN0YXJ0TW9tZW50LmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGNvbnN0IGVuZERhdGVTdHIgPSBtb21lbnQoKS5mb3JtYXQoREFURV9GT1JNQVQpO1xuXG4gIGNvbnN0IGFjY291bnRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFjY291bnQgb2YgYWNjb3VudHNJbmZvKSB7XG4gICAgbGV0IGJhbGFuY2U6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBhY2NvdW50TnVtYmVyID0gYCR7YWNjb3VudC5iYW5rTnVtYmVyfS0ke2FjY291bnQuYnJhbmNoTnVtYmVyfS0ke2FjY291bnQuYWNjb3VudE51bWJlcn1gO1xuXG4gICAgY29uc3QgaXNBY3RpdmVBY2NvdW50ID0gYWNjb3VudC5hY2NvdW50Q2xvc2luZ1JlYXNvbkNvZGUgPT09IDA7XG4gICAgaWYgKGlzQWN0aXZlQWNjb3VudCkge1xuICAgICAgYmFsYW5jZSA9IGF3YWl0IGdldEFjY291bnRCYWxhbmNlKGFwaVNpdGVVcmwsIHBhZ2UsIGFjY291bnROdW1iZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWJ1ZygnU2tpcHBpbmcgYmFsYW5jZSBmb3IgYSBjbG9zZWQgYWNjb3VudCwgYmFsYW5jZSB3aWxsIGJlIHVuZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHR4bnMgPSBhd2FpdCBnZXRBY2NvdW50VHJhbnNhY3Rpb25zKGFwaVNpdGVVcmwsIHBhZ2UsIGFjY291bnROdW1iZXIsIHN0YXJ0RGF0ZVN0ciwgZW5kRGF0ZVN0cik7XG5cbiAgICBhY2NvdW50cy5wdXNoKHtcbiAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICBiYWxhbmNlLFxuICAgICAgdHhucyxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGFjY291bnREYXRhID0ge1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgYWNjb3VudHMsXG4gIH07XG4gIGRlYnVnKCdmZXRjaGluZyBlbmRlZCcpO1xuICByZXR1cm4gYWNjb3VudERhdGE7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKGJhc2VVcmw6IHN0cmluZykge1xuICBjb25zdCB1cmxzOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyA9IHt9O1xuICB1cmxzW0xvZ2luUmVzdWx0cy5TdWNjZXNzXSA9IFtcbiAgICBgJHtiYXNlVXJsfS9wb3J0YWxzZXJ2ZXIvSG9tZVBhZ2VgLFxuICAgIGAke2Jhc2VVcmx9L25nLXBvcnRhbHMtYnQvcmIvaGUvaG9tZXBhZ2VgLFxuICAgIGAke2Jhc2VVcmx9L25nLXBvcnRhbHMvcmIvaGUvaG9tZXBhZ2VgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFtgJHtiYXNlVXJsfS9BVVRIRU5USUNBVEUvTE9HT04/Zmxvdz1BVVRIRU5USUNBVEUmc3RhdGU9TE9HT04mZXJyb3Jjb2RlPTEuNiZjYWxsbWU9ZmFsc2VgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdID0gW1xuICAgIGAke2Jhc2VVcmx9L01DUC9TVEFSVD9mbG93PU1DUCZzdGF0ZT1TVEFSVCZleHBpcmVkRGF0ZT1udWxsYCxcbiAgICAvXFwvQUJPVVRUT0VYUElSRVxcL1NUQVJUL2ksXG4gIF07XG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI3VzZXJDb2RlJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJDb2RlIH0sXG4gICAgeyBzZWxlY3RvcjogJyNwYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VyQ29kZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIEhhcG9hbGltU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgZ2V0IGJhc2VVcmwoKSB7XG4gICAgcmV0dXJuICdodHRwczovL2xvZ2luLmJhbmtoYXBvYWxpbS5jby5pbCc7XG4gIH1cblxuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBgJHt0aGlzLmJhc2VVcmx9L2NnaS1iaW4vcG9hbHd3d2M/cmVxTmFtZT1nZXRMb2dvblBhZ2VgLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJy5sb2dpbi1idG4nLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gd2FpdEZvclJlZGlyZWN0KHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHRoaXMuYmFzZVVybCksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICByZXR1cm4gZmV0Y2hBY2NvdW50RGF0YSh0aGlzLnBhZ2UsIHRoaXMuYmFzZVVybCwgdGhpcy5vcHRpb25zKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBIYXBvYWxpbVNjcmFwZXI7XG4iXX0=
|
|
250
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9oYXBvYWxpbS50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsIkRBVEVfRk9STUFUIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJtYXAiLCJ0eG4iLCJpc091dGJvdW5kIiwiZXZlbnRBY3Rpdml0eVR5cGVDb2RlIiwibWVtbyIsImJlbmVmaWNpYXJ5RGV0YWlsc0RhdGEiLCJwYXJ0eUhlYWRsaW5lIiwicGFydHlOYW1lIiwibWVzc2FnZUhlYWRsaW5lIiwibWVzc2FnZURldGFpbCIsIm1lbW9MaW5lcyIsInB1c2giLCJsZW5ndGgiLCJqb2luIiwicmVzdWx0IiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwicmVmZXJlbmNlTnVtYmVyIiwiZGF0ZSIsImV2ZW50RGF0ZSIsInRvSVNPU3RyaW5nIiwicHJvY2Vzc2VkRGF0ZSIsInZhbHVlRGF0ZSIsIm9yaWdpbmFsQW1vdW50IiwiZXZlbnRBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiY2hhcmdlZEFtb3VudCIsImRlc2NyaXB0aW9uIiwiYWN0aXZpdHlEZXNjcmlwdGlvbiIsInN0YXR1cyIsInNlcmlhbE51bWJlciIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJQZW5kaW5nIiwiQ29tcGxldGVkIiwiZ2V0UmVzdENvbnRleHQiLCJwYWdlIiwiZXZhbHVhdGUiLCJ3aW5kb3ciLCJibmhwQXBwIiwicmVzdENvbnRleHQiLCJzbGljZSIsImZldGNoUG9hbGltWFNSRldpdGhpblBhZ2UiLCJ1cmwiLCJwYWdlVXVpZCIsImNvb2tpZXMiLCJYU1JGQ29va2llIiwiZmluZCIsImNvb2tpZSIsIm5hbWUiLCJoZWFkZXJzIiwidmFsdWUiLCJ1dWlkIiwiZ2V0RXh0cmFTY3JhcCIsInR4bnNSZXN1bHQiLCJiYXNlVXJsIiwiYWNjb3VudE51bWJlciIsInByb21pc2VzIiwidHJhbnNhY3Rpb25zIiwidHJhbnNhY3Rpb24iLCJwZm1EZXRhaWxzIiwiZXh0cmFUcmFuc2FjdGlvbkRldGFpbHMiLCJ0cmFuc2FjdGlvbk51bWJlciIsInJlcyIsIlByb21pc2UiLCJhbGwiLCJnZXRBY2NvdW50VHJhbnNhY3Rpb25zIiwiYXBpU2l0ZVVybCIsInN0YXJ0RGF0ZSIsImVuZERhdGUiLCJhZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbiIsInR4bnNVcmwiLCJmaW5hbFJlc3VsdCIsImdldEFjY291bnRCYWxhbmNlIiwiYmFsYW5jZUFuZENyZWRpdExpbWl0VXJsIiwiYmFsYW5jZUFuZENyZWRpdExpbWl0IiwiY3VycmVudEJhbGFuY2UiLCJmZXRjaEFjY291bnREYXRhIiwib3B0aW9ucyIsImFjY291bnREYXRhVXJsIiwiYWNjb3VudHNJbmZvIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJhZGQiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1vbWVudCIsIm1heCIsInN0YXJ0RGF0ZVN0ciIsImZvcm1hdCIsImVuZERhdGVTdHIiLCJhY2NvdW50cyIsImFjY291bnQiLCJiYWxhbmNlIiwiYmFua051bWJlciIsImJyYW5jaE51bWJlciIsImlzQWN0aXZlQWNjb3VudCIsImFjY291bnRDbG9zaW5nUmVhc29uQ29kZSIsImFjY291bnREYXRhIiwic3VjY2VzcyIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJDaGFuZ2VQYXNzd29yZCIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInVzZXJDb2RlIiwicGFzc3dvcmQiLCJIYXBvYWxpbVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiXSwibWFwcGluZ3MiOiI7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QUlMQyxNQUFBQSxVQUFVLEVBQUUsWUFBWSxpQ0FBZ0IsS0FBS2pGLElBQXJCLENBSm5CO0FBS0xrRixNQUFBQSxlQUFlLEVBQUVsQix1QkFBdUIsQ0FBQyxLQUFLN0MsT0FBTjtBQUxuQyxLQUFQO0FBT0Q7O0FBRUQsUUFBTWdFLFNBQU4sR0FBa0I7QUFDaEIsV0FBTzFDLGdCQUFnQixDQUFDLEtBQUt6QyxJQUFOLEVBQVksS0FBS21CLE9BQWpCLEVBQTBCLEtBQUt1QixPQUEvQixDQUF2QjtBQUNEOztBQWxCOEU7O2VBcUJsRWlDLGUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgdXVpZDQgZnJvbSAndXVpZC92NCc7XG5cbmltcG9ydCB7IFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB3YWl0Rm9yUmVkaXJlY3QgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnLi4vaGVscGVycy93YWl0aW5nJztcbmltcG9ydCB7IGZldGNoR2V0V2l0aGluUGFnZSwgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25zQWNjb3VudCwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgU2NyYXBlck9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2hhcG9hbGltJyk7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ1lZWVlNTUREJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcbmRlY2xhcmUgbmFtZXNwYWNlIHdpbmRvdyB7XG4gIGNvbnN0IGJuaHBBcHA6IGFueTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIHNlcmlhbE51bWJlcj86IG51bWJlcjtcbiAgYWN0aXZpdHlEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZXZlbnRBbW91bnQ6IG51bWJlcjtcbiAgdmFsdWVEYXRlPzogc3RyaW5nO1xuICBldmVudERhdGU/OiBzdHJpbmc7XG4gIHJlZmVyZW5jZU51bWJlcj86IG51bWJlcjtcbiAgU2NyYXBlZFRyYW5zYWN0aW9uPzogc3RyaW5nO1xuICBldmVudEFjdGl2aXR5VHlwZUNvZGU6IG51bWJlcjtcbiAgY3VycmVudEJhbGFuY2U6IG51bWJlcjtcbiAgcGZtRGV0YWlsczogc3RyaW5nO1xuICBiZW5lZmljaWFyeURldGFpbHNEYXRhPzoge1xuICAgIHBhcnR5SGVhZGxpbmU/OiBzdHJpbmc7XG4gICAgcGFydHlOYW1lPzogc3RyaW5nO1xuICAgIG1lc3NhZ2VIZWFkbGluZT86IHN0cmluZztcbiAgICBtZXNzYWdlRGV0YWlsPzogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFBmbVRyYW5zYWN0aW9uIHtcbiAgdHJhbnNhY3Rpb25OdW1iZXI6IG51bWJlcjtcbn1cblxudHlwZSBGZXRjaGVkQWNjb3VudERhdGEgPSB7XG4gIGJhbmtOdW1iZXI6IHN0cmluZztcbiAgYWNjb3VudE51bWJlcjogc3RyaW5nO1xuICBicmFuY2hOdW1iZXI6IHN0cmluZztcbiAgYWNjb3VudENsb3NpbmdSZWFzb25Db2RlOiBudW1iZXI7XG59W107XG5cbnR5cGUgRmV0Y2hlZEFjY291bnRUcmFuc2FjdGlvbnNEYXRhID0ge1xuICB0cmFuc2FjdGlvbnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xufTtcblxudHlwZSBCYWxhbmNlQW5kQ3JlZGl0TGltaXQgPSB7XG4gIGNyZWRpdExpbWl0QW1vdW50OiBudW1iZXI7XG4gIGNyZWRpdExpbWl0RGVzY3JpcHRpb246IHN0cmluZztcbiAgY3JlZGl0TGltaXRVdGlsaXphdGlvbkFtb3VudDogbnVtYmVyO1xuICBjcmVkaXRMaW1pdFV0aWxpemF0aW9uRXhpc3RhbmNlQ29kZTogbnVtYmVyO1xuICBjcmVkaXRMaW1pdFV0aWxpemF0aW9uUGVyY2VudDogbnVtYmVyO1xuICBjdXJyZW50QWNjb3VudExpbWl0c0Ftb3VudDogbnVtYmVyO1xuICBjdXJyZW50QmFsYW5jZTogbnVtYmVyO1xuICB3aXRoZHJhd2FsQmFsYW5jZTogbnVtYmVyO1xufTtcblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10ge1xuICByZXR1cm4gdHhucy5tYXAoKHR4bikgPT4ge1xuICAgIGNvbnN0IGlzT3V0Ym91bmQgPSB0eG4uZXZlbnRBY3Rpdml0eVR5cGVDb2RlID09PSAyO1xuXG4gICAgbGV0IG1lbW8gPSAnJztcbiAgICBpZiAodHhuLmJlbmVmaWNpYXJ5RGV0YWlsc0RhdGEpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFydHlIZWFkbGluZSxcbiAgICAgICAgcGFydHlOYW1lLFxuICAgICAgICBtZXNzYWdlSGVhZGxpbmUsXG4gICAgICAgIG1lc3NhZ2VEZXRhaWwsXG4gICAgICB9ID0gdHhuLmJlbmVmaWNpYXJ5RGV0YWlsc0RhdGE7XG4gICAgICBjb25zdCBtZW1vTGluZXM6IHN0cmluZ1tdID0gW107XG4gICAgICBpZiAocGFydHlIZWFkbGluZSkge1xuICAgICAgICBtZW1vTGluZXMucHVzaChwYXJ0eUhlYWRsaW5lKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcnR5TmFtZSkge1xuICAgICAgICBtZW1vTGluZXMucHVzaChgJHtwYXJ0eU5hbWV9LmApO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVzc2FnZUhlYWRsaW5lKSB7XG4gICAgICAgIG1lbW9MaW5lcy5wdXNoKG1lc3NhZ2VIZWFkbGluZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXNzYWdlRGV0YWlsKSB7XG4gICAgICAgIG1lbW9MaW5lcy5wdXNoKGAke21lc3NhZ2VEZXRhaWx9LmApO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVtb0xpbmVzLmxlbmd0aCkge1xuICAgICAgICBtZW1vID0gbWVtb0xpbmVzLmpvaW4oJyAnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBpZGVudGlmaWVyOiB0eG4ucmVmZXJlbmNlTnVtYmVyLFxuICAgICAgZGF0ZTogbW9tZW50KHR4bi5ldmVudERhdGUsIERBVEVfRk9STUFUKS50b0lTT1N0cmluZygpLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogbW9tZW50KHR4bi52YWx1ZURhdGUsIERBVEVfRk9STUFUKS50b0lTT1N0cmluZygpLFxuICAgICAgb3JpZ2luYWxBbW91bnQ6IGlzT3V0Ym91bmQgPyAtdHhuLmV2ZW50QW1vdW50IDogdHhuLmV2ZW50QW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogJ0lMUycsXG4gICAgICBjaGFyZ2VkQW1vdW50OiBpc091dGJvdW5kID8gLXR4bi5ldmVudEFtb3VudCA6IHR4bi5ldmVudEFtb3VudCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG4uYWN0aXZpdHlEZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIHN0YXR1czogdHhuLnNlcmlhbE51bWJlciA9PT0gMCA/IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyA6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgbWVtbyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFJlc3RDb250ZXh0KHBhZ2U6IFBhZ2UpIHtcbiAgYXdhaXQgd2FpdFVudGlsKCgpID0+IHtcbiAgICByZXR1cm4gcGFnZS5ldmFsdWF0ZSgoKSA9PiAhIXdpbmRvdy5ibmhwQXBwKTtcbiAgfSwgJ3dhaXRpbmcgZm9yIGFwcCBkYXRhIGxvYWQnKTtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYWdlLmV2YWx1YXRlKCgpID0+IHtcbiAgICByZXR1cm4gd2luZG93LmJuaHBBcHAucmVzdENvbnRleHQ7XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHQuc2xpY2UoMSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoUG9hbGltWFNSRldpdGhpblBhZ2UocGFnZTogUGFnZSwgdXJsOiBzdHJpbmcsIHBhZ2VVdWlkOiBzdHJpbmcpOiBQcm9taXNlPEZldGNoZWRBY2NvdW50VHJhbnNhY3Rpb25zRGF0YSB8IG51bGw+IHtcbiAgY29uc3QgY29va2llcyA9IGF3YWl0IHBhZ2UuY29va2llcygpO1xuICBjb25zdCBYU1JGQ29va2llID0gY29va2llcy5maW5kKChjb29raWUpID0+IGNvb2tpZS5uYW1lID09PSAnWFNSRi1UT0tFTicpO1xuICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGlmIChYU1JGQ29va2llICE9IG51bGwpIHtcbiAgICBoZWFkZXJzWydYLVhTUkYtVE9LRU4nXSA9IFhTUkZDb29raWUudmFsdWU7XG4gIH1cbiAgaGVhZGVycy5wYWdlVXVpZCA9IHBhZ2VVdWlkO1xuICBoZWFkZXJzLnV1aWQgPSB1dWlkNCgpO1xuICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLTgnO1xuICByZXR1cm4gZmV0Y2hQb3N0V2l0aGluUGFnZTxGZXRjaGVkQWNjb3VudFRyYW5zYWN0aW9uc0RhdGE+KHBhZ2UsIHVybCwgW10sIGhlYWRlcnMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVNjcmFwKHR4bnNSZXN1bHQ6IEZldGNoZWRBY2NvdW50VHJhbnNhY3Rpb25zRGF0YSwgYmFzZVVybDogc3RyaW5nLCBwYWdlOiBQYWdlLCBhY2NvdW50TnVtYmVyOiBzdHJpbmcpOiBQcm9taXNlPEZldGNoZWRBY2NvdW50VHJhbnNhY3Rpb25zRGF0YT4ge1xuICBjb25zdCBwcm9taXNlcyA9IHR4bnNSZXN1bHQudHJhbnNhY3Rpb25zLm1hcChhc3luYyAodHJhbnNhY3Rpb246IFNjcmFwZWRUcmFuc2FjdGlvbik6IFByb21pc2U8U2NyYXBlZFRyYW5zYWN0aW9uPiA9PiB7XG4gICAgY29uc3QgeyBwZm1EZXRhaWxzLCBzZXJpYWxOdW1iZXIgfSA9IHRyYW5zYWN0aW9uO1xuICAgIGlmIChzZXJpYWxOdW1iZXIgIT09IDApIHtcbiAgICAgIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9JHtwZm1EZXRhaWxzfSZhY2NvdW50SWQ9JHthY2NvdW50TnVtYmVyfSZsYW5nPWhlYDtcbiAgICAgIGNvbnN0IGV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPFNjcmFwZWRQZm1UcmFuc2FjdGlvbltdPihwYWdlLCB1cmwpIHx8IFtdO1xuICAgICAgaWYgKGV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzICYmIGV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCB7IHRyYW5zYWN0aW9uTnVtYmVyIH0gPSBleHRyYVRyYW5zYWN0aW9uRGV0YWlsc1swXTtcbiAgICAgICAgaWYgKHRyYW5zYWN0aW9uTnVtYmVyKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4udHJhbnNhY3Rpb24sIHJlZmVyZW5jZU51bWJlcjogdHJhbnNhY3Rpb25OdW1iZXIgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJhbnNhY3Rpb247XG4gIH0pO1xuICBjb25zdCByZXMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gIHJldHVybiB7IHRyYW5zYWN0aW9uczogcmVzIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFjY291bnRUcmFuc2FjdGlvbnMoYmFzZVVybDogc3RyaW5nLCBhcGlTaXRlVXJsOiBzdHJpbmcsIHBhZ2U6IFBhZ2UsIGFjY291bnROdW1iZXI6IHN0cmluZywgc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZywgYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24gPSBmYWxzZSkge1xuICBjb25zdCB0eG5zVXJsID0gYCR7YXBpU2l0ZVVybH0vY3VycmVudC1hY2NvdW50L3RyYW5zYWN0aW9ucz9hY2NvdW50SWQ9JHthY2NvdW50TnVtYmVyfSZudW1JdGVtc1BlclBhZ2U9MTAwMCZyZXRyaWV2YWxFbmREYXRlPSR7ZW5kRGF0ZX0mcmV0cmlldmFsU3RhcnREYXRlPSR7c3RhcnREYXRlfSZzb3J0Q29kZT0xYDtcbiAgY29uc3QgdHhuc1Jlc3VsdCA9IGF3YWl0IGZldGNoUG9hbGltWFNSRldpdGhpblBhZ2UocGFnZSwgdHhuc1VybCwgJy9jdXJyZW50LWFjY291bnQvdHJhbnNhY3Rpb25zJyk7XG5cbiAgY29uc3QgZmluYWxSZXN1bHQgPVxuICAgIGFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uICYmIHR4bnNSZXN1bHQ/LnRyYW5zYWN0aW9ucy5sZW5ndGggP1xuICAgICAgYXdhaXQgZ2V0RXh0cmFTY3JhcCh0eG5zUmVzdWx0LCBiYXNlVXJsLCBwYWdlLCBhY2NvdW50TnVtYmVyKSA6XG4gICAgICB0eG5zUmVzdWx0O1xuXG4gIHJldHVybiBjb252ZXJ0VHJhbnNhY3Rpb25zKGZpbmFsUmVzdWx0Py50cmFuc2FjdGlvbnMgPz8gW10pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50QmFsYW5jZShhcGlTaXRlVXJsOiBzdHJpbmcsIHBhZ2U6IFBhZ2UsIGFjY291bnROdW1iZXI6IHN0cmluZykge1xuICBjb25zdCBiYWxhbmNlQW5kQ3JlZGl0TGltaXRVcmwgPSBgJHthcGlTaXRlVXJsfS9jdXJyZW50LWFjY291bnQvY29tcG9zaXRlL2JhbGFuY2VBbmRDcmVkaXRMaW1pdD9hY2NvdW50SWQ9JHthY2NvdW50TnVtYmVyfSZ2aWV3PWRldGFpbHMmbGFuZz1oZWA7XG4gIGNvbnN0IGJhbGFuY2VBbmRDcmVkaXRMaW1pdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxCYWxhbmNlQW5kQ3JlZGl0TGltaXQ+KHBhZ2UsIGJhbGFuY2VBbmRDcmVkaXRMaW1pdFVybCk7XG5cbiAgcmV0dXJuIGJhbGFuY2VBbmRDcmVkaXRMaW1pdD8uY3VycmVudEJhbGFuY2U7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudERhdGEocGFnZTogUGFnZSwgYmFzZVVybDogc3RyaW5nLCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucykge1xuICBjb25zdCByZXN0Q29udGV4dCA9IGF3YWl0IGdldFJlc3RDb250ZXh0KHBhZ2UpO1xuICBjb25zdCBhcGlTaXRlVXJsID0gYCR7YmFzZVVybH0vJHtyZXN0Q29udGV4dH1gO1xuICBjb25zdCBhY2NvdW50RGF0YVVybCA9IGAke2Jhc2VVcmx9L1NlcnZlclNlcnZpY2VzL2dlbmVyYWwvYWNjb3VudHNgO1xuXG4gIGRlYnVnKCdmZXRjaGluZyBhY2NvdW50cyBkYXRhJyk7XG4gIGNvbnN0IGFjY291bnRzSW5mbyA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxGZXRjaGVkQWNjb3VudERhdGE+KHBhZ2UsIGFjY291bnREYXRhVXJsKSB8fCBbXTtcbiAgZGVidWcoJ2dvdCAlZCBhY2NvdW50cywgZmV0Y2hpbmcgdHhucyBhbmQgYmFsYW5jZScsIGFjY291bnRzSW5mby5sZW5ndGgpO1xuXG4gIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLmFkZCgxLCAnZGF5Jyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IG9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuICBjb25zdCB7IGFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZVN0ciA9IHN0YXJ0TW9tZW50LmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGNvbnN0IGVuZERhdGVTdHIgPSBtb21lbnQoKS5mb3JtYXQoREFURV9GT1JNQVQpO1xuXG4gIGNvbnN0IGFjY291bnRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFjY291bnQgb2YgYWNjb3VudHNJbmZvKSB7XG4gICAgbGV0IGJhbGFuY2U6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBhY2NvdW50TnVtYmVyID0gYCR7YWNjb3VudC5iYW5rTnVtYmVyfS0ke2FjY291bnQuYnJhbmNoTnVtYmVyfS0ke2FjY291bnQuYWNjb3VudE51bWJlcn1gO1xuXG4gICAgY29uc3QgaXNBY3RpdmVBY2NvdW50ID0gYWNjb3VudC5hY2NvdW50Q2xvc2luZ1JlYXNvbkNvZGUgPT09IDA7XG4gICAgaWYgKGlzQWN0aXZlQWNjb3VudCkge1xuICAgICAgYmFsYW5jZSA9IGF3YWl0IGdldEFjY291bnRCYWxhbmNlKGFwaVNpdGVVcmwsIHBhZ2UsIGFjY291bnROdW1iZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWJ1ZygnU2tpcHBpbmcgYmFsYW5jZSBmb3IgYSBjbG9zZWQgYWNjb3VudCwgYmFsYW5jZSB3aWxsIGJlIHVuZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHR4bnMgPSBhd2FpdCBnZXRBY2NvdW50VHJhbnNhY3Rpb25zKFxuICAgICAgYmFzZVVybCxcbiAgICAgIGFwaVNpdGVVcmwsXG4gICAgICBwYWdlLFxuICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgIHN0YXJ0RGF0ZVN0cixcbiAgICAgIGVuZERhdGVTdHIsXG4gICAgICBhZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbixcbiAgICApO1xuXG4gICAgYWNjb3VudHMucHVzaCh7XG4gICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgYmFsYW5jZSxcbiAgICAgIHR4bnMsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBhY2NvdW50RGF0YSA9IHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICAgIGFjY291bnRzLFxuICB9O1xuICBkZWJ1ZygnZmV0Y2hpbmcgZW5kZWQnKTtcbiAgcmV0dXJuIGFjY291bnREYXRhO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyhiYXNlVXJsOiBzdHJpbmcpIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbXG4gICAgYCR7YmFzZVVybH0vcG9ydGFsc2VydmVyL0hvbWVQYWdlYCxcbiAgICBgJHtiYXNlVXJsfS9uZy1wb3J0YWxzLWJ0L3JiL2hlL2hvbWVwYWdlYCxcbiAgICBgJHtiYXNlVXJsfS9uZy1wb3J0YWxzL3JiL2hlL2hvbWVwYWdlYF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF0gPSBbYCR7YmFzZVVybH0vQVVUSEVOVElDQVRFL0xPR09OP2Zsb3c9QVVUSEVOVElDQVRFJnN0YXRlPUxPR09OJmVycm9yY29kZT0xLjYmY2FsbG1lPWZhbHNlYF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkXSA9IFtcbiAgICBgJHtiYXNlVXJsfS9NQ1AvU1RBUlQ/Zmxvdz1NQ1Amc3RhdGU9U1RBUlQmZXhwaXJlZERhdGU9bnVsbGAsXG4gICAgL1xcL0FCT1VUVE9FWFBJUkVcXC9TVEFSVC9pLFxuICBdO1xuICByZXR1cm4gdXJscztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJyN1c2VyQ29kZScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VyQ29kZSB9LFxuICAgIHsgc2VsZWN0b3I6ICcjcGFzc3dvcmQnLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgdXNlckNvZGU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBIYXBvYWxpbVNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gIGdldCBiYXNlVXJsKCkge1xuICAgIHJldHVybiAnaHR0cHM6Ly9sb2dpbi5iYW5raGFwb2FsaW0uY28uaWwnO1xuICB9XG5cbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7dGhpcy5iYXNlVXJsfS9jZ2ktYmluL3BvYWx3d3djP3JlcU5hbWU9Z2V0TG9nb25QYWdlYCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICcubG9naW4tYnRuJyxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IHdhaXRGb3JSZWRpcmVjdCh0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLmJhc2VVcmwpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgcmV0dXJuIGZldGNoQWNjb3VudERhdGEodGhpcy5wYWdlLCB0aGlzLmJhc2VVcmwsIHRoaXMub3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSGFwb2FsaW1TY3JhcGVyO1xuIl19
|
package/lib/scrapers/visa-cal.js
CHANGED
|
@@ -121,16 +121,17 @@ function convertParsedDataToTransactions(parsedData) {
|
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
const result = {
|
|
124
|
-
chargedAmount,
|
|
125
124
|
identifier: transaction.trnIntId,
|
|
126
|
-
|
|
127
|
-
originalAmount,
|
|
128
|
-
originalCurrency: transaction.trnCurrencySymbol,
|
|
129
|
-
processedDate: transaction.debCrdDate,
|
|
125
|
+
type: [trnTypeCode.regular, trnTypeCode.standingOrder].includes(transaction.trnTypeCode) ? _transactions2.TransactionTypes.Normal : _transactions2.TransactionTypes.Installments,
|
|
130
126
|
status: _transactions2.TransactionStatuses.Completed,
|
|
131
127
|
date: installments ? date.add(installments.number - 1, 'month').toISOString() : date.toISOString(),
|
|
132
|
-
|
|
133
|
-
|
|
128
|
+
processedDate: new Date(transaction.debCrdDate).toISOString(),
|
|
129
|
+
originalAmount,
|
|
130
|
+
originalCurrency: transaction.trnCurrencySymbol,
|
|
131
|
+
chargedAmount,
|
|
132
|
+
chargedCurrency: transaction.debCrdCurrencySymbol,
|
|
133
|
+
description: transaction.merchantName,
|
|
134
|
+
memo: transaction.transTypeCommentDetails.toString(),
|
|
134
135
|
category: transaction.branchCodeDesc
|
|
135
136
|
};
|
|
136
137
|
|
|
@@ -296,4 +297,4 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
296
297
|
|
|
297
298
|
var _default = VisaCalScraper;
|
|
298
299
|
exports.default = _default;
|
|
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==
|
|
300
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy92aXNhLWNhbC50cyJdLCJuYW1lcyI6WyJMT0dJTl9VUkwiLCJUUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCIsIkludmFsaWRQYXNzd29yZE1lc3NhZ2UiLCJkZWJ1ZyIsInRyblR5cGVDb2RlIiwiZ2V0TG9naW5GcmFtZSIsInBhZ2UiLCJmcmFtZSIsImZyYW1lcyIsImZpbmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkVycm9yIiwiaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IiLCJlcnJvckZvdW5kIiwiZXJyb3JNZXNzYWdlIiwiaXRlbSIsImlubmVyVGV4dCIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJvcHRpb25zIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyIsInBhcnNlZERhdGEiLCJmbGF0TWFwIiwibW9udGhEYXRhIiwicmVzdWx0IiwiYmFua0FjY291bnRzIiwiYWNjb3VudHMiLCJkZWJpdERhdGVzIiwiZGViaXREYXRlIiwidHJhbnNhY3Rpb25zIiwibWFwIiwidHJhbnNhY3Rpb24iLCJpbnN0YWxsbWVudHMiLCJjdXJQYXltZW50TnVtIiwibnVtT2ZQYXltZW50cyIsIm51bWJlciIsInRvdGFsIiwidW5kZWZpbmVkIiwiZGF0ZSIsInRyblB1cmNoYXNlRGF0ZSIsImNoYXJnZWRBbW91bnQiLCJhbXRCZWZvcmVDb252QW5kSW5kZXgiLCJvcmlnaW5hbEFtb3VudCIsInRybkFtdCIsImNyZWRpdCIsImlkZW50aWZpZXIiLCJ0cm5JbnRJZCIsInR5cGUiLCJyZWd1bGFyIiwic3RhbmRpbmdPcmRlciIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJJbnN0YWxsbWVudHMiLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwiYWRkIiwidG9JU09TdHJpbmciLCJwcm9jZXNzZWREYXRlIiwiRGF0ZSIsImRlYkNyZERhdGUiLCJvcmlnaW5hbEN1cnJlbmN5IiwidHJuQ3VycmVuY3lTeW1ib2wiLCJjaGFyZ2VkQ3VycmVuY3kiLCJkZWJDcmRDdXJyZW5jeVN5bWJvbCIsImRlc2NyaXB0aW9uIiwibWVyY2hhbnROYW1lIiwibWVtbyIsInRyYW5zVHlwZUNvbW1lbnREZXRhaWxzIiwidG9TdHJpbmciLCJjYXRlZ29yeSIsImJyYW5jaENvZGVEZXNjIiwiVmlzYUNhbFNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0Q2FyZHMiLCJpbml0RGF0YSIsImNhcmRzIiwiY2FyZFVuaXF1ZUlkIiwibGFzdDREaWdpdHMiLCJnZXRBdXRob3JpemF0aW9uSGVhZGVyIiwiYXV0aE1vZHVsZSIsImF1dGgiLCJjYWxDb25uZWN0VG9rZW4iLCJnZXRYU2l0ZUlkIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInBvc3NpYmxlUmVzdWx0cyIsImNoZWNrUmVhZGluZXNzIiwicHJlQWN0aW9uIiwib3BlbkxvZ2luUG9wdXAiLCJwb3N0QWN0aW9uIiwiY3VycmVudFVybCIsImVuZHNXaXRoIiwiZSIsInVzZXJBZ2VudCIsImlzQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyIsImZldGNoRGF0YSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0Iiwic3RhcnREYXRlIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtb21lbnQiLCJtYXgiLCJmb3JtYXQiLCJBdXRob3JpemF0aW9uIiwieFNpdGVJZCIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiYWxsIiwiY2FyZCIsImZpbmFsTW9udGhUb0ZldGNoTW9tZW50IiwibW9udGhzIiwiZGlmZiIsImFsbE1vbnRoc0RhdGEiLCJpIiwibW9udGgiLCJjbG9uZSIsInllYXIiLCJzdGF0dXNDb2RlIiwidGl0bGUiLCJwdXNoIiwidHhucyIsIm91dHB1dERhdGEiLCJlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiYWNjb3VudE51bWJlciIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdWNjZXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFHQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFNQTs7Ozs7O0FBR0EsTUFBTUEsU0FBUyxHQUFHLCtCQUFsQjtBQUNBLE1BQU1DLDZCQUE2QixHQUFHLDhGQUF0QztBQUVBLE1BQU1DLHNCQUFzQixHQUFHLG1DQUEvQjtBQUVBLE1BQU1DLEtBQUssR0FBRyxxQkFBUyxVQUFULENBQWQ7SUFFS0MsVzs7V0FBQUEsVztBQUFBQSxFQUFBQSxXO0FBQUFBLEVBQUFBLFc7QUFBQUEsRUFBQUEsVztBQUFBQSxFQUFBQSxXO0dBQUFBLFcsS0FBQUEsVzs7QUFpR0wsZUFBZUMsYUFBZixDQUE2QkMsSUFBN0IsRUFBeUM7QUFDdkMsTUFBSUMsS0FBbUIsR0FBRyxJQUExQjtBQUNBSixFQUFBQSxLQUFLLENBQUMsOEJBQUQsQ0FBTDtBQUNBLFFBQU0sd0JBQVUsTUFBTTtBQUNwQkksSUFBQUEsS0FBSyxHQUFHRCxJQUFJLENBQ1RFLE1BREssR0FFTEMsSUFGSyxDQUVDQyxDQUFELElBQU9BLENBQUMsQ0FBQ0MsR0FBRixHQUFRQyxRQUFSLENBQWlCLFlBQWpCLENBRlAsS0FFMEMsSUFGbEQ7QUFHQSxXQUFPQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsQ0FBQyxDQUFDUCxLQUFsQixDQUFQO0FBQ0QsR0FMSyxFQUtILGlDQUxHLEVBS2dDLEtBTGhDLEVBS3VDLElBTHZDLENBQU47O0FBT0EsTUFBSSxDQUFDQSxLQUFMLEVBQVk7QUFDVkosSUFBQUEsS0FBSyxDQUFDLDJDQUFELENB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QXZELFNBQVMsU0FBVCxJQUFBQSxTQUFTLFdBQVQsWUFBQUEsU0FBUyxDQUFFa0csS0FBWCxLQUFvQixFQUFHLEVBQXhHLENBQU47O0FBRWpDLFlBQUksQ0FBQyxLQUFLeEIsd0JBQUwsQ0FBOEIxRSxTQUE5QixDQUFMLEVBQStDO0FBQzdDLGdCQUFNLElBQUlyQixLQUFKLENBQVUsaURBQVYsQ0FBTjtBQUNEOztBQUVEaUgsUUFBQUEsYUFBYSxDQUFDTyxJQUFkLENBQW1CbkcsU0FBbkI7QUFDRDs7QUFFRCxZQUFNTSxZQUFZLEdBQUdULCtCQUErQixDQUFDK0YsYUFBRCxDQUFwRDtBQUVBN0gsTUFBQUEsS0FBSyxDQUFDLDRCQUFELENBQUw7QUFDQSxZQUFNcUksSUFBSSxHQUFHLG9EQUFDLEtBQUs5RyxPQUFMLENBQWErRyxVQUFkLDJEQUFDLHVCQUF5QkMsOEJBQTFCLHlFQUE0RCxJQUE1RCxJQUNYLHlDQUFzQmhHLFlBQXRCLEVBQW9DLHFCQUFPd0UsU0FBUCxDQUFwQyxFQUF1RCxLQUFLeEYsT0FBTCxDQUFhaUgsbUJBQWIsSUFBb0MsS0FBM0YsQ0FEVyxHQUVYakcsWUFGRjtBQUlBLGFBQU87QUFDTDhGLFFBQUFBLElBREs7QUFFTEksUUFBQUEsYUFBYSxFQUFFaEIsSUFBSSxDQUFDakM7QUFGZixPQUFQO0FBSUQsS0F2Q0QsQ0FEcUIsQ0FBdkI7QUEyQ0F4RixJQUFBQSxLQUFLLENBQUMsNkJBQUQsQ0FBTDtBQUVBQSxJQUFBQSxLQUFLLENBQUMwSSxJQUFJLENBQUNDLFNBQUwsQ0FBZXZHLFFBQWYsRUFBeUIsSUFBekIsRUFBK0IsQ0FBL0IsQ0FBRCxDQUFMO0FBQ0EsV0FBTztBQUNMd0csTUFBQUEsT0FBTyxFQUFFLElBREo7QUFFTHhHLE1BQUFBO0FBRkssS0FBUDtBQUlEOztBQXBKNkU7O2VBdUpqRThDLGMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBGcmFtZSwgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5cbmltcG9ydCB7IGdldERlYnVnIH0gZnJvbSAnLi4vaGVscGVycy9kZWJ1Zyc7XG5pbXBvcnQge1xuICBjbGlja0J1dHRvbiwgZWxlbWVudFByZXNlbnRPblBhZ2UsIHBhZ2VFdmFsLCB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IGZldGNoUG9zdFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7IGdldEN1cnJlbnRVcmwgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgZ2V0RnJvbVNlc3Npb25TdG9yYWdlIH0gZnJvbSAnLi4vaGVscGVycy9zdG9yYWdlJztcbmltcG9ydCB7IGZpbHRlck9sZFRyYW5zYWN0aW9ucyB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHdhaXRVbnRpbCB9IGZyb20gJy4uL2hlbHBlcnMvd2FpdGluZyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25TdGF0dXNlcyxcbiAgVHJhbnNhY3Rpb25UeXBlcyxcbiAgVHJhbnNhY3Rpb25zQWNjb3VudCxcbn0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luT3B0aW9ucywgTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IFNjcmFwZXJTY3JhcGluZ1Jlc3VsdCB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuY29uc3QgTE9HSU5fVVJMID0gJ2h0dHBzOi8vd3d3LmNhbC1vbmxpbmUuY28uaWwvJztcbmNvbnN0IFRSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UID0gJ2h0dHBzOi8vYXBpLmNhbC1vbmxpbmUuY28uaWwvVHJhbnNhY3Rpb25zL2FwaS90cmFuc2FjdGlvbnNEZXRhaWxzL2dldENhcmRUcmFuc2FjdGlvbnNEZXRhaWxzJztcblxuY29uc3QgSW52YWxpZFBhc3N3b3JkTWVzc2FnZSA9ICfXqdedINeU157Xqdeq157XqSDXkNeVINeU16HXmdeh157XlCDXqdeU15XXlteg15Ug16nXkteV15nXmdedJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygndmlzYS1jYWwnKTtcblxuZW51bSB0cm5UeXBlQ29kZSB7XG4gIHJlZ3VsYXIgPSAnNScsXG4gIGNyZWRpdCA9ICc2JyxcbiAgaW5zdGFsbG1lbnRzID0gJzgnLFxuICBzdGFuZGluZ09yZGVyID0gJzknLFxufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgYW10QmVmb3JlQ29udkFuZEluZGV4OiBudW1iZXI7XG4gIGJyYW5jaENvZGVEZXNjOiBzdHJpbmc7XG4gIGNhc2hBY2NNYW5hZ2VyTmFtZTogbnVsbDtcbiAgY2FzaEFjY291bnRNYW5hZ2VyOiBudWxsO1xuICBjYXNoQWNjb3VudFRybkFtdDogbnVtYmVyO1xuICBjaGFyZ2VFeHRlcm5hbFRvQ2FyZENvbW1lbnQ6IHN0cmluZztcbiAgY29tbWVudHM6IFtdO1xuICBjdXJQYXltZW50TnVtOiBudW1iZXI7XG4gIGRlYkNyZEN1cnJlbmN5U3ltYm9sOiBDdXJyZW5jeVN5bWJvbDtcbiAgZGViQ3JkRGF0ZTogc3RyaW5nO1xuICBkZWJpdFNwcmVhZEluZDogYm9vbGVhbjtcbiAgZGlzY291bnRBbW91bnQ6IHVua25vd247XG4gIGRpc2NvdW50UmVhc29uOiB1bmtub3duO1xuICBpbW1lZGlhdGVDb21tZW50czogW107XG4gIGlzSW1tZWRpYXRlQ29tbWVudEluZDogYm9vbGVhbjtcbiAgaXNJbW1lZGlhdGVISEtJbmQ6IGJvb2xlYW47XG4gIGlzTWFyZ2FyaXRhOiBib29sZWFuO1xuICBpc1NwcmVhZFBheW1lbnN0QWJyb2FkOiBib29sZWFuO1xuICBsaW5rZWRDb21tZW50czogW107XG4gIG1lcmNoYW50QWRkcmVzczogc3RyaW5nO1xuICBtZXJjaGFudE5hbWU6IHN0cmluZztcbiAgbWVyY2hhbnRQaG9uZU5vOiBzdHJpbmc7XG4gIG51bU9mUGF5bWVudHM6IG51bWJlcjtcbiAgb25Hb2luZ1RyYW5zYWN0aW9uc0NvbW1lbnQ6IHN0cmluZztcbiAgcmVmdW5kSW5kOiBib29sZWFuO1xuICByb3VuZGluZ0Ftb3VudDogdW5rbm93bjtcbiAgcm91bmRpbmdSZWFzb246IHVua25vd247XG4gIHRva2VuSW5kOiAwO1xuICB0b2tlbk51bWJlclBhcnQ0OiAnJztcbiAgdHJhbnNDYXJkUHJlc2VudEluZDogYm9vbGVhbjtcbiAgdHJhbnNUeXBlQ29tbWVudERldGFpbHM6IFtdO1xuICB0cm5BbXQ6IG51bWJlcjtcbiAgdHJuQ3VycmVuY3lTeW1ib2w6IEN1cnJlbmN5U3ltYm9sO1xuICB0cm5FeGFjV2F5OiBudW1iZXI7XG4gIHRybkludElkOiBzdHJpbmc7XG4gIHRybk51bWFyZXRvcjogbnVtYmVyO1xuICB0cm5QdXJjaGFzZURhdGU6IHN0cmluZztcbiAgdHJuVHlwZTogc3RyaW5nO1xuICB0cm5UeXBlQ29kZTogdHJuVHlwZUNvZGU7XG4gIHdhbGxldFByb3ZpZGVyQ29kZTogMDtcbiAgd2FsbGV0UHJvdmlkZXJEZXNjOiAnJztcbn1cbmludGVyZmFjZSBJbml0UmVzcG9uc2Uge1xuICByZXN1bHQ6IHtcbiAgICBjYXJkczoge1xuICAgICAgY2FyZFVuaXF1ZUlkOiBzdHJpbmc7XG4gICAgICBsYXN0NERpZ2l0czogc3RyaW5nO1xuICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICB9W107XG4gIH07XG59XG50eXBlIEN1cnJlbmN5U3ltYm9sID0gJ+KCqicgfCBzdHJpbmc7XG5pbnRlcmZhY2UgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xufVxuaW50ZXJmYWNlIENhcmRUcmFuc2FjdGlvbkRldGFpbHMgZXh0ZW5kcyBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3Ige1xuICByZXN1bHQ6IHtcbiAgICBiYW5rQWNjb3VudHM6IHtcbiAgICAgIGJhbmtBY2NvdW50TnVtOiBzdHJpbmc7XG4gICAgICBiYW5rTmFtZTogc3RyaW5nO1xuICAgICAgY2hvaWNlRXh0ZXJuYWxUcmFuc2FjdGlvbnM6IGFueTtcbiAgICAgIGN1cnJlbnRCYW5rQWNjb3VudEluZDogYm9vbGVhbjtcbiAgICAgIGRlYml0RGF0ZXM6IHtcbiAgICAgICAgYmFza2V0QW1vdW50Q29tbWVudDogdW5rbm93bjtcbiAgICAgICAgY2hvaWNlSEhLRGViaXQ6IG51bWJlcjtcbiAgICAgICAgZGF0ZTogc3RyaW5nO1xuICAgICAgICBkZWJpdFJlYXNvbjogdW5rbm93bjtcbiAgICAgICAgZml4RGViaXRBbW91bnQ6IG51bWJlcjtcbiAgICAgICAgZnJvbVB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICAgICAgICBpc0Nob2ljZVJlcGFpbWVudDogYm9vbGVhbjtcbiAgICAgICAgdG9QdXJjaGFzZURhdGU6IHN0cmluZztcbiAgICAgICAgdG90YWxCYXNrZXRBbW91bnQ6IG51bWJlcjtcbiAgICAgICAgdG90YWxEZWJpdHM6IHtcbiAgICAgICAgICBjdXJyZW5jeVN5bWJvbDogQ3VycmVuY3lTeW1ib2w7XG4gICAgICAgICAgYW1vdW50OiBudW1iZXI7XG4gICAgICAgIH1bXTtcbiAgICAgICAgdHJhbnNhY3Rpb25zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgICAgIH1bXTtcbiAgICAgIGltbWlkaWF0ZURlYml0czogeyB0b3RhbERlYml0czogW10sIGRlYml0RGF5czogW10gfTtcbiAgICB9W107XG4gICAgYmxvY2tlZENhcmRJbmQ6IGJvb2xlYW47XG4gIH07XG4gIHN0YXR1c0NvZGU6IDE7XG4gIHN0YXR1c0Rlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHN0YXR1c1RpdGxlOiBzdHJpbmc7XG59XG5cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TG9naW5GcmFtZShwYWdlOiBQYWdlKSB7XG4gIGxldCBmcmFtZTogRnJhbWUgfCBudWxsID0gbnVsbDtcbiAgZGVidWcoJ3dhaXQgdW50aWwgbG9naW4gZnJhbWUgZm91bmQnKTtcbiAgYXdhaXQgd2FpdFVudGlsKCgpID0+IHtcbiAgICBmcmFtZSA9IHBhZ2VcbiAgICAgIC5mcmFtZXMoKVxuICAgICAgLmZpbmQoKGYpID0+IGYudXJsKCkuaW5jbHVkZXMoJ2NhbGNvbm5lY3QnKSkgfHwgbnVsbDtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEhZnJhbWUpO1xuICB9LCAnd2FpdCBmb3IgaWZyYW1lIHdpdGggbG9naW4gZm9ybScsIDEwMDAwLCAxMDAwKTtcblxuICBpZiAoIWZyYW1lKSB7XG4gICAgZGVidWcoJ2ZhaWxlZCB0byBmaW5kIGxvZ2luIGZyYW1lIGZvciAxMCBzZWNvbmRzJyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gZXh0cmFjdCBsb2dpbiBpZnJhbWUnKTtcbiAgfVxuXG4gIHJldHVybiBmcmFtZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IocGFnZTogUGFnZSkge1xuICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUocGFnZSk7XG4gIGNvbnN0IGVycm9yRm91bmQgPSBhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZShmcmFtZSwgJ2Rpdi5nZW5lcmFsLWVycm9yID4gZGl2Jyk7XG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yRm91bmQgPyBhd2FpdCBwYWdlRXZhbChmcmFtZSwgJ2Rpdi5nZW5lcmFsLWVycm9yID4gZGl2JywgJycsIChpdGVtKSA9PiB7XG4gICAgcmV0dXJuIChpdGVtIGFzIEhUTUxEaXZFbGVtZW50KS5pbm5lclRleHQ7XG4gIH0pIDogJyc7XG4gIHJldHVybiBlcnJvck1lc3NhZ2UgPT09IEludmFsaWRQYXNzd29yZE1lc3NhZ2U7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCkge1xuICBkZWJ1ZygncmV0dXJuIHBvc3NpYmxlIGxvZ2luIHJlc3VsdHMnKTtcbiAgY29uc3QgdXJsczogTG9naW5PcHRpb25zWydwb3NzaWJsZVJlc3VsdHMnXSA9IHtcbiAgICBbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdOiBbL2Rhc2hib2FyZC9pXSxcbiAgICBbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF06IFthc3luYyAob3B0aW9ucz86IHsgcGFnZT86IFBhZ2UgfSkgPT4ge1xuICAgICAgY29uc3QgcGFnZSA9IG9wdGlvbnM/LnBhZ2U7XG4gICAgICBpZiAoIXBhZ2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc0ludmFsaWRQYXNzd29yZEVycm9yKHBhZ2UpO1xuICAgIH1dLFxuICAgIC8vIFtMb2dpblJlc3VsdHMuQWNjb3VudEJsb2NrZWRdOiBbXSwgLy8gVE9ETyBhZGQgd2hlbiByZWFjaGluZyB0aGlzIHNjZW5hcmlvXG4gICAgLy8gW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFtdLCAvLyBUT0RPIGFkZCB3aGVuIHJlYWNoaW5nIHRoaXMgc2NlbmFyaW9cbiAgfTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICBkZWJ1ZygnY3JlYXRlIGxvZ2luIGZpZWxkcyBmb3IgdXNlcm5hbWUgYW5kIHBhc3N3b3JkJyk7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJ1tmb3JtY29udHJvbG5hbWU9XCJ1c2VyTmFtZVwiXScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICdbZm9ybWNvbnRyb2xuYW1lPVwicGFzc3dvcmRcIl0nLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyhwYXJzZWREYXRhOiBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzW10pOiBUcmFuc2FjdGlvbltdIHtcbiAgcmV0dXJuIHBhcnNlZERhdGFcbiAgICAuZmxhdE1hcCgobW9udGhEYXRhKSA9PiBtb250aERhdGEucmVzdWx0LmJhbmtBY2NvdW50cylcbiAgICAuZmxhdE1hcCgoYWNjb3VudHMpID0+IGFjY291bnRzLmRlYml0RGF0ZXMpXG4gICAgLmZsYXRNYXAoKGRlYml0RGF0ZSkgPT4gZGViaXREYXRlLnRyYW5zYWN0aW9ucylcbiAgICAubWFwKCh0cmFuc2FjdGlvbikgPT4ge1xuICAgICAgY29uc3QgaW5zdGFsbG1lbnRzID0gKHRyYW5zYWN0aW9uLmN1clBheW1lbnROdW0gJiYgdHJhbnNhY3Rpb24ubnVtT2ZQYXltZW50cyAmJlxuICAgICAge1xuICAgICAgICBudW1iZXI6IHRyYW5zYWN0aW9uLmN1clBheW1lbnROdW0sXG4gICAgICAgIHRvdGFsOiB0cmFuc2FjdGlvbi5udW1PZlBheW1lbnRzLFxuICAgICAgfSkgfHxcbiAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50KHRyYW5zYWN0aW9uLnRyblB1cmNoYXNlRGF0ZSk7XG5cbiAgICAgIGxldCBjaGFyZ2VkQW1vdW50ID0gdHJhbnNhY3Rpb24uYW10QmVmb3JlQ29udkFuZEluZGV4ICogKC0xKTtcbiAgICAgIGxldCBvcmlnaW5hbEFtb3VudCA9IHRyYW5zYWN0aW9uLnRybkFtdCAqICgtMSk7XG5cbiAgICAgIGlmICh0cmFuc2FjdGlvbi50cm5UeXBlQ29kZSA9PT0gdHJuVHlwZUNvZGUuY3JlZGl0KSB7XG4gICAgICAgIGNoYXJnZWRBbW91bnQgPSB0cmFuc2FjdGlvbi5hbXRCZWZvcmVDb252QW5kSW5kZXg7XG4gICAgICAgIG9yaWdpbmFsQW1vdW50ID0gdHJhbnNhY3Rpb24udHJuQW10O1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgICBpZGVudGlmaWVyOiB0cmFuc2FjdGlvbi50cm5JbnRJZCxcbiAgICAgICAgdHlwZTogW3RyblR5cGVDb2RlLnJlZ3VsYXIsIHRyblR5cGVDb2RlLnN0YW5kaW5nT3JkZXJdLmluY2x1ZGVzKHRyYW5zYWN0aW9uLnRyblR5cGVDb2RlKSA/XG4gICAgICAgICAgVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwgOlxuICAgICAgICAgIFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzLFxuICAgICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgICBkYXRlOiBpbnN0YWxsbWVudHMgP1xuICAgICAgICAgIGRhdGUuYWRkKGluc3RhbGxtZW50cy5udW1iZXIgLSAxLCAnbW9udGgnKS50b0lTT1N0cmluZygpIDpcbiAgICAgICAgICBkYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIHByb2Nlc3NlZERhdGU6IG5ldyBEYXRlKHRyYW5zYWN0aW9uLmRlYkNyZERhdGUpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIG9yaWdpbmFsQW1vdW50LFxuICAgICAgICBvcmlnaW5hbEN1cnJlbmN5OiB0cmFuc2FjdGlvbi50cm5DdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgY2hhcmdlZEFtb3VudCxcbiAgICAgICAgY2hhcmdlZEN1cnJlbmN5OiB0cmFuc2FjdGlvbi5kZWJDcmRDdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgZGVzY3JpcHRpb246IHRyYW5zYWN0aW9uLm1lcmNoYW50TmFtZSxcbiAgICAgICAgbWVtbzogdHJhbnNhY3Rpb24udHJhbnNUeXBlQ29tbWVudERldGFpbHMudG9TdHJpbmcoKSxcbiAgICAgICAgY2F0ZWdvcnk6IHRyYW5zYWN0aW9uLmJyYW5jaENvZGVEZXNjLFxuICAgICAgfTtcblxuICAgICAgaWYgKGluc3RhbGxtZW50cykge1xuICAgICAgICByZXN1bHQuaW5zdGFsbG1lbnRzID0gaW5zdGFsbG1lbnRzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIFZpc2FDYWxTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBvcGVuTG9naW5Qb3B1cCA9IGFzeW5jICgpID0+IHtcbiAgICBkZWJ1Zygnb3BlbiBsb2dpbiBwb3B1cCwgd2FpdCB1bnRpbCBsb2dpbiBidXR0b24gYXZhaWxhYmxlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicsIHRydWUpO1xuICAgIGRlYnVnKCdjbGljayBvbiB0aGUgbG9naW4gYnV0dG9uJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2NjTG9naW5EZXNrdG9wQnRuJyk7XG4gICAgZGVidWcoJ2dldCB0aGUgZnJhbWUgdGhhdCBob2xkcyB0aGUgbG9naW4nKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUodGhpcy5wYWdlKTtcbiAgICBkZWJ1Zygnd2FpdCB1bnRpbCB0aGUgcGFzc3dvcmQgbG9naW4gdGFiIGhlYWRlciBpcyBhdmFpbGFibGUnKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQoZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCduYXZpZ2F0ZSB0byB0aGUgcGFzc3dvcmQgbG9naW4gdGFiJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24oZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCd3YWl0IHVudGlsIHRoZSBwYXNzd29yZCBsb2dpbiB0YWIgaXMgYWN0aXZlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKGZyYW1lLCAncmVndWxhci1sb2dpbicpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9O1xuXG4gIGFzeW5jIGdldENhcmRzKCkge1xuICAgIGNvbnN0IGluaXREYXRhID0gYXdhaXQgd2FpdFVudGlsKFxuICAgICAgKCkgPT4gZ2V0RnJvbVNlc3Npb25TdG9yYWdlPEluaXRSZXNwb25zZT4odGhpcy5wYWdlLCAnaW5pdCcpLFxuICAgICAgJ2dldCBpbml0IGRhdGEgaW4gc2Vzc2lvbiBzdG9yYWdlJyxcbiAgICAgIDEwMDAwLFxuICAgICAgMTAwMCxcbiAgICApO1xuICAgIGlmICghaW5pdERhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IGZpbmQgXFwnaW5pdFxcJyBkYXRhIGluIHNlc3Npb24gc3RvcmFnZScpO1xuICAgIH1cbiAgICByZXR1cm4gaW5pdERhdGE/LnJlc3VsdC5jYXJkcy5tYXAoKHsgY2FyZFVuaXF1ZUlkLCBsYXN0NERpZ2l0cyB9KSA9PiAoeyBjYXJkVW5pcXVlSWQsIGxhc3Q0RGlnaXRzIH0pKTtcbiAgfVxuXG4gIGFzeW5jIGdldEF1dGhvcml6YXRpb25IZWFkZXIoKSB7XG4gICAgY29uc3QgYXV0aE1vZHVsZSA9IGF3YWl0IGdldEZyb21TZXNzaW9uU3RvcmFnZTx7IGF1dGg6IHsgY2FsQ29ubmVjdFRva2VuOiBzdHJpbmcgfSB9Pih0aGlzLnBhZ2UsICdhdXRoLW1vZHVsZScpO1xuICAgIGlmICghYXV0aE1vZHVsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgZmluZCBcXCdhdXRoLW1vZHVsZVxcJyBpbiBzZXNzaW9uIHN0b3JhZ2UnKTtcbiAgICB9XG4gICAgcmV0dXJuIGBDQUxBdXRoU2NoZW1lICR7YXV0aE1vZHVsZS5hdXRoLmNhbENvbm5lY3RUb2tlbn1gO1xuICB9XG5cbiAgYXN5bmMgZ2V0WFNpdGVJZCgpIHtcbiAgICAvKlxuICAgICAgSSBkb24ndCBrbm93IGlmIHRoZSBjb25zdGFudCBiZWxvdyB3aWxsIGNoYW5nZSBpbiB0aGUgZmVhdHVyZS5cbiAgICAgIElmIHNvLCB1c2UgdGhlIG5leHQgY29kZTpcblxuICAgICAgcmV0dXJuIHRoaXMucGFnZS5ldmFsdWF0ZSgoKSA9PiBuZXcgVXQoKS54U2l0ZUlkKTtcblxuICAgICAgVG8gZ2V0IHRoZSBjbGFzc25hbWUgc2VhcmNoIGZvciAneFNpdGVJZCcgaW4gdGhlIHBhZ2Ugc291cmNlXG4gICAgICBjbGFzcyBVdCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKF9lLCBvbiwgeW4pIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUgPSBfZSxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnID0gb24sXG4gICAgICAgICAgICB0aGlzLmV2ZW50QnVzU2VydmljZSA9IHluLFxuICAgICAgICAgICAgdGhpcy54U2l0ZUlkID0gXCIwOTAzMTk4Ny0yNzNFLTIzMTEtOTA2Qy04QUY4NUIxN0M4RDlcIixcbiAgICAqL1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJzA5MDMxOTg3LTI3M0UtMjMxMS05MDZDLThBRjg1QjE3QzhEOScpO1xuICB9XG5cbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyk6IExvZ2luT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBgJHtMT0dJTl9VUkx9YCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICdidXR0b25bdHlwZT1cInN1Ym1pdFwiXScsXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4gd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicpLFxuICAgICAgcHJlQWN0aW9uOiB0aGlzLm9wZW5Mb2dpblBvcHVwLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICdidXR0b24uYnRuLWNsb3NlJyk7XG4gICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IGF3YWl0IGdldEN1cnJlbnRVcmwodGhpcy5wYWdlKTtcbiAgICAgICAgICBpZiAoY3VycmVudFVybC5lbmRzV2l0aCgnc2l0ZS10dXRvcmlhbCcpKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICdidXR0b24uYnRuLWNsb3NlJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IGF3YWl0IGdldEN1cnJlbnRVcmwodGhpcy5wYWdlKTtcbiAgICAgICAgICBpZiAoY3VycmVudFVybC5lbmRzV2l0aCgnZGFzaGJvYXJkJykpIHJldHVybjtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXNlckFnZW50OiAnTW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNzguMC4zOTA0LjEwOCBTYWZhcmkvNTM3LjM2JyxcbiAgICB9O1xuICB9XG5cbiAgaXNDYXJkVHJhbnNhY3Rpb25EZXRhaWxzKHJlc3VsdDogQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyB8IENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvcik6XG4gICAgcmVzdWx0IGlzIENhcmRUcmFuc2FjdGlvbkRldGFpbHMge1xuICAgIHJldHVybiAocmVzdWx0IGFzIENhcmRUcmFuc2FjdGlvbkRldGFpbHMpLnJlc3VsdCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuc3VidHJhY3QoNiwgJ21vbnRocycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuICAgIGRlYnVnKGBmZXRjaCB0cmFuc2FjdGlvbnMgc3RhcnRpbmcgJHtzdGFydE1vbWVudC5mb3JtYXQoKX1gKTtcblxuICAgIGNvbnN0IEF1dGhvcml6YXRpb24gPSBhd2FpdCB0aGlzLmdldEF1dGhvcml6YXRpb25IZWFkZXIoKTtcbiAgICBjb25zdCBjYXJkcyA9IGF3YWl0IHRoaXMuZ2V0Q2FyZHMoKTtcbiAgICBjb25zdCB4U2l0ZUlkID0gYXdhaXQgdGhpcy5nZXRYU2l0ZUlkKCk7XG4gICAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSB0aGlzLm9wdGlvbnMuZnV0dXJlTW9udGhzVG9TY3JhcGUgPz8gMTtcblxuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjYXJkcy5tYXAoYXN5bmMgKGNhcmQpID0+IHtcbiAgICAgICAgZGVidWcoYGZldGNoIHRyYW5zYWN0aW9ucyBmb3IgY2FyZCAke2NhcmQuY2FyZFVuaXF1ZUlkfWApO1xuXG4gICAgICAgIGNvbnN0IGZpbmFsTW9udGhUb0ZldGNoTW9tZW50ID0gbW9tZW50KCkuYWRkKGZ1dHVyZU1vbnRoc1RvU2NyYXBlLCAnbW9udGgnKTtcbiAgICAgICAgY29uc3QgbW9udGhzID0gZmluYWxNb250aFRvRmV0Y2hNb21lbnQuZGlmZihzdGFydE1vbWVudCwgJ21vbnRocycpO1xuXG4gICAgICAgIGNvbnN0IGFsbE1vbnRoc0RhdGE6IChDYXJkVHJhbnNhY3Rpb25EZXRhaWxzKVtdID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG1vbnRoczsgaSArPSAxKSB7XG4gICAgICAgICAgY29uc3QgbW9udGggPSBmaW5hbE1vbnRoVG9GZXRjaE1vbWVudC5jbG9uZSgpLnN1YnRyYWN0KGksICdtb250aHMnKTtcbiAgICAgICAgICBjb25zdCBtb250aERhdGEgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPENhcmRUcmFuc2FjdGlvbkRldGFpbHMgfCBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3I+KFxuICAgICAgICAgICAgdGhpcy5wYWdlLCBUUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCxcbiAgICAgICAgICAgIHsgY2FyZFVuaXF1ZUlkOiBjYXJkLmNhcmRVbmlxdWVJZCwgbW9udGg6IG1vbnRoLmZvcm1hdCgnTScpLCB5ZWFyOiBtb250aC5mb3JtYXQoJ1lZWVknKSB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBdXRob3JpemF0aW9uLFxuICAgICAgICAgICAgICAnWC1TaXRlLUlkJzogeFNpdGVJZCxcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChtb250aERhdGE/LnN0YXR1c0NvZGUgIT09IDEpIHRocm93IG5ldyBFcnJvcihgZmFpbGVkIHRvIGZldGNoIHRyYW5zYWN0aW9ucyBmb3IgY2FyZCAke2NhcmQubGFzdDREaWdpdHN9LiBNZXNzYWdlOiAke21vbnRoRGF0YT8udGl0bGUgfHwgJyd9YCk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuaXNDYXJkVHJhbnNhY3Rpb25EZXRhaWxzKG1vbnRoRGF0YSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbW9udGhEYXRhIGlzIG5vdCBvZiB0eXBlIENhcmRUcmFuc2FjdGlvbkRldGFpbHMnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhbGxNb250aHNEYXRhLnB1c2gobW9udGhEYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9ucyA9IGNvbnZlcnRQYXJzZWREYXRhVG9UcmFuc2FjdGlvbnMoYWxsTW9udGhzRGF0YSk7XG5cbiAgICAgICAgZGVidWcoJ2ZpbGVyIG91dCBvbGQgdHJhbnNhY3Rpb25zJyk7XG4gICAgICAgIGNvbnN0IHR4bnMgPSAodGhpcy5vcHRpb25zLm91dHB1dERhdGE/LmVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/PyB0cnVlKSA/XG4gICAgICAgICAgZmlsdGVyT2xkVHJhbnNhY3Rpb25zKHRyYW5zYWN0aW9ucywgbW9tZW50KHN0YXJ0RGF0ZSksIHRoaXMub3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKSA6XG4gICAgICAgICAgdHJhbnNhY3Rpb25zO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHhucyxcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiBjYXJkLmxhc3Q0RGlnaXRzLFxuICAgICAgICB9IGFzIFRyYW5zYWN0aW9uc0FjY291bnQ7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgZGVidWcoJ3JldHVybiB0aGUgc2NyYXBlZCBhY2NvdW50cycpO1xuXG4gICAgZGVidWcoSlNPTi5zdHJpbmdpZnkoYWNjb3VudHMsIG51bGwsIDIpKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlzYUNhbFNjcmFwZXI7XG4iXX0=
|