israeli-bank-scrapers 1.14.1 → 1.14.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/yahav.js +7 -5
- package/package.json +1 -1
package/lib/scrapers/yahav.js
CHANGED
|
@@ -35,9 +35,10 @@ const BASE_WELCOME_URL = `${BASE_URL}main/home`;
|
|
|
35
35
|
const ACCOUNT_ID_SELECTOR = '.dropdown-dir .selected-item-top';
|
|
36
36
|
const ACCOUNT_DETAILS_SELECTOR = '.account-details';
|
|
37
37
|
const DATE_FORMAT = 'DD/MM/YYYY';
|
|
38
|
-
const USER_ELEM = '#
|
|
39
|
-
const PASSWD_ELEM = '#
|
|
40
|
-
const NATIONALID_ELEM = '#
|
|
38
|
+
const USER_ELEM = '#username';
|
|
39
|
+
const PASSWD_ELEM = '#password';
|
|
40
|
+
const NATIONALID_ELEM = '#pinno';
|
|
41
|
+
const SUBMIT_LOGIN_SELECTOR = '.btn';
|
|
41
42
|
|
|
42
43
|
function getPossibleLoginResults(page) {
|
|
43
44
|
// checkout file `base-scraper-with-browser.ts` for available result types
|
|
@@ -204,6 +205,7 @@ async function waitReadinessForAll(page) {
|
|
|
204
205
|
await (0, _elementsInteractions.waitUntilElementFound)(page, `${USER_ELEM}`, true);
|
|
205
206
|
await (0, _elementsInteractions.waitUntilElementFound)(page, `${PASSWD_ELEM}`, true);
|
|
206
207
|
await (0, _elementsInteractions.waitUntilElementFound)(page, `${NATIONALID_ELEM}`, true);
|
|
208
|
+
await (0, _elementsInteractions.waitUntilElementFound)(page, `${SUBMIT_LOGIN_SELECTOR}`, true);
|
|
207
209
|
}
|
|
208
210
|
|
|
209
211
|
async function redirectOrDialog(page) {
|
|
@@ -241,7 +243,7 @@ class YahavScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
241
243
|
selector: `${NATIONALID_ELEM}`,
|
|
242
244
|
value: credentials.nationalID
|
|
243
245
|
}],
|
|
244
|
-
submitButtonSelector:
|
|
246
|
+
submitButtonSelector: `${SUBMIT_LOGIN_SELECTOR}`,
|
|
245
247
|
checkReadiness: async () => waitReadinessForAll(this.page),
|
|
246
248
|
postAction: async () => redirectOrDialog(this.page),
|
|
247
249
|
possibleResults: getPossibleLoginResults(this.page)
|
|
@@ -269,4 +271,4 @@ class YahavScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
269
271
|
|
|
270
272
|
var _default = YahavScraper;
|
|
271
273
|
exports.default = _default;
|
|
272
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy95YWhhdi50cyJdLCJuYW1lcyI6WyJMT0dJTl9VUkwiLCJCQVNFX1VSTCIsIklOVkFMSURfREVUQUlMU19TRUxFQ1RPUiIsIkNIQU5HRV9QQVNTV09SRF9PTERfUEFTUyIsIkJBU0VfV0VMQ09NRV9VUkwiLCJBQ0NPVU5UX0lEX1NFTEVDVE9SIiwiQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SIiwiREFURV9GT1JNQVQiLCJVU0VSX0VMRU0iLCJQQVNTV0RfRUxFTSIsIk5BVElPTkFMSURfRUxFTSIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwicGFnZSIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiQ2hhbmdlUGFzc3dvcmQiLCJnZXRBY2NvdW50SUQiLCJzZWxlY3RlZFNuaWZBY2NvdW50IiwiJGV2YWwiLCJvcHRpb24iLCJpbm5lclRleHQiLCJnZXRBbW91bnREYXRhIiwiYW1vdW50U3RyIiwiYW1vdW50U3RyQ29weSIsInJlcGxhY2UiLCJwYXJzZUZsb2F0IiwiZ2V0VHhuQW1vdW50IiwidHhuIiwiY3JlZGl0IiwiZGViaXQiLCJOdW1iZXIiLCJpc05hTiIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwibWFwIiwiY29udmVydGVkRGF0ZSIsImRhdGUiLCJ0b0lTT1N0cmluZyIsImNvbnZlcnRlZEFtb3VudCIsInR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiTm9ybWFsIiwiaWRlbnRpZmllciIsInJlZmVyZW5jZSIsInBhcnNlSW50IiwidW5kZWZpbmVkIiwicHJvY2Vzc2VkRGF0ZSIsIm9yaWdpbmFsQW1vdW50Iiwib3JpZ2luYWxDdXJyZW5jeSIsIlNIRUtFTF9DVVJSRU5DWSIsImNoYXJnZWRBbW91bnQiLCJzdGF0dXMiLCJkZXNjcmlwdGlvbiIsIm1lbW8iLCJoYW5kbGVUcmFuc2FjdGlvblJvdyIsInR4blJvdyIsImRpdiIsImlubmVyRGl2cyIsInJlZ2V4IiwidHgiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwicHVzaCIsImdldEFjY291bnRUcmFuc2FjdGlvbnMiLCJ0cmFuc2FjdGlvbnNEaXZzIiwiZGl2cyIsImlkIiwiZ2V0QXR0cmlidXRlIiwiQXJyYXkiLCJmcm9tIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJzZWFyY2hCeURhdGVzIiwic3RhcnREYXRlIiwic3RhcnREYXRlRGF5IiwiZm9ybWF0Iiwic3RhcnREYXRlTW9udGgiLCJzdGFydERhdGVZZWFyIiwiZGF0ZUZyb21QaWNrIiwibW9udGhGcm9tUGljayIsImkiLCJzZWxlY3RvciIsInllYXIiLCJ5IiwibW9udGhTZWxlY3RvciIsImRheSIsImQiLCJmZXRjaEFjY291bnREYXRhIiwiYWNjb3VudElEIiwiYWNjb3VudE51bWJlciIsImZldGNoQWNjb3VudHMiLCJhY2NvdW50cyIsImFjY291bnREYXRhIiwid2FpdFJlYWRpbmVzc0ZvckFsbCIsInJlZGlyZWN0T3JEaWFsb2ciLCJoYXNNZXNzYWdlIiwicHJvbWlzZTEiLCJ3YWl0Rm9yU2VsZWN0b3IiLCJ0aW1lb3V0IiwicHJvbWlzZTIiLCJwcm9taXNlcyIsIlByb21pc2UiLCJyYWNlIiwiWWFoYXZTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImNyZWRlbnRpYWxzIiwibG9naW5VcmwiLCJmaWVsZHMiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJuYXRpb25hbElEIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJjaGVja1JlYWRpbmVzcyIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsIm9wdGlvbnMiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1vbWVudCIsIm1heCIsInN1Y2Nlc3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUVBOztB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O0FBRUEsVUFBTTJHLGtCQUFrQixHQUFHLHVCQUFTQyxRQUFULENBQWtCLENBQWxCLEVBQXFCLFFBQXJCLEVBQStCQyxHQUEvQixDQUFtQyxDQUFuQyxFQUFzQyxLQUF0QyxDQUEzQjtBQUNBLFVBQU0vQyxTQUFTLEdBQUcsS0FBS2dELE9BQUwsQ0FBYWhELFNBQWIsSUFBMEI2QyxrQkFBa0IsQ0FBQ0ksTUFBbkIsRUFBNUM7O0FBQ0EsVUFBTUMsV0FBVyxHQUFHQyxnQkFBT0MsR0FBUCxDQUFXUCxrQkFBWCxFQUErQixxQkFBTzdDLFNBQVAsQ0FBL0IsQ0FBcEI7O0FBRUEsVUFBTWtCLFFBQVEsR0FBRyxNQUFNRCxhQUFhLENBQUMsS0FBSy9FLElBQU4sRUFBWWdILFdBQVosQ0FBcEM7QUFFQSxXQUFPO0FBQ0xHLE1BQUFBLE9BQU8sRUFBRSxJQURKO0FBRUxuQyxNQUFBQTtBQUZLLEtBQVA7QUFJRDs7QUFoQytDOztlQW1DbkNZLFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50LCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBjbGlja0J1dHRvbiwgZWxlbWVudFByZXNlbnRPblBhZ2UsXG4gIHBhZ2VFdmFsQWxsLCB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyLCB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IHdhaXRGb3JOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvbnNBY2NvdW50LFxuICBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgU2NyYXBlckNyZWRlbnRpYWxzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXInO1xuaW1wb3J0IHtcbiAgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcixcbiAgTG9naW5SZXN1bHRzLFxuICBQb3NzaWJsZUxvZ2luUmVzdWx0cyxcbn0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcblxuY29uc3QgTE9HSU5fVVJMID0gJ2h0dHBzOi8vbG9naW4ueWFoYXYuY28uaWwvbG9naW4vJztcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vZGlnaXRhbC55YWhhdi5jby5pbC9CYU5DU0RpZ2l0YWxVSS9hcHAvaW5kZXguaHRtbCMvJztcbmNvbnN0IElOVkFMSURfREVUQUlMU19TRUxFQ1RPUiA9ICcudWktZGlhbG9nLWJ1dHRvbnMnO1xuY29uc3QgQ0hBTkdFX1BBU1NXT1JEX09MRF9QQVNTID0gJ2lucHV0I2VmX3JlcV9wYXJhbWV0ZXJfb2xkX2NyZWRlbnRpYWwnO1xuY29uc3QgQkFTRV9XRUxDT01FX1VSTCA9IGAke0JBU0VfVVJMfW1haW4vaG9tZWA7XG5cbmNvbnN0IEFDQ09VTlRfSURfU0VMRUNUT1IgPSAnLmRyb3Bkb3duLWRpciAuc2VsZWN0ZWQtaXRlbS10b3AnO1xuY29uc3QgQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SID0gJy5hY2NvdW50LWRldGFpbHMnO1xuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5cbmNvbnN0IFVTRVJfRUxFTSA9ICcjVVNFUic7XG5jb25zdCBQQVNTV0RfRUxFTSA9ICcjUEFTU1dPUkQnO1xuY29uc3QgTkFUSU9OQUxJRF9FTEVNID0gJyNOQVRJT05BTF9JRCc7XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBjcmVkaXQ6IHN0cmluZztcbiAgZGViaXQ6IHN0cmluZztcbiAgZGF0ZTogc3RyaW5nO1xuICByZWZlcmVuY2U/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIG1lbW86IHN0cmluZztcbiAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyhwYWdlOiBQYWdlKTogUG9zc2libGVMb2dpblJlc3VsdHMge1xuICAvLyBjaGVja291dCBmaWxlIGBiYXNlLXNjcmFwZXItd2l0aC1icm93c2VyLnRzYCBmb3IgYXZhaWxhYmxlIHJlc3VsdCB0eXBlc1xuICBjb25zdCB1cmxzOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyA9IHt9O1xuICB1cmxzW0xvZ2luUmVzdWx0cy5TdWNjZXNzXSA9IFtcbiAgICBgJHtCQVNFX1dFTENPTUVfVVJMfWAsXG4gIF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF0gPSBbYXN5bmMgKCkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCBgJHtJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1J9YCk7XG4gIH1dO1xuXG4gIHVybHNbTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkXSA9IFthc3luYyAoKSA9PiB7XG4gICAgcmV0dXJuIGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIGAke0NIQU5HRV9QQVNTV09SRF9PTERfUEFTU31gKTtcbiAgfV07XG5cbiAgcmV0dXJuIHVybHM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFjY291bnRJRChwYWdlOiBQYWdlKSB7XG4gIGNvbnN0IHNlbGVjdGVkU25pZkFjY291bnQgPSBhd2FpdCBwYWdlLiRldmFsKGAke0FDQ09VTlRfSURfU0VMRUNUT1J9YCwgKG9wdGlvbikgPT4ge1xuICAgIHJldHVybiAob3B0aW9uIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQ7XG4gIH0pO1xuXG4gIHJldHVybiBzZWxlY3RlZFNuaWZBY2NvdW50O1xufVxuXG5mdW5jdGlvbiBnZXRBbW91bnREYXRhKGFtb3VudFN0cjogc3RyaW5nKSB7XG4gIGNvbnN0IGFtb3VudFN0ckNvcHkgPSBhbW91bnRTdHIucmVwbGFjZSgnLCcsICcnKTtcbiAgcmV0dXJuIHBhcnNlRmxvYXQoYW1vdW50U3RyQ29weSk7XG59XG5cbmZ1bmN0aW9uIGdldFR4bkFtb3VudCh0eG46IFNjcmFwZWRUcmFuc2FjdGlvbikge1xuICBjb25zdCBjcmVkaXQgPSBnZXRBbW91bnREYXRhKHR4bi5jcmVkaXQpO1xuICBjb25zdCBkZWJpdCA9IGdldEFtb3VudERhdGEodHhuLmRlYml0KTtcbiAgcmV0dXJuIChOdW1iZXIuaXNOYU4oY3JlZGl0KSA/IDAgOiBjcmVkaXQpIC0gKE51bWJlci5pc05hTihkZWJpdCkgPyAwIDogZGViaXQpO1xufVxuXG50eXBlIFRyYW5zYWN0aW9uc1RyID0geyBpZDogc3RyaW5nLCBpbm5lckRpdnM6IHN0cmluZ1tdIH07XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10pOiBUcmFuc2FjdGlvbltdIHtcbiAgcmV0dXJuIHR4bnMubWFwKCh0eG4pID0+IHtcbiAgICBjb25zdCBjb252ZXJ0ZWREYXRlID0gbW9tZW50KHR4bi5kYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBjb252ZXJ0ZWRBbW91bnQgPSBnZXRUeG5BbW91bnQodHhuKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBpZGVudGlmaWVyOiB0eG4ucmVmZXJlbmNlID8gcGFyc2VJbnQodHhuLnJlZmVyZW5jZSwgMTApIDogdW5kZWZpbmVkLFxuICAgICAgZGF0ZTogY29udmVydGVkRGF0ZSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGNvbnZlcnRlZERhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgY2hhcmdlZEFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgICAgc3RhdHVzOiB0eG4uc3RhdHVzLFxuICAgICAgZGVzY3JpcHRpb246IHR4bi5kZXNjcmlwdGlvbixcbiAgICAgIG1lbW86IHR4bi5tZW1vLFxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVUcmFuc2FjdGlvblJvdyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSwgdHhuUm93OiBUcmFuc2FjdGlvbnNUcikge1xuICBjb25zdCBkaXYgPSB0eG5Sb3cuaW5uZXJEaXZzO1xuXG4gIC8vIFJlbW92ZSBhbnl0aGluZyBleGNlcHQgZGlnaXRzLlxuICBjb25zdCByZWdleCA9IC9cXEQrL2dtO1xuXG4gIGNvbnN0IHR4OiBTY3JhcGVkVHJhbnNhY3Rpb24gPSB7XG4gICAgZGF0ZTogZGl2WzFdLFxuICAgIHJlZmVyZW5jZTogZGl2WzJdLnJlcGxhY2UocmVnZXgsICcnKSxcbiAgICBtZW1vOiAnJyxcbiAgICBkZXNjcmlwdGlvbjogZGl2WzNdLFxuICAgIGRlYml0OiBkaXZbNF0sXG4gICAgY3JlZGl0OiBkaXZbNV0sXG4gICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgfTtcblxuICB0eG5zLnB1c2godHgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50VHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgLy8gV2FpdCBmb3IgdHJhbnNhY3Rpb25zLlxuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJy51bmRlci1saW5lLXR4bi10YWJsZS1oZWFkZXInLCB0cnVlKTtcblxuICBjb25zdCB0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSA9IFtdO1xuICBjb25zdCB0cmFuc2FjdGlvbnNEaXZzID0gYXdhaXQgcGFnZUV2YWxBbGw8VHJhbnNhY3Rpb25zVHJbXT4ocGFnZSwgJy5saXN0LWl0ZW0taG9sZGVyIC5lbnRpcmUtY29udGVudC1jdHInLCBbXSwgKGRpdnMpID0+IHtcbiAgICByZXR1cm4gKGRpdnMgYXMgSFRNTEVsZW1lbnRbXSkubWFwKChkaXYpID0+ICh7XG4gICAgICBpZDogKGRpdikuZ2V0QXR0cmlidXRlKCdpZCcpIHx8ICcnLFxuICAgICAgaW5uZXJEaXZzOiBBcnJheS5mcm9tKGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JykpLm1hcCgoZGl2KSA9PiAoZGl2IGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQpLFxuICAgIH0pKTtcbiAgfSk7XG5cbiAgZm9yIChjb25zdCB0eG5Sb3cgb2YgdHJhbnNhY3Rpb25zRGl2cykge1xuICAgIGhhbmRsZVRyYW5zYWN0aW9uUm93KHR4bnMsIHR4blJvdyk7XG4gIH1cblxuICByZXR1cm4gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zKTtcbn1cblxuLy8gTWFuaXB1bGF0ZSB0aGUgY2FsZW5kYXIgZHJvcCBkb3duIHRvIGNob29zZSB0aGUgdHhzIHN0YXJ0IGRhdGUuXG5hc3luYyBmdW5jdGlvbiBzZWFyY2hCeURhdGVzKHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50KSB7XG4gIC8vIEdldCB0aGUgZGF5IG51bWJlciBmcm9tIHN0YXJ0RGF0ZS4gMS0zMSAodXN1YWxseSAxKVxuICBjb25zdCBzdGFydERhdGVEYXkgPSBzdGFydERhdGUuZm9ybWF0KCdEJyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZU1vbnRoID0gc3RhcnREYXRlLmZvcm1hdCgnTScpO1xuICBjb25zdCBzdGFydERhdGVZZWFyID0gc3RhcnREYXRlLmZvcm1hdCgnWScpO1xuXG4gIC8vIE9wZW4gdGhlIGNhbGVuZGFyIGRhdGUgcGlja2VyXG4gIGNvbnN0IGRhdGVGcm9tUGljayA9ICdkaXYuZGF0ZS1vcHRpb25zLWNlbGw6bnRoLWNoaWxkKDcpID4gZGF0ZS1waWNrZXI6bnRoLWNoaWxkKDEpID4gZGl2Om50aC1jaGlsZCgxKSA+IHNwYW46bnRoLWNoaWxkKDIpJztcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGRhdGVGcm9tUGljaywgdHJ1ZSk7XG4gIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsIGRhdGVGcm9tUGljayk7XG5cbiAgLy8gV2FpdCB1bnRpbCBmaXJzdCBkYXkgYXBwZWFyLlxuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJy5wbXUtZGF5cyA+IGRpdjpudGgtY2hpbGQoMSknLCB0cnVlKTtcblxuICAvLyBPcGVuIE1vbnRocyBvcHRpb25zLlxuICBjb25zdCBtb250aEZyb21QaWNrID0gJy5wbXUtbW9udGgnO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgbW9udGhGcm9tUGljaywgdHJ1ZSk7XG4gIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsIG1vbnRoRnJvbVBpY2spO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJy5wbXUtbW9udGhzID4gZGl2Om50aC1jaGlsZCgxKScsIHRydWUpO1xuXG4gIC8vIE9wZW4gWWVhciBvcHRpb25zLlxuICAvLyBVc2Ugc2FtZSBzZWxlY3Rvci4uLiBZYWhhdiBrbm93cyB3aHkuLi5cbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIG1vbnRoRnJvbVBpY2ssIHRydWUpO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBtb250aEZyb21QaWNrKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucG11LXllYXJzID4gZGl2Om50aC1jaGlsZCgxKScsIHRydWUpO1xuXG4gIC8vIFNlbGVjdCB5ZWFyIGZyb20gYSAxMiB5ZWFyIGdyaWQuXG4gIGZvciAobGV0IGkgPSAxOyBpIDwgMTM7IGkgKz0gMSkge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gYC5wbXUteWVhcnMgPiBkaXY6bnRoLWNoaWxkKCR7aX0pYDtcbiAgICBjb25zdCB5ZWFyID0gYXdhaXQgcGFnZS4kZXZhbChzZWxlY3RvciwgKHkpID0+IHtcbiAgICAgIHJldHVybiAoeSBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICAgIH0pO1xuICAgIGlmIChzdGFydERhdGVZZWFyID09PSB5ZWFyKSB7XG4gICAgICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBzZWxlY3Rvcik7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyBTZWxlY3QgTW9udGguXG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnLnBtdS1tb250aHMgPiBkaXY6bnRoLWNoaWxkKDEpJywgdHJ1ZSk7XG4gIC8vIFRoZSBmaXJzdCBlbGVtZW50ICgxKSBpcyBKYW51YXJ5LlxuICBjb25zdCBtb250aFNlbGVjdG9yID0gYC5wbXUtbW9udGhzID4gZGl2Om50aC1jaGlsZCgke3N0YXJ0RGF0ZU1vbnRofSlgO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBtb250aFNlbGVjdG9yKTtcblxuICAvLyBTZWxlY3QgRGF5LlxuICAvLyBUaGUgY2FsZW5kYXIgZ3JpZCBzaG93cyA3IGRheXMgYW5kIDYgd2Vla3MgPSA0MiBkYXlzLlxuICAvLyBJbiB0aGVvcnksIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoIHdpbGwgYmUgaW4gdGhlIGZpcnN0IHJvdy5cbiAgLy8gTGV0J3MgY2hlY2sgZXZlcnl0aGluZyBqdXN0IGluIGNhc2UuLi5cbiAgZm9yIChsZXQgaSA9IDE7IGkgPCA0MjsgaSArPSAxKSB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSBgLnBtdS1kYXlzID4gZGl2Om50aC1jaGlsZCgke2l9KWA7XG4gICAgY29uc3QgZGF5ID0gYXdhaXQgcGFnZS4kZXZhbChzZWxlY3RvciwgKGQpID0+IHtcbiAgICAgIHJldHVybiAoZCBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICAgIH0pO1xuXG4gICAgaWYgKHN0YXJ0RGF0ZURheSA9PT0gZGF5KSB7XG4gICAgICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBzZWxlY3Rvcik7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cblxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFjY291bnREYXRhKHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50LCBhY2NvdW50SUQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25zQWNjb3VudD4ge1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyKHBhZ2UsICcubG9hZGluZy1iYXItc3Bpbm5lcicpO1xuICBhd2FpdCBzZWFyY2hCeURhdGVzKHBhZ2UsIHN0YXJ0RGF0ZSk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIocGFnZSwgJy5sb2FkaW5nLWJhci1zcGlubmVyJyk7XG4gIGNvbnN0IHR4bnMgPSBhd2FpdCBnZXRBY2NvdW50VHJhbnNhY3Rpb25zKHBhZ2UpO1xuXG4gIHJldHVybiB7XG4gICAgYWNjb3VudE51bWJlcjogYWNjb3VudElELFxuICAgIHR4bnMsXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudHMocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnRbXT4ge1xuICBjb25zdCBhY2NvdW50czogVHJhbnNhY3Rpb25zQWNjb3VudFtdID0gW107XG5cbiAgLy8gVE9ETzogZ2V0IG1vcmUgYWNjb3VudHMuIE5vdCBzdXJlIGlzIHN1cHBvcnRlZC5cbiAgY29uc3QgYWNjb3VudElEID0gYXdhaXQgZ2V0QWNjb3VudElEKHBhZ2UpO1xuICBjb25zdCBhY2NvdW50RGF0YSA9IGF3YWl0IGZldGNoQWNjb3VudERhdGEocGFnZSwgc3RhcnREYXRlLCBhY2NvdW50SUQpO1xuICBhY2NvdW50cy5wdXNoKGFjY291bnREYXRhKTtcblxuICByZXR1cm4gYWNjb3VudHM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdhaXRSZWFkaW5lc3NGb3JBbGwocGFnZTogUGFnZSkge1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYCR7VVNFUl9FTEVNfWAsIHRydWUpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYCR7UEFTU1dEX0VMRU19YCwgdHJ1ZSk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBgJHtOQVRJT05BTElEX0VMRU19YCwgdHJ1ZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZGlyZWN0T3JEaWFsb2cocGFnZTogUGFnZSkge1xuICAvLyBDbGljayBvbiBiYW5rIG1lc3NhZ2VzIGlmIGFueS5cbiAgYXdhaXQgd2FpdEZvck5hdmlnYXRpb24ocGFnZSk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIocGFnZSwgJy5sb2FkaW5nLWJhci1zcGlubmVyJyk7XG4gIGNvbnN0IGhhc01lc3NhZ2UgPSBhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCAnLm1lc3NhZ2luZy1saW5rcy1jb250YWluZXInKTtcbiAgaWYgKGhhc01lc3NhZ2UpIHtcbiAgICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCAnLmxpbmstMScpO1xuICB9XG5cbiAgY29uc3QgcHJvbWlzZTEgPSBwYWdlLndhaXRGb3JTZWxlY3RvcihBQ0NPVU5UX0RFVEFJTFNfU0VMRUNUT1IsIHsgdGltZW91dDogMzAwMDAgfSk7XG4gIGNvbnN0IHByb21pc2UyID0gcGFnZS53YWl0Rm9yU2VsZWN0b3IoQ0hBTkdFX1BBU1NXT1JEX09MRF9QQVNTLCB7IHRpbWVvdXQ6IDMwMDAwIH0pO1xuICBjb25zdCBwcm9taXNlcyA9IFtwcm9taXNlMSwgcHJvbWlzZTJdO1xuXG4gIGF3YWl0IFByb21pc2UucmFjZShwcm9taXNlcyk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIocGFnZSwgJy5sb2FkaW5nLWJhci1zcGlubmVyJyk7XG59XG5cbmNsYXNzIFlhaGF2U2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7TE9HSU5fVVJMfWAsXG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAgeyBzZWxlY3RvcjogYCR7VVNFUl9FTEVNfWAsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgICAgICB7IHNlbGVjdG9yOiBgJHtQQVNTV0RfRUxFTX1gLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgICAgICAgeyBzZWxlY3RvcjogYCR7TkFUSU9OQUxJRF9FTEVNfWAsIHZhbHVlOiBjcmVkZW50aWFscy5uYXRpb25hbElEIH0sXG4gICAgICBdLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICcuc3VibWl0JyxcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB3YWl0UmVhZGluZXNzRm9yQWxsKHRoaXMucGFnZSksXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiByZWRpcmVjdE9yRGlhbG9nKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHRoaXMucGFnZSksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICAvLyBHb3RvIHN0YXRlbWVudHMgcGFnZVxuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsIEFDQ09VTlRfREVUQUlMU19TRUxFQ1RPUiwgdHJ1ZSk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCBBQ0NPVU5UX0RFVEFJTFNfU0VMRUNUT1IpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcuc3RhdGVtZW50LW9wdGlvbnMgLnNlbGVjdGVkLWl0ZW0tdG9wJywgdHJ1ZSk7XG5cbiAgICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgzLCAnbW9udGhzJykuYWRkKDEsICdkYXknKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoQWNjb3VudHModGhpcy5wYWdlLCBzdGFydE1vbWVudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgWWFoYXZTY3JhcGVyO1xuIl19
|
|
274
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy95YWhhdi50cyJdLCJuYW1lcyI6WyJMT0dJTl9VUkwiLCJCQVNFX1VSTCIsIklOVkFMSURfREVUQUlMU19TRUxFQ1RPUiIsIkNIQU5HRV9QQVNTV09SRF9PTERfUEFTUyIsIkJBU0VfV0VMQ09NRV9VUkwiLCJBQ0NPVU5UX0lEX1NFTEVDVE9SIiwiQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SIiwiREFURV9GT1JNQVQiLCJVU0VSX0VMRU0iLCJQQVNTV0RfRUxFTSIsIk5BVElPTkFMSURfRUxFTSIsIlNVQk1JVF9MT0dJTl9TRUxFQ1RPUiIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwicGFnZSIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiQ2hhbmdlUGFzc3dvcmQiLCJnZXRBY2NvdW50SUQiLCJzZWxlY3RlZFNuaWZBY2NvdW50IiwiJGV2YWwiLCJvcHRpb24iLCJpbm5lclRleHQiLCJnZXRBbW91bnREYXRhIiwiYW1vdW50U3RyIiwiYW1vdW50U3RyQ29weSIsInJlcGxhY2UiLCJwYXJzZUZsb2F0IiwiZ2V0VHhuQW1vdW50IiwidHhuIiwiY3JlZGl0IiwiZGViaXQiLCJOdW1iZXIiLCJpc05hTiIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwibWFwIiwiY29udmVydGVkRGF0ZSIsImRhdGUiLCJ0b0lTT1N0cmluZyIsImNvbnZlcnRlZEFtb3VudCIsInR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiTm9ybWFsIiwiaWRlbnRpZmllciIsInJlZmVyZW5jZSIsInBhcnNlSW50IiwidW5kZWZpbmVkIiwicHJvY2Vzc2VkRGF0ZSIsIm9yaWdpbmFsQW1vdW50Iiwib3JpZ2luYWxDdXJyZW5jeSIsIlNIRUtFTF9DVVJSRU5DWSIsImNoYXJnZWRBbW91bnQiLCJzdGF0dXMiLCJkZXNjcmlwdGlvbiIsIm1lbW8iLCJoYW5kbGVUcmFuc2FjdGlvblJvdyIsInR4blJvdyIsImRpdiIsImlubmVyRGl2cyIsInJlZ2V4IiwidHgiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwicHVzaCIsImdldEFjY291bnRUcmFuc2FjdGlvbnMiLCJ0cmFuc2FjdGlvbnNEaXZzIiwiZGl2cyIsImlkIiwiZ2V0QXR0cmlidXRlIiwiQXJyYXkiLCJmcm9tIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJzZWFyY2hCeURhdGVzIiwic3RhcnREYXRlIiwic3RhcnREYXRlRGF5IiwiZm9ybWF0Iiwic3RhcnREYXRlTW9udGgiLCJzdGFydERhdGVZZWFyIiwiZGF0ZUZyb21QaWNrIiwibW9udGhGcm9tUGljayIsImkiLCJzZWxlY3RvciIsInllYXIiLCJ5IiwibW9udGhTZWxlY3RvciIsImRheSIsImQiLCJmZXRjaEFjY291bnREYXRhIiwiYWNjb3VudElEIiwiYWNjb3VudE51bWJlciIsImZldGNoQWNjb3VudHMiLCJhY2NvdW50cyIsImFjY291bnREYXRhIiwid2FpdFJlYWRpbmVzc0ZvckFsbCIsInJlZGlyZWN0T3JEaWFsb2ciLCJoYXNNZXNzYWdlIiwicHJvbWlzZTEiLCJ3YWl0Rm9yU2VsZWN0b3IiLCJ0aW1lb3V0IiwicHJvbWlzZTIiLCJwcm9taXNlcyIsIlByb21pc2UiLCJyYWNlIiwiWWFoYXZTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImNyZWRlbnRpYWxzIiwibG9naW5VcmwiLCJmaWVsZHMiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJuYXRpb25hbElEIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJjaGVja1JlYWRpbmVzcyIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsIm9wdGlvbnMiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1vbWVudCIsIm1heCIsInN1Y2Nlc3MiXSwibWFwcGluZ3MiOiI7Ozs7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QUFpQ1Asd0JBQWpDLEVBQTJELElBQTNELENBQU47QUFDQSxVQUFNLHVDQUFZLEtBQUtPLElBQWpCLEVBQXVCUCx3QkFBdkIsQ0FBTjtBQUNBLFVBQU0saURBQXNCLEtBQUtPLElBQTNCLEVBQWlDLHVDQUFqQyxFQUEwRSxJQUExRSxDQUFOO0FBRUEsVUFBTTJHLGtCQUFrQixHQUFHLHVCQUFTQyxRQUFULENBQWtCLENBQWxCLEVBQXFCLFFBQXJCLEVBQStCQyxHQUEvQixDQUFtQyxDQUFuQyxFQUFzQyxLQUF0QyxDQUEzQjtBQUNBLFVBQU0vQyxTQUFTLEdBQUcsS0FBS2dELE9BQUwsQ0FBYWhELFNBQWIsSUFBMEI2QyxrQkFBa0IsQ0FBQ0ksTUFBbkIsRUFBNUM7O0FBQ0EsVUFBTUMsV0FBVyxHQUFHQyxnQkFBT0MsR0FBUCxDQUFXUCxrQkFBWCxFQUErQixxQkFBTzdDLFNBQVAsQ0FBL0IsQ0FBcEI7O0FBRUEsVUFBTWtCLFFBQVEsR0FBRyxNQUFNRCxhQUFhLENBQUMsS0FBSy9FLElBQU4sRUFBWWdILFdBQVosQ0FBcEM7QUFFQSxXQUFPO0FBQ0xHLE1BQUFBLE9BQU8sRUFBRSxJQURKO0FBRUxuQyxNQUFBQTtBQUZLLEtBQVA7QUFJRDs7QUFoQytDOztlQW1DbkNZLFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50LCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBjbGlja0J1dHRvbiwgZWxlbWVudFByZXNlbnRPblBhZ2UsXG4gIHBhZ2VFdmFsQWxsLCB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyLCB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IHdhaXRGb3JOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvbnNBY2NvdW50LFxuICBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgU2NyYXBlckNyZWRlbnRpYWxzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXInO1xuaW1wb3J0IHtcbiAgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcixcbiAgTG9naW5SZXN1bHRzLFxuICBQb3NzaWJsZUxvZ2luUmVzdWx0cyxcbn0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcblxuY29uc3QgTE9HSU5fVVJMID0gJ2h0dHBzOi8vbG9naW4ueWFoYXYuY28uaWwvbG9naW4vJztcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vZGlnaXRhbC55YWhhdi5jby5pbC9CYU5DU0RpZ2l0YWxVSS9hcHAvaW5kZXguaHRtbCMvJztcbmNvbnN0IElOVkFMSURfREVUQUlMU19TRUxFQ1RPUiA9ICcudWktZGlhbG9nLWJ1dHRvbnMnO1xuY29uc3QgQ0hBTkdFX1BBU1NXT1JEX09MRF9QQVNTID0gJ2lucHV0I2VmX3JlcV9wYXJhbWV0ZXJfb2xkX2NyZWRlbnRpYWwnO1xuY29uc3QgQkFTRV9XRUxDT01FX1VSTCA9IGAke0JBU0VfVVJMfW1haW4vaG9tZWA7XG5cbmNvbnN0IEFDQ09VTlRfSURfU0VMRUNUT1IgPSAnLmRyb3Bkb3duLWRpciAuc2VsZWN0ZWQtaXRlbS10b3AnO1xuY29uc3QgQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SID0gJy5hY2NvdW50LWRldGFpbHMnO1xuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5cbmNvbnN0IFVTRVJfRUxFTSA9ICcjdXNlcm5hbWUnO1xuY29uc3QgUEFTU1dEX0VMRU0gPSAnI3Bhc3N3b3JkJztcbmNvbnN0IE5BVElPTkFMSURfRUxFTSA9ICcjcGlubm8nO1xuY29uc3QgU1VCTUlUX0xPR0lOX1NFTEVDVE9SID0gJy5idG4nO1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgY3JlZGl0OiBzdHJpbmc7XG4gIGRlYml0OiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgcmVmZXJlbmNlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBtZW1vOiBzdHJpbmc7XG4gIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcztcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMocGFnZTogUGFnZSk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgLy8gY2hlY2tvdXQgZmlsZSBgYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlci50c2AgZm9yIGF2YWlsYWJsZSByZXN1bHQgdHlwZXNcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbXG4gICAgYCR7QkFTRV9XRUxDT01FX1VSTH1gLFxuICBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdID0gW2FzeW5jICgpID0+IHtcbiAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgYCR7SU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SfWApO1xuICB9XTtcblxuICB1cmxzW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF0gPSBbYXN5bmMgKCkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCBgJHtDSEFOR0VfUEFTU1dPUkRfT0xEX1BBU1N9YCk7XG4gIH1dO1xuXG4gIHJldHVybiB1cmxzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50SUQocGFnZTogUGFnZSkge1xuICBjb25zdCBzZWxlY3RlZFNuaWZBY2NvdW50ID0gYXdhaXQgcGFnZS4kZXZhbChgJHtBQ0NPVU5UX0lEX1NFTEVDVE9SfWAsIChvcHRpb24pID0+IHtcbiAgICByZXR1cm4gKG9wdGlvbiBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICB9KTtcblxuICByZXR1cm4gc2VsZWN0ZWRTbmlmQWNjb3VudDtcbn1cblxuZnVuY3Rpb24gZ2V0QW1vdW50RGF0YShhbW91bnRTdHI6IHN0cmluZykge1xuICBjb25zdCBhbW91bnRTdHJDb3B5ID0gYW1vdW50U3RyLnJlcGxhY2UoJywnLCAnJyk7XG4gIHJldHVybiBwYXJzZUZsb2F0KGFtb3VudFN0ckNvcHkpO1xufVxuXG5mdW5jdGlvbiBnZXRUeG5BbW91bnQodHhuOiBTY3JhcGVkVHJhbnNhY3Rpb24pIHtcbiAgY29uc3QgY3JlZGl0ID0gZ2V0QW1vdW50RGF0YSh0eG4uY3JlZGl0KTtcbiAgY29uc3QgZGViaXQgPSBnZXRBbW91bnREYXRhKHR4bi5kZWJpdCk7XG4gIHJldHVybiAoTnVtYmVyLmlzTmFOKGNyZWRpdCkgPyAwIDogY3JlZGl0KSAtIChOdW1iZXIuaXNOYU4oZGViaXQpID8gMCA6IGRlYml0KTtcbn1cblxudHlwZSBUcmFuc2FjdGlvbnNUciA9IHsgaWQ6IHN0cmluZywgaW5uZXJEaXZzOiBzdHJpbmdbXSB9O1xuXG5mdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSB7XG4gIHJldHVybiB0eG5zLm1hcCgodHhuKSA9PiB7XG4gICAgY29uc3QgY29udmVydGVkRGF0ZSA9IG1vbWVudCh0eG4uZGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3QgY29udmVydGVkQW1vdW50ID0gZ2V0VHhuQW1vdW50KHR4bik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgaWRlbnRpZmllcjogdHhuLnJlZmVyZW5jZSA/IHBhcnNlSW50KHR4bi5yZWZlcmVuY2UsIDEwKSA6IHVuZGVmaW5lZCxcbiAgICAgIGRhdGU6IGNvbnZlcnRlZERhdGUsXG4gICAgICBwcm9jZXNzZWREYXRlOiBjb252ZXJ0ZWREYXRlLFxuICAgICAgb3JpZ2luYWxBbW91bnQ6IGNvbnZlcnRlZEFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IFNIRUtFTF9DVVJSRU5DWSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGNvbnZlcnRlZEFtb3VudCxcbiAgICAgIHN0YXR1czogdHhuLnN0YXR1cyxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG4uZGVzY3JpcHRpb24sXG4gICAgICBtZW1vOiB0eG4ubWVtbyxcbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlVHJhbnNhY3Rpb25Sb3codHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIHR4blJvdzogVHJhbnNhY3Rpb25zVHIpIHtcbiAgY29uc3QgZGl2ID0gdHhuUm93LmlubmVyRGl2cztcblxuICAvLyBSZW1vdmUgYW55dGhpbmcgZXhjZXB0IGRpZ2l0cy5cbiAgY29uc3QgcmVnZXggPSAvXFxEKy9nbTtcblxuICBjb25zdCB0eDogU2NyYXBlZFRyYW5zYWN0aW9uID0ge1xuICAgIGRhdGU6IGRpdlsxXSxcbiAgICByZWZlcmVuY2U6IGRpdlsyXS5yZXBsYWNlKHJlZ2V4LCAnJyksXG4gICAgbWVtbzogJycsXG4gICAgZGVzY3JpcHRpb246IGRpdlszXSxcbiAgICBkZWJpdDogZGl2WzRdLFxuICAgIGNyZWRpdDogZGl2WzVdLFxuICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gIH07XG5cbiAgdHhucy5wdXNoKHR4KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudFRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlKTogUHJvbWlzZTxUcmFuc2FjdGlvbltdPiB7XG4gIC8vIFdhaXQgZm9yIHRyYW5zYWN0aW9ucy5cbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcudW5kZXItbGluZS10eG4tdGFibGUtaGVhZGVyJywgdHJ1ZSk7XG5cbiAgY29uc3QgdHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10gPSBbXTtcbiAgY29uc3QgdHJhbnNhY3Rpb25zRGl2cyA9IGF3YWl0IHBhZ2VFdmFsQWxsPFRyYW5zYWN0aW9uc1RyW10+KHBhZ2UsICcubGlzdC1pdGVtLWhvbGRlciAuZW50aXJlLWNvbnRlbnQtY3RyJywgW10sIChkaXZzKSA9PiB7XG4gICAgcmV0dXJuIChkaXZzIGFzIEhUTUxFbGVtZW50W10pLm1hcCgoZGl2KSA9PiAoe1xuICAgICAgaWQ6IChkaXYpLmdldEF0dHJpYnV0ZSgnaWQnKSB8fCAnJyxcbiAgICAgIGlubmVyRGl2czogQXJyYXkuZnJvbShkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpKS5tYXAoKGRpdikgPT4gKGRpdiBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0KSxcbiAgICB9KSk7XG4gIH0pO1xuXG4gIGZvciAoY29uc3QgdHhuUm93IG9mIHRyYW5zYWN0aW9uc0RpdnMpIHtcbiAgICBoYW5kbGVUcmFuc2FjdGlvblJvdyh0eG5zLCB0eG5Sb3cpO1xuICB9XG5cbiAgcmV0dXJuIGNvbnZlcnRUcmFuc2FjdGlvbnModHhucyk7XG59XG5cbi8vIE1hbmlwdWxhdGUgdGhlIGNhbGVuZGFyIGRyb3AgZG93biB0byBjaG9vc2UgdGhlIHR4cyBzdGFydCBkYXRlLlxuYXN5bmMgZnVuY3Rpb24gc2VhcmNoQnlEYXRlcyhwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCkge1xuICAvLyBHZXQgdGhlIGRheSBudW1iZXIgZnJvbSBzdGFydERhdGUuIDEtMzEgKHVzdWFsbHkgMSlcbiAgY29uc3Qgc3RhcnREYXRlRGF5ID0gc3RhcnREYXRlLmZvcm1hdCgnRCcpO1xuICBjb25zdCBzdGFydERhdGVNb250aCA9IHN0YXJ0RGF0ZS5mb3JtYXQoJ00nKTtcbiAgY29uc3Qgc3RhcnREYXRlWWVhciA9IHN0YXJ0RGF0ZS5mb3JtYXQoJ1knKTtcblxuICAvLyBPcGVuIHRoZSBjYWxlbmRhciBkYXRlIHBpY2tlclxuICBjb25zdCBkYXRlRnJvbVBpY2sgPSAnZGl2LmRhdGUtb3B0aW9ucy1jZWxsOm50aC1jaGlsZCg3KSA+IGRhdGUtcGlja2VyOm50aC1jaGlsZCgxKSA+IGRpdjpudGgtY2hpbGQoMSkgPiBzcGFuOm50aC1jaGlsZCgyKSc7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBkYXRlRnJvbVBpY2ssIHRydWUpO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBkYXRlRnJvbVBpY2spO1xuXG4gIC8vIFdhaXQgdW50aWwgZmlyc3QgZGF5IGFwcGVhci5cbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucG11LWRheXMgPiBkaXY6bnRoLWNoaWxkKDEpJywgdHJ1ZSk7XG5cbiAgLy8gT3BlbiBNb250aHMgb3B0aW9ucy5cbiAgY29uc3QgbW9udGhGcm9tUGljayA9ICcucG11LW1vbnRoJztcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIG1vbnRoRnJvbVBpY2ssIHRydWUpO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBtb250aEZyb21QaWNrKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucG11LW1vbnRocyA+IGRpdjpudGgtY2hpbGQoMSknLCB0cnVlKTtcblxuICAvLyBPcGVuIFllYXIgb3B0aW9ucy5cbiAgLy8gVXNlIHNhbWUgc2VsZWN0b3IuLi4gWWFoYXYga25vd3Mgd2h5Li4uXG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBtb250aEZyb21QaWNrLCB0cnVlKTtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgbW9udGhGcm9tUGljayk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnLnBtdS15ZWFycyA+IGRpdjpudGgtY2hpbGQoMSknLCB0cnVlKTtcblxuICAvLyBTZWxlY3QgeWVhciBmcm9tIGEgMTIgeWVhciBncmlkLlxuICBmb3IgKGxldCBpID0gMTsgaSA8IDEzOyBpICs9IDEpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGAucG11LXllYXJzID4gZGl2Om50aC1jaGlsZCgke2l9KWA7XG4gICAgY29uc3QgeWVhciA9IGF3YWl0IHBhZ2UuJGV2YWwoc2VsZWN0b3IsICh5KSA9PiB7XG4gICAgICByZXR1cm4gKHkgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dDtcbiAgICB9KTtcbiAgICBpZiAoc3RhcnREYXRlWWVhciA9PT0geWVhcikge1xuICAgICAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgc2VsZWN0b3IpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8gU2VsZWN0IE1vbnRoLlxuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJy5wbXUtbW9udGhzID4gZGl2Om50aC1jaGlsZCgxKScsIHRydWUpO1xuICAvLyBUaGUgZmlyc3QgZWxlbWVudCAoMSkgaXMgSmFudWFyeS5cbiAgY29uc3QgbW9udGhTZWxlY3RvciA9IGAucG11LW1vbnRocyA+IGRpdjpudGgtY2hpbGQoJHtzdGFydERhdGVNb250aH0pYDtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgbW9udGhTZWxlY3Rvcik7XG5cbiAgLy8gU2VsZWN0IERheS5cbiAgLy8gVGhlIGNhbGVuZGFyIGdyaWQgc2hvd3MgNyBkYXlzIGFuZCA2IHdlZWtzID0gNDIgZGF5cy5cbiAgLy8gSW4gdGhlb3J5LCB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCB3aWxsIGJlIGluIHRoZSBmaXJzdCByb3cuXG4gIC8vIExldCdzIGNoZWNrIGV2ZXJ5dGhpbmcganVzdCBpbiBjYXNlLi4uXG4gIGZvciAobGV0IGkgPSAxOyBpIDwgNDI7IGkgKz0gMSkge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gYC5wbXUtZGF5cyA+IGRpdjpudGgtY2hpbGQoJHtpfSlgO1xuICAgIGNvbnN0IGRheSA9IGF3YWl0IHBhZ2UuJGV2YWwoc2VsZWN0b3IsIChkKSA9PiB7XG4gICAgICByZXR1cm4gKGQgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dDtcbiAgICB9KTtcblxuICAgIGlmIChzdGFydERhdGVEYXkgPT09IGRheSkge1xuICAgICAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgc2VsZWN0b3IpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG5cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50RGF0YShwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCwgYWNjb3VudElEOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnQ+IHtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudERpc2FwcGVhcihwYWdlLCAnLmxvYWRpbmctYmFyLXNwaW5uZXInKTtcbiAgYXdhaXQgc2VhcmNoQnlEYXRlcyhwYWdlLCBzdGFydERhdGUpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyKHBhZ2UsICcubG9hZGluZy1iYXItc3Bpbm5lcicpO1xuICBjb25zdCB0eG5zID0gYXdhaXQgZ2V0QWNjb3VudFRyYW5zYWN0aW9ucyhwYWdlKTtcblxuICByZXR1cm4ge1xuICAgIGFjY291bnROdW1iZXI6IGFjY291bnRJRCxcbiAgICB0eG5zLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFjY291bnRzKHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50KTogUHJvbWlzZTxUcmFuc2FjdGlvbnNBY2NvdW50W10+IHtcbiAgY29uc3QgYWNjb3VudHM6IFRyYW5zYWN0aW9uc0FjY291bnRbXSA9IFtdO1xuXG4gIC8vIFRPRE86IGdldCBtb3JlIGFjY291bnRzLiBOb3Qgc3VyZSBpcyBzdXBwb3J0ZWQuXG4gIGNvbnN0IGFjY291bnRJRCA9IGF3YWl0IGdldEFjY291bnRJRChwYWdlKTtcbiAgY29uc3QgYWNjb3VudERhdGEgPSBhd2FpdCBmZXRjaEFjY291bnREYXRhKHBhZ2UsIHN0YXJ0RGF0ZSwgYWNjb3VudElEKTtcbiAgYWNjb3VudHMucHVzaChhY2NvdW50RGF0YSk7XG5cbiAgcmV0dXJuIGFjY291bnRzO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3YWl0UmVhZGluZXNzRm9yQWxsKHBhZ2U6IFBhZ2UpIHtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGAke1VTRVJfRUxFTX1gLCB0cnVlKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGAke1BBU1NXRF9FTEVNfWAsIHRydWUpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYCR7TkFUSU9OQUxJRF9FTEVNfWAsIHRydWUpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYCR7U1VCTUlUX0xPR0lOX1NFTEVDVE9SfWAsIHRydWUpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWRpcmVjdE9yRGlhbG9nKHBhZ2U6IFBhZ2UpIHtcbiAgLy8gQ2xpY2sgb24gYmFuayBtZXNzYWdlcyBpZiBhbnkuXG4gIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHBhZ2UpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyKHBhZ2UsICcubG9hZGluZy1iYXItc3Bpbm5lcicpO1xuICBjb25zdCBoYXNNZXNzYWdlID0gYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgJy5tZXNzYWdpbmctbGlua3MtY29udGFpbmVyJyk7XG4gIGlmIChoYXNNZXNzYWdlKSB7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJy5saW5rLTEnKTtcbiAgfVxuXG4gIGNvbnN0IHByb21pc2UxID0gcGFnZS53YWl0Rm9yU2VsZWN0b3IoQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SLCB7IHRpbWVvdXQ6IDMwMDAwIH0pO1xuICBjb25zdCBwcm9taXNlMiA9IHBhZ2Uud2FpdEZvclNlbGVjdG9yKENIQU5HRV9QQVNTV09SRF9PTERfUEFTUywgeyB0aW1lb3V0OiAzMDAwMCB9KTtcbiAgY29uc3QgcHJvbWlzZXMgPSBbcHJvbWlzZTEsIHByb21pc2UyXTtcblxuICBhd2FpdCBQcm9taXNlLnJhY2UocHJvbWlzZXMpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyKHBhZ2UsICcubG9hZGluZy1iYXItc3Bpbm5lcicpO1xufVxuXG5jbGFzcyBZYWhhdlNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyIHtcbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IGAke0xPR0lOX1VSTH1gLFxuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHsgc2VsZWN0b3I6IGAke1VTRVJfRUxFTX1gLCB2YWx1ZTogY3JlZGVudGlhbHMudXNlcm5hbWUgfSxcbiAgICAgICAgeyBzZWxlY3RvcjogYCR7UEFTU1dEX0VMRU19YCwgdmFsdWU6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0sXG4gICAgICAgIHsgc2VsZWN0b3I6IGAke05BVElPTkFMSURfRUxFTX1gLCB2YWx1ZTogY3JlZGVudGlhbHMubmF0aW9uYWxJRCB9LFxuICAgICAgXSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiBgJHtTVUJNSVRfTE9HSU5fU0VMRUNUT1J9YCxcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB3YWl0UmVhZGluZXNzRm9yQWxsKHRoaXMucGFnZSksXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiByZWRpcmVjdE9yRGlhbG9nKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHRoaXMucGFnZSksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICAvLyBHb3RvIHN0YXRlbWVudHMgcGFnZVxuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsIEFDQ09VTlRfREVUQUlMU19TRUxFQ1RPUiwgdHJ1ZSk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCBBQ0NPVU5UX0RFVEFJTFNfU0VMRUNUT1IpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcuc3RhdGVtZW50LW9wdGlvbnMgLnNlbGVjdGVkLWl0ZW0tdG9wJywgdHJ1ZSk7XG5cbiAgICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgzLCAnbW9udGhzJykuYWRkKDEsICdkYXknKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoQWNjb3VudHModGhpcy5wYWdlLCBzdGFydE1vbWVudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgWWFoYXZTY3JhcGVyO1xuIl19
|